import { HostBackend } from "./backend.js"; //#region src/canvas.d.ts /** The subset of `CanvasRenderingContext2D` the painter uses (so a WebGPU/mock backend can satisfy it). */ interface Scene2DContext { fillStyle: string; strokeStyle: string; lineWidth: number; globalAlpha: number; font: string; textBaseline: string; save(): void; restore(): void; clearRect(x: number, y: number, w: number, h: number): void; fillRect(x: number, y: number, w: number, h: number): void; strokeRect(x: number, y: number, w: number, h: number): void; beginPath(): void; moveTo(x: number, y: number): void; lineTo(x: number, y: number): void; arc(x: number, y: number, r: number, start: number, end: number): void; closePath(): void; fill(): void; stroke(): void; fillText(text: string, x: number, y: number): void; } /** A node in the canvas scene graph. */ interface SceneNode { type: string; readonly props: Record; text: string; readonly isTextNode: boolean; parent: SceneNode | null; readonly children: SceneNode[]; } /** A Canvas2D backend: the reconciler builds the scene; `paint(ctx)` rasterizes it. */ interface Canvas2DBackend extends HostBackend { /** The scene root (pass to `render(tree, backend, root)`). */ readonly root: SceneNode; /** Rasterize the whole scene to `ctx` (clears `[0,0,width,height]` first). */ paint(ctx: Scene2DContext, width: number, height: number): void; } /** * Create a Canvas2D scene backend. Drive it with the reconciler * (`render(scene, backend, backend.root)`), then call `backend.paint(ctx, w, h)` to rasterize — on a * frame loop for animations, or once for static art. `onDirty` fires after any mutation so a host can * schedule a repaint. */ /** Options for {@link createCanvas2DBackend}. */ interface Canvas2DBackendOptions { /** Called after any scene mutation so a host can schedule a repaint of the 2D context. */ readonly onDirty?: () => void; } declare function createCanvas2DBackend(options?: Canvas2DBackendOptions): Canvas2DBackend; //#endregion export { Canvas2DBackend, Canvas2DBackendOptions, Scene2DContext, SceneNode, createCanvas2DBackend }; //# sourceMappingURL=canvas.d.ts.map