@gravity-ui/graph
Version:
Modern graph editor component
73 lines (72 loc) • 2.24 kB
TypeScript
export type Path2DRenderStyleResult = {
type: "stroke";
} | {
type: "fill";
fillRule?: CanvasFillRule;
} | {
type: "both";
fillRule?: CanvasFillRule;
};
export interface Path2DRenderInstance {
getPath(): Path2D | undefined | null;
style(ctx: CanvasRenderingContext2D): Path2DRenderStyleResult | undefined;
afterRender?(ctx: CanvasRenderingContext2D): void;
isPathVisible?(): boolean;
}
declare class Path2DChunk {
protected items: Set<Path2DRenderInstance>;
protected visibleItems: {
get: () => Path2DRenderInstance[];
reset(): void;
clear(): void;
};
protected path: {
get: () => Path2D;
reset(): void;
clear(): void;
};
protected applyStyles(ctx: CanvasRenderingContext2D): Path2DRenderStyleResult;
add(item: Path2DRenderInstance): void;
delete(item: Path2DRenderInstance): void;
reset(): void;
render(ctx: CanvasRenderingContext2D): void;
get size(): number;
}
declare class Path2DGroup {
private chunkSize;
protected chunks: Path2DChunk[];
protected itemToChunk: Map<Path2DRenderInstance, Path2DChunk>;
constructor(chunkSize: number);
add(item: Path2DRenderInstance): void;
delete(item: Path2DRenderInstance): void;
resetItem(item: Path2DRenderInstance): void;
render(ctx: CanvasRenderingContext2D): void;
}
export declare class BatchPath2DRenderer {
protected onChange: () => void;
private chunkSize;
constructor(onChange: () => void, chunkSize?: number);
protected indexes: Map<number, Map<string, Path2DGroup>>;
protected itemParams: Map<Path2DRenderInstance, {
zIndex: number;
group: string;
}>;
orderedPaths: {
get: () => any[];
reset(): void;
clear(): void;
};
protected requestRender: () => void;
protected getGroup(zIndex: number, group: string): Path2DGroup;
add(item: Path2DRenderInstance, params: {
zIndex: number;
group: string;
}): void;
update(item: Path2DRenderInstance, params: {
zIndex: number;
group: string;
}): void;
delete(item: Path2DRenderInstance): void;
markDirty(item: Path2DRenderInstance): void;
}
export {};