refactored Color & Dimension operations

This commit is contained in:
cloudhead 2010-02-26 22:30:30 -05:00
parent 1c43df1b85
commit 633660b7af
2 changed files with 11 additions and 36 deletions

View File

@ -21,31 +21,14 @@ node.Color.prototype = {
return Math.round(i).toString(16); return Math.round(i).toString(16);
}).join(''); }).join('');
}, },
'+': function (other) { operate: function (op, other) {
var result = []; var result = [];
for (var c = 0; c < 3; c++) { if (! (other instanceof node.Color)) {
result[c] = this.value[c] + other.value[c]; other = other.toColor();
} }
return new(node.Color)(result);
},
'-': function (other) {
var result = [];
for (var c = 0; c < 3; c++) { for (var c = 0; c < 3; c++) {
result[c] = this.value[c] - other.value[c]; result[c] = node.operate(op, this.value[c], other.value[c]);
}
return new(node.Color)(result);
},
'*': function (other) {
var result = [];
for (var c = 0; c < 3; c++) {
result[c] = this.value[c] * other.value[c];
}
return new(node.Color)(result);
},
'/': function (other) {
var result = [];
for (var c = 0; c < 3; c++) {
result[c] = this.value[c] / other.value[c];
} }
return new(node.Color)(result); return new(node.Color)(result);
} }

View File

@ -6,25 +6,17 @@ node.Dimension = function Dimension(value, unit) {
node.Dimension.prototype = { node.Dimension.prototype = {
eval: function () { return this }, eval: function () { return this },
toColor: function () {
return new(node.Color)([this.value, this.value, this.value]);
},
toCSS: function () { toCSS: function () {
var css = this.value + this.unit; var css = this.value + this.unit;
return css; return css;
}, },
'+': function (other) { operate: function (op, other) {
return new(node.Dimension) return new(node.Dimension)
(this.value + other.value, this.unit); (node.operate(op, this.value, other.value),
}, this.unit);
'-': function (other) {
return new(node.Dimension)
(this.value - other.value, this.unit);
},
'*': function (other) {
return new(node.Dimension)
(this.value * other.value, this.unit);
},
'/': function (other) {
return new(node.Dimension)
(this.value / other.value, this.unit);
} }
}; };