mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-05-19 11:01:08 +00:00
Minimize delay between clear and re render. (#4007)
* moved clear later * moved clear later
This commit is contained in:
parent
3cee915a6b
commit
da9161e48f
1 changed files with 20 additions and 25 deletions
|
|
@ -48,11 +48,19 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati
|
|||
? JSON.parse(json)
|
||||
: fabric.util.object.clone(json);
|
||||
|
||||
this.clear();
|
||||
var _this = this,
|
||||
renderOnAddRemove = this.renderOnAddRemove;
|
||||
this.renderOnAddRemove = false;
|
||||
|
||||
var _this = this;
|
||||
this._enlivenObjects(serialized.objects, function () {
|
||||
this._enlivenObjects(serialized.objects, function (enlivenedObjects) {
|
||||
_this.clear();
|
||||
_this._setBgOverlay(serialized, function () {
|
||||
enlivenedObjects.forEach(function(obj, index) {
|
||||
// we splice the array just in case some custom classes restored from JSON
|
||||
// will add more object to canvas at canvas init.
|
||||
_this.insertAt(obj, index);
|
||||
});
|
||||
_this.renderOnAddRemove = renderOnAddRemove;
|
||||
// remove parts i cannot set as options
|
||||
delete serialized.objects;
|
||||
delete serialized.backgroundImage;
|
||||
|
|
@ -64,6 +72,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati
|
|||
// create the Object instance. Here the Canvas is
|
||||
// already an instance and we are just loading things over it
|
||||
_this._setOptions(serialized);
|
||||
_this.renderAll();
|
||||
callback && callback();
|
||||
});
|
||||
}, reviver);
|
||||
|
|
@ -76,13 +85,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati
|
|||
* @param {Function} callback Invoked after all background and overlay images/patterns loaded
|
||||
*/
|
||||
_setBgOverlay: function(serialized, callback) {
|
||||
var _this = this,
|
||||
loaded = {
|
||||
backgroundColor: false,
|
||||
overlayColor: false,
|
||||
backgroundImage: false,
|
||||
overlayImage: false
|
||||
};
|
||||
var loaded = {
|
||||
backgroundColor: false,
|
||||
overlayColor: false,
|
||||
backgroundImage: false,
|
||||
overlayImage: false
|
||||
};
|
||||
|
||||
if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {
|
||||
callback && callback();
|
||||
|
|
@ -91,7 +99,6 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati
|
|||
|
||||
var cbIfLoaded = function () {
|
||||
if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {
|
||||
_this.renderAll();
|
||||
callback && callback();
|
||||
}
|
||||
};
|
||||
|
|
@ -140,25 +147,13 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati
|
|||
* @param {Function} [reviver]
|
||||
*/
|
||||
_enlivenObjects: function (objects, callback, reviver) {
|
||||
var _this = this;
|
||||
|
||||
if (!objects || objects.length === 0) {
|
||||
callback && callback();
|
||||
callback && callback([]);
|
||||
return;
|
||||
}
|
||||
|
||||
var renderOnAddRemove = this.renderOnAddRemove;
|
||||
this.renderOnAddRemove = false;
|
||||
|
||||
fabric.util.enlivenObjects(objects, function(enlivenedObjects) {
|
||||
enlivenedObjects.forEach(function(obj, index) {
|
||||
// we splice the array just in case some custom classes restored from JSON
|
||||
// will add more object to canvas at canvas init.
|
||||
_this.insertAt(obj, index);
|
||||
});
|
||||
|
||||
_this.renderOnAddRemove = renderOnAddRemove;
|
||||
callback && callback();
|
||||
callback && callback(enlivenedObjects);
|
||||
}, null, reviver);
|
||||
},
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue