Simplify object straightening logic. Thanks @woutercommandeur. Closes #362.

This commit is contained in:
kangax 2012-12-22 20:20:54 +01:00
parent 299273d7bd
commit 4ae8b9d725
5 changed files with 15 additions and 33 deletions

21
dist/all.js vendored
View file

@ -13424,19 +13424,11 @@ fabric.util.object.extend(fabric.Object.prototype, {
* @return {Number} angle value
*/
_getAngleValueForStraighten: function() {
var angle = this.get('angle');
// TODO (kangax): can this be simplified?
if (angle > -225 && angle <= -135) { return -180; }
else if (angle > -135 && angle <= -45) { return -90; }
else if (angle > -45 && angle <= 45) { return 0; }
else if (angle > 45 && angle <= 135) { return 90; }
else if (angle > 135 && angle <= 225 ) { return 180; }
else if (angle > 225 && angle <= 315) { return 270; }
else if (angle > 315) { return 360; }
return 0;
var angle = this.getAngle() % 360;
if (angle > 0) {
return Math.round((angle-1)/90) * 90;
}
return Math.round(angle/90) * 90;
},
/**
@ -13446,8 +13438,7 @@ fabric.util.object.extend(fabric.Object.prototype, {
* @chainable
*/
straighten: function() {
var angle = this._getAngleValueForStraighten();
this.setAngle(angle);
this.setAngle(this._getAngleValueForStraighten());
return this;
},

4
dist/all.min.js vendored

File diff suppressed because one or more lines are too long

BIN
dist/all.min.js.gz vendored

Binary file not shown.

View file

@ -6,19 +6,11 @@ fabric.util.object.extend(fabric.Object.prototype, {
* @return {Number} angle value
*/
_getAngleValueForStraighten: function() {
var angle = this.get('angle');
// TODO (kangax): can this be simplified?
if (angle > -225 && angle <= -135) { return -180; }
else if (angle > -135 && angle <= -45) { return -90; }
else if (angle > -45 && angle <= 45) { return 0; }
else if (angle > 45 && angle <= 135) { return 90; }
else if (angle > 135 && angle <= 225 ) { return 180; }
else if (angle > 225 && angle <= 315) { return 270; }
else if (angle > 315) { return 360; }
return 0;
var angle = this.getAngle() % 360;
if (angle > 0) {
return Math.round((angle-1)/90) * 90;
}
return Math.round(angle/90) * 90;
},
/**
@ -28,8 +20,7 @@ fabric.util.object.extend(fabric.Object.prototype, {
* @chainable
*/
straighten: function() {
var angle = this._getAngleValueForStraighten();
this.setAngle(angle);
this.setAngle(this._getAngleValueForStraighten());
return this;
},

View file

@ -587,7 +587,7 @@
object.setAngle(999);
object.straighten();
equal(object.get('angle'), 360);
equal(object.get('angle'), 270);
});
test('toGrayscale', function() {