class RGBUtils::RGBToLinearRGBConverter

Constants

CUTOFF_POINT
GAMMA
SLOPE

Attributes

rgb[RW]

Public Class Methods

new(rgb) click to toggle source
# File lib/rgb_utils/converters/rgb_to_linear_rgb_converter.rb, line 7
def initialize(rgb)
  @rgb = HexToRGBConverter.convert(rgb)
end

Public Instance Methods

convert() click to toggle source
# File lib/rgb_utils/converters/rgb_to_linear_rgb_converter.rb, line 11
def convert
  @linear_rgb ||= begin
    linear_red, linear_green, linear_blue = calculate_linear_rgb

    LinearRGB.new(red: linear_red, green: linear_green, blue: linear_blue)
  end
end

Private Instance Methods

calculate_linear_rgb() click to toggle source
# File lib/rgb_utils/converters/rgb_to_linear_rgb_converter.rb, line 23
def calculate_linear_rgb
  rgb.as_unit_range.map do |color|
    if color <= CUTOFF_POINT
      color / SLOPE
    else
      ((color + 0.055) / 1.055) ** GAMMA
    end
  end
end