Class: SassC::Script::Value::Color
- Inherits:
-
SassC::Script::Value
- Object
- SassC::Script::Value
- SassC::Script::Value::Color
- Defined in:
- lib/sassc/script/value/color.rb
Overview
A SassScript object representing a CSS color. This class provides a very bare-bones system for storing a RGB(A) or HSL(A) color and converting it to a CSS color function.
If your Sass method accepts a color you will need to perform any needed color mathematics or transformations yourself.
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.
-
#hue ⇒ Object
readonly
Returns the value of attribute hue.
-
#lightness ⇒ Object
readonly
Returns the value of attribute lightness.
-
#red ⇒ Object
readonly
Returns the value of attribute red.
-
#saturation ⇒ Object
readonly
Returns the value of attribute saturation.
Attributes inherited from SassC::Script::Value
Instance Method Summary collapse
-
#alpha_string ⇒ Object
Returns the alpha value of this color as a string and rounded to 8 decimal places.
-
#eql?(other_color) ⇒ Boolean
(also: #==)
True if this Color is equal to
other_color. -
#hash ⇒ Object
Returns a numeric value for comparing two Color objects This method is used internally by the Hash class and is not the same as
.to_h. -
#hlsa? ⇒ Boolean
True if this color has HSLA values.
-
#initialize(red: nil, green: nil, blue: nil, hue: nil, saturation: nil, lightness: nil, alpha: 1.0) ⇒ Color
constructor
Creates a new color with (
red,green,blue) or (hue,saturation,lightnessvalues, plus an optionalalphatransparency value.. -
#rgba? ⇒ Boolean
True if this color has RGBA values.
-
#to_s ⇒ Object
Returns a CSS color declaration in the form ‘rgb(…)`, `rgba(…)`, `hsl(…)`, or `hsla(…)`.
-
#value ⇒ Object
Returns the values of this color in an array.
Methods inherited from SassC::Script::Value
#assert_int!, #bracketed, #inspect, #null?, #separator, #to_a, #to_bool, #to_h, #to_i, #with_contents
Constructor Details
#initialize(red: nil, green: nil, blue: nil, hue: nil, saturation: nil, lightness: nil, alpha: 1.0) ⇒ Color
Creates a new color with (red, green, blue) or (hue, saturation, lightness values, plus an optional alpha transparency value.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/sassc/script/value/color.rb', line 22 def initialize(red:nil, green:nil, blue:nil, hue:nil, saturation:nil, lightness:nil, alpha:1.0) if red && green && blue && alpha @mode = :rgba @red = SassC::Util.clamp(red.to_i, 0, 255) @green = SassC::Util.clamp(green.to_i, 0, 255) @blue = SassC::Util.clamp(blue.to_i, 0, 255) @alpha = SassC::Util.clamp(alpha.to_f, 0.0, 1.0) elsif hue && saturation && lightness && alpha @mode = :hsla @hue = SassC::Util.clamp(hue.to_i, 0, 360) @saturation = SassC::Util.clamp(saturation.to_i, 0, 100) @lightness = SassC::Util.clamp(lightness.to_i, 0, 100) @alpha = SassC::Util.clamp(alpha.to_f, 0.0, 1.0) else raise SassC::UnsupportedValue, "Unable to determine color configuration for " end end |
Instance Attribute Details
#alpha ⇒ Object (readonly)
Returns the value of attribute alpha.
18 19 20 |
# File 'lib/sassc/script/value/color.rb', line 18 def alpha @alpha end |
#blue ⇒ Object (readonly)
Returns the value of attribute blue.
14 15 16 |
# File 'lib/sassc/script/value/color.rb', line 14 def blue @blue end |
#green ⇒ Object (readonly)
Returns the value of attribute green.
13 14 15 |
# File 'lib/sassc/script/value/color.rb', line 13 def green @green end |
#hue ⇒ Object (readonly)
Returns the value of attribute hue.
15 16 17 |
# File 'lib/sassc/script/value/color.rb', line 15 def hue @hue end |
#lightness ⇒ Object (readonly)
Returns the value of attribute lightness.
17 18 19 |
# File 'lib/sassc/script/value/color.rb', line 17 def lightness @lightness end |
#red ⇒ Object (readonly)
Returns the value of attribute red.
12 13 14 |
# File 'lib/sassc/script/value/color.rb', line 12 def red @red end |
#saturation ⇒ Object (readonly)
Returns the value of attribute saturation.
16 17 18 |
# File 'lib/sassc/script/value/color.rb', line 16 def saturation @saturation end |
Instance Method Details
#alpha_string ⇒ Object
Returns the alpha value of this color as a string and rounded to 8 decimal places.
66 67 68 |
# File 'lib/sassc/script/value/color.rb', line 66 def alpha_string alpha.round(8).to_s end |
#eql?(other_color) ⇒ Boolean Also known as: ==
True if this Color is equal to other_color
81 82 83 84 85 86 |
# File 'lib/sassc/script/value/color.rb', line 81 def eql?(other_color) unless other_color.is_a?(self.class) raise ArgumentError, "No implicit conversion of #{other_color.class} to #{self.class}" end self.value == other_color.value end |
#hash ⇒ Object
Returns a numeric value for comparing two Color objects This method is used internally by the Hash class and is not the same as .to_h
91 92 93 |
# File 'lib/sassc/script/value/color.rb', line 91 def hash value.hash end |
#hlsa? ⇒ Boolean
True if this color has HSLA values
60 61 62 |
# File 'lib/sassc/script/value/color.rb', line 60 def hlsa? @mode == :hlsa end |
#rgba? ⇒ Boolean
True if this color has RGBA values
55 56 57 |
# File 'lib/sassc/script/value/color.rb', line 55 def rgba? @mode == :rgba end |
#to_s ⇒ Object
Returns a CSS color declaration in the form ‘rgb(…)`, `rgba(…)`, `hsl(…)`, or `hsla(…)`.
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/sassc/script/value/color.rb', line 42 def to_s if rgba? && @alpha == 1.0 return "rgb(#{@red}, #{@green}, #{@blue})" elsif rgba? return "rgba(#{@red}, #{@green}, #{@blue}, #{alpha_string})" elsif hsla? && @alpha == 1.0 return "hsl(#{@hue}, #{@saturation}%, #{@lightness}%)" else # hsla? return "hsla(#{@hue}, #{@saturation}%, #{@lightness}%, #{alpha_string})" end end |
#value ⇒ Object
Returns the values of this color in an array. Provided for compatibility between different SassC::Script::Value classes
72 73 74 75 76 77 78 |
# File 'lib/sassc/script/value/color.rb', line 72 def value return [ red, green, blue, hue, saturation, lightness, alpha, ].compact end |