| Class | Color::GrayScale |
| In: |
lib/color.rb
lib/color/grayscale.rb |
| Parent: | Object |
A colour object representing shades of grey. Used primarily in PDF document creation.
| PDF_FORMAT_STR | = | "%.3f %s" | The format of a DeviceGrey colour for PDF. In color-tools 2.0 this will be removed from this package and added back as a modification by the PDF::Writer package. |
Creates a greyscale colour object from fractional values 0..1.
Color::GreyScale.from_fraction(0.5)
# File lib/color/grayscale.rb, line 26
26: def self.from_fraction(g = 0)
27: color = Color::GrayScale.new
28: color.g = g
29: color
30: end
Creates a greyscale colour object from percentages 0..100.
Color::GrayScale.from_percent(50)
# File lib/color/grayscale.rb, line 35
35: def self.from_percent(g = 0)
36: Color::GrayScale.new(g)
37: end
Creates a greyscale colour object from percentages 0..100.
Color::GrayScale.new(50)
# File lib/color/grayscale.rb, line 42
42: def initialize(g = 0)
43: @g = g / 100.0
44: end
Adds another colour to the current colour. The other colour will be converted to grayscale before addition. This conversion depends upon a to_grayscale method on the other colour.
The addition is done using the grayscale accessor methods to ensure a valid colour in the result.
# File lib/color/grayscale.rb, line 186
186: def +(other)
187: other = other.to_grayscale
188: ng = self.dup
189: ng.g += other.g
190: ng
191: end
Subtracts another colour to the current colour. The other colour will be converted to grayscale before subtraction. This conversion depends upon a to_grayscale method on the other colour.
The subtraction is done using the grayscale accessor methods to ensure a valid colour in the result.
# File lib/color/grayscale.rb, line 199
199: def -(other)
200: other = other.to_grayscale
201: ng = self.dup
202: ng.g -= other.g
203: ng
204: end
Compares the other colour to this one. The other colour will be converted to GreyScale before comparison, so the comparison between a GreyScale colour and a non-GreyScale colour will be approximate and based on the other colour‘s to_greyscale conversion. If there is no to_greyscale conversion, this will raise an exception. This will report that two GreyScale values are equivalent if they are within COLOR_TOLERANCE of each other.
# File lib/color/grayscale.rb, line 53
53: def ==(other)
54: other = other.to_grayscale
55: other.kind_of?(Color::GrayScale) and
56: ((@g - other.g).abs <= Color::COLOR_TOLERANCE)
57: end
Returns the brightness value for this greyscale value; this is the greyscale value itself.
# File lib/color/grayscale.rb, line 154
154: def brightness
155: @g
156: end
Darken the greyscale colour by the stated percent.
# File lib/color/grayscale.rb, line 131
131: def darken_by(percent)
132: g = [@g - (@g * (percent / 100.0)), 0.0].max
133: Color::GrayScale.from_fraction(g)
134: end
Returns the grayscale value as a fractional value of white in the range 0.0 .. 1.0.
# File lib/color/grayscale.rb, line 166
166: def g
167: @g
168: end
Returns the grayscale value as a fractional value of white in the range 0.0 .. 1.0.
# File lib/color/grayscale.rb, line 176
176: def g=(gg)
177: @g = Color.normalize(gg)
178: end
Sets the grayscale value as a percentage of white.
# File lib/color/grayscale.rb, line 170
170: def gray=(gg)
171: @g = Color.normalize(gg / 100.0)
172: end
Lightens the greyscale colour by the stated percent.
# File lib/color/grayscale.rb, line 125
125: def lighten_by(percent)
126: g = [@g + (@g * (percent / 100.0)), 1.0].min
127: Color::GrayScale.from_fraction(g)
128: end
Present the colour as a DeviceGrey fill colour string for PDF. This will be removed from the default package in color-tools 2.0.
# File lib/color/grayscale.rb, line 61
61: def pdf_fill
62: PDF_FORMAT_STR % [ @g, "g" ]
63: end
Present the colour as a DeviceGrey stroke colour string for PDF. This will be removed from the default package in color-tools 2.0.
# File lib/color/grayscale.rb, line 67
67: def pdf_stroke
68: PDF_FORMAT_STR % [ @g, "G" ]
69: end
Reflexive conversion.
# File lib/color/grayscale.rb, line 119
119: def to_grayscale
120: self
121: end
Returns the YIQ (NTSC) colour encoding of the greyscale value. This is an approximation, as the values for I and Q are calculated by treating the greyscale value as an RGB value. The Y (intensity or brightness) value is the same as the greyscale value.
# File lib/color/grayscale.rb, line 140
140: def to_yiq
141: y = @g
142: i = (@g * 0.596) + (@g * -0.275) + (@g * -0.321)
143: q = (@g * 0.212) + (@g * -0.523) + (@g * 0.311)
144: Color::YIQ.from_fraction(y, i, q)
145: end