@antv/g-plugin-canvas-renderer
Version:
A G plugin of renderer implementation with Canvas2D API
55 lines • 2.11 kB
TypeScript
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<keyof CanvasRenderingContext2D | 'lineDash', unknown>;
}
/**
* 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;
applyAttributesToContext(context: CanvasRenderingContext2D, object: DisplayObject): void;
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