redgreenblue 0.14.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a61701a3122fc8e8b4f4352142862f7e3d63ed317cea1321cfe1bafd5d697a42
4
- data.tar.gz: 4a76d444f8080acb74656963654375e975eb91eb0068f6c4012e9233daf58bb7
3
+ metadata.gz: 2359fa39f6387727f76770372b1f798ae60fdf34dce8bd481b06d58e5a128c4b
4
+ data.tar.gz: 6194f07e51ce46a4c9bdd3fd7d2fd895eebcb8e6f34e76c37b3c078d3ea58fb9
5
5
  SHA512:
6
- metadata.gz: 502bc188625f8df6fc3a55fa53454728602843ddd39f61c8199009f0e55c1fbd38a496d27c889c565b578ae85dd9cd051a457deec87979374d89006833f37707
7
- data.tar.gz: b811b0e1bc0bd366406be48eead2f11328c8304eee6eb34192bc92c40c31a4683dc5771a3944650749707df7e5a40e330d64c02b7f7818c0064dca5253ffe019
6
+ metadata.gz: e76a1651bfac0b0f197cae93a9fa3139e798a3a2ab0ae00950d08eb5e724834f9ccce7fe06beb98b083988fd4d7b672431aee5c23a66c24cce2782669606b517
7
+ data.tar.gz: 688367a83417deb0a812e96982f9c44ec369a1ee6984836338c25b07bd11843ced02053341044cebcaf2e4e71ce5ef26316799850831e446b85ece5766d31ddf
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  # r, g, b methods
4
4
 
@@ -44,7 +44,7 @@ class RGB
44
44
  self.r, self.g, self.b = rgb.flatten
45
45
  end
46
46
 
47
- # Creates a new object from red, green, and blue components as integers in the range 0..255 (three 8-bit values).
47
+ # Creates a new RGB::Color from red, green, and blue components as integers in the range 0..255 (three 8-bit values).
48
48
  def self.rgb(*rgb)
49
49
  c = self.new
50
50
  c.rgb = rgb
@@ -57,24 +57,38 @@ class RGB
57
57
  self
58
58
  end
59
59
 
60
- # Creates a new RGB object containing the nearest 24-bit color.
60
+ # Creates a new RGB::Color containing the nearest 24-bit color.
61
61
  def snap
62
62
  RGB.rgb rgb
63
63
  end
64
64
 
65
- # Calls the given block for each 24-bit RGB color (from black to white), passing the color as an RGB object.
66
- #
67
- # Returns the number of iterations.
68
- def self.each_24bit_color
69
- range = 0..255
70
- range.each do |r|
71
- range.each do |g|
72
- range.each do |b|
73
- yield self.rgb(r,g,b)
65
+ end
66
+
67
+
68
+ module RGB
69
+
70
+ class << self
71
+
72
+ # Creates a new RGB::Color from red, green, and blue components as integers in the range 0..255 (three 8-bit values).
73
+ def rgb(*rgb)
74
+ Color.rgb(*rgb)
75
+ end
76
+
77
+ # Calls the given block for each 24-bit RGB color (from black to white), passing the color as an RGB::Color object.
78
+ #
79
+ # Returns the number of iterations.
80
+ def each_24bit_color
81
+ range = 0..255
82
+ range.each do |r|
83
+ range.each do |g|
84
+ range.each do |b|
85
+ yield self.rgb(r,g,b)
86
+ end
74
87
  end
75
88
  end
89
+ range.size ** 3
76
90
  end
77
- range.size ** 3
91
+
78
92
  end
79
93
 
80
94
  end
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  # rr, gg, bb methods
4
4
 
@@ -44,7 +44,7 @@ class RGB
44
44
  self.rr, self.gg, self.bb = rrggbb.flatten
45
45
  end
46
46
 
47
- # Creates a new object from red, green, and blue components as integers in the range 0..65535 (three 16-bit values).
47
+ # Creates a new RGB::Color from red, green, and blue components as integers in the range 0..65535 (three 16-bit values).
48
48
  def self.rrggbb(*rrggbb)
49
49
  c = self.new
50
50
  c.rrggbb = rrggbb
@@ -52,3 +52,17 @@ class RGB
52
52
  end
53
53
 
54
54
  end
55
+
56
+
57
+ module RGB
58
+
59
+ class << self
60
+
61
+ # Creates a new RGB::Color from red, green, and blue components as integers in the range 0..65535 (three 16-bit values).
62
+ def rrggbb(*rrggbb)
63
+ Color.rrggbb(*rrggbb)
64
+ end
65
+
66
+ end
67
+
68
+ end
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  def initialize(*a)
4
4
  self.values = a.any? ? a : [ 0.5, 0.5, 0.5 ]
@@ -82,3 +82,17 @@ class RGB
82
82
  end
83
83
 
84
84
  end
85
+
86
+ # The main namespace for redgreenblue.
87
+ module RGB
88
+
89
+ class << self
90
+
91
+ # Creates a new RGB::Color from red, green, and blue components as three values between 0 and 1.
92
+ def new(*a)
93
+ Color.new(*a)
94
+ end
95
+
96
+ end
97
+
98
+ end
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  # Returns a 3-byte string containing the object's color in BGR24 format.
4
4
  def bgr24
@@ -10,7 +10,7 @@ class RGB
10
10
  self.b, self.g, self.r = bgr_string.unpack('C3')
11
11
  end
12
12
 
13
- # Creates a new RGB object from BGR24 data (a 3-byte string).
13
+ # Creates a new RGB::Color from BGR24 data (a 3-byte string).
14
14
  def self.bgr24(bgr)
15
15
  c = self.new
16
16
  c.bgr24 = bgr
@@ -18,3 +18,17 @@ class RGB
18
18
  end
19
19
 
20
20
  end
21
+
22
+
23
+ module RGB
24
+
25
+ class << self
26
+
27
+ # Creates a new RGB::Color from BGR24 data (a 3-byte string).
28
+ def bgr24(bgr)
29
+ Color.bgr24(bgr)
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -1,6 +1,21 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
- # Returns CIE 1931 XYZ values for the RGB object.
3
+ class << self
4
+
5
+ # Creates a new RGB::Color from CIE 1931 XYZ values.
6
+ #
7
+ # Assumes the XYZ values are relative to D65 reference white, the same as used in sRGB.
8
+ def cie_xyz(*a)
9
+ c = self.new
10
+ c.cie_xyz = a
11
+ c
12
+ end
13
+
14
+ alias xyz cie_xyz
15
+
16
+ end
17
+
18
+ # Returns CIE 1931 XYZ values for the RGB::Color object.
4
19
  #
5
20
  # Based on:
6
21
  # - http://www.brucelindbloom.com/index.html?Eqn_RGB_to_XYZ.html
@@ -11,41 +26,74 @@ class RGB
11
26
  r, g, b = linear_values
12
27
 
13
28
  [
14
-
15
29
  r * 0.4124_5643_9090 + g * 0.3575_7607_7644 + b * 0.1804_3748_3266,
16
30
  r * 0.2126_7285_1406 + g * 0.7151_5215_5288 + b * 0.0721_7499_3307,
17
31
  r * 0.0193_3389_5582 + g * 0.1191_9202_5881 + b * 0.9503_0407_8536
18
-
19
32
  ].map { |v| round ? v.round(8) : v }
20
33
  end
21
34
 
22
35
  alias xyz cie_xyz
23
36
 
24
- # Returns CIE 1931 xyY values for the RGB object.
37
+ # Sets the red, green, and blue values by converting the given CIE 1931 XYZ values to RGB.
38
+ #
39
+ # Assumes the XYZ values are relative to D65 reference white, the same as used in sRGB.
40
+ #
41
+ # Based on:
42
+ # - http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html
43
+ # XYZ to sRGB matrix for D65 reference white calculated with Javascript by Bruce Lindbloom:
44
+ # - http://www.brucelindbloom.com/ColorCalculator.html
45
+ def cie_xyz=(*a)
46
+ x, y, z = a.flatten
47
+ self.linear_values = [
48
+ x * 3.2404_5416_2114 + y * -1.5371_3851_2798 + z * -0.498_5314_09556,
49
+ x * -0.9692_6603_0505 + y * 1.8760_1084_5447 + z * 0.0415_5601_7530,
50
+ x * 0.0556_4343_0959 + y * -0.2040_2591_3517 + z * 1.0572_2518_8223
51
+ ]
52
+ end
53
+
54
+ alias xyz= cie_xyz=
55
+
56
+ # Returns CIE 1931 xyY values for the RGB::Color object.
25
57
  #
