mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-05-09 14:24:44 +00:00
Refactor _restoreObjectState
This commit is contained in:
parent
8ad5e7e511
commit
10a3319ed1
5 changed files with 96 additions and 42 deletions
44
dist/all.js
vendored
44
dist/all.js
vendored
|
|
@ -16274,19 +16274,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot
|
|||
* @return {fabric.Group} thisArg
|
||||
*/
|
||||
_restoreObjectState: function(object) {
|
||||
var groupLeft = this.get('left'),
|
||||
groupTop = this.get('top'),
|
||||
groupAngle = this.getAngle() * (Math.PI / 180),
|
||||
rotatedTop = Math.cos(groupAngle) * object.get('top') * this.get('scaleY') + Math.sin(groupAngle) * object.get('left') * this.get('scaleX'),
|
||||
rotatedLeft = -Math.sin(groupAngle) * object.get('top') * this.get('scaleY') + Math.cos(groupAngle) * object.get('left') * this.get('scaleX');
|
||||
|
||||
object.setAngle(object.getAngle() + this.getAngle());
|
||||
|
||||
object.set('left', groupLeft + rotatedLeft);
|
||||
object.set('top', groupTop + rotatedTop);
|
||||
|
||||
object.set('scaleX', object.get('scaleX') * this.get('scaleX'));
|
||||
object.set('scaleY', object.get('scaleY') * this.get('scaleY'));
|
||||
this._setObjectPosition(object);
|
||||
|
||||
object.setCoords();
|
||||
object.hasControls = object.__origHasControls;
|
||||
|
|
@ -16298,6 +16286,36 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot
|
|||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_setObjectPosition: function(object) {
|
||||
var groupLeft = this.get('left'),
|
||||
groupTop = this.get('top'),
|
||||
rotated = this._getRotatedLeftTop(object);
|
||||
|
||||
object.setAngle(object.getAngle() + this.getAngle());
|
||||
|
||||
object.set('left', groupLeft + rotated.left);
|
||||
object.set('top', groupTop + rotated.top);
|
||||
object.set('scaleX', object.get('scaleX') * this.get('scaleX'));
|
||||
object.set('scaleY', object.get('scaleY') * this.get('scaleY'));
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_getRotatedLeftTop: function(object) {
|
||||
var groupAngle = this.getAngle() * (Math.PI / 180);
|
||||
return {
|
||||
left: (-Math.sin(groupAngle) * object.get('top') * this.get('scaleY') +
|
||||
Math.cos(groupAngle) * object.get('left') * this.get('scaleX')),
|
||||
|
||||
top: (Math.cos(groupAngle) * object.get('top') * this.get('scaleY') +
|
||||
Math.sin(groupAngle) * object.get('left') * this.get('scaleX'))
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Destroys a group (restoring state of its objects)
|
||||
* @return {fabric.Group} thisArg
|
||||
|
|
|
|||
6
dist/all.min.js
vendored
6
dist/all.min.js
vendored
File diff suppressed because one or more lines are too long
BIN
dist/all.min.js.gz
vendored
BIN
dist/all.min.js.gz
vendored
Binary file not shown.
44
dist/all.require.js
vendored
44
dist/all.require.js
vendored
|
|
@ -16274,19 +16274,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot
|
|||
* @return {fabric.Group} thisArg
|
||||
*/
|
||||
_restoreObjectState: function(object) {
|
||||
var groupLeft = this.get('left'),
|
||||
groupTop = this.get('top'),
|
||||
groupAngle = this.getAngle() * (Math.PI / 180),
|
||||
rotatedTop = Math.cos(groupAngle) * object.get('top') * this.get('scaleY') + Math.sin(groupAngle) * object.get('left') * this.get('scaleX'),
|
||||
rotatedLeft = -Math.sin(groupAngle) * object.get('top') * this.get('scaleY') + Math.cos(groupAngle) * object.get('left') * this.get('scaleX');
|
||||
|
||||
object.setAngle(object.getAngle() + this.getAngle());
|
||||
|
||||
object.set('left', groupLeft + rotatedLeft);
|
||||
object.set('top', groupTop + rotatedTop);
|
||||
|
||||
object.set('scaleX', object.get('scaleX') * this.get('scaleX'));
|
||||
object.set('scaleY', object.get('scaleY') * this.get('scaleY'));
|
||||
this._setObjectPosition(object);
|
||||
|
||||
object.setCoords();
|
||||
object.hasControls = object.__origHasControls;
|
||||
|
|
@ -16298,6 +16286,36 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot
|
|||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_setObjectPosition: function(object) {
|
||||
var groupLeft = this.get('left'),
|
||||
groupTop = this.get('top'),
|
||||
rotated = this._getRotatedLeftTop(object);
|
||||
|
||||
object.setAngle(object.getAngle() + this.getAngle());
|
||||
|
||||
object.set('left', groupLeft + rotated.left);
|
||||
object.set('top', groupTop + rotated.top);
|
||||
object.set('scaleX', object.get('scaleX') * this.get('scaleX'));
|
||||
object.set('scaleY', object.get('scaleY') * this.get('scaleY'));
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_getRotatedLeftTop: function(object) {
|
||||
var groupAngle = this.getAngle() * (Math.PI / 180);
|
||||
return {
|
||||
left: (-Math.sin(groupAngle) * object.get('top') * this.get('scaleY') +
|
||||
Math.cos(groupAngle) * object.get('left') * this.get('scaleX')),
|
||||
|
||||
top: (Math.cos(groupAngle) * object.get('top') * this.get('scaleY') +
|
||||
Math.sin(groupAngle) * object.get('left') * this.get('scaleX'))
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Destroys a group (restoring state of its objects)
|
||||
* @return {fabric.Group} thisArg
|
||||
|
|
|
|||
|
|
@ -306,19 +306,7 @@
|
|||
* @return {fabric.Group} thisArg
|
||||
*/
|
||||
_restoreObjectState: function(object) {
|
||||
var groupLeft = this.get('left'),
|
||||
groupTop = this.get('top'),
|
||||
groupAngle = this.getAngle() * (Math.PI / 180),
|
||||
rotatedTop = Math.cos(groupAngle) * object.get('top') * this.get('scaleY') + Math.sin(groupAngle) * object.get('left') * this.get('scaleX'),
|
||||
rotatedLeft = -Math.sin(groupAngle) * object.get('top') * this.get('scaleY') + Math.cos(groupAngle) * object.get('left') * this.get('scaleX');
|
||||
|
||||
object.setAngle(object.getAngle() + this.getAngle());
|
||||
|
||||
object.set('left', groupLeft + rotatedLeft);
|
||||
object.set('top', groupTop + rotatedTop);
|
||||
|
||||
object.set('scaleX', object.get('scaleX') * this.get('scaleX'));
|
||||
object.set('scaleY', object.get('scaleY') * this.get('scaleY'));
|
||||
this._setObjectPosition(object);
|
||||
|
||||
object.setCoords();
|
||||
object.hasControls = object.__origHasControls;
|
||||
|
|
@ -330,6 +318,36 @@
|
|||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_setObjectPosition: function(object) {
|
||||
var groupLeft = this.getLeft(),
|
||||
groupTop = this.getTop(),
|
||||
rotated = this._getRotatedLeftTop(object);
|
||||
|
||||
object.setAngle(object.getAngle() + this.getAngle());
|
||||
|
||||
object.set('left', groupLeft + rotated.left);
|
||||
object.set('top', groupTop + rotated.top);
|
||||
object.set('scaleX', object.get('scaleX') * this.get('scaleX'));
|
||||
object.set('scaleY', object.get('scaleY') * this.get('scaleY'));
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_getRotatedLeftTop: function(object) {
|
||||
var groupAngle = this.getAngle() * (Math.PI / 180);
|
||||
return {
|
||||
left: (-Math.sin(groupAngle) * object.getTop() * this.get('scaleY') +
|
||||
Math.cos(groupAngle) * object.getLeft() * this.get('scaleX')),
|
||||
|
||||
top: (Math.cos(groupAngle) * object.getTop() * this.get('scaleY') +
|
||||
Math.sin(groupAngle) * object.getLeft() * this.get('scaleX'))
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Destroys a group (restoring state of its objects)
|
||||
* @return {fabric.Group} thisArg
|
||||
|
|
|
|||
Loading…
Reference in a new issue