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 +4 -4
- data/lib/redgreenblue/24bit.rb +27 -13
- data/lib/redgreenblue/48bit.rb +16 -2
- data/lib/redgreenblue/base.rb +15 -1
- data/lib/redgreenblue/bgr24bit.rb +16 -2
- data/lib/redgreenblue/cie_1931.rb +60 -12
- data/lib/redgreenblue/cie_1976.rb +7 -7
- data/lib/redgreenblue/cie_1994.rb +55 -0
- data/lib/redgreenblue/gamma.rb +1 -1
- data/lib/redgreenblue/gif.rb +1 -1
- data/lib/redgreenblue/gpl.rb +45 -35
- data/lib/redgreenblue/hex.rb +36 -24
- data/lib/redgreenblue/hsb.rb +15 -11
- data/lib/redgreenblue/hsl.rb +18 -12
- data/lib/redgreenblue/hsv.rb +18 -12
- data/lib/redgreenblue/hsx_shared.rb +1 -9
- data/lib/redgreenblue/hwb.rb +1 -1
- data/lib/redgreenblue/inspect.rb +33 -24
- data/lib/redgreenblue/int.rb +16 -2
- data/lib/redgreenblue/lazy.rb +81 -13
- data/lib/redgreenblue/mac.rb +1 -1
- data/lib/redgreenblue/match.rb +29 -1
- data/lib/redgreenblue/math.rb +1 -1
- data/lib/redgreenblue/misc.rb +22 -8
- data/lib/redgreenblue/mix.rb +6 -6
- data/lib/redgreenblue/name.rb +1 -1
- data/lib/redgreenblue/opt/philipshue.rb +5 -3
- data/lib/redgreenblue/os/mac.rb +23 -6
- data/lib/redgreenblue/ostwald.rb +3 -3
- data/lib/redgreenblue/random.rb +18 -4
- data/lib/redgreenblue/rgb565.rb +16 -2
- data/lib/redgreenblue/terminal.rb +1 -1
- data/lib/redgreenblue/version.rb +2 -2
- data/lib/redgreenblue/view.rb +11 -5
- data/lib/redgreenblue/web.rb +58 -56
- data/lib/redgreenblue.rb +21 -2
- metadata +4 -3
data/lib/redgreenblue/hsl.rb
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
require 'redgreenblue/hsx_shared'
|
2
2
|
require 'redgreenblue/math'
|
3
3
|
|
4
|
-
class RGB
|
5
|
-
|
6
|
-
#----------------------------------------------------------------------#
|
7
|
-
# Class Methods #
|
8
|
-
#----------------------------------------------------------------------#
|
4
|
+
class RGB::Color
|
9
5
|
|
10
6
|
class << self
|
11
7
|
|
12
|
-
# Creates a new RGB
|
8
|
+
# Creates a new RGB::Color from HSL values: hue (0..360), saturation (0..1), and lightness (0..1).
|
13
9
|
def hsl(*a)
|
14
10
|
new hsl_to_values(*a)
|
15
11
|
end
|
@@ -23,10 +19,6 @@ class RGB
|
|
23
19
|
|
24
20
|
end
|
25
21
|
|
26
|
-
#----------------------------------------------------------------------#
|
27
|
-
# Instance Methods #
|
28
|
-
#----------------------------------------------------------------------#
|
29
|
-
|
30
22
|
# Returns color as HSL:
|
31
23
|
# hue (0..360), saturation (0..1), lightness (0..1).
|
32
24
|
# When saturation is 0, hue is nil.
|
@@ -51,7 +43,7 @@ class RGB
|
|
51
43
|
|
52
44
|
# Sets red, green, and blue using HSL values: hue (0..360), saturation (0..1), and lightness (0..1).
|
53
45
|
def hsl=(*a)
|
54
|
-
self.values = RGB.hsl_to_values(*a)
|
46
|
+
self.values = RGB::Color.hsl_to_values(*a)
|
55
47
|
end
|
56
48
|
|
57
49
|
# Sets HSL-hue to a number of degrees (0..360) or nil.
|
@@ -84,7 +76,7 @@ class RGB
|
|
84
76
|
self
|
85
77
|
end
|
86
78
|
|
87
|
-
# Creates one or more new RGB objects by rotating this object's HSL-hue a number of degrees.
|
79
|
+
# Creates one or more new RGB::Color objects by rotating this object's HSL-hue a number of degrees.
|
88
80
|
def hsl_rotate(a_degrees, *b_degrees)
|
89
81
|
if a_degrees.class != Array and b_degrees.none?
|
90
82
|
RGB.hsl zip_add(hsl, [a_degrees, 0, 0])
|
@@ -94,3 +86,17 @@ class RGB
|
|
94
86
|
end
|
95
87
|
|
96
88
|
end
|
89
|
+
|
90
|
+
|
91
|
+
module RGB
|
92
|
+
|
93
|
+
class << self
|
94
|
+
|
95
|
+
# Creates a new RGB::Color from HSL values: hue (0..360), saturation (0..1), and lightness (0..1).
|
96
|
+
def hsl(*a)
|
97
|
+
Color.hsl(*a)
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
data/lib/redgreenblue/hsv.rb
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
require 'redgreenblue/hsx_shared'
|
2
2
|
require 'redgreenblue/math'
|
3
3
|
|
4
|
-
class RGB
|
5
|
-
|
6
|
-
#----------------------------------------------------------------------#
|
7
|
-
# Class Methods #
|
8
|
-
#----------------------------------------------------------------------#
|
4
|
+
class RGB::Color
|
9
5
|
|
10
6
|
class << self
|
11
7
|
|
12
|
-
# Creates a new RGB
|
8
|
+
# Creates a new RGB::Color from HSV values: hue (0..360), saturation (0..1), and value (0..1).
|
13
9
|
def hsv(*a)
|
14
10
|
new hsv_to_values(*a)
|
15
11
|
end
|
@@ -23,10 +19,6 @@ class RGB
|
|
23
19
|
|
24
20
|
end
|
25
21
|
|
26
|
-
#----------------------------------------------------------------------#
|
27
|
-
# Instance Methods #
|
28
|
-
#----------------------------------------------------------------------#
|
29
|
-
|
30
22
|
# Returns color as HSV:
|
31
23
|
# hue (0..360), saturation (0..1), value (0..1).
|
32
24
|
# When saturation is 0, hue is nil.
|
@@ -51,7 +43,7 @@ class RGB
|
|
51
43
|
|
52
44
|
# Sets red, green, and blue using HSV values: hue (0..360), saturation (0..1), and value (0..1).
|
53
45
|
def hsv=(*a)
|
54
|
-
self.values = RGB.hsv_to_values(*a)
|
46
|
+
self.values = RGB::Color.hsv_to_values(*a)
|
55
47
|
end
|
56
48
|
|
57
49
|
# Sets HSV-hue to a number of degrees (0..360) or nil.
|
@@ -84,7 +76,7 @@ class RGB
|
|
84
76
|
self
|
85
77
|
end
|
86
78
|
|
87
|
-
# Creates one or more new RGB objects by rotating this object's HSV-hue a number of degrees.
|
79
|
+
# Creates one or more new RGB::Color objects by rotating this object's HSV-hue a number of degrees.
|
88
80
|
def hsv_rotate(a_degrees, *b_degrees)
|
89
81
|
if a_degrees.class != Array and b_degrees.none?
|
90
82
|
RGB.hsv zip_add(hsv, [a_degrees, 0, 0])
|
@@ -94,3 +86,17 @@ class RGB
|
|
94
86
|
end
|
95
87
|
|
96
88
|
end
|
89
|
+
|
90
|
+
|
91
|
+
module RGB
|
92
|
+
|
93
|
+
class << self
|
94
|
+
|
95
|
+
# Creates a new RGB::Color from HSV values: hue (0..360), saturation (0..1), and value (0..1).
|
96
|
+
def hsv(*a)
|
97
|
+
Color.hsv(*a)
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -1,8 +1,4 @@
|
|
1
|
-
class RGB
|
2
|
-
|
3
|
-
#----------------------------------------------------------------------#
|
4
|
-
# Class Methods #
|
5
|
-
#----------------------------------------------------------------------#
|
1
|
+
class RGB::Color
|
6
2
|
|
7
3
|
class << self
|
8
4
|
|
@@ -48,10 +44,6 @@ class RGB
|
|
48
44
|
|
49
45
|
end
|
50
46
|
|
51
|
-
#----------------------------------------------------------------------#
|
52
|
-
# Instance Methods #
|
53
|
-
#----------------------------------------------------------------------#
|
54
|
-
|
55
47
|
private
|
56
48
|
|
57
49
|
# Compute HSL, HSV, and chroma.
|
data/lib/redgreenblue/hwb.rb
CHANGED
data/lib/redgreenblue/inspect.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
3
|
private
|
4
4
|
|
@@ -32,7 +32,7 @@ class RGB
|
|
32
32
|
#
|
33
33
|
# You can choose among several inspect styles. See the styles, style, and style= class methods.
|
34
34
|
def inspect
|
35
|
-
send "_inspect_#{
|
35
|
+
send "_inspect_#{RGB.style}"
|
36
36
|
end
|
37
37
|
|
38
38
|
# Returns a string representation of the object.
|
@@ -40,34 +40,43 @@ class RGB
|
|
40
40
|
_inspect_default
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
module RGB
|
47
|
+
|
48
|
+
class << self
|
49
|
+
|
50
|
+
# Returns the base inspect style, dependent on the COLORTERM environment variable.
|
51
|
+
def base_style
|
52
|
+
if styles.include? ENV['REDGREENBLUE_STYLE']
|
53
|
+
ENV['REDGREENBLUE_STYLE']
|
50
54
|
else
|
51
|
-
'
|
55
|
+
if ENV['COLORTERM'] == 'truecolor'
|
56
|
+
'simple'
|
57
|
+
else
|
58
|
+
'default'
|
59
|
+
end
|
52
60
|
end
|
53
61
|
end
|
54
|
-
end
|
55
62
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
63
|
+
# Returns the current inspect style.
|
64
|
+
def style
|
65
|
+
@@style ||= base_style
|
66
|
+
end
|
60
67
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
68
|
+
# Returns a list of all available inspect styles.
|
69
|
+
def styles
|
70
|
+
( Color.instance_methods + Color.private_instance_methods ).grep( /^_inspect_(.*)/ ) { $1 }.sort
|
71
|
+
end
|
72
|
+
|
73
|
+
# Selects an inspect style.
|
74
|
+
#
|
75
|
+
# Only the first few characters of your preferred style are required.
|
76
|
+
def style=(s)
|
77
|
+
@@style = styles.grep( /^#{s.to_s.downcase}/ ).first || style
|
78
|
+
end
|
65
79
|
|
66
|
-
# Selects an inspect style.
|
67
|
-
#
|
68
|
-
# Only the first few characters of your preferred style are required.
|
69
|
-
def self.style=(s)
|
70
|
-
@@style = styles.grep( /^#{s.to_s.downcase}/ ).first || style
|
71
80
|
end
|
72
81
|
|
73
82
|
end
|
data/lib/redgreenblue/int.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
3
|
# Returns the color as a 24-bit integer in the range 0..16777215.
|
4
4
|
def to_i
|
5
5
|
( r << 16 ) + ( g << 8 ) + b
|
6
6
|
end
|
7
7
|
|
8
|
-
# Creates a new RGB
|
8
|
+
# Creates a new RGB::Color from a 24-bit integer in the range 0..16777215.
|
9
9
|
def self.at(number)
|
10
10
|
n = number.to_i
|
11
11
|
if (0..16777215) === n
|
@@ -20,3 +20,17 @@ class RGB
|
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
23
|
+
|
24
|
+
|
25
|
+
module RGB
|
26
|
+
|
27
|
+
class << self
|
28
|
+
|
29
|
+
# Creates a new RGB::Color from a 24-bit integer in the range 0..16777215.
|
30
|
+
def at(number)
|
31
|
+
Color.at(number)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/redgreenblue/lazy.rb
CHANGED
@@ -1,22 +1,19 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
|
-
#----------------------------------------------------------------------#
|
4
|
-
# Class Methods #
|
5
|
-
#----------------------------------------------------------------------#
|
6
3
|
|
7
4
|
class << self
|
8
5
|
|
9
|
-
# Creates a white RGB
|
6
|
+
# Creates a white RGB::Color.
|
10
7
|
def white
|
11
8
|
new(1,1,1)
|
12
9
|
end
|
13
10
|
|
14
|
-
# Creates a black RGB
|
11
|
+
# Creates a black RGB::Color.
|
15
12
|
def black
|
16
13
|
new(0,0,0)
|
17
14
|
end
|
18
15
|
|
19
|
-
# Creates a grey RGB
|
16
|
+
# Creates a grey RGB::Color. Defaults to lightness 0.5, a middle grey. Black equals grey(0), white equals grey(1).
|
20
17
|
#
|
21
18
|
# ::gray is an alias for ::grey.
|
22
19
|
def grey(lightness=0.5)
|
@@ -26,32 +23,32 @@ class RGB
|
|
26
23
|
# Alias gray for grey.
|
27
24
|
alias gray grey
|
28
25
|
|
29
|
-
# Creates a pure red RGB
|
26
|
+
# Creates a pure red RGB::Color.
|
30
27
|
def red
|
31
28
|
new(1,0,0)
|
32
29
|
end
|
33
30
|
|
34
|
-
# Creates a pure green RGB
|
31
|
+
# Creates a pure green RGB::Color.
|
35
32
|
def green
|
36
33
|
new(0,1,0)
|
37
34
|
end
|
38
35
|
|
39
|
-
# Creates a pure blue RGB
|
36
|
+
# Creates a pure blue RGB::Color.
|
40
37
|
def blue
|
41
38
|
new(0,0,1)
|
42
39
|
end
|
43
40
|
|
44
|
-
# Creates a yellow RGB
|
41
|
+
# Creates a yellow RGB::Color.
|
45
42
|
def yellow
|
46
43
|
new(1,1,0)
|
47
44
|
end
|
48
45
|
|
49
|
-
# Creates a cyan RGB
|
46
|
+
# Creates a cyan RGB::Color.
|
50
47
|
def cyan
|
51
48
|
new(0,1,1)
|
52
49
|
end
|
53
50
|
|
54
|
-
# Creates a magenta RGB
|
51
|
+
# Creates a magenta RGB::Color.
|
55
52
|
def magenta
|
56
53
|
new(1,0,1)
|
57
54
|
end
|
@@ -71,3 +68,74 @@ class RGB
|
|
71
68
|
end
|
72
69
|
|
73
70
|
end
|
71
|
+
|
72
|
+
|
73
|
+
module RGB
|
74
|
+
|
75
|
+
class << self
|
76
|
+
|
77
|
+
# Creates a white RGB::Color.
|
78
|
+
def white
|
79
|
+
Color.white
|
80
|
+
end
|
81
|
+
|
82
|
+
# Creates a black RGB::Color.
|
83
|
+
def black
|
84
|
+
Color.black
|
85
|
+
end
|
86
|
+
|
87
|
+
# Creates a grey RGB::Color. Defaults to lightness 0.5, a middle grey. Black equals grey(0), white equals grey(1).
|
88
|
+
#
|
89
|
+
# ::gray is an alias for ::grey.
|
90
|
+
def grey(lightness=0.5)
|
91
|
+
Color.grey(lightness)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Alias gray for grey.
|
95
|
+
alias gray grey
|
96
|
+
|
97
|
+
# Creates a pure red RGB::Color.
|
98
|
+
def red
|
99
|
+
Color.red
|
100
|
+
end
|
101
|
+
|
102
|
+
# Creates a pure green RGB::Color.
|
103
|
+
def green
|
104
|
+
Color.green
|
105
|
+
end
|
106
|
+
|
107
|
+
# Creates a pure blue RGB::Color.
|
108
|
+
def blue
|
109
|
+
Color.blue
|
110
|
+
end
|
111
|
+
|
112
|
+
# Creates a yellow RGB::Color.
|
113
|
+
def yellow
|
114
|
+
Color.yellow
|
115
|
+
end
|
116
|
+
|
117
|
+
# Creates a cyan RGB::Color.
|
118
|
+
def cyan
|
119
|
+
Color.cyan
|
120
|
+
end
|
121
|
+
|
122
|
+
# Creates a magenta RGB::Color.
|
123
|
+
def magenta
|
124
|
+
Color.magenta
|
125
|
+
end
|
126
|
+
|
127
|
+
# Returns the 8 corners of the RGB cube.
|
128
|
+
def corners
|
129
|
+
[ black, red, yellow, green, cyan, blue, magenta, white ]
|
130
|
+
end
|
131
|
+
|
132
|
+
# Returns the centre of the RGB cube.
|
133
|
+
def centre
|
134
|
+
grey
|
135
|
+
end
|
136
|
+
|
137
|
+
alias center centre
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
data/lib/redgreenblue/mac.rb
CHANGED
data/lib/redgreenblue/match.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
3
|
# Matches this color to a set of colors by calculating their euclidean distance.
|
4
4
|
#
|
@@ -18,4 +18,32 @@ class RGB
|
|
18
18
|
others.map { |c| [ c, de76(c) ] }.sort_by { |a| a[1] }
|
19
19
|
end
|
20
20
|
|
21
|
+
# Matches this (reference) color to a set of colors using the CIE 1994 delta E formula.
|
22
|
+
#
|
23
|
+
# Returns the given set of colors with their difference from this color, sorted by difference (nearest color first).
|
24
|
+
#
|
25
|
+
# By default uses parameters for use in graphic arts, and reference conditions.
|
26
|
+
# Parameters (k1, k2, kl, kc, kh) can be individually overriden for different applications and for variations in conditions.
|
27
|
+
def match_de94(others, k1: 0.045, k2: 0.015, kl: 1, kc: 1, kh: 1)
|
28
|
+
others.map { |c| [ c, de94(c, k1: k1, k2: k2, kl: kl, kc: kc, kh: kh) ] }.sort_by { |a| a[1] }
|
29
|
+
end
|
30
|
+
|
31
|
+
# Matches this (reference) color to a set of colors using the CIE 1994 delta E formula.
|
32
|
+
#
|
33
|
+
# For use in graphic arts, under reference conditions.
|
34
|
+
#
|
35
|
+
# Returns the given set of colors with their difference from this color, sorted by difference (nearest color first).
|
36
|
+
def match_de94g(others)
|
37
|
+
others.map { |c| [ c, de94g(c) ] }.sort_by { |a| a[1] }
|
38
|
+
end
|
39
|
+
|
40
|
+
# Matches this (reference) color to a set of colors using the CIE 1994 delta E formula.
|
41
|
+
#
|
42
|
+
# For use with textiles, under reference conditions.
|
43
|
+
#
|
44
|
+
# Returns the given set of colors with their difference from this color, sorted by difference (nearest color first).
|
45
|
+
def match_de94t(others)
|
46
|
+
others.map { |c| [ c, de94t(c) ] }.sort_by { |a| a[1] }
|
47
|
+
end
|
48
|
+
|
21
49
|
end
|
data/lib/redgreenblue/math.rb
CHANGED
data/lib/redgreenblue/misc.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
3
|
# Inverts the object's color.
|
4
4
|
def invert!
|
@@ -6,7 +6,7 @@ class RGB
|
|
6
6
|
self
|
7
7
|
end
|
8
8
|
|
9
|
-
# Creates a new RGB
|
9
|
+
# Creates a new RGB::Color with the inverted color of this RGB object.
|
10
10
|
def invert
|
11
11
|
dup.invert!
|
12
12
|
end
|
@@ -17,23 +17,23 @@ class RGB
|
|
17
17
|
values.min == values.max
|
18
18
|
end
|
19
19
|
|
20
|
-
# Returns an array of RGB
|
20
|
+
# Returns an array of RGB::Colors for all possible ways in which the red, green, and blue values of this object can be exchanged.
|
21
21
|
#
|
22
22
|
# Example: RGB.red.permutation returns [ RGB.red, RGB.green, RGB.blue ].
|
23
23
|
# See also: shuffle.
|
24
24
|
def permutation
|
25
|
-
values.permutation.to_a.uniq.map { |v| RGB.new v }
|
25
|
+
values.permutation.to_a.uniq.map { |v| RGB::Color.new v }
|
26
26
|
end
|
27
27
|
|
28
|
-
# Returns an array of three RGB
|
28
|
+
# Returns an array of three RGB::Colors, for the red, green, and blue components of this object.
|
29
29
|
def components
|
30
|
-
[ RGB.new(red,0,0), RGB.new(0,green,0), RGB.new(0,0,blue) ]
|
30
|
+
[ RGB::Color.new(red,0,0), RGB::Color.new(0,green,0), RGB::Color.new(0,0,blue) ]
|
31
31
|
end
|
32
32
|
|
33
|
-
# Creates a new RGB
|
33
|
+
# Creates a new RGB::Color from three RGB::Colors representing the red, green, and blue components.
|
34
34
|
def self.assemble(*a)
|
35
35
|
v = a.flatten
|
36
|
-
RGB.new(v[0].red, v[1].green, v[2].blue)
|
36
|
+
RGB::Color.new(v[0].red, v[1].green, v[2].blue)
|
37
37
|
end
|
38
38
|
|
39
39
|
# Returns the euclidean distance between this color and another color.
|
@@ -50,3 +50,17 @@ class RGB
|
|
50
50
|
end
|
51
51
|
|
52
52
|
end
|
53
|
+
|
54
|
+
|
55
|
+
module RGB
|
56
|
+
|
57
|
+
class << self
|
58
|
+
|
59
|
+
# Creates a new RGB::Color from three RGB::Colors representing the red, green, and blue components.
|
60
|
+
def assemble(*a)
|
61
|
+
Color.assemble(*a)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/lib/redgreenblue/mix.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
|
-
# Changes the object's color by mixing it with a portion of another RGB
|
3
|
+
# Changes the object's color by mixing it with a portion of another RGB::Color.
|
4
4
|
def mix!(another,portion=0.5)
|
5
5
|
self.values = mix_values(another.values, portion)
|
6
6
|
self
|
7
7
|
end
|
8
8
|
|
9
|
-
# Creates a new RGB
|
9
|
+
# Creates a new RGB::Color by mixing this object's color with a portion of another RGB::Color.
|
10
10
|
def mix(another,portion=0.5)
|
11
|
-
RGB.new mix_values(another.values, portion)
|
11
|
+
RGB::Color.new mix_values(another.values, portion)
|
12
12
|
end
|
13
13
|
|
14
14
|
# Changes the object's color by mixing it with a portion of white.
|
@@ -16,7 +16,7 @@ class RGB
|
|
16
16
|
mix!(RGB.white, portion)
|
17
17
|
end
|
18
18
|
|
19
|
-
# Creates one or more new RGB
|
19
|
+
# Creates one or more new RGB::Colors by mixing this object's color with a portion of white.
|
20
20
|
def whiten(portion=0.5, *portions)
|
21
21
|
if (portion.class != Array) and portions.none?
|
22
22
|
mix(RGB.white, portion)
|
@@ -30,7 +30,7 @@ class RGB
|
|
30
30
|
mix!(RGB.black, portion)
|
31
31
|
end
|
32
32
|
|
33
|
-
# Creates one or more new RGB
|
33
|
+
# Creates one or more new RGB::Colors by mixing this object's color with a portion of black.
|
34
34
|
def blacken(portion=0.5, *portions)
|
35
35
|
if (portion.class != Array) and portions.none?
|
36
36
|
mix(RGB.black, portion)
|
data/lib/redgreenblue/name.rb
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
#
|
3
3
|
# Conforms to Bridge API 1.35 for Philips Hue, published 20-Nov-2019.
|
4
4
|
|
5
|
-
# Automatically load core RGB
|
5
|
+
# Automatically load core RGB module before loading options.
|
6
6
|
require 'redgreenblue'
|
7
7
|
|
8
|
-
class RGB
|
8
|
+
class RGB::Color
|
9
9
|
|
10
10
|
# Only available when optional support for Philips Hue lights is loaded.
|
11
11
|
#
|
12
12
|
# Returns a hash with the arguments required by the Philips Hue API,
|
13
|
-
# to set a light to this RGB
|
13
|
+
# to set a light to this RGB::Color's hue, saturation and brightness.
|
14
14
|
#
|
15
15
|
# Formatted as JSON, this hash can be sent to a bridge to set a light's state.
|
16
16
|
#
|
@@ -22,6 +22,8 @@ class RGB
|
|
22
22
|
# @example Use
|
23
23
|
# RGB.magenta.to_philips_hue_api_hsb_arguments
|
24
24
|
# => {"on"=>true, "bri"=>254, "hue"=>54613, "sat"=>254}
|
25
|
+
# RGB.black.to_philips_hue_api_hsb_arguments
|
26
|
+
# => {"on"=>false}
|
25
27
|
# @return [Hash] API arguments
|
26
28
|
def to_philips_hue_api_hsb_arguments(black_off=true)
|
27
29
|
my_hsb = hsb
|
data/lib/redgreenblue/os/mac.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
|
-
# On Mac OS, shows the color picker to choose a color for
|
3
|
+
# On Mac OS, shows the color picker to choose a color for this object.
|
4
4
|
# Not available on other platforms.
|
5
5
|
def pick
|
6
|
-
result = RGB.mac_choose(self)
|
6
|
+
result = RGB::Color.mac_choose(self)
|
7
7
|
if result
|
8
8
|
self.rrggbb = result
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
# On Mac OS, shows the color picker and creates an RGB
|
12
|
+
# On Mac OS, shows the color picker and creates an RGB::Color with the chosen color.
|
13
13
|
# Not available on other platforms.
|
14
14
|
#
|
15
15
|
# If no default color is specified, the picker defaults to a middle grey.
|
16
|
-
def self.pick(default_color=RGB.new)
|
17
|
-
result = RGB.mac_choose(default_color)
|
16
|
+
def self.pick(default_color=RGB::Color.new)
|
17
|
+
result = RGB::Color.mac_choose(default_color)
|
18
18
|
if result
|
19
19
|
RGB.rrggbb result
|
20
20
|
else
|
@@ -62,3 +62,20 @@ class RGB
|
|
62
62
|
end
|
63
63
|
|
64
64
|
end
|
65
|
+
|
66
|
+
|
67
|
+
module RGB
|
68
|
+
|
69
|
+
class << self
|
70
|
+
|
71
|
+
# On Mac OS, shows the color picker and creates an RGB::Color with the chosen color.
|
72
|
+
# Not available on other platforms.
|
73
|
+
#
|
74
|
+
# If no default color is specified, the picker defaults to a middle grey.
|
75
|
+
def pick(default_color=new)
|
76
|
+
Color.pick(default_color)
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
data/lib/redgreenblue/ostwald.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
class RGB
|
1
|
+
class RGB::Color
|
2
2
|
|
3
|
-
# Returns a new RGB
|
3
|
+
# Returns a new RGB::Color with this color's Ostwald full-color,
|
4
4
|
# or nil for achromatic colors (white, greys, and black).
|
5
5
|
#
|
6
6
|
# The resulting color contains no white or black,
|
@@ -19,7 +19,7 @@ class RGB
|
|
19
19
|
if color_portion == 0
|
20
20
|
nil
|
21
21
|
else
|
22
|
-
RGB.new( values.map { |v| ( ( v - white_portion ) / color_portion ).round(6) } )
|
22
|
+
RGB::Color.new( values.map { |v| ( ( v - white_portion ) / color_portion ).round(6) } )
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|