26
58
  # Based on:
27
59
  # - https://en.wikipedia.org/wiki/CIE_1931_color_space
28
60
  # - http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_xyY.html
29
61
  # - https://ninedegreesbelow.com/photography/xyz-rgb.html
30
- def cie_xyy
62
+ def cie_xyy(round: true)
31
63
  x, y, z = cie_xyz(round: false)
32
64
 
33
65
  [
34
-
35
66
  x / ( x + y + z ),
36
67
  y / ( x + y + z ),
37
68
  y
38
-
39
- ].map { |v| v.round(8) }
69
+ ].map { |v| round ? v.round(8) : v }
40
70
  end
41
71
 
42
72
  alias xyy cie_xyy
43
73
 
44
- # Returns CIE 1931 xy values for the RGB object.
45
- def cie_xy
46
- cie_xyy[0..1]
74
+ # Returns CIE 1931 xy values for the RGB::Color object.
75
+ def cie_xy(round: true)
76
+ cie_xyy(round: round)[0..1]
47
77
  end
48
78
 
49
79
  alias xy cie_xy
50
80
 
51
81
  end
82
+
83
+
84
+ module RGB
85
+
86
+ class << self
87
+
88
+ # Creates a new RGB::Color from CIE 1931 XYZ values.
89
+ #
90
+ # Assumes the XYZ values are relative to D65 reference white, the same as used in sRGB.
91
+ def cie_xyz(*a)
92
+ RGB::Color.cie_xyz(a)
93
+ end
94
+
95
+ alias xyz cie_xyz
96
+
97
+ end
98
+
99
+ end
@@ -1,27 +1,27 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
- # Returns CIE 1976 L*a*b* (CIELAB) values for the RGB object.
3
+ # Returns CIE 1976 L*a*b* (CIELAB) values for the RGB::Color object.
4
4
  def cie_lab(round: true)
5
5
  cie_lab_luv(round: round, type: :lab)
6
6
  end
7
7
 
8
8
  alias lab cie_lab
9
9
 
10
- # Returns CIE 1976 LCHab values for the RGB object, derived from L*a*b* (CIELAB).
10
+ # Returns CIE 1976 LCHab values for the RGB::Color object, derived from L*a*b* (CIELAB).
11
11
  #
12
12
  # When C is 0, H is nil.
13
13
  def cie_lch_ab
14
14
  cie_lch_ab_uv(type: :lab)
15
15
  end
16
16
 
17
- # Returns CIE 1976 L*u*v* (CIELUV) values for the RGB object.
17
+ # Returns CIE 1976 L*u*v* (CIELUV) values for the RGB::Color object.
18
18
  def cie_luv(round: true)
19
19
  cie_lab_luv(round: round, type: :luv)
20
20
  end
21
21
 
22
22
  alias luv cie_luv
23
23
 
24
- # Returns CIE 1976 LCHuv values for the RGB object, derived from L*u*v* (CIELUV).
24
+ # Returns CIE 1976 LCHuv values for the RGB::Color object, derived from L*u*v* (CIELUV).
25
25
  #
26
26
  # When C is 0, H is nil.
27
27
  def cie_lch_uv
@@ -44,7 +44,7 @@ class RGB
44
44
 
45
45
  private
46
46
 
47
- # Returns either CIE 1976 L*a*b* (CIELAB) or CIE 1976 L*u*v* (CIELUV) values for the RGB object.
47
+ # Returns either CIE 1976 L*a*b* (CIELAB) or CIE 1976 L*u*v* (CIELUV) values for the RGB::Color object.
48
48
  #
49
49
  # L*a*b* formula based on:
50
50
  # - http://www.brucelindbloom.com/Eqn_XYZ_to_Lab.html
@@ -82,7 +82,7 @@ class RGB
82
82
  end.map { |v| v.nan? ? 0.0 : ( round ? v.round(8) : v ) }
83
83
  end
84
84
 
