mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-05-04 20:04:45 +00:00
Merge pull request #1127 from GordoRank/Optimize-searchPossibleTargets-for-IText
Optimize searchPossibleTargets for I-text
This commit is contained in:
commit
213b99eb9f
3 changed files with 38 additions and 31 deletions
|
|
@ -760,6 +760,26 @@
|
|||
this._hoveredTarget = null;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_checkTarget: function(e, obj, pointer) {
|
||||
if (obj &&
|
||||
obj.visible &&
|
||||
obj.evented &&
|
||||
this.containsPoint(e, obj)){
|
||||
if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {
|
||||
var isTransparent = this.isTargetTransparent(obj, pointer.x, pointer.y);
|
||||
if (!isTransparent) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
|
|
@ -767,35 +787,22 @@
|
|||
_searchPossibleTargets: function(e) {
|
||||
|
||||
// Cache all targets where their bounding box contains point.
|
||||
var possibleTargets = [],
|
||||
target,
|
||||
var target,
|
||||
pointer = this.getPointer(e);
|
||||
|
||||
for (var i = this._objects.length; i--; ) {
|
||||
if (this._objects[i] &&
|
||||
this._objects[i].visible &&
|
||||
this._objects[i].evented &&
|
||||
this.containsPoint(e, this._objects[i])) {
|
||||
|
||||
if (this.perPixelTargetFind || this._objects[i].perPixelTargetFind) {
|
||||
possibleTargets[possibleTargets.length] = this._objects[i];
|
||||
}
|
||||
else {
|
||||
target = this._objects[i];
|
||||
this.relatedTarget = target;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (this._activeObject && this._checkTarget(e, this._activeObject, pointer)) {
|
||||
this.relatedTarget = this._activeObject;
|
||||
return this._activeObject;
|
||||
}
|
||||
|
||||
for (var j = 0, len = possibleTargets.length; j < len; j++) {
|
||||
pointer = this.getPointer(e);
|
||||
var isTransparent = this.isTargetTransparent(possibleTargets[j], pointer.x, pointer.y);
|
||||
if (!isTransparent) {
|
||||
target = possibleTargets[j];
|
||||
this.relatedTarget = target;
|
||||
break;
|
||||
}
|
||||
var i = this._objects.length;
|
||||
|
||||
while(i--) {
|
||||
if (this._checkTarget(e, this._objects[i], pointer)){
|
||||
this.relatedTarget = this._objects[i];
|
||||
target = this._objects[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return target;
|
||||
|
|
|
|||
|
|
@ -294,11 +294,11 @@
|
|||
|
||||
fabric.util.object.extend(this.styles[loc.lineIndex][loc.charIndex], styles);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {CanvasRenderingContext2D} ctx Context to render on
|
||||
*/
|
||||
* @private
|
||||
* @param {CanvasRenderingContext2D} ctx Context to render on
|
||||
*/
|
||||
_render: function(ctx) {
|
||||
this.callSuper('_render', ctx);
|
||||
this.ctx = ctx;
|
||||
|
|
|
|||
|
|
@ -891,7 +891,7 @@
|
|||
}
|
||||
|
||||
this[key] = value;
|
||||
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue