class Chroma::Converters::HsvConverter

Class to convert a color mode to {ColorModes::Hsl}.

Public Instance Methods

convert_hsl() click to toggle source

Convert hsl to hsv. @return [ColorModes::Hsv]

# File lib/chroma/converters/hsv_converter.rb, line 37
def convert_hsl
  HslConverter.convert_rgb(RgbConverter.convert_hsv(@input))
end
convert_hsv() click to toggle source

Returns @input because it's the same color mode. @return [ColorModes::Hsv]

# File lib/chroma/converters/hsv_converter.rb, line 43
def convert_hsv
  @input
end
convert_rgb() click to toggle source

Convert rgb to hsv. @return [ColorModes::Hsv]

# File lib/chroma/converters/hsv_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
  v = max
  d = (max - min).to_f
  s = max.zero? ? 0 : d / max

  if max == min
    h = 0
  else
    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::Hsv.new(h * 360, s, v, @input.a)
end