import type { DisplayObject, RenderingPlugin, RenderingPluginContext, CanvasContext, GlobalRuntime } from '@antv/g-lite'; import type { CanvasRendererPluginOptions } from './interfaces'; export interface RenderState { restoreStack: DisplayObject[]; prevObject: DisplayObject; currentContext: Map; } /** * support 2 modes in rendering: * * immediate * * delayed: render at the end of frame with dirty-rectangle */ export declare class CanvasRendererPlugin implements RenderingPlugin { #private; private canvasRendererPluginOptions; static tag: string; private context; private pathGeneratorFactory; /** * RBush used in dirty rectangle rendering */ private rBush; constructor(canvasRendererPluginOptions: CanvasRendererPluginOptions); private removedRBushNodeAABBs; private renderQueue; private clearFullScreenLastFrame; private clearFullScreen; /** * view projection matrix */ private vpMatrix; private dprMatrix; private tmpMat4; private vec3a; private vec3b; private vec3c; private vec3d; apply(context: RenderingPluginContext, runtime: GlobalRuntime): void; private clearRect; renderDisplayObjectOptimized(object: DisplayObject, context: CanvasRenderingContext2D, canvasContext: CanvasContext, renderState: RenderState, runtime: GlobalRuntime): void; renderDisplayObject(object: DisplayObject, context: CanvasRenderingContext2D, canvasContext: CanvasContext, renderState: RenderState, runtime: GlobalRuntime): void; private applyAttributesToContext; private convertAABB2Rect; /** * TODO: merge dirty rectangles with some strategies. * For now, we just simply merge all the rectangles into one. * @see https://idom.me/articles/841.html */ private mergeDirtyAABBs; private searchDirtyObjects; private saveDirtyAABB; private applyWorldTransform; private safeMergeAABB; } //# sourceMappingURL=CanvasRendererPlugin.d.ts.map