85
- # Returns either CIE 1976 LCHab or CIE 1976 LCHuv values for the RGB object.
85
+ # Returns either CIE 1976 LCHab or CIE 1976 LCHuv values for the RGB::Color object.
86
86
  #
87
87
  # Based on:
88
88
  # - http://www.brucelindbloom.com/Eqn_Lab_to_LCH.html
@@ -0,0 +1,55 @@
1
+ class RGB::Color
2
+
3
+ # Returns the difference between this (reference) color and another color, according to the CIE 1994 delta E formula.
4
+ #
5
+ # By default uses parameters for use in graphic arts, and reference conditions.
6
+ # Parameters (k1, k2, kl, kc, kh) can be individually overriden for different applications and for variations in conditions.
7
+ #
8
+ # Based on:
9
+ # - http://www.brucelindbloom.com/Eqn_DeltaE_CIE94.html
10
+ # - https://archive.org/details/gov.law.cie.15.2004
11
+ # - https://en.wikipedia.org/wiki/Color_difference
12
+ def delta_e_cie_1994(another, k1: 0.045, k2: 0.015, kl: 1, kc: 1, kh: 1)
13
+
14
+ l , a , b = cie_lab(round: false)
15
+ l2, a2, b2 = another.cie_lab(round: false)
16
+
17
+ c = Math.hypot(a , b )
18
+ c2 = Math.hypot(a2, b2)
19
+
20
+ da = a - a2
21
+ db = b - b2
22
+ dc = c - c2
23
+
24
+ dh2 = (da ** 2) + (db ** 2) - (dc ** 2)
25
+ dl = l - l2
26
+
27
+ sl = 1
28
+ sc = 1 + k1 * c
29
+ sh = 1 + k2 * c
30
+
31
+ Math.sqrt(
32
+ ( (dl / ( kl*sl)) ** 2 ) +
33
+ ( (dc / ( kc*sc)) ** 2 ) +
34
+ ( dh2 / ((kh*sh) ** 2) )
35
+ ).round(6)
36
+
37
+ end
38
+
39
+ alias de94 delta_e_cie_1994
40
+
41
+ # Returns the difference between this (reference) color and another color, according to the CIE 1994 delta E formula.
42
+ #
43
+ # For use in graphic arts, under reference conditions.
44
+ def de94g(another)
45
+ delta_e_cie_1994(another)
46
+ end
47
+
48
+ # Returns the difference between this (reference) color and another color, according to the CIE 1994 delta E formula.
49
+ #
50
+ # For use with textiles, under reference conditions.
51
+ def de94t(another)
52
+ delta_e_cie_1994(another, k1: 0.048, k2: 0.014, kl: 2)
53
+ end
54
+
55
+ end
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  # Returns gamma-expanded (inverse-companded) RGB values for the object (three values between 0 and 1).
4
4
  #
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  # Returns a 1-pixel GIF image set to the color.
4
4
  #
@@ -1,18 +1,14 @@
1
- class RGB
2
-
3
- #----------------------------------------------------------------------#
4
- # Class Methods #
5
- #----------------------------------------------------------------------#
1
+ class RGB::Color
6
2
 
7
3
  class << self
8
4
 
9
- # Creates a new RGB object from a line of gpl (Gimp color palette) input. Returns nil if not successful.
5
+ # Creates a new RGB::Color from a line of gpl (Gimp color palette) input. Returns nil if not successful.
10
6
  #
11
7
  # @example
12
- # RGB.gpl "255 153 204\tpink"
8
+ # RGB::Color.gpl "255 153 204\tpink"
13
9
  def gpl(line)
14
10
  if line.chomp.match( /^\s*(?<r>\d{1,3})\s+(?<g>\d{1,3})\s+(?<b>\d{1,3})(\s+(?<name>.*))?/ )
15
- color = RGB.rgb $~[:r].to_i, $~[:g].to_i, $~[:b].to_i
11
+ color = RGB::Color.rgb $~[:r].to_i, $~[:g].to_i, $~[:b].to_i
16
12
  color.name = $~[:name] if $~[:name]
17
13
  color
18
14
  else
@@ -20,7 +16,46 @@ class RGB
20
16
  end
21
17
  end
22
18
 
