Class: Chroma::Converters::HslConverter
- Defined in:
- lib/chroma/converters/hsl_converter.rb
Overview
Class to convert a color mode to Chroma::ColorModes::Hsl.
Instance Method Summary collapse
-
#convert_hsl ⇒ ColorModes::Hsl
Returns @input because it's the same color mode.
-
#convert_hsv ⇒ ColorModes::Hsl
Convert hsv to hsl.
-
#convert_rgb ⇒ ColorModes::Hsl
Convert rgb to hsl.
Methods inherited from Base
convert_hsl, convert_hsv, convert_rgb, #initialize
Methods included from Helpers::Bounders
#bound01, #bound_alpha, #clamp01, #to_percentage
Constructor Details
This class inherits a constructor from Chroma::Converters::Base
Instance Method Details
#convert_hsl ⇒ ColorModes::Hsl
Returns @input because it's the same color mode.
43 44 45 |
# File 'lib/chroma/converters/hsl_converter.rb', line 43 def convert_hsl @input end |
#convert_hsv ⇒ ColorModes::Hsl
Convert hsv to hsl.
49 50 51 |
# File 'lib/chroma/converters/hsl_converter.rb', line 49 def convert_hsv HsvConverter.convert_rgb(RgbConverter.convert_hsl(@input)) end |
#convert_rgb ⇒ ColorModes::Hsl
Convert rgb to hsl.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/chroma/converters/hsl_converter.rb', line 7 def convert_rgb r = bound01(@input.r, 255) g = bound01(@input.g, 255) b = bound01(@input.b, 255) rgb_array = [r, g, b] max = rgb_array.max min = rgb_array.min l = (max + min) * 0.5 if max == min h = s = 0 else d = (max - min).to_f s = if l > 0.5 d / (2 - max - min) else d / (max + min) end h = case max when r then (g - b) / d + (g < b ? 6 : 0) when g then (b - r) / d + 2 when b then (r - g) / d + 4 end h /= 6.0 end ColorModes::Hsl.new(h * 360, s, l, @input.a) end |