UNPKG

zrender

Version:

A lightweight graphic library providing 2d draw for Apache ECharts

59 lines (49 loc) 1.61 kB
// CompoundPath to improve performance import Path from './Path'; import PathProxy from '../core/PathProxy'; export interface CompoundPathShape { paths: Path[] } export default class CompoundPath extends Path { type = 'compound' shape: CompoundPathShape private _updatePathDirty() { const paths = this.shape.paths; let dirtyPath = this.shapeChanged(); for (let i = 0; i < paths.length; i++) { // Mark as dirty if any subpath is dirty dirtyPath = dirtyPath || paths[i].shapeChanged(); } if (dirtyPath) { this.dirtyShape(); } } beforeBrush() { this._updatePathDirty(); const paths = this.shape.paths || []; const scale = this.getGlobalScale(); // Update path scale for (let 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(ctx: PathProxy | CanvasRenderingContext2D, shape: CompoundPathShape) { const paths = shape.paths || []; for (let i = 0; i < paths.length; i++) { paths[i].buildPath(ctx, paths[i].shape, true); } } afterBrush() { const paths = this.shape.paths || []; for (let i = 0; i < paths.length; i++) { paths[i].pathUpdated(); } } getBoundingRect() { this._updatePathDirty.call(this); return Path.prototype.getBoundingRect.call(this); } }