1+ #http://www.redguava.com.au/2011/10/lighten-or-darken-a-hexadecimal-color-in-ruby-on-rails/
2+
3+ # COLOR_SCHEMES = {
4+ # default: ['#eeeeee', '#d6e685', '#8cc665', '#44a340', '#1e6823'],
5+ # halloween: ['#EEEEEE', '#FFEE4A', '#FFC501', '#FE9600', '#03001C'],
6+ # teal: ['#EEEEEE', "#7FFFD4", "#76EEC6", "#66CDAA", "#458B74"],
7+ # red: ['#EEEEEE', '#990100', '#8C0100', '#720100', '#4C0100']
8+ # }
9+
10+ # Amount should be a decimal between 0 and 1. Lower means darker
11+ def darken_color ( hex_color , amount = 0.4 )
12+ hex_color = hex_color . gsub ( '#' , '' )
13+ rgb = hex_color . scan ( /../ ) . map { |color | color . hex }
14+ rgb [ 0 ] = ( rgb [ 0 ] . to_i * amount ) . round
15+ rgb [ 1 ] = ( rgb [ 1 ] . to_i * amount ) . round
16+ rgb [ 2 ] = ( rgb [ 2 ] . to_i * amount ) . round
17+ "#%02x%02x%02x" % rgb
18+ end
19+
20+ # Amount should be a decimal between 0 and 1. Higher means lighter
21+ def lighten_color ( hex_color , amount = 0.6 )
22+ hex_color = hex_color . gsub ( '#' , '' )
23+ rgb = hex_color . scan ( /../ ) . map { |color | color . hex }
24+ rgb [ 0 ] = [ ( rgb [ 0 ] . to_i + 255 * amount ) . round , 255 ] . min
25+ rgb [ 1 ] = [ ( rgb [ 1 ] . to_i + 255 * amount ) . round , 255 ] . min
26+ rgb [ 2 ] = [ ( rgb [ 2 ] . to_i + 255 * amount ) . round , 255 ] . min
27+ "#%02x%02x%02x" % rgb
28+ end
0 commit comments