package.src.graphic.CompoundPath.ts Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of zrender Show documentation
Show all versions of zrender Show documentation
A lightweight graphic library providing 2d draw for Apache ECharts
The newest version!
// 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);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy