Class: Color::RGB
- Inherits:
-
Object
- Object
- Color::RGB
- Defined in:
- lib/gems/color-1.4.0/lib/color/rgb.rb,
lib/gems/color-1.4.0/lib/color.rb,
lib/gems/color-1.4.0/lib/color/rgb-colors.rb
Overview
– Color Colour management with Ruby rubyforge.org/projects/color
Version 1.4.0
Licensed under a MIT-style licence. See Licence.txt in the main distribution for full licensing information.
Copyright © 2005 - 2007 Austin Ziegler and Matt Lyon
$Id: test_all.rb 55 2007-02-03 23:29:34Z austin $ ++
Defined Under Namespace
Modules: Metallic
Constant Summary collapse
- PDF_FORMAT_STR =
The format of a DeviceRGB 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.
"%.3f %.3f %.3f %s"
- AliceBlue =
Color::RGB.new(0xf0, 0xf8, 0xff)
- AntiqueWhite =
Color::RGB.new(0xfa, 0xeb, 0xd7)
- Aqua =
Color::RGB.new(0x00, 0xff, 0xff)
- Aquamarine =
Color::RGB.new(0x7f, 0xff, 0xd4)
- Azure =
Color::RGB.new(0xf0, 0xff, 0xff)
- Beige =
Color::RGB.new(0xf5, 0xf5, 0xdc)
- Bisque =
Color::RGB.new(0xff, 0xe4, 0xc4)
- Black =
Color::RGB.new(0, 0, 0)
- BlanchedAlmond =
Color::RGB.new(0xff, 0xeb, 0xcd)
- Blue =
Color::RGB.new(0x00, 0x00, 0xff)
- BlueViolet =
Color::RGB.new(0x8a, 0x2b, 0xe2)
- Brown =
Color::RGB.new(0xa5, 0x2a, 0x2a)
- BurlyWood =
Color::RGB.new(0xde, 0xb8, 0x87)
- Burlywood =
BurlyWood
- CadetBlue =
Color::RGB.new(0x5f, 0x9e, 0xa0)
- Carnation =
Color::RGB.new(0xff, 0x5e, 0xd0)
- Cayenne =
Color::RGB.new(0x8d, 0x00, 0x00)
- Chartreuse =
Color::RGB.new(0x7f, 0xff, 0x00)
- Chocolate =
Color::RGB.new(0xd2, 0x69, 0x1e)
- Coral =
Color::RGB.new(0xff, 0x7f, 0x50)
- CornflowerBlue =
Color::RGB.new(0x64, 0x95, 0xed)
- Cornsilk =
Color::RGB.new(0xff, 0xf8, 0xdc)
- Crimson =
Color::RGB.new(0xdc, 0x14, 0x3c)
- Cyan =
Color::RGB.new(0x00, 0xff, 0xff)
- DarkBlue =
Color::RGB.new(0x00, 0x00, 0x8b)
- DarkCyan =
Color::RGB.new(0x00, 0x8b, 0x8b)
- DarkGoldenRod =
Color::RGB.new(0xb8, 0x86, 0x0b)
- DarkGoldenrod =
DarkGoldenRod
- DarkGray =
Color::RGB.new(0xa9, 0xa9, 0xa9)
- DarkGreen =
Color::RGB.new(0x00, 0x64, 0x00)
- DarkGrey =
DarkGray
- DarkKhaki =
Color::RGB.new(0xbd, 0xb7, 0x6b)
- DarkMagenta =
Color::RGB.new(0x8b, 0x00, 0x8b)
- DarkOliveGreen =
Color::RGB.new(0x55, 0x6b, 0x2f)
- DarkOrange =
Color::RGB.new(0xff, 0x8c, 0x00)
- DarkOrchid =
Color::RGB.new(0x99, 0x32, 0xcc)
- DarkRed =
Color::RGB.new(0x8b, 0x00, 0x00)
- DarkSalmon =
Color::RGB.new(0xe9, 0x96, 0x7a)
- DarkSeaGreen =
Color::RGB.new(0x8f, 0xbc, 0x8f)
- DarkSlateBlue =
Color::RGB.new(0x48, 0x3d, 0x8b)
- DarkSlateGray =
Color::RGB.new(0x2f, 0x4f, 0x4f)
- DarkSlateGrey =
DarkSlateGray
- DarkTurquoise =
Color::RGB.new(0x00, 0xce, 0xd1)
- DarkViolet =
Color::RGB.new(0x94, 0x00, 0xd3)
- DarkoliveGreen =
DarkOliveGreen
- Darkorange =
Color::RGB.new(0xff, 0x8c, 0x00)
- Darksalmon =
DarkSalmon
- DeepPink =
Color::RGB.new(0xff, 0x14, 0x93)
- DeepSkyBlue =
Color::RGB.new(0x00, 0xbf, 0xbf)
- DimGray =
Color::RGB.new(0x69, 0x69, 0x69)
- DimGrey =
DimGray
- DodgerBlue =
Color::RGB.new(0x1e, 0x90, 0xff)
- Feldspar =
Color::RGB.new(0xd1, 0x92, 0x75)
- FireBrick =
Color::RGB.new(0xb2, 0x22, 0x22)
- Firebrick =
FireBrick
- FloralWhite =
Color::RGB.new(0xff, 0xfa, 0xf0)
- ForestGreen =
Color::RGB.new(0x22, 0x8b, 0x22)
- Fuchsia =
Color::RGB.new(0xff, 0x00, 0xff)
- Gainsboro =
Color::RGB.new(0xdc, 0xdc, 0xdc)
- GhostWhite =
Color::RGB.new(0xf8, 0xf8, 0xff)
- Gold =
Color::RGB.new(0xff, 0xd7, 0x00)
- GoldenRod =
Color::RGB.new(0xda, 0xa5, 0x20)
- Goldenrod =
GoldenRod
- Gray =
Color::RGB.new(0x80, 0x80, 0x80)
- Gray10 =
Color::RGB.from_percentage(10, 10, 10)
- Gray20 =
Color::RGB.from_percentage(20, 20, 20)
- Gray30 =
Color::RGB.from_percentage(30, 30, 30)
- Gray40 =
Color::RGB.from_percentage(40, 40, 40)
- Gray50 =
Color::RGB.from_percentage(50, 50, 50)
- Gray60 =
Color::RGB.from_percentage(60, 60, 60)
- Gray70 =
Color::RGB.from_percentage(70, 70, 70)
- Gray80 =
Color::RGB.from_percentage(80, 80, 80)
- Gray90 =
Color::RGB.from_percentage(90, 90, 90)
- Green =
Color::RGB.new(0x00, 0x80, 0x00)
- GreenYellow =
Color::RGB.new(0xad, 0xff, 0x2f)
- Grey =
Gray
- Grey10 =
Gray10
- Grey20 =
Gray20
- Grey30 =
Gray30
- Grey40 =
Gray40
- Grey50 =
Gray50
- Grey60 =
Gray60
- Grey70 =
Gray70
- Grey80 =
Gray80
- Grey90 =
Gray90
- HoneyDew =
Color::RGB.new(0xf0, 0xff, 0xf0)
- Honeydew =
HoneyDew
- HotPink =
Color::RGB.new(0xff, 0x69, 0xb4)
- IndianRed =
Color::RGB.new(0xcd, 0x5c, 0x5c)
- Indigo =
Color::RGB.new(0x4b, 0x00, 0x82)
- Ivory =
Color::RGB.new(0xff, 0xff, 0xf0)
- Khaki =
Color::RGB.new(0xf0, 0xe6, 0x8c)
- Lavender =
Color::RGB.new(0xe6, 0xe6, 0xfa)
- LavenderBlush =
Color::RGB.new(0xff, 0xf0, 0xf5)
- LawnGreen =
Color::RGB.new(0x7c, 0xfc, 0x00)
- LemonChiffon =
Color::RGB.new(0xff, 0xfa, 0xcd)
- LightBlue =
Color::RGB.new(0xad, 0xd8, 0xe6)
- LightCoral =
Color::RGB.new(0xf0, 0x80, 0x80)
- LightCyan =
Color::RGB.new(0xe0, 0xff, 0xff)
- LightGoldenRodYellow =
Color::RGB.new(0xfa, 0xfa, 0xd2)
- LightGoldenrodYellow =
LightGoldenRodYellow
- LightGray =
Color::RGB.new(0xd3, 0xd3, 0xd3)
- LightGreen =
Color::RGB.new(0x90, 0xee, 0x90)
- LightGrey =
LightGray
- LightPink =
Color::RGB.new(0xff, 0xb6, 0xc1)
- LightSalmon =
Color::RGB.new(0xff, 0xa0, 0x7a)
- LightSeaGreen =
Color::RGB.new(0x20, 0xb2, 0xaa)
- LightSkyBlue =
Color::RGB.new(0x87, 0xce, 0xfa)
- LightSlateBlue =
Color::RGB.new(0x84, 0x70, 0xff)
- LightSlateGray =
Color::RGB.new(0x77, 0x88, 0x99)
- LightSlateGrey =
LightSlateGray
- LightSteelBlue =
Color::RGB.new(0xb0, 0xc4, 0xde)
- LightYellow =
Color::RGB.new(0xff, 0xff, 0xe0)
- Lightsalmon =
LightSalmon
- LightsteelBlue =
LightSteelBlue
- Lime =
Color::RGB.new(0x00, 0xff, 0x00)
- LimeGreen =
Color::RGB.new(0x32, 0xcd, 0x32)
- Linen =
Color::RGB.new(0xfa, 0xf0, 0xe6)
- Magenta =
Color::RGB.new(0xff, 0x00, 0xff)
- Maroon =
Color::RGB.new(0x80, 0x00, 0x00)
- MediumAquaMarine =
Color::RGB.new(0x66, 0xcd, 0xaa)
- MediumAquamarine =
MediumAquaMarine
- MediumBlue =
Color::RGB.new(0x00, 0x00, 0xcd)
- MediumOrchid =
Color::RGB.new(0xba, 0x55, 0xd3)
- MediumPurple =
Color::RGB.new(0x93, 0x70, 0xdb)
- MediumSeaGreen =
Color::RGB.new(0x3c, 0xb3, 0x71)
- MediumSlateBlue =
Color::RGB.new(0x7b, 0x68, 0xee)
- MediumSpringGreen =
Color::RGB.new(0x00, 0xfa, 0x9a)
- MediumTurquoise =
Color::RGB.new(0x48, 0xd1, 0xcc)
- MediumVioletRed =
Color::RGB.new(0xc7, 0x15, 0x85)
- MidnightBlue =
Color::RGB.new(0x19, 0x19, 0x70)
- MintCream =
Color::RGB.new(0xf5, 0xff, 0xfa)
- MistyRose =
Color::RGB.new(0xff, 0xe4, 0xe1)
- Moccasin =
Color::RGB.new(0xff, 0xe4, 0xb5)
Color::RGB.new(0xff, 0xde, 0xad)
Color::RGB.new(0x00, 0x00, 0x80)
- OldLace =
Color::RGB.new(0xfd, 0xf5, 0xe6)
- Olive =
Color::RGB.new(0x80, 0x80, 0x00)
- OliveDrab =
Color::RGB.new(0x6b, 0x8e, 0x23)
- Olivedrab =
OliveDrab
- Orange =
Color::RGB.new(0xff, 0xa5, 0x00)
- OrangeRed =
Color::RGB.new(0xff, 0x45, 0x00)
- Orchid =
Color::RGB.new(0xda, 0x70, 0xd6)
- PaleGoldenRod =
Color::RGB.new(0xee, 0xe8, 0xaa)
- PaleGoldenrod =
PaleGoldenRod
- PaleGreen =
Color::RGB.new(0x98, 0xfb, 0x98)
- PaleTurquoise =
Color::RGB.new(0xaf, 0xee, 0xee)
- PaleVioletRed =
Color::RGB.new(0xdb, 0x70, 0x93)
- PapayaWhip =
Color::RGB.new(0xff, 0xef, 0xd5)
- PeachPuff =
Color::RGB.new(0xff, 0xda, 0xb9)
- Peachpuff =
PeachPuff
- Peru =
Color::RGB.new(0xcd, 0x85, 0x3f)
- Pink =
Color::RGB.new(0xff, 0xc0, 0xcb)
- Plum =
Color::RGB.new(0xdd, 0xa0, 0xdd)
- PowderBlue =
Color::RGB.new(0xb0, 0xe0, 0xe6)
- Purple =
Color::RGB.new(0x80, 0x00, 0x80)
- Red =
Color::RGB.new(0xff, 0x00, 0x00)
- RosyBrown =
Color::RGB.new(0xbc, 0x8f, 0x8f)
- RoyalBlue =
Color::RGB.new(0x41, 0x69, 0xe1)
- SaddleBrown =
Color::RGB.new(0x8b, 0x45, 0x13)
- Salmon =
Color::RGB.new(0xfa, 0x80, 0x72)
- SandyBrown =
Color::RGB.new(0xf4, 0xa4, 0x60)
- SeaGreen =
Color::RGB.new(0x2e, 0x8b, 0x57)
- SeaShell =
Color::RGB.new(0xff, 0xf5, 0xee)
- Seashell =
SeaShell
- Sienna =
Color::RGB.new(0xa0, 0x52, 0x2d)
- Silver =
Color::RGB.new(0xc0, 0xc0, 0xc0)
- SkyBlue =
Color::RGB.new(0x87, 0xce, 0xeb)
- SlateBlue =
Color::RGB.new(0x6a, 0x5a, 0xcd)
- SlateGray =
Color::RGB.new(0x70, 0x80, 0x90)
- SlateGrey =
SlateGray
- Snow =
Color::RGB.new(0xff, 0xfa, 0xfa)
- SpringGreen =
Color::RGB.new(0x00, 0xff, 0x7f)
- SteelBlue =
Color::RGB.new(0x46, 0x82, 0xb4)
- Tan =
Color::RGB.new(0xd2, 0xb4, 0x8c)
- Teal =
Color::RGB.new(0x00, 0x80, 0x80)
- Thistle =
Color::RGB.new(0xd8, 0xbf, 0xd8)
- Tomato =
Color::RGB.new(0xff, 0x63, 0x47)
- Turquoise =
Color::RGB.new(0x40, 0xe0, 0xd0)
- Violet =
Color::RGB.new(0xee, 0x82, 0xee)
- VioletRed =
Color::RGB.new(0xd0, 0x20, 0x90)
- Wheat =
Color::RGB.new(0xf5, 0xde, 0xb3)
- White =
Color::RGB.new(0xff, 0xff, 0xff)
- WhiteSmoke =
Color::RGB.new(0xf5, 0xf5, 0xf5)
- Yellow =
Color::RGB.new(0xff, 0xff, 0x00)
- YellowGreen =
Color::RGB.new(0x9a, 0xcd, 0x32)
Class Method Summary collapse
-
.from_fraction(r = 0.0, g = 0.0, b = 0.0) ⇒ Object
Creates an RGB colour object from fractional values 0..1.
-
.from_html(html_colour) ⇒ Object
Creates an RGB colour object from an HTML colour descriptor (e.g.,
"fed"
or"#cabbed;"
. -
.from_percentage(r = 0, g = 0, b = 0) ⇒ Object
Creates an RGB colour object from percentages 0..100.
Instance Method Summary collapse
-
#+(other) ⇒ Object
Adds another colour to the current colour.
-
#-(other) ⇒ Object
Subtracts another colour to the current colour.
-
#==(other) ⇒ Object
Compares the other colour to this one.
-
#adjust_brightness(percent) ⇒ Object
Returns a new colour with the brightness adjusted by the specified percentage.
-
#adjust_hue(percent) ⇒ Object
Returns a new colour with the hue adjusted by the specified percentage.
-
#adjust_saturation(percent) ⇒ Object
Returns a new colour with the saturation adjusted by the specified percentage.
-
#b ⇒ Object
Returns the blue component of the colour as a fraction in the range 0.0 ..
-
#b=(bb) ⇒ Object
Sets the blue component of the colour as a fraction in the range 0.0 ..
-
#blue ⇒ Object
Returns the blue component of the colour in the normal 0 ..
-
#blue=(bb) ⇒ Object
Sets the blue component of the colour in the normal 0 ..
-
#blue_p ⇒ Object
Returns the blue component of the colour as a percentage.
-
#blue_p=(bb) ⇒ Object
Sets the blue component of the colour as a percentage.
-
#brightness ⇒ Object
Returns the brightness value for a colour, a number between 0..1.
-
#css_hsl ⇒ Object
Present the colour as an HSL HTML/CSS colour string (e.g., “hsl(180, 25%, 35%)”).
-
#css_hsla ⇒ Object
Present the colour as an HSLA (with alpha) HTML/CSS colour string (e.g., “hsla(180, 25%, 35%, 1)”).
-
#css_rgb ⇒ Object
Present the colour as an RGB HTML/CSS colour string (e.g., “rgb(0%, 50%, 100%)”).
-
#css_rgba ⇒ Object
Present the colour as an RGBA (with alpha) HTML/CSS colour string (e.g., “rgb(0%, 50%, 100%, 1)”).
-
#darken_by(percent) ⇒ Object
Mix the RGB hue with Black so that the RGB hue is the specified percentage of the resulting colour.
-
#g ⇒ Object
Returns the green component of the colour as a fraction in the range 0.0 ..
-
#g=(gg) ⇒ Object
Sets the green component of the colour as a fraction in the range 0.0 ..
-
#green ⇒ Object
Returns the green component of the colour in the normal 0 ..
-
#green=(gg) ⇒ Object
Sets the green component of the colour in the normal 0 ..
-
#green_p ⇒ Object
Returns the green component of the colour as a percentage.
-
#green_p=(gg) ⇒ Object
Sets the green component of the colour as a percentage.
-
#html ⇒ Object
Present the colour as an HTML/CSS colour string.
-
#initialize(r = 0, g = 0, b = 0) ⇒ RGB
constructor
Creates an RGB colour object from the standard range 0..255.
- #inspect ⇒ Object
-
#lighten_by(percent) ⇒ Object
Mix the RGB hue with White so that the RGB hue is the specified percentage of the resulting colour.
-
#max_rgb_as_grayscale ⇒ Object
(also: #max_rgb_as_greyscale)
Retrieve the maxmum RGB value from the current colour as a GrayScale colour.
-
#mix_with(mask, opacity) ⇒ Object
Mix the mask colour (which must be an RGB object) with the current colour at the stated opacity percentage (0..100).
-
#pdf_fill ⇒ Object
Present the colour as a DeviceRGB fill colour string for PDF.
-
#pdf_stroke ⇒ Object
Present the colour as a DeviceRGB stroke colour string for PDF.
-
#r ⇒ Object
Returns the red component of the colour as a fraction in the range 0.0 ..
-
#r=(rr) ⇒ Object
Sets the red component of the colour as a fraction in the range 0.0 ..
-
#red ⇒ Object
Returns the red component of the colour in the normal 0 ..
-
#red=(rr) ⇒ Object
Sets the red component of the colour in the normal 0 ..
-
#red_p ⇒ Object
Returns the red component of the colour as a percentage.
-
#red_p=(rr) ⇒ Object
Sets the red component of the colour as a percentage.
-
#to_cmyk ⇒ Object
Converts the RGB colour to CMYK.
-
#to_grayscale ⇒ Object
(also: #to_greyscale)
Convert to grayscale.
-
#to_hsl ⇒ Object
Returns the HSL colour encoding of the RGB value.
- #to_rgb(ignored = nil) ⇒ Object
-
#to_yiq ⇒ Object
Returns the YIQ (NTSC) colour encoding of the RGB value.
Constructor Details
#initialize(r = 0, g = 0, b = 0) ⇒ RGB
82 83 84 85 86 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 82 def initialize(r = 0, g = 0, b = 0) @r = r / 255.0 @g = g / 255.0 @b = b / 255.0 end |
Class Method Details
.from_fraction(r = 0.0, g = 0.0, b = 0.0) ⇒ Object
Creates an RGB colour object from fractional values 0..1.
Color::RGB.from_fraction(.3, .2, .1)
33 34 35 36 37 38 39 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 33 def from_fraction(r = 0.0, g = 0.0, b = 0.0) colour = Color::RGB.new colour.r = r colour.g = g colour.b = b colour end |
.from_html(html_colour) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 48 def from_html(html_colour) html_colour = html_colour.gsub(%r{[#;]}, '') case html_colour.size when 3 colours = html_colour.scan(%r{[0-9A-Fa-f]}).map { |el| (el * 2).to_i(16) } when 6 colours = html_colour.scan(%r<[0-9A-Fa-f]{2}>).map { |el| el.to_i(16) } else raise ArgumentError end Color::RGB.new(*colours) end |
.from_percentage(r = 0, g = 0, b = 0) ⇒ Object
Creates an RGB colour object from percentages 0..100.
Color::RGB.from_percentage(10, 20 30)
26 27 28 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 26 def from_percentage(r = 0, g = 0, b = 0) from_fraction(r / 100.0, g / 100.0, b / 100.0) end |
Instance Method Details
#+(other) ⇒ Object
Adds another colour to the current colour. The other colour will be converted to RGB before addition. This conversion depends upon a #to_rgb method on the other colour.
The addition is done using the RGB Accessor methods to ensure a valid colour in the result.
415 416 417 418 419 420 421 422 423 424 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 415 def +(other) other = other.to_rgb rgb = self.dup rgb.r += other.r rgb.g += other.g rgb.b += other.b rgb end |
#-(other) ⇒ Object
Subtracts another colour to the current colour. The other colour will be converted to RGB before subtraction. This conversion depends upon a #to_rgb method on the other colour.
The subtraction is done using the RGB Accessor methods to ensure a valid colour in the result.
432 433 434 435 436 437 438 439 440 441 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 432 def -(other) other = other.to_rgb rgb = self.dup rgb.r -= other.r rgb.g -= other.g rgb.b -= other.b rgb end |
#==(other) ⇒ Object
Compares the other colour to this one. The other colour will be converted to RGB before comparison, so the comparison between a RGB colour and a non-RGB colour will be approximate and based on the other colour’s default #to_rgb conversion. If there is no #to_rgb conversion, this will raise an exception. This will report that two RGB colours are equivalent if all component values are within COLOR_TOLERANCE of each other.
70 71 72 73 74 75 76 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 70 def ==(other) other = other.to_rgb other.kind_of?(Color::RGB) and ((@r - other.r).abs <= Color::COLOR_TOLERANCE) and ((@g - other.g).abs <= Color::COLOR_TOLERANCE) and ((@b - other.b).abs <= Color::COLOR_TOLERANCE) end |
#adjust_brightness(percent) ⇒ Object
283 284 285 286 287 288 289 290 291 292 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 283 def adjust_brightness(percent) percent /= 100.0 percent += 1.0 percent = [ percent, 2.0 ].min percent = [ 0.0, percent ].max hsl = to_hsl hsl.l *= percent hsl.to_rgb end |
#adjust_hue(percent) ⇒ Object
317 318 319 320 321 322 323 324 325 326 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 317 def adjust_hue(percent) percent /= 100.0 percent += 1.0 percent = [ percent, 2.0 ].min percent = [ 0.0, percent ].max hsl = to_hsl hsl.h *= percent hsl.to_rgb end |
#adjust_saturation(percent) ⇒ Object
300 301 302 303 304 305 306 307 308 309 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 300 def adjust_saturation(percent) percent /= 100.0 percent += 1.0 percent = [ percent, 2.0 ].min percent = [ 0.0, percent ].max hsl = to_hsl hsl.s *= percent hsl.to_rgb end |
#b ⇒ Object
Returns the blue component of the colour as a fraction in the range 0.0 .. 1.0.
392 393 394 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 392 def b @b end |
#b=(bb) ⇒ Object
Sets the blue component of the colour as a fraction in the range 0.0 .. 1.0.
405 406 407 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 405 def b=(bb) @b = Color.normalize(bb) end |
#blue ⇒ Object
Returns the blue component of the colour in the normal 0 .. 255 range.
383 384 385 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 383 def blue @b * 255.0 end |
#blue=(bb) ⇒ Object
Sets the blue component of the colour in the normal 0 .. 255 range.
396 397 398 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 396 def blue=(bb) @b = Color.normalize(bb / 255.0) end |
#blue_p ⇒ Object
Returns the blue component of the colour as a percentage.
387 388 389 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 387 def blue_p @b * 100.0 end |
#blue_p=(bb) ⇒ Object
Sets the blue component of the colour as a percentage.
400 401 402 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 400 def blue_p=(bb) @b = Color.normalize(bb / 100.0) end |
#brightness ⇒ Object
Returns the brightness value for a colour, a number between 0..1. Based on the Y value of YIQ encoding, representing luminosity, or perceived brightness.
This may be modified in a future version of color-tools to use the luminosity value of HSL.
268 269 270 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 268 def brightness to_yiq.y end |
#css_hsl ⇒ Object
Present the colour as an HSL HTML/CSS colour string (e.g., “hsl(180, 25%, 35%)”). Note that this will perform a #to_hsl operation using the default conversion formula.
131 132 133 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 131 def css_hsl to_hsl.css_hsl end |
#css_hsla ⇒ Object
Present the colour as an HSLA (with alpha) HTML/CSS colour string (e.g., “hsla(180, 25%, 35%, 1)”). Note that this will perform a #to_hsl operation using the default conversion formula.
138 139 140 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 138 def css_hsla to_hsl.css_hsla end |
#css_rgb ⇒ Object
Present the colour as an RGB HTML/CSS colour string (e.g., “rgb(0%, 50%, 100%)”). Note that this will perform a #to_rgb operation using the default conversion formula.
117 118 119 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 117 def css_rgb "rgb(%3.2f%%, %3.2f%%, %3.2f%%)" % [ red_p, green_p, blue_p ] end |
#css_rgba ⇒ Object
Present the colour as an RGBA (with alpha) HTML/CSS colour string (e.g., “rgb(0%, 50%, 100%, 1)”). Note that this will perform a #to_rgb operation using the default conversion formula.
124 125 126 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 124 def css_rgba "rgba(%3.2f%%, %3.2f%%, %3.2f%%, %3.2f)" % [ red_p, green_p, blue_p, 1 ] end |
#darken_by(percent) ⇒ Object
Mix the RGB hue with Black so that the RGB hue is the specified percentage of the resulting colour. Strictly speaking, this isn’t a darken_by operation.
245 246 247 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 245 def darken_by(percent) mix_with(Black, percent) end |
#g ⇒ Object
Returns the green component of the colour as a fraction in the range 0.0 .. 1.0.
365 366 367 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 365 def g @g end |
#g=(gg) ⇒ Object
Sets the green component of the colour as a fraction in the range 0.0 .. 1.0.
378 379 380 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 378 def g=(gg) @g = Color.normalize(gg) end |
#green ⇒ Object
Returns the green component of the colour in the normal 0 .. 255 range.
356 357 358 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 356 def green @g * 255.0 end |
#green=(gg) ⇒ Object
Sets the green component of the colour in the normal 0 .. 255 range.
369 370 371 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 369 def green=(gg) @g = Color.normalize(gg / 255.0) end |
#green_p ⇒ Object
Returns the green component of the colour as a percentage.
360 361 362 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 360 def green_p @g * 100.0 end |
#green_p=(gg) ⇒ Object
Sets the green component of the colour as a percentage.
373 374 375 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 373 def green_p=(gg) @g = Color.normalize(gg / 100.0) end |
#html ⇒ Object
Present the colour as an HTML/CSS colour string.
101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 101 def html r = (@r * 255).round r = 255 if r > 255 g = (@g * 255).round g = 255 if g > 255 b = (@b * 255).round b = 255 if b > 255 "#%02x%02x%02x" % [ r, g, b ] end |
#inspect ⇒ Object
450 451 452 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 450 def inspect "RGB [#{html}]" end |
#lighten_by(percent) ⇒ Object
Mix the RGB hue with White so that the RGB hue is the specified percentage of the resulting colour. Strictly speaking, this isn’t a darken_by operation.
238 239 240 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 238 def lighten_by(percent) mix_with(White, percent) end |
#max_rgb_as_grayscale ⇒ Object Also known as: max_rgb_as_greyscale
Retrieve the maxmum RGB value from the current colour as a GrayScale colour
445 446 447 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 445 def max_rgb_as_grayscale Color::GrayScale.from_fraction([@r, @g, @b].max) end |
#mix_with(mask, opacity) ⇒ Object
Mix the mask colour (which must be an RGB object) with the current colour at the stated opacity percentage (0..100).
251 252 253 254 255 256 257 258 259 260 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 251 def mix_with(mask, opacity) opacity /= 100.0 rgb = self.dup rgb.r = (@r * opacity) + (mask.r * (1 - opacity)) rgb.g = (@g * opacity) + (mask.g * (1 - opacity)) rgb.b = (@b * opacity) + (mask.b * (1 - opacity)) rgb end |
#pdf_fill ⇒ Object
Present the colour as a DeviceRGB fill colour string for PDF. This will be removed from the default package in color-tools 2.0.
90 91 92 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 90 def pdf_fill PDF_FORMAT_STR % [ @r, @g, @b, "rg" ] end |
#pdf_stroke ⇒ Object
Present the colour as a DeviceRGB stroke colour string for PDF. This will be removed from the default package in color-tools 2.0.
96 97 98 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 96 def pdf_stroke PDF_FORMAT_STR % [ @r, @g, @b, "RG" ] end |
#r ⇒ Object
Returns the red component of the colour as a fraction in the range 0.0 .. 1.0.
338 339 340 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 338 def r @r end |
#r=(rr) ⇒ Object
Sets the red component of the colour as a fraction in the range 0.0 .. 1.0.
351 352 353 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 351 def r=(rr) @r = Color.normalize(rr) end |
#red ⇒ Object
Returns the red component of the colour in the normal 0 .. 255 range.
329 330 331 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 329 def red @r * 255.0 end |
#red=(rr) ⇒ Object
Sets the red component of the colour in the normal 0 .. 255 range.
342 343 344 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 342 def red=(rr) @r = Color.normalize(rr / 255.0) end |
#red_p ⇒ Object
Returns the red component of the colour as a percentage.
333 334 335 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 333 def red_p @r * 100.0 end |
#red_p=(rr) ⇒ Object
Sets the red component of the colour as a percentage.
346 347 348 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 346 def red_p=(rr) @r = Color.normalize(rr / 100.0) end |
#to_cmyk ⇒ Object
Converts the RGB colour to CMYK. Most colour experts strongly suggest that this is not a good idea (some even suggesting that it’s a very bad idea). CMYK represents additive percentages of inks on white paper, whereas RGB represents mixed colour intensities on a black screen.
However, the colour conversion can be done. The basic method is multi-step:
-
Convert the R, G, and B components to C, M, and Y components.
c = 1.0 - r m = 1.0 - g y = 1.0 - b
-
Compute the minimum amount of black (K) required to smooth the colour in inks.
k = min(c, m, y)
-
Perform undercolour removal on the C, M, and Y components of the colours because less of each colour is needed for each bit of black. Also, regenerate the black (K) based on the undercolour removal so that the colour is more accurately represented in ink.
c = min(1.0, max(0.0, c - UCR(k))) m = min(1.0, max(0.0, m - UCR(k))) y = min(1.0, max(0.0, y - UCR(k))) k = min(1.0, max(0.0, BG(k)))
The undercolour removal function and the black generation functions return a value based on the brightness of the RGB colour.
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 168 def to_cmyk c = 1.0 - @r.to_f m = 1.0 - @g.to_f y = 1.0 - @b.to_f k = [c, m, y].min k = k - (k * brightness) c = [1.0, [0.0, c - k].max].min m = [1.0, [0.0, m - k].max].min y = [1.0, [0.0, y - k].max].min k = [1.0, [0.0, k].max].min Color::CMYK.from_fraction(c, m, y, k) end |
#to_grayscale ⇒ Object Also known as: to_greyscale
Convert to grayscale.
272 273 274 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 272 def to_grayscale Color::GrayScale.from_fraction(to_hsl.l) end |
#to_hsl ⇒ Object
Returns the HSL colour encoding of the RGB value. The conversions here are based on forumlas from www.easyrgb.com/math.php and elsewhere.
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 199 def to_hsl min = [ @r, @g, @b ].min max = [ @r, @g, @b ].max delta = (max - min).to_f lum = (max + min) / 2.0 if Color.near_zero?(delta) # close to 0.0, so it's a grey hue = 0 sat = 0 else if Color.near_zero_or_less?(lum - 0.5) sat = delta / (max + min).to_f else sat = delta / (2 - max - min).to_f end # This is based on the conversion algorithm from # http://en.wikipedia.org/wiki/HSV_color_space#Conversion_from_RGB_to_HSL_or_HSV # Contributed by Adam Johnson sixth = 1 / 6.0 if @r == max # Color.near_zero_or_less?(@r - max) hue = (sixth * ((@g - @b) / delta)) hue += 1.0 if @g < @b elsif @g == max # Color.near_zero_or_less(@g - max) hue = (sixth * ((@b - @r) / delta)) + (1.0 / 3.0) elsif @b == max # Color.near_zero_or_less?(@b - max) hue = (sixth * ((@r - @g) / delta)) + (2.0 / 3.0) end hue += 1 if hue < 0 hue -= 1 if hue > 1 end Color::HSL.from_fraction(hue, sat, lum) end |
#to_rgb(ignored = nil) ⇒ Object
184 185 186 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 184 def to_rgb(ignored = nil) self end |
#to_yiq ⇒ Object
Returns the YIQ (NTSC) colour encoding of the RGB value.
189 190 191 192 193 194 |
# File 'lib/gems/color-1.4.0/lib/color/rgb.rb', line 189 def to_yiq y = (@r * 0.299) + (@g * 0.587) + (@b * 0.114) i = (@r * 0.596) + (@g * -0.275) + (@b * -0.321) q = (@r * 0.212) + (@g * -0.523) + (@b * 0.311) Color::YIQ.from_fraction(y, i, q) end |