Module: Spectrum

Defined in:
lib/spectrum.rb,
lib/spectrum/grayscale.rb

Overview

Colour Management with Ruby

Defined Under Namespace

Modules: CSS, Palette Classes: CMYK, GrayScale, HSL, RGB, YIQ

Constant Summary collapse

COLOR_VERSION =
'1.4.1'
COLOR_EPSILON =

The maximum “resolution” for colour math; if any value is less than or equal to this value, it is treated as zero.

1e-5
COLOR_TOLERANCE =

The tolerance for comparing the components of two colours. In general, colours are considered equal if all of their components are within this tolerance value of each other.

1e-4
GreyScale =

A synonym for Spectrum::GrayScale.

GrayScale

Class Method Summary collapse

Class Method Details

.near_one?(value) ⇒ Boolean

Returns true if the value is within COLOR_EPSILON of one.

Returns:

  • (Boolean)


46
47
48
# File 'lib/spectrum.rb', line 46

def near_one?(value)
  near_zero?(value - 1.0)
end

.near_one_or_more?(value) ⇒ Boolean

Returns true if the value is within COLOR_EPSILON of one or more than one.

Returns:

  • (Boolean)


52
53
54
# File 'lib/spectrum.rb', line 52

def near_one_or_more?(value)
  (value > 1.0 or near_one?(value))
end

.near_zero?(value) ⇒ Boolean

Returns true if the value is less than COLOR_EPSILON.

Returns:

  • (Boolean)


35
36
37
# File 'lib/spectrum.rb', line 35

def near_zero?(value)
  (value.abs <= COLOR_EPSILON)
end

.near_zero_or_less?(value) ⇒ Boolean

Returns true if the value is within COLOR_EPSILON of zero or less than zero.

Returns:

  • (Boolean)


41
42
43
# File 'lib/spectrum.rb', line 41

def near_zero_or_less?(value)
  (value < 0.0 or near_zero?(value))
end

.normalize(value) ⇒ Object Also known as: normalize_fractional

Normalizes the value to the range (0.0) .. (1.0).



57
58
59
60
61
62
63
64
65
# File 'lib/spectrum.rb', line 57

def normalize(value)
  if near_zero_or_less? value
    0.0
  elsif near_one_or_more? value
    1.0
  else
    value
  end
end

.normalize_byte(value) ⇒ Object Also known as: normalize_8bit

Normalize the value to the range (0) .. (255).



81
82
83
# File 'lib/spectrum.rb', line 81

def normalize_byte(value)
  normalize_to_range(value, 0..255).to_i
end

.normalize_to_range(value, range) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/spectrum.rb', line 68

def normalize_to_range(value, range)
  range = (range.end..range.begin) if (range.end < range.begin)

  if value <= range.begin
    range.begin
  elsif value >= range.end
    range.end
  else
    value
  end
end

.normalize_word(value) ⇒ Object Also known as: normalize_16bit

Normalize the value to the range (0) .. (65535).



87
88
89
# File 'lib/spectrum.rb', line 87

def normalize_word(value)
  normalize_to_range(value, 0..65535).to_i
end