Skip to content
D
Documentation

Canvas — classes

reference
1 min readUpdated

Classes

Import these from @grafloria/renderer.

Classes

CanvasStyleResolver

Resolves VNode props → concrete paint values, reproducing the SVG cascade. The CLASS-RULE layer is the export card's flattener; this adds priority order, inheritance and typed parsing on top.

ts
class CanvasStyleResolver

Properties

NameTypeDefaultDescription
warningsstring[][]Declarations dropped because a variable could not be resolved.

Methods

  • constructor(options: StyleResolverOptions)
  • setTheme(theme: Theme, varOverrides?: Record<string, string>): void
  • getTheme(): Theme
  • rootStyle(): ComputedStyle — The root style every diagram starts from (theme font, no paint inherited).
  • resolve(props: VNodeProps | undefined, inherited: ComputedStyle): ComputedStyle — Compute an element's style: inherit from the parent, then apply presentation attributes < matched class rules < inline style.

DirtyRegionTracker

ts
class DirtyRegionTracker

Methods

  • invalidateAll(): void — Next frame repaints everything (camera moved, theme swapped, resized …).
  • reset(): void — Forget everything (a new diagram, or a disposed renderer).
  • diff(current: Map<string, VNode>, measure: (vnode: VNode) => Bounds | null): DirtyDiff — Diff this frame's entities against the last one.
  • getBounds(key: string): Bounds | null | undefined — Bounds recorded for an entity on the last frame (testing / diagnostics).
  • get size(): number

VNodePainter

Paints VNode trees. Stateless between frames apart from the colour-key allocator the caller injects.

ts
class VNodePainter

Methods

  • constructor(private readonly resolver: CanvasStyleResolver)
  • paint(ctx: Canvas2DLike, root: VNode, options: PaintOptions): PaintResult
  • measure(vnode: VNode, worldToDevice: Matrix = IDENTITY): Bounds | null — World bounds of a subtree, drawing nothing. Used by the dirty tracker to measure the entities that actually changed (and only those).

Was this page helpful?

Canvas — classes — Grafloria