Module: Chromate::RGB
- Defined in:
- lib/chromate/rgb.rb
Constant Summary collapse
- COLORS =
RGB array representations of the 256 xterm colors
[ [ 0, 0, 0], [128, 0, 0], [ 0, 128, 0], [128, 128, 0], [ 0, 0, 128], [128, 0, 128], [ 0, 128, 128], [192, 192, 192], [128, 128, 128], [255, 0, 0], [ 0, 255, 0], [255, 255, 0], [ 0, 0, 255], [255, 0, 255], [ 0, 255, 255], [255, 255, 255], [ 0, 0, 0], [ 0, 0, 95], [ 0, 0, 135], [ 0, 0, 175], [ 0, 0, 215], [ 0, 0, 255], [ 0, 95, 0], [ 0, 95, 95], [ 0, 95, 135], [ 0, 95, 175], [ 0, 95, 215], [ 0, 95, 255], [ 0, 135, 0], [ 0, 135, 95], [ 0, 135, 135], [ 0, 135, 175], [ 0, 135, 215], [ 0, 135, 255], [ 0, 175, 0], [ 0, 175, 95], [ 0, 175, 135], [ 0, 175, 175], [ 0, 175, 215], [ 0, 175, 255], [ 0, 215, 0], [ 0, 215, 95], [ 0, 215, 135], [ 0, 215, 175], [ 0, 215, 215], [ 0, 215, 255], [ 0, 255, 0], [ 0, 255, 95], [ 0, 255, 135], [ 0, 255, 175], [ 0, 255, 215], [ 0, 255, 255], [ 95, 0, 0], [ 95, 0, 95], [ 95, 0, 135], [ 95, 0, 175], [ 95, 0, 215], [ 95, 0, 255], [ 95, 95, 0], [ 95, 95, 95], [ 95, 95, 135], [ 95, 95, 175], [ 95, 95, 215], [ 95, 95, 255], [ 95, 135, 0], [ 95, 135, 95], [ 95, 135, 135], [ 95, 135, 175], [ 95, 135, 215], [ 95, 135, 255], [ 95, 175, 0], [ 95, 175, 95], [ 95, 175, 135], [ 95, 175, 175], [ 95, 175, 215], [ 95, 175, 255], [ 95, 215, 0], [ 95, 215, 95], [ 95, 215, 135], [ 95, 215, 175], [ 95, 215, 215], [ 95, 215, 255], [ 95, 255, 0], [ 95, 255, 95], [ 95, 255, 135], [ 95, 255, 175], [ 95, 255, 215], [ 95, 255, 255], [135, 0, 0], [135, 0, 95], [135, 0, 135], [135, 0, 175], [135, 0, 215], [135, 0, 255], [135, 95, 0], [135, 95, 95], [135, 95, 135], [135, 95, 175], [135, 95, 215], [135, 95, 255], [135, 135, 0], [135, 135, 95], [135, 135, 135], [135, 135, 175], [135, 135, 215], [135, 135, 255], [135, 175, 0], [135, 175, 95], [135, 175, 135], [135, 175, 175], [135, 175, 215], [135, 175, 255], [135, 215, 0], [135, 215, 95], [135, 215, 135], [135, 215, 175], [135, 215, 215], [135, 215, 255], [135, 255, 0], [135, 255, 95], [135, 255, 135], [135, 255, 175], [135, 255, 215], [135, 255, 255], [175, 0, 0], [175, 0, 95], [175, 0, 135], [175, 0, 175], [175, 0, 215], [175, 0, 255], [175, 95, 0], [175, 95, 95], [175, 95, 135], [175, 95, 175], [175, 95, 215], [175, 95, 255], [175, 135, 0], [175, 135, 95], [175, 135, 135], [175, 135, 175], [175, 135, 215], [175, 135, 255], [175, 175, 0], [175, 175, 95], [175, 175, 135], [175, 175, 175], [175, 175, 215], [175, 175, 255], [175, 215, 0], [175, 215, 95], [175, 215, 135], [175, 215, 175], [175, 215, 215], [175, 215, 255], [175, 255, 0], [175, 255, 95], [175, 255, 135], [175, 255, 175], [175, 255, 215], [175, 255, 255], [215, 0, 0], [215, 0, 95], [215, 0, 135], [215, 0, 175], [215, 0, 215], [215, 0, 255], [215, 95, 0], [215, 95, 95], [215, 95, 135], [215, 95, 175], [215, 95, 215], [215, 95, 255], [215, 135, 0], [215, 135, 95], [215, 135, 135], [215, 135, 175], [215, 135, 215], [215, 135, 255], [223, 175, 0], [223, 175, 95], [223, 175, 135], [223, 175, 175], [223, 175, 223], [223, 175, 255], [223, 223, 0], [223, 223, 95], [223, 223, 135], [223, 223, 175], [223, 223, 223], [223, 223, 255], [223, 255, 0], [223, 255, 95], [223, 255, 135], [223, 255, 175], [223, 255, 223], [223, 255, 255], [255, 0, 0], [255, 0, 95], [255, 0, 135], [255, 0, 175], [255, 0, 223], [255, 0, 255], [255, 95, 0], [255, 95, 95], [255, 95, 135], [255, 95, 175], [255, 95, 223], [255, 95, 255], [255, 135, 0], [255, 135, 95], [255, 135, 135], [255, 135, 175], [255, 135, 223], [255, 135, 255], [255, 175, 0], [255, 175, 95], [255, 175, 135], [255, 175, 175], [255, 175, 223], [255, 175, 255], [255, 223, 0], [255, 223, 95], [255, 223, 135], [255, 223, 175], [255, 223, 223], [255, 223, 255], [255, 255, 0], [255, 255, 95], [255, 255, 135], [255, 255, 175], [255, 255, 223], [255, 255, 255], [ 8, 8, 8], [ 18, 18, 18], [ 28, 28, 28], [ 38, 38, 38], [ 48, 48, 48], [ 58, 58, 58], [ 68, 68, 68], [ 78, 78, 78], [ 88, 88, 88], [ 98, 98, 98], [108, 108, 108], [118, 118, 118], [128, 128, 128], [138, 138, 138], [148, 148, 148], [158, 158, 158], [168, 168, 168], [178, 178, 178], [188, 188, 188], [198, 198, 198], [208, 208, 208], [218, 218, 218], [228, 228, 228], [238, 238, 238] ]
- CONVERSION_MATRIX =
D65 conversion matrix
- RX =
CIE D65 standard illuminant
95.047- RY =
100.0- RZ =
108.883
Class Method Summary collapse
-
.to_lab(rgb) ⇒ <Integer>
Convert an RGB array into an array representing coordinates in L*a*b* color space.
Class Method Details
.to_lab(rgb) ⇒ <Integer>
Convert an RGB array into an array representing coordinates in L*a*b* color space.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/chromate/rgb.rb', line 93 def self.to_lab(rgb) xyz_matrix = CONVERSION_MATRIX * Matrix[*rgb.map do |c| c = c / 255.0 if c > 0.04045 [(c + 0.055 / 1.055) ** 2.4] else [c / 12.92] end end] f_x, f_y, f_z = *[ xyz_matrix[0, 0] / RX, xyz_matrix[1, 0] / RY, xyz_matrix[2, 0] / RZ ].map do |c| if c > 0.008856 Math.cbrt(c) else (903.3 * c + 16) / 116 end end [116 * f_y - 16, 500 * (f_x - f_y), 200 * (f_y - f_z)] end |