56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
|
var Path = require("./Path");
|
||
|
|
||
|
// CompoundPath to improve performance
|
||
|
var _default = Path.extend({
|
||
|
type: 'compound',
|
||
|
shape: {
|
||
|
paths: null
|
||
|
},
|
||
|
_updatePathDirty: function () {
|
||
|
var dirtyPath = this.__dirtyPath;
|
||
|
var paths = this.shape.paths;
|
||
|
|
||
|
for (var i = 0; i < paths.length; i++) {
|
||
|
// Mark as dirty if any subpath is dirty
|
||
|
dirtyPath = dirtyPath || paths[i].__dirtyPath;
|
||
|
}
|
||
|
|
||
|
this.__dirtyPath = dirtyPath;
|
||
|
this.__dirty = this.__dirty || dirtyPath;
|
||
|
},
|
||
|
beforeBrush: function () {
|
||
|
this._updatePathDirty();
|
||
|
|
||
|
var paths = this.shape.paths || [];
|
||
|
var scale = this.getGlobalScale(); // Update path scale
|
||
|
|
||
|
for (var i = 0; i < paths.length; i++) {
|
||
|
if (!paths[i].path) {
|
||
|
paths[i].createPathProxy();
|
||
|
}
|
||
|
|
||
|
paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);
|
||
|
}
|
||
|
},
|
||
|
buildPath: function (ctx, shape) {
|
||
|
var paths = shape.paths || [];
|
||
|
|
||
|
for (var i = 0; i < paths.length; i++) {
|
||
|
paths[i].buildPath(ctx, paths[i].shape, true);
|
||
|
}
|
||
|
},
|
||
|
afterBrush: function () {
|
||
|
var paths = this.shape.paths || [];
|
||
|
|
||
|
for (var i = 0; i < paths.length; i++) {
|
||
|
paths[i].__dirtyPath = false;
|
||
|
}
|
||
|
},
|
||
|
getBoundingRect: function () {
|
||
|
this._updatePathDirty();
|
||
|
|
||
|
return Path.prototype.getBoundingRect.call(this);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = _default;
|