56 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					56 lines
				
				1.3 KiB
			| 
											4 years ago
										 | 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]); | ||
|  |     } | ||
|  |   }, | ||
|  |   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; |