23
- # Loads a gpl (Gimp color palette) source and returns an array of RGB objects.
19
+ end
20
+
21
+
22
+ # Returns the color in the format used in .gpl files (Gimp color palettes), including its name (if present).
23
+ #
24
+ # You can optionally supply a name as argument.
25
+ def gpl(gpl_name=name)
26
+ ( "%3d %3d %3d" % rgb ) +
27
+ ( gpl_name.to_s.size != 0 ? "\t#{gpl_name}" : '' )
28
+ end
29
+
30
+ end
31
+
32
+
33
+ module RGB
34
+
35
+ class << self
36
+
37
+ # Creates a new RGB::Color from a line of gpl (Gimp color palette) input. Returns nil if not successful.
38
+ #
39
+ # @example
40
+ # RGB.gpl "255 153 204\tpink"
41
+ def gpl(line)
42
+ Color.gpl(line)
43
+ end
44
+
45
+ # Returns a header for a .gpl file (Gimp color palette). Includes an optional name and number of columns.
46
+ #
47
+ # @example
48
+ # RGB.gpl_header('Spring')
49
+ #
50
+ # Reverse-engineered from:
51
+ # - https://github.com/GNOME/gimp/blob/5d79fba8238a27b8691556489898d33b3fa0dda0/app/core/gimppalette-load.c
52
+ def gpl_header(name=nil, columns: nil)
53
+ "GIMP Palette\n" +
54
+ ( name ? "Name: #{name}\n" : '' ) +
55
+ ( columns ? "Columns: #{columns}\n" : '' )
56
+ end
57
+
58
+ # Loads a gpl (Gimp color palette) source and returns an array of RGB::Color objects.
24
59
  #
25
60
  # Options:
26
61
  # - file: Path to a .gpl file to be loaded.
@@ -47,7 +82,7 @@ class RGB
47
82
  end
48
83
 
49
84
  if source.respond_to? :each_line
50
- list = source.each_line.map { |line| RGB.gpl(line) }
85
+ list = source.each_line.map { |line| Color.gpl(line) }
51
86
 
52
87
  if compact
53
88
  list.compact!
@@ -64,31 +99,6 @@ class RGB
64
99
  end
65
100
  end
66
101
 
67
- # Returns a header for a .gpl file (Gimp color palette). Includes an optional name and number of columns.
68
- #
69
- # @example
70
- # RGB.gpl_header('Spring')
71
- #
72
- # Reverse-engineered from:
73
- # - https://github.com/GNOME/gimp/blob/5d79fba8238a27b8691556489898d33b3fa0dda0/app/core/gimppalette-load.c
74
- def gpl_header(name=nil, columns: nil)
75
- "GIMP Palette\n" +
76
- ( name ? "Name: #{name}\n" : '' ) +
77
- ( columns ? "Columns: #{columns}\n" : '' )
78
- end
79
-
80
- end
81
-
82
- #----------------------------------------------------------------------#
83
- # Instance Methods #
84
- #----------------------------------------------------------------------#
85
-
86
- # Returns the color in the format used in .gpl files (Gimp color palettes), including its name (if present).
87
- #
88
- # You can optionally supply a name as argument.
89
- def gpl(gpl_name=name)
90
- ( "%3d %3d %3d" % rgb ) +
91
- ( gpl_name.to_s.size != 0 ? "\t#{gpl_name}" : '' )
92
102
  end
93
103
 
94
104
  end
@@ -1,4 +1,4 @@
1
- class RGB
1
+ class RGB::Color
2
2
 
3
3
  # Returns a 6-digit hexadecimal string representing the object's red, green, and blue components as 8-bit values.
4
4
  #
@@ -22,11 +22,14 @@ class RGB
22
22
  end
23
23
  end
24
24
 
25
+ private
25
26
 
26
- # Class methods
27
+ def hex6
28
+ '%02x%02x%02x' % [ r, g, b ]
29
+ end
27
30
 
28
31
 
29
- # Creates a new object from a 6- or 3-digit hexadecimal string representing red, green, and blue.
32
+ # Creates a new RGB::Color from a 6- or 3-digit hexadecimal string representing red, green, and blue.
30
33
  #
31
34
  # The string may include a '#' prefix.
32
35
  def self.hex(hex_string)
@@ -37,31 +40,40 @@ class RGB
37
40
  end
38
41
  end
39
42
 
