@visactor/vrender-core
Version:
## Description
102 lines (101 loc) • 3.54 kB
TypeScript
import type { IAABBBounds, IBounds, IBoundsLike, IMatrix } from '@visactor/vutils';
import type { IGraphic } from './graphic';
import type { IGroup } from './graphic/group';
import type { IColor } from './color';
import type { IDrawContext, IDrawContribution, IRenderService, IRenderServiceDrawParams } from './render';
import type { IStage } from './stage';
import type { Releaseable } from './common';
import type { IContext2d } from './context';
import type { IWindow } from './window';
export type LayerMode = 'static' | 'dynamic' | 'virtual';
export interface ILayerParams {
main: boolean;
zIndex?: number;
layerMode: LayerMode;
layerHandler: ILayerHandlerContribution;
canvasId?: string;
}
export interface ILayerDrawParams {
renderService: IRenderService;
background?: string | IColor;
updateBounds: boolean;
viewBox: IAABBBounds;
transMatrix: IMatrix;
}
export interface IDrawToParams {
viewBox: IAABBBounds;
transMatrix: IMatrix;
clear?: boolean;
renderService: IRenderService;
background?: string | IColor;
updateBounds: boolean;
}
export interface ILayer extends IGroup {
parent: any;
main: boolean;
width: number;
height: number;
viewWidth: number;
viewHeight: number;
readonly layerMode: LayerMode;
renderCount: number;
offscreen: boolean;
subLayers: Map<number, {
layer: ILayer;
group?: IGroup;
zIndex: number;
drawContribution?: IDrawContribution;
}>;
readonly dirtyBound: IAABBBounds;
background: string;
dpr: number;
opacity: number;
canvasId?: string;
imageData?: ImageData;
blendMode?: string;
pickable: boolean;
pick: (x: number, y: number) => {
graphic?: IGraphic;
group?: IGroup;
} | false;
render: (params: ILayerDrawParams, userParams?: Partial<IDrawContext>) => void;
afterDraw: (cb: (l: this) => void) => void;
resize: (w: number, h: number) => void;
resizeView: (w: number, h: number) => void;
setDpr: (dpr: number) => void;
getNativeHandler: () => ILayerHandlerContribution;
combineSubLayer: (removeIncrementalKey?: boolean) => void;
startAnimate: (t: number) => void;
setToFrame: (t: number) => void;
prepare: (dirtyBounds: IBounds, params: ILayerHandlerDrawParams) => void;
drawTo: (target: IWindow, params: IDrawToParams) => void;
}
export interface ILayerHandlerDrawParams extends ILayerDrawParams {
layer: ILayer;
stage: IStage;
updateBounds: boolean;
}
export interface ILayerHandlerInitParams {
main: boolean;
canvasId?: string;
width: number;
height: number;
zIndex: number;
dpr?: number;
}
export interface ILayerHandlerContribution extends Releaseable {
secondaryHandlers?: ILayerHandlerContribution[];
mainHandler?: ILayerHandlerContribution;
type: LayerMode;
init: (layer: ILayer, window: IWindow, params: ILayerHandlerInitParams) => void;
resize: (w: number, h: number) => void;
resizeView: (w: number, h: number) => void;
setDpr: (dpr: number) => void;
render: (group: IGroup[], params: ILayerHandlerDrawParams, userParams?: Partial<IDrawContext>) => void;
prepare: (dirtyBounds: IBoundsLike, params: IRenderServiceDrawParams) => void;
drawTo: (target: IWindow, group: IGroup[], params: IDrawToParams & ILayerHandlerDrawParams) => void;
merge: (layerHandlers: ILayerHandlerContribution[]) => void;
getContext: () => IContext2d;
offscreen: boolean;
layer: ILayer;
}