diff --git a/src/basic/Point.js b/src/basic/Point.js index 79ad441d..b554c195 100644 --- a/src/basic/Point.js +++ b/src/basic/Point.js @@ -396,10 +396,7 @@ var Point = this.Point = Base.extend({ * print(roundPoint); // { x: 10.0, y: 11.0 } * */ - round: function() { - return Point.create(Math.round(this.x), Math.round(this.y)); - }, - + /** * Returns a new point with the nearest greater non-fractional values to the * specified {@link #x} and {@link #y} values. The object itself is not @@ -412,10 +409,7 @@ var Point = this.Point = Base.extend({ * print(ceilPoint); // { x: 11.0, y: 11.0 } * */ - ceil: function() { - return Point.create(Math.ceil(this.x), Math.ceil(this.y)); - }, - + /** * Returns a new point with the nearest smaller non-fractional values to the * specified {@link #x} and {@link #y} values. The object itself is not @@ -428,10 +422,7 @@ var Point = this.Point = Base.extend({ * print(floorPoint); // { x: 10.0, y: 10.0 } * */ - floor: function() { - return Point.create(Math.floor(this.x), Math.floor(this.y)); - }, - + /** * Returns a new point with the absolute values of the specified {@link #x} * and {@link #y} values. The object itself is not modified! @@ -443,10 +434,7 @@ var Point = this.Point = Base.extend({ * print(absPoint); // { x: 5.0, y: 10.0 } * */ - abs: function() { - return Point.create(Math.abs(this.x), Math.abs(this.y)); - }, - + /** * {@grouptitle Vectorial Math Functions} * @@ -571,6 +559,13 @@ var Point = this.Point = Base.extend({ return Point.create(Math.random(), Math.random()); } } +}, new function() { // Scope for injecting intersect, unite and include. + return Base.each(['round', 'ceil', 'floor', 'abs'], function(name) { + var op = Math[name]; + this[name] = function() { + return Point.create(op(this.x), op(this.y)); + }; + }, {}); }); /** diff --git a/src/basic/Rectangle.js b/src/basic/Rectangle.js index a11672fc..e0ebc63b 100644 --- a/src/basic/Rectangle.js +++ b/src/basic/Rectangle.js @@ -209,23 +209,24 @@ var Rectangle = this.Rectangle = Base.extend({ } }, new function() { // Scope for injecting intersect, unite and include. return Base.each({ + // 1st = intersect, 2nd = isPoint intersect: [true, false], unite: [false, false], include: [false, true] }, function(values, name) { var intersect = values[0], isPoint = values[1], - math1 = Math[intersect ? 'max' : 'min'], - math2 = Math[intersect ? 'min' : 'max']; + op1 = Math[intersect ? 'max' : 'min'], + op2 = Math[intersect ? 'min' : 'max']; this[name] = function() { var object = (isPoint ? Point : Rectangle).read(arguments), - x1 = math1(this.x, object.x), - y1 = math1(this.y, object.y), - x2 = math2(this.x + this.width, + x1 = op1(this.x, object.x), + y1 = op1(this.y, object.y), + x2 = op2(this.x + this.width, object.x + (isPoint ? 0 : object.width)), - y2 = math2(this.y + this.height, + y2 = op2(this.y + this.height, object.y + (isPoint ? 0 : object.height)); - return Rectangle.create(x1, y1, x2 - x1, y2 - y1); + return Rectangle.create(x1, y1, x2 - x1, y2 - y1); }; }, {}); }, new function() {