40
- # Returns a 3-digit shorthand version of a 6-digit hexadecimal string.
41
- #
42
- # If a shorthand version is not possible, returns the original string.
43
- def self.hex_shorthand(hex_string)
44
- hex_string.sub( /^(#?)(\h)\2(\h)\3(\h)\4$/, '\1\2\3\4' )
45
- end
43
+ end
46
44
 
47
- # Parses a 6- or 3-digit hexadecimal string.
48
- # Returns three integers in the range 0..255, or nil if not successful.
49
- #
50
- # The string may include a '#' prefix.
51
- def self.hex_to_rgb(hex_string)
52
- if hex_string =~ /^(#?)(\h\h)(\h\h)(\h\h)$/
53
- [$2, $3, $4].map { |h| h.to_i(16) }
54
- elsif hex_string =~ /^(#?)(\h)(\h)(\h)$/
55
- [$2, $3, $4].map { |h| (h*2).to_i(16) }
56
- else
57
- nil
45
+ module RGB
46
+
47
+ class << self
48
+
49
+ # Creates a new RGB::Color from a 6- or 3-digit hexadecimal string representing red, green, and blue.
50
+ #
51
+ # The string may include a '#' prefix.
52
+ def hex(hex_string)
53
+ Color.hex(hex_string)
58
54
  end
59
- end
60
55
 
61
- private
56
+ # Returns a 3-digit shorthand version of a 6-digit hexadecimal string.
57
+ #
58
+ # If a shorthand version is not possible, returns the original string.
59
+ def hex_shorthand(hex_string)
60
+ hex_string.sub( /^(#?)(\h)\2(\h)\3(\h)\4$/, '\1\2\3\4' )
61
+ end
62
+
63
+ # Parses a 6- or 3-digit hexadecimal string.
64
+ # Returns three integers in the range 0..255, or nil if not successful.
65
+ #
66
+ # The string may include a '#' prefix.
67
+ def hex_to_rgb(hex_string)
68
+ if hex_string =~ /^(#?)(\h\h)(\h\h)(\h\h)$/
69
+ [$2, $3, $4].map { |h| h.to_i(16) }
70
+ elsif hex_string =~ /^(#?)(\h)(\h)(\h)$/
71
+ [$2, $3, $4].map { |h| (h*2).to_i(16) }
72
+ else
73
+ nil
74
+ end
75
+ end
62
76
 
63
- def hex6
64
- '%02x%02x%02x' % [ r, g, b ]
65
77
  end
66
78
 
67
79
  end
@@ -1,22 +1,14 @@
1
1
  require 'redgreenblue/hsv'
2
2
 
3
- class RGB
4
-
5
- #----------------------------------------------------------------------#
6
- # Class Methods #
7
- #----------------------------------------------------------------------#
3
+ class RGB::Color
8
4
 
9
5
  class << self
10
6
 
11
- # Creates a new RGB object from HSB values: hue (0..360), saturation (0..1), and brightness (0..1).
7
+ # Creates a new RGB::Color from HSB values: hue (0..360), saturation (0..1), and brightness (0..1).
12
8
  alias hsb hsv
13
9
 
14
10
  end
15
11
 
16
- #----------------------------------------------------------------------#
17
- # Instance Methods #
18
- #----------------------------------------------------------------------#
19
-
20
12
  # Returns color as HSB:
21
13
  # hue (0..360), saturation (0..1), brightness (0..1).
22
14
  # When saturation is 0, hue is nil.
@@ -55,7 +47,19 @@ class RGB
55
47
  # Sets red, green, and blue by rotating the object's HSB-hue a number of degrees.
56
48
  alias hsb_rotate! hsv_rotate!
57
49
 
58
- # Creates one or more new RGB objects by rotating this object's HSB-hue a number of degrees.
50
+ # Creates one or more new RGB::Color objects by rotating this object's HSB-hue a number of degrees.
59
51
  alias hsb_rotate hsv_rotate
60
52
 
61
53
  end
54
+
55
+
56
+ module RGB
57
+
58
+ class << self
59
+
60
+ # Creates a new RGB::Color from HSB values: hue (0..360), saturation (0..1), and brightness (0..1).
61
+ alias hsb hsv
62
+
63
+ end
64
+
65
+ end