import type { Canvas, Picture } from '../canvas'; import type { RasterCache } from '../compositing'; import { AbstractNode } from '../foundation'; import { Circle, Matrix, Point, Rect, RRect } from '../math'; export declare class PrerollContext { readonly rasterCache: RasterCache; constructor(rasterCache: RasterCache); } export declare class PaintContext { readonly canvas: Canvas; readonly rasterCache: RasterCache; constructor(canvas: Canvas, rasterCache: RasterCache); } export declare abstract class Layer extends AbstractNode { get parent(): ContainerLayer | undefined; redepthChildren(): void; /** * 后一个兄弟图层 */ nextSibling?: Layer; /** * 前一个兄弟图层 */ prevSibling?: Layer; removeFromParent(): void | undefined; abstract preroll(context: PrerollContext, matrix: Matrix): void; abstract paint(context: PaintContext): void; paintBounds: Rect; get needsPainting(): boolean; } export declare class ContainerLayer extends Layer { firstChild?: Layer; lastChild?: Layer; get hasChildren(): boolean; attach(owner: unknown): void; detach(): void; appendChild(child: Layer): void; removeChild(child: Layer): void; removeAllChildren(): void; debugDFSChildren(): Layer[]; private debugUltimatePrevSiblingOf; private debugUltimateNextSiblingOf; preroll(context: PrerollContext, matrix: Matrix): void; prerollChildren(context: PrerollContext, childMatrix: Matrix): Rect; paintChildren(context: PaintContext): void; paint(context: PaintContext): void; } export declare class PictureLayer extends Layer { private readonly offset; willChange: boolean; constructor(offset?: Point, willChange?: boolean); picture?: Picture; private matrix?; preroll(context: PrerollContext, matrix: Matrix): void; paint(context: PaintContext): void; } export declare class TransformLayer extends ContainerLayer { transform: Matrix; constructor(transform?: Matrix); preroll(context: PrerollContext, matrix: Matrix): void; paint(context: PaintContext): void; } export declare class OffsetLayer extends TransformLayer { constructor(offset?: Point); set offset(value: Point); get offset(): Point; } export declare class ClipRectLayer extends ContainerLayer { clipRect: Rect; constructor(clipRect: Rect); preroll(context: PrerollContext, matrix: Matrix): void; paint(context: PaintContext): void; } export declare class ClipRRectLayer extends ContainerLayer { clipRRect: RRect; constructor(clipRRect: RRect); preroll(context: PrerollContext, matrix: Matrix): void; paint(context: PaintContext): void; } export declare class ClipCircleLayer extends ContainerLayer { constructor(clipCircle: Circle); get clipCircle(): Circle; set clipCircle(value: Circle); private _clipCircle; private clipBounds; preroll(context: PrerollContext, matrix: Matrix): void; paint(context: PaintContext): void; }