Class | Sass::Script::Color |
In: |
lib/sass/script/color.rb
|
Parent: | Literal |
A SassScript object representing a CSS color.
A color may be represented internally as RGBA, HSLA, or both. It‘s originally represented as whatever its input is; if it‘s created with RGB values, it‘s represented as RGBA, and if it‘s created with HSL values, it‘s represented as HSLA. Once a property is accessed that requires the other representation — for example, \{red} for an HSL color — that component is calculated and cached.
The alpha channel of a color is independent of its RGB or HSL representation. It‘s always stored, as 1 if nothing else is specified. If only the alpha channel is modified using \{with}, the cached RGB and HSL values are retained.
COLOR_NAMES | = | map_vals({ 'aliceblue' => 0xf0f8ff, 'antiquewhite' => 0xfaebd7, 'aqua' => 0x00ffff, 'aquamarine' => 0x7fffd4, 'azure' => 0xf0ffff, 'beige' => 0xf5f5dc, 'bisque' => 0xffe4c4, 'black' => 0x000000, 'blanchedalmond' => 0xffebcd, 'blue' => 0x0000ff, 'blueviolet' => 0x8a2be2, 'brown' => 0xa52a2a, 'burlywood' => 0xdeb887, 'cadetblue' => 0x5f9ea0, 'chartreuse' => 0x7fff00, 'chocolate' => 0xd2691e, 'coral' => 0xff7f50, 'cornflowerblue' => 0x6495ed, 'cornsilk' => 0xfff8dc, 'crimson' => 0xdc143c, 'cyan' => 0x00ffff, 'darkblue' => 0x00008b, 'darkcyan' => 0x008b8b, 'darkgoldenrod' => 0xb8860b, 'darkgray' => 0xa9a9a9, 'darkgrey' => 0xa9a9a9, 'darkgreen' => 0x006400, 'darkkhaki' => 0xbdb76b, 'darkmagenta' => 0x8b008b, 'darkolivegreen' => 0x556b2f, 'darkorange' => 0xff8c00, 'darkorchid' => 0x9932cc, 'darkred' => 0x8b0000, 'darksalmon' => 0xe9967a, 'darkseagreen' => 0x8fbc8f, 'darkslateblue' => 0x483d8b, 'darkslategray' => 0x2f4f4f, 'darkslategrey' => 0x2f4f4f, 'darkturquoise' => 0x00ced1, 'darkviolet' => 0x9400d3, 'deeppink' => 0xff1493, 'deepskyblue' => 0x00bfff, 'dimgray' => 0x696969, 'dimgrey' => 0x696969, 'dodgerblue' => 0x1e90ff, 'firebrick' => 0xb22222, 'floralwhite' => 0xfffaf0, 'forestgreen' => 0x228b22, 'fuchsia' => 0xff00ff, 'gainsboro' => 0xdcdcdc, 'ghostwhite' => 0xf8f8ff, 'gold' => 0xffd700, 'goldenrod' => 0xdaa520, 'gray' => 0x808080, 'green' => 0x008000, 'greenyellow' => 0xadff2f, 'honeydew' => 0xf0fff0, 'hotpink' => 0xff69b4, 'indianred' => 0xcd5c5c, 'indigo' => 0x4b0082, 'ivory' => 0xfffff0, 'khaki' => 0xf0e68c, 'lavender' => 0xe6e6fa, 'lavenderblush' => 0xfff0f5, 'lawngreen' => 0x7cfc00, 'lemonchiffon' => 0xfffacd, 'lightblue' => 0xadd8e6, 'lightcoral' => 0xf08080, 'lightcyan' => 0xe0ffff, 'lightgoldenrodyellow' => 0xfafad2, 'lightgreen' => 0x90ee90, 'lightgray' => 0xd3d3d3, 'lightgrey' => 0xd3d3d3, 'lightpink' => 0xffb6c1, 'lightsalmon' => 0xffa07a, 'lightseagreen' => 0x20b2aa, 'lightskyblue' => 0x87cefa, 'lightslategray' => 0x778899, 'lightslategrey' => 0x778899, 'lightsteelblue' => 0xb0c4de, 'lightyellow' => 0xffffe0, 'lime' => 0x00ff00, 'limegreen' => 0x32cd32, 'linen' => 0xfaf0e6, 'magenta' => 0xff00ff, 'maroon' => 0x800000, 'mediumaquamarine' => 0x66cdaa, 'mediumblue' => 0x0000cd, 'mediumorchid' => 0xba55d3, 'mediumpurple' => 0x9370db, 'mediumseagreen' => 0x3cb371, 'mediumslateblue' => 0x7b68ee, 'mediumspringgreen' => 0x00fa9a, 'mediumturquoise' => 0x48d1cc, 'mediumvioletred' => 0xc71585, 'midnightblue' => 0x191970, 'mintcream' => 0xf5fffa, 'mistyrose' => 0xffe4e1, 'moccasin' => 0xffe4b5, 'navajowhite' => 0xffdead, 'navy' => 0x000080, 'oldlace' => 0xfdf5e6, 'olive' => 0x808000, 'olivedrab' => 0x6b8e23, 'orange' => 0xffa500, 'orangered' => 0xff4500, 'orchid' => 0xda70d6, 'palegoldenrod' => 0xeee8aa, 'palegreen' => 0x98fb98, 'paleturquoise' => 0xafeeee, 'palevioletred' => 0xdb7093, 'papayawhip' => 0xffefd5, 'peachpuff' => 0xffdab9, 'peru' => 0xcd853f, 'pink' => 0xffc0cb, 'plum' => 0xdda0dd, 'powderblue' => 0xb0e0e6, 'purple' => 0x800080, 'red' => 0xff0000, 'rosybrown' => 0xbc8f8f, 'royalblue' => 0x4169e1, 'saddlebrown' => 0x8b4513, 'salmon' => 0xfa8072, 'sandybrown' => 0xf4a460, 'seagreen' => 0x2e8b57, 'seashell' => 0xfff5ee, 'sienna' => 0xa0522d, 'silver' => 0xc0c0c0, 'skyblue' => 0x87ceeb, 'slateblue' => 0x6a5acd, 'slategray' => 0x708090, 'slategrey' => 0x708090, 'snow' => 0xfffafa, 'springgreen' => 0x00ff7f, 'steelblue' => 0x4682b4, 'tan' => 0xd2b48c, 'teal' => 0x008080, 'thistle' => 0xd8bfd8, 'tomato' => 0xff6347, 'turquoise' => 0x40e0d0, 'violet' => 0xee82ee, 'wheat' => 0xf5deb3, 'white' => 0xffffff, 'whitesmoke' => 0xf5f5f5, 'yellow' => 0xffff00, 'yellowgreen' => 0x9acd32 | A hash from color names to `[red, green, blue]` value arrays. | |
COLOR_NAMES_REVERSE | = | map_hash(hash_to_a(COLOR_NAMES)) {|k, v| [v, k]} | A hash from `[red, green, blue]` value arrays to color names. |
Constructs an RGB or HSL color object, optionally with an alpha channel.
The RGB values must be between 0 and 255. The saturation and lightness values must be between 0 and 100. The alpha value must be between 0 and 1.
@raise [Sass::SyntaxError] if any color value isn‘t in the specified range
@overload initialize(attrs)
The attributes are specified as a hash. This hash must contain either `:hue`, `:saturation`, and `:value` keys, or `:red`, `:green`, and `:blue` keys. It cannot contain both HSL and RGB keys. It may also optionally contain an `:alpha` key. @param attrs [{Symbol => Numeric}] A hash of color attributes to values @raise [ArgumentError] if not enough attributes are specified, or both RGB and HSL attributes are specified
@overload initialize(rgba)
The attributes are specified as an array. This overload only supports RGB or RGBA colors. @param rgba [Array<Numeric>] A three- or four-element array of the red, green, blue, and optionally alpha values (respectively) of the color @raise [ArgumentError] if not enough attributes are specified
The alpha channel (opacity) of the color. This is 1 unless otherwise defined.
@return [Fixnum]
Returns whether this color object is translucent; that is, whether the alpha channel is non-1.
@return [Boolean]
The SassScript `/` operation. Its functionality depends on the type of its argument:
{Number} : Divides each of the RGB color channels by the number.
{Color} : Divides each of this color‘s RGB color channels by the other color‘s.
{Literal} : See {Literal#div}.
@param other [Literal] The right-hand side of the operator @return [Color] The resulting color @raise [Sass::SyntaxError] if `other` is a number with units
The SassScript `==` operation. **Note that this returns a {Sass::Script::Bool} object, not a Ruby boolean**.
@param other [Literal] The right-hand side of the operator @return [Bool] True if this literal is the same as the other,
false otherwise
Returns the hue, saturation, and lightness components of the color.
@return [Array<Fixnum>] A frozen three-element array of the
hue, saturation, and lightness values (respectively) of the color
The SassScript `-` operation. Its functionality depends on the type of its argument:
{Number} : Subtracts the number from each of the RGB color channels.
{Color} : Subtracts each of the other color‘s RGB color channels from this color‘s.
{Literal} : See {Literal#minus}.
@param other [Literal] The right-hand side of the operator @return [Color] The resulting color @raise [Sass::SyntaxError] if `other` is a number with units
The SassScript `%` operation. Its functionality depends on the type of its argument:
{Number} : Takes each of the RGB color channels module the number.
{Color} : Takes each of this color‘s RGB color channels modulo the other color‘s.
@param other [Number, Color] The right-hand side of the operator @return [Color] The resulting color @raise [Sass::SyntaxError] if `other` is a number with units
The SassScript `+` operation. Its functionality depends on the type of its argument:
{Number} : Adds the number to each of the RGB color channels.
{Color} : Adds each of the RGB color channels together.
{Literal} : See {Literal#plus}.
@param other [Literal] The right-hand side of the operator @return [Color] The resulting color @raise [Sass::SyntaxError] if `other` is a number with units
The SassScript `*` operation. Its functionality depends on the type of its argument:
{Number} : Multiplies the number by each of the RGB color channels.
{Color} : Multiplies each of the RGB color channels together.
@param other [Number, Color] The right-hand side of the operator @return [Color] The resulting color @raise [Sass::SyntaxError] if `other` is a number with units
Returns a string representation of the color. This is usually the color‘s hex value, but if the color has a name that‘s used instead.
@return [String] The string representation
Returns a copy of this color with one or more channels changed. RGB or HSL colors may be changed, but not both at once.
For example:
Color.new([10, 20, 30]).with(:blue => 40) #=> rgb(10, 40, 30) Color.new([126, 126, 126]).with(:red => 0, :green => 255) #=> rgb(0, 255, 126) Color.new([255, 0, 127]).with(:saturation => 60) #=> rgb(204, 51, 127) Color.new([1, 2, 3]).with(:alpha => 0.4) #=> rgba(1, 2, 3, 0.4)
@param attrs [{Symbol => Numeric}]
A map of channel names (`:red`, `:green`, `:blue`, `:hue`, `:saturation`, `:lightness`, or `:alpha`) to values
@return [Color] The new Color object @raise [ArgumentError] if both RGB and HSL keys are specified