From 0897ff1d163c221f900ccbe1dc97844988e8808f Mon Sep 17 00:00:00 2001 From: Jaffer Haider Date: Tue, 21 Apr 2015 14:40:18 +0500 Subject: [PATCH 1/2] Added missing events from gestures --- src/mixins/canvas_gestures.mixin.js | 42 ++++++++++++----------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/mixins/canvas_gestures.mixin.js b/src/mixins/canvas_gestures.mixin.js index f2deaa17..e981094b 100644 --- a/src/mixins/canvas_gestures.mixin.js +++ b/src/mixins/canvas_gestures.mixin.js @@ -48,23 +48,23 @@ } var self = this.__gesturesParams.self, - t = this._currentTransform; + t = this._currentTransform, + e = this.__gesturesParams.e; t.action = 'scale'; t.originX = t.originY = 'center'; this._setOriginToCenter(t.target); - this._scaleObjectBy(self.scale); + this._scaleObjectBy(self.scale, e); if (self.rotation !== 0) { t.action = 'rotate'; - this._rotateObjectByAngle(self.rotation); + this._rotateObjectByAngle(self.rotation, e); } this.renderAll(); t.action = 'drag'; }, - /** * Method that defines actions when an Event.js drag is detected. * @@ -76,7 +76,6 @@ e: e, self: self }); }, - /** * Method that defines actions when an Event.js orientation event is detected. * @@ -88,7 +87,6 @@ e: e, self: self }); }, - /** * Method that defines actions when an Event.js shake event is detected. * @@ -100,7 +98,6 @@ e: e, self: self }); }, - /** * Method that defines actions when an Event.js longpress event is detected. * @@ -112,14 +109,12 @@ e: e, self: self }); }, - /** * Scales an object by a factor * @param {Number} s The scale factor to apply to the current scale level - * @param {String} by Either 'x' or 'y' - specifies dimension constraint by which to scale an object. - * When not provided, an object is scaled by both dimensions equally + * @param {Event} e Event object by Event.js */ - _scaleObjectBy: function(s, by) { + _scaleObjectBy: function(s, e) { var t = this._currentTransform, target = t.target, lockScalingX = target.get('lockScalingX'), @@ -131,33 +126,30 @@ target._scaling = true; - var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY); + var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY), + halfStrokeWidth = target.stroke ? target.strokeWidth / 2 : 0; - if (!by) { - t.newScaleX = t.scaleX * s; - t.newScaleY = t.scaleY * s; - if (!lockScalingX) { - target.set('scaleX', t.scaleX * s); - } - if (!lockScalingY) { - target.set('scaleY', t.scaleY * s); - } - } + this._setObjectScale(new fabric.Point((t.scaleX * s * (target.width + halfStrokeWidth)), + (t.scaleY * s * (target.height + halfStrokeWidth))), + t, lockScalingX, lockScalingY, null, target.get('lockScalingFlip')); target.setPositionByOrigin(constraintPosition, t.originX, t.originY); + + this._fire('scaling', target, e); }, - /** * Rotates object by an angle * @param {Number} curAngle The angle of rotation in degrees + * @param {Event} e Event object by Event.js */ - _rotateObjectByAngle: function(curAngle) { + _rotateObjectByAngle: function(curAngle, e) { var t = this._currentTransform; if (t.target.get('lockRotation')) { return; } t.target.angle = radiansToDegrees(degreesToRadians(curAngle) + t.theta); + this._fire('rotating', t.target, e); } }); -})(); +})(); \ No newline at end of file From 8a73c34e7c663fd136f74f539426f5c051eb1c4a Mon Sep 17 00:00:00 2001 From: Jaffer Haider Date: Wed, 22 Apr 2015 09:12:59 +0500 Subject: [PATCH 2/2] code style errors --- src/mixins/canvas_gestures.mixin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mixins/canvas_gestures.mixin.js b/src/mixins/canvas_gestures.mixin.js index e981094b..c87a3f63 100644 --- a/src/mixins/canvas_gestures.mixin.js +++ b/src/mixins/canvas_gestures.mixin.js @@ -134,7 +134,7 @@ t, lockScalingX, lockScalingY, null, target.get('lockScalingFlip')); target.setPositionByOrigin(constraintPosition, t.originX, t.originY); - + this._fire('scaling', target, e); }, /** @@ -152,4 +152,4 @@ this._fire('rotating', t.target, e); } }); -})(); \ No newline at end of file +})();