Class: Selenium::WebDriver::Support::Color
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Support::Color
- Defined in:
- lib/selenium/webdriver/support/color.rb
Constant Summary collapse
- RGB_PATTERN =
/^\s*rgb\(\s*(\d{1,3})\s*, \s*(\d{1,3})\s*, \s*(\d{1,3})\s*\)\s*$/x
- RGB_PCT_PATTERN =
/^\s*rgb\(\s*(\d{1,3}|\d{1,2}\.\d+)%\s*, \s*(\d{1,3}|\d{1,2}\.\d+)%\s*, \s*(\d{1,3}|\d{1,2}\.\d+)%\s*\)\s*$/x
- RGBA_PATTERN =
/^\s*rgba\(\s*(\d{1,3})\s*, \s*(\d{1,3})\s*, \s*(\d{1,3})\s*, \s*(0|1|0\.\d+)\s*\)\s*$/x
- RGBA_PCT_PATTERN =
/^\s*rgba\(\s*(\d{1,3}|\d{1,2}\.\d+) %\s*,\s*(\d{1,3}|\d{1,2}\.\d+) %\s*,\s*(\d{1,3}|\d{1,2}\.\d+) %\s*,\s*(0|1|0\.\d+)\s*\)\s*$/x
- HEX_PATTERN =
/#(\h{2})(\h{2})(\h{2})/
- HEX3_PATTERN =
/#(\h)(\h)(\h)/
- HSL_PATTERN =
/^\s*hsl\(\s*(\d{1,3})\s*, \s*(\d{1,3})%\s*, \s*(\d{1,3})%\s*\)\s*$/x
- HSLA_PATTERN =
/^\s*hsla\(\s*(\d{1,3})\s*, \s*(\d{1,3})%\s*, \s*(\d{1,3})%\s*, \s*(0|1|0\.\d+)\s*\)\s*$/x
Instance Attribute Summary collapse
-
#alpha ⇒ Object
readonly
Returns the value of attribute alpha.
-
#blue ⇒ Object
readonly
Returns the value of attribute blue.
-
#green ⇒ Object
readonly
Returns the value of attribute green.
-
#red ⇒ Object
readonly
Returns the value of attribute red.
Class Method Summary collapse
-
.from_hsl(h, s, l, a) ⇒ Object
rubocop:disable Naming/MethodParameterName.
- .from_string(str) ⇒ Object
- .hue_to_rgb(lum1, lum2, hue) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
- #hash ⇒ Object
- #hex ⇒ Object
-
#initialize(red, green, blue, alpha = 1) ⇒ Color
constructor
A new instance of Color.
- #rgb ⇒ Object
- #rgba ⇒ Object
Constructor Details
#initialize(red, green, blue, alpha = 1) ⇒ Color
Returns a new instance of Color.
112 113 114 115 116 117 |
# File 'lib/selenium/webdriver/support/color.rb', line 112 def initialize(red, green, blue, alpha = 1) @red = Integer(red) @green = Integer(green) @blue = Integer(blue) @alpha = Float(alpha) end |
Instance Attribute Details
#alpha ⇒ Object (readonly)
Returns the value of attribute alpha.
48 49 50 |
# File 'lib/selenium/webdriver/support/color.rb', line 48 def alpha @alpha end |
#blue ⇒ Object (readonly)
Returns the value of attribute blue.
48 49 50 |
# File 'lib/selenium/webdriver/support/color.rb', line 48 def blue @blue end |
#green ⇒ Object (readonly)
Returns the value of attribute green.
48 49 50 |
# File 'lib/selenium/webdriver/support/color.rb', line 48 def green @green end |
#red ⇒ Object (readonly)
Returns the value of attribute red.
48 49 50 |
# File 'lib/selenium/webdriver/support/color.rb', line 48 def red @red end |
Class Method Details
.from_hsl(h, s, l, a) ⇒ Object
rubocop:disable Naming/MethodParameterName
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/selenium/webdriver/support/color.rb', line 75 def self.from_hsl(h, s, l, a) # rubocop:disable Naming/MethodParameterName h = Float(h) / 360 s = Float(s) / 100 l = Float(l) / 100 a = Float(a || 1) if s.zero? r = l g = r b = r else luminocity2 = l < 0.5 ? l * (s + 1) : l + s - (l * s) luminocity1 = (l * 2) - luminocity2 r = hue_to_rgb(luminocity1, luminocity2, h + (1.0 / 3.0)) g = hue_to_rgb(luminocity1, luminocity2, h) b = hue_to_rgb(luminocity1, luminocity2, h - (1.0 / 3.0)) end new (r * 255).round, (g * 255).round, (b * 255).round, a end |
.from_string(str) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/selenium/webdriver/support/color.rb', line 50 def self.from_string(str) case str when RGB_PATTERN new Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3) when RGB_PCT_PATTERN array = [Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3)] new(*array.map { |e| Float(e) / 100 * 255 }) when RGBA_PATTERN new Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3), Regexp.last_match(4) when RGBA_PCT_PATTERN array = [Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3)] new(*array.map { |e| Float(e) / 100 * 255 } << Regexp.last_match(4)) when HEX_PATTERN array = [Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3)] new(*array.map { |e| e.to_i(16) }) when HEX3_PATTERN array = [Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3)] new(*array.map { |e| (e * 2).to_i(16) }) when HSL_PATTERN, HSLA_PATTERN from_hsl(Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3), Regexp.last_match(4)) else raise ArgumentError, "could not convert #{str.inspect} into color" end end |
.hue_to_rgb(lum1, lum2, hue) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/selenium/webdriver/support/color.rb', line 97 def self.hue_to_rgb(lum1, lum2, hue) hue += 1 if hue < 0.0 hue -= 1 if hue > 1.0 if hue < 1.0 / 6.0 (lum1 + ((lum2 - lum1) * 6.0 * hue)) elsif hue < 1.0 / 2.0 lum2 elsif hue < 2.0 / 3.0 lum1 + ((lum2 - lum1) * ((2.0 / 3.0) - hue) * 6.0) else lum1 end end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
119 120 121 122 123 124 |
# File 'lib/selenium/webdriver/support/color.rb', line 119 def ==(other) return true if equal?(other) return false unless other.is_a?(self.class) [red, green, blue, alpha] == [other.red, other.green, other.blue, other.alpha] end |
#hash ⇒ Object
127 128 129 |
# File 'lib/selenium/webdriver/support/color.rb', line 127 def hash [red, green, blue, alpha, self.class].hash end |
#hex ⇒ Object
140 141 142 |
# File 'lib/selenium/webdriver/support/color.rb', line 140 def hex format '#%<red>02x%<green>02x%<blue>02x', red: red, green: green, blue: blue end |
#rgb ⇒ Object
131 132 133 |
# File 'lib/selenium/webdriver/support/color.rb', line 131 def rgb "rgb(#{red}, #{green}, #{blue})" end |
#rgba ⇒ Object
135 136 137 138 |
# File 'lib/selenium/webdriver/support/color.rb', line 135 def rgba a = alpha == 1 ? '1' : alpha "rgba(#{red}, #{green}, #{blue}, #{a})" end |