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
-
.near_one?(value) ⇒ Boolean
Returns
true
if the value is within COLOR_EPSILON of one. -
.near_one_or_more?(value) ⇒ Boolean
Returns
true
if the value is within COLOR_EPSILON of one or more than one. -
.near_zero?(value) ⇒ Boolean
Returns
true
if the value is less than COLOR_EPSILON. -
.near_zero_or_less?(value) ⇒ Boolean
Returns
true
if the value is within COLOR_EPSILON of zero or less than zero. -
.normalize(value) ⇒ Object
(also: normalize_fractional)
Normalizes the value to the range (0.0) ..
-
.normalize_byte(value) ⇒ Object
(also: normalize_8bit)
Normalize the value to the range (0) ..
- .normalize_to_range(value, range) ⇒ Object
-
.normalize_word(value) ⇒ Object
(also: normalize_16bit)
Normalize the value to the range (0) ..
Class Method Details
.near_one?(value) ⇒ Boolean
Returns true
if the value is within COLOR_EPSILON of one.
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.
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.
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.
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 |