|
|
|
@ -3,6 +3,12 @@ if (typeof(require) !== 'undefined') { var tree = require('less/tree') }
|
|
|
|
|
// RGB Colors - #ff0014, #eee
|
|
|
|
|
//
|
|
|
|
|
tree.Color = function Color(rgb, a) {
|
|
|
|
|
//
|
|
|
|
|
// The end goal here, is to parse the arguments
|
|
|
|
|
// into an integer triplet, such as `128, 255, 0`
|
|
|
|
|
//
|
|
|
|
|
// This facilitates operations and conversions.
|
|
|
|
|
//
|
|
|
|
|
if (Array.isArray(rgb)) {
|
|
|
|
|
this.rgb = rgb;
|
|
|
|
|
this.alpha = a;
|
|
|
|
@ -18,6 +24,13 @@ tree.Color = function Color(rgb, a) {
|
|
|
|
|
};
|
|
|
|
|
tree.Color.prototype = {
|
|
|
|
|
eval: function () { return this },
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// If we have some transparency, the only way to represent it
|
|
|
|
|
// is via `rgba`. Otherwise, we use the hex representation,
|
|
|
|
|
// which has better compatibility with older browsers.
|
|
|
|
|
// Values are capped between `0` and `255`, rounded and zero-padded.
|
|
|
|
|
//
|
|
|
|
|
toCSS: function () {
|
|
|
|
|
if (this.alpha && this.alpha < 1.0) {
|
|
|
|
|
return "rgba(" + this.rgb.concat(this.alpha).join(', ') + ")";
|
|
|
|
@ -29,8 +42,16 @@ tree.Color.prototype = {
|
|
|
|
|
}).join('');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Operations have to be done per-channel, if not,
|
|
|
|
|
// channels will spill onto each other. Once we have
|
|
|
|
|
// our result, in the form of an integer triplet,
|
|
|
|
|
// we create a new Color node to hold the result.
|
|
|
|
|
//
|
|
|
|
|
operate: function (op, other) {
|
|
|
|
|
var result = [];
|
|
|
|
|
|
|
|
|
|
if (! (other instanceof tree.Color)) {
|
|
|
|
|
other = other.toColor();
|
|
|
|
|
}
|
|
|
|
|