← All packages

@searsuite/sear-render-context

Drawing API

RenderContext is the drawing contract used by scene nodes and render strategies. It receives drawing commands for a frame; the host chooses the concrete target. A web host can use WebCanvasRenderContext, WebSvgRenderContext, or WebWebGLRenderContext. A host without a visible view can use HeadlessRenderContext.

The editor also uses separate offscreen and hit-test contexts. Their DI tokens are RenderContext.offScreenSymbol and RenderContext.hitSymbol; the visible target uses RenderContext.symbol. Render code uses these contracts so it does not need to know which host target was chosen.

classRenderContext

Platform-neutral immediate-mode drawing contract used by render strategies.

Concrete render targets implement this shape so scene nodes and strategies can draw without depending on host-specific APIs.

constructorRenderContext(): RenderContext
propertyisDrawn: boolean

Whether the target has received at least one draw operation.

propertyreadonly hitSymbol: symbolstatic

DI token for the hit-test render layer.

propertyreadonly offScreenSymbol: symbolstatic

DI token for the scroll-optimization render layer.

propertyreadonly symbol: symbolstatic

DI token for the primary visible render layer.

methodaddClickEventListener(callBack: (event: EventWithOffset): void): void

Attaches a click listener.

methodaddEventListener(type: string, callBack: (event: EventWithOffset): void): (): void

Attaches a normalized event listener and returns an idempotent disposer.

methodaddMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-press listener.

methodaddMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-move listener.

methodaddMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-release listener.

methodaddResizeListener(callBack: (): void): void

Attaches a resize listener for host target size changes.

methodbeginFrame(): void

Starts a new render frame when the target rebuilds its visual state.

methodbeginNodeSemantics(_semantics: RenderNodeSemantics): void

Marks subsequent drawing operations as belonging to one semantic scene node.

methodbeginPath(): void

Begins a new path.

methodclearRect(x: number, y: number, width: number, height: number): void

Clears a rectangle from the target.

methodclip(): void

Clips future drawing to the active path.

methodcloneNode(): RenderContext

Creates a same-kind render context for an auxiliary render layer.

methodclosePath(): void

Closes the active path.

methodcreateHitNode(): RenderContext

Creates a same-kind render context configured for hit testing.

methoddrawImage
drawImage(image: unknown, x: number, y: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number, sx: number, sy: number, sWidth: number, sHeight: number): void

Draws an image at its natural size.

methodendNodeSemantics(): void

Ends the semantic scene-node boundary started by beginNodeSemantics.

methodfill(): void

Fills the active path with the current fill style.

methodfillText(text: string, x: number, y: number, maxWidth?: number): void

Draws text at the given position.

methodgetAttribute(name: string): string

Reads a host-visible attribute from the backing target.

methodgetImageData(x: number, y: number, width: number, height: number): RenderImageData

Reads raster pixels from the target.

methodgetLineWidth(): number

Returns the current stroke line width.

methodgetMaxLineWidth(): number

Returns the largest stroke width tracked for erase padding.

methodgetRasterScale(): number

Raster units represented by one host-view unit for this context.

methodgetRenderTarget(): unknown

Returns the native backing target owned by this render context.

methodgetRoot(): unknown

Returns the event root associated with this render context.

methodgetViewScale(): number

Returns the current logical view scale.

methodinitialize(scale?: number): void

Initializes target sizing and adapter-specific state.

methodlineTo(x: number, y: number): void

Adds a line from the current path cursor.

methodmeasureText(text: string): { fontAscent?: number; fontDescent?: number; fontLineGap?: number; height: number; width: number }

Measures text using the active font and returns normalized metrics.

methodmoveTo(x: number, y: number): void

Moves the active path cursor.

methodputImageData(imageData: RenderImageData, x: number, y: number): void

Writes raster pixels to the target.

methodrect(x: number, y: number, width: number, height: number): void

Adds a rectangle to the active path.

methodremoveClickEventListener(callBack: (event: EventWithOffset): void): void

Removes a click listener.

methodremoveMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-press listener.

methodremoveMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-move listener.

methodremoveMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-release listener.

methodremoveResizeListener(): void

Removes the active resize listener, if any.

methodrequiresExplicitNodeClear(): boolean

Whether an existing node must erase its prior output before it is redrawn.

methodrequiresFrameRebuild(): boolean

Whether the target must rebuild a complete visual frame instead of reusing a pixel cache.

methodresetHitFrame(width: number, height: number): void

Resets the complete hit-test frame using the target's native lifecycle.

methodresetTransform(): void

Resets the current transform to the identity transform.

methodresize(width: number, height: number, scale?: number): void

Resizes the backing render target to the host view's logical size and raster scale.

methodrestore(): void

Restores the most recently saved drawing state.

methodsave(): void

Saves the current drawing state.

methodsetAttribute(name: string, value: string): void

Sets a host-visible attribute on the backing target.

methodsetFillStyle(fillStyle: RenderPaint): void

Sets the current fill style.

methodsetFont(font: string): void

Sets the active platform-neutral font descriptor.

methodsetLineDash(segments: number[]): void

Sets the current line dash pattern.

methodsetLineWidth(width: number): void

Sets the current stroke line width.

methodsetStrokeStyle(strokeStyle: RenderPaint): void

Sets the current stroke style.

methodsetTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Replaces the current transform matrix.

methodsetViewScale(scale: number): void

Logical view scale (distinct from device pixel ratio).

methodstroke(): void

Strokes the active path with the current stroke style.

methodstrokeRect(x: number, y: number, width: number, height: number): void

Strokes a rectangle without requiring a separate path.

methodsupportsDirtyRedraw(): boolean

Whether the target can apply a redraw to only its accumulated dirty regions.

methodtranslate(x: number, y: number): void

Translates the current drawing transform.

interfaceEventWithOffset
interface EventWithOffset extends RenderPointerEvent

Host pointer event carrying offsets in view coordinates.

Host adapters translate their native pointer event into the same offset contract and optionally provide a normalized click count.

propertyreadonly clickCount?: number

Consecutive click count normalized by host adapters when available.

Inherited members 13

Inherited from RenderPointerEvent.

interfaceRenderNodeSemantics

Semantic ownership metadata attached to drawing for retained targets and diagnostics.

propertyreadonly owner?: string

Plugin or scene owner responsible for the drawn node.

propertyreadonly role?: string

Semantic role of the drawn node, such as cell, header or overlay.

interfaceRenderPointerEvent

Pointer event shape shared by renderers without requiring host-native event types.

typeRenderGradient
type RenderGradient = object

Opaque paint handles supplied by a concrete renderer.

typeRenderImageSource
type RenderImageSource = unknown
typeRenderPaint
type RenderPaint = string | RenderGradient | RenderPattern
typeRenderPattern
type RenderPattern = object

Opaque pattern handles supplied by a concrete renderer.

Coordinates

Pointer input begins in host-view coordinates, while document content and scrolling use world coordinates. CoordinateTransformer.viewToWorld() applies the current view scale and scroll offset before hit testing or selecting content. worldToView() maps a document position back to the visible view.

Use viewToRaster() only when reading pixels from the hit-test target: raster coordinates also account for that target's pixel scale. CoordinatePoint is the simple {x, y} value passed between these conversions.

classCoordinateTransformer

Single authority for host-view, world, and raster coordinate conversion.

constructorCoordinateTransformer(scrollManager: ScrollManager, renderContext: RenderContext, hitRenderContext: RenderContext): CoordinateTransformer
propertyreadonly symbol: symbolstatic

DI token for resolving the host-neutral coordinate transformer.

methodgetVisibleWorldRect(): PositionRect<unknown>

Returns the visible world rect.

methodviewToRaster(point: CoordinatePoint): CoordinatePoint

Converts a host-view point into raster coordinates for pixel reads.

methodviewToWorld(point: CoordinatePoint, scroll?: Pick<ScrollManagerState, "x" | "y">): CoordinatePoint

Converts a host-view point into world coordinates.

methodworldToView(point: CoordinatePoint, scroll?: Pick<ScrollManagerState, "x" | "y">): CoordinatePoint

Converts a world point into host-view coordinates.

interfaceCoordinatePoint
propertyx: number
propertyy: number

Canvas and SVG

classWebCanvasRenderContext
class WebCanvasRenderContext extends RenderContext

Browser Canvas2D implementation of the platform-neutral RenderContext.

The context keeps device-pixel-ratio and logical view scale separate so render strategies can work in shared world/view coordinates while the canvas writes to the correct raster backing store.

constructorWebCanvasRenderContext(renderTarget: unknown, readbackOptimized?: boolean, platform?: Platform): WebCanvasRenderContext

Constructs a Canvas render context from a host canvas.

renderTarget

HTMLCanvasElement supplied by the host adapter.

propertyreadonly symbol: symbolstatic

DI token for resolving the visible canvas render context.

methodaddClickEventListener(callBack: (event: EventWithOffset): void): void

Attaches a click listener.

methodaddEventListener(type: string, callBack: (event: EventWithOffset): void): (): void

Registers a host pointer event listener on the canvas root.

methodaddMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-press listener.

methodaddMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-move listener.

methodaddMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-release listener.

methodaddResizeListener(callBack: (): void): void

Attaches a resize listener for host target size changes.

methodbeginPath(): void

Begins a new path.

methodclearRect(x: number, y: number, width: number, height: number): void

Clears a rectangle from the target.

methodclip(): void

Clips future drawing to the active path.

methodcloneNode(): WebCanvasRenderContext

Clones the backing canvas dimensions into a detached WebCanvasRenderContext.

methodclosePath(): void

Closes the active path.

methodcreateHitNode(): WebCanvasRenderContext

Creates a detached render context used by hit rendering.

methoddrawImage
drawImage(image: unknown, x: number, y: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number, sx: number, sy: number, sWidth: number, sHeight: number): void

Draws an image at its natural size.

methodfill(): void

Fills the active path with the current fill style.

methodfillText(text: string, x: number, y: number, maxWidth?: number): void

Draws text at the given position.

methodgetAttribute(name: string): string

Reads a host-visible attribute from the backing target.

methodgetImageData(x: number, y: number, width: number, height: number): { data: [number, number, number, number][]; height: number; width: number }

Reads raster pixels from the target.

methodgetLineWidth(): number

Returns the current stroke line width.

methodgetMaxLineWidth(): number

Returns the largest stroke width tracked for erase padding.

methodgetRasterScale(): number

Returns the host-view to raster scale, excluding logical sheet zoom.

methodgetRenderTarget(): HTMLCanvasElement

Returns the native backing target owned by this render context.

methodgetRoot(): HTMLCanvasElement

Returns the event root associated with this render context.

methodgetViewScale(): number

Returns the logical view scale.

methodinitialize(scale: number): void

Initializes canvas sizing and marks the canvas with the shared render-context token.

scale

Device pixel ratio used for backing-store dimensions.

methodlineTo(x: number, y: number): void

Adds a line from the current path cursor.

methodmeasureText(text: string): { fontAscent?: number; fontDescent?: number; height: number; width: number }

Measures text using the active font and returns normalized metrics.

methodmoveTo(x: number, y: number): void

Moves the active path cursor.

methodputImageData(imageData: RenderImageData, x: number, y: number): void

Writes raw pixel data to the backing context.

imageData

Compact image data shape used by RenderContext.

x

Raster x-coordinate.

y

Raster y-coordinate.

methodrect(x: number, y: number, width: number, height: number): void

Adds a rectangle to the active path.

methodremoveClickEventListener(callBack: (event: EventWithOffset): void): void

Removes a click listener.

methodremoveMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-press listener.

methodremoveMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-move listener.

methodremoveMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-release listener.

methodremoveResizeListener(): void

Removes the active resize listener, if any.

methodresetTransform(): void

Resets the current transform to the identity transform.

methodresize(width: number, height: number, scale?: number): void

Resizes the canvas backing store for a logical host viewport.

width

Host-view width.

height

Host-view height.

scale

Raster scale to apply to the backing store.

methodrestore(): void

Restores the most recently saved drawing state.

methodsave(): void

Saves the current drawing state.

methodsetAttribute(name: string, value: string): void

Sets a host-visible attribute on the backing target.

methodsetFillStyle(fillStyle: RenderPaint): void

Sets the current fill style.

methodsetFont(font: string): void

Sets the active platform-neutral font descriptor.

methodsetLineDash(segments: number[]): void

Sets the current line dash pattern.

methodsetLineWidth(width: number): void

Sets the current stroke line width.

methodsetStrokeStyle(strokeStyle: RenderPaint): void

Sets the current stroke style.

methodsetTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Applies a transform in shared view coordinates.

Translation and scale are multiplied by raster and view scale so callers do not need to reason about canvas backing-store pixels.

methodsetViewScale(scale: number): void

Updates the logical view scale used by sheet zoom.

scale

New view scale.

methodstroke(): void

Strokes the active path with the current stroke style.

methodstrokeRect(x: number, y: number, width: number, height: number): void

Strokes a rectangle without requiring a separate path.

methodtranslate(x: number, y: number): void

Translates the current drawing transform.

Inherited members 10

Inherited from RenderContext.

classWebRenderContext
class WebRenderContext extends RenderContext

Experimental Web-backed render context used for element-based rendering experiments.

constructorWebRenderContext(container: HTMLDivElement, platform?: Platform): WebRenderContext

Creates a Web render context attached to the provided container.

propertycache: Set<HTMLElement>

Virtual path cache collected before a fill or stroke commits DOM elements.

propertyroot: HTMLDivElement

Root DOM element that receives generated render elements.

propertyreadonly symbol: symbolstatic

DI token for resolving the Web render context.

methodaddClickEventListener(callBack: (event: EventWithOffset): void): void

Attaches a click listener.

methodaddEventListener(type: string, callBack: (event: EventWithOffset): void): (): void

Attaches a normalized event listener and returns an idempotent disposer.

methodaddMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-press listener.

methodaddMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-move listener.

methodaddMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-release listener.

methodaddResizeListener(): void

Attaches a resize listener for host target size changes.

methodbeginPath(): void

Clear timing 1、Virtual Path Again 2、beginPath 3、clearRect

methodclearRect(x: number, y: number, width: number, height: number): void

Clears a rectangle from the target.

methodclip(): void

Clips future drawing to the active path.

methodcloneNode(): RenderContext

Creates a same-kind render context for an auxiliary render layer.

methodclosePath(): void

Closes the active path.

methodcreateHitNode(): RenderContext

Creates a same-kind render context configured for hit testing.

methoddrawImage
drawImage(image: unknown, x: number, y: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number, sx: number, sy: number, sWidth: number, sHeight: number): void

Draws an image at its natural size.

methodfill(): void

Fills the active path with the current fill style.

methodfillText(text: string, x: number, y: number, maxWidth?: number): void

Draws text at the given position.

methodgetAttribute(name: string): string

Reads a host-visible attribute from the backing target.

methodgetImageData(x: number, y: number, width: number, height: number): { data: [number, number, number, number][]; height: number; width: number }

Reads raster pixels from the target.

methodgetLineWidth(): number

Returns the current stroke line width.

methodgetMaxLineWidth(): number

Returns the largest stroke width tracked for erase padding.

methodgetRasterScale(): number

Raster units represented by one host-view unit for this context.

methodgetRenderTarget(): unknown

Returns the native backing target owned by this render context.

methodgetRoot(): HTMLDivElement

Returns the event root associated with this render context.

methodgetViewScale(): number

Returns the current logical view scale.

methodinitialize(): void

Initializes target sizing and adapter-specific state.

methodlineTo(x: number, y: number): void

Adds a line from the current path cursor.

methodmeasureText(text: string): { height: number; width: number }

Measures text using the active font and returns normalized metrics.

methodmoveTo(x: number, y: number): void

Moves the active path cursor.

methodputImageData(imageData: RenderImageData, x: number, y: number): void

Writes raster pixels to the target.

methodrect(x: number, y: number, width: number, height: number): void

Adds a rectangle to the active path.

methodremoveClickEventListener(callBack: (event: EventWithOffset): void): void

Removes a click listener.

methodremoveMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-press listener.

methodremoveMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-move listener.

methodremoveMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-release listener.

methodremoveResizeListener(): void

Removes the active resize listener, if any.

methodresetTransform(): void

Resets the current transform to the identity transform.

methodresize(): void

Resizes the backing render target to the host view's logical size and raster scale.

methodrestore(): void

Restores the most recently saved drawing state.

methodsave(): void

Saves the current drawing state.

methodsetAttribute(name: string, value: string): void

Sets a host-visible attribute on the backing target.

methodsetFillStyle(fillStyle: RenderPaint): void

Sets the current fill style.

methodsetFont(font: string): void

Sets the active platform-neutral font descriptor.

methodsetLineDash(segments: number[]): void

Sets the current line dash pattern.

methodsetLineWidth(width: number): void

Sets the current stroke line width.

methodsetStrokeStyle(strokeStyle: string): void

Sets the current stroke style.

methodsetTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Replaces the current transform matrix.

methodsetViewScale(_scale: number): void

Logical view scale (distinct from device pixel ratio).

methodstroke(): void

Strokes the active path with the current stroke style.

methodstrokeRect(x: number, y: number, width: number, height: number): void

Strokes a rectangle without requiring a separate path.

methodtranslate(x: number, y: number): void

Translates the current drawing transform.

Inherited members 10

Inherited from RenderContext.

classWebSvgRenderContext
class WebSvgRenderContext extends RenderContext

Production SVG implementation of the platform-neutral RenderContext.

SVG is retained-mode while Canvas is immediate-mode. The context therefore preserves paint order in SVG groups and applies later clearRect operations as masks to earlier groups. A detached Canvas mirror supplies the raster-only APIs (text metrics and hit-image reads) required by the shared engine.

constructorWebSvgRenderContext(root: unknown, platform?: Platform): WebSvgRenderContext

Creates an SVG render context with a detached raster mirror for Canvas-only APIs.

root

SVG element that receives retained draw output.

platform

Optional platform diagnostics adapter.

propertyreadonly symbol: symbolstatic

DI token for resolving the SVG render context.

methodaddClickEventListener(callBack: (event: EventWithOffset): void): void

Attaches a click listener.

methodaddEventListener(type: string, callBack: (event: EventWithOffset): void): (): void

Attaches a normalized event listener and returns an idempotent disposer.

methodaddMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-press listener.

methodaddMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-move listener.

methodaddMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Attaches a pointer-release listener.

methodaddResizeListener(callBack: (): void): void

Attaches a resize listener for host target size changes.

methodbeginFrame(): void

Replaces retained SVG output before a full shared-engine render pass.

methodbeginNodeSemantics(semantics: RenderNodeSemantics): void

Marks subsequent drawing operations as belonging to one semantic scene node.

methodbeginPath(): void

Begins a new path.

methodclearRect(x: number, y: number, width: number, height: number): void

Clears a rectangle from the target.

methodclip(): void

Clips future drawing to the active path.

methodcloneNode(): WebSvgRenderContext

Creates a same-kind render context for an auxiliary render layer.

methodclosePath(): void

Closes the active path.

methodcreateHitNode(): WebSvgRenderContext

Creates a same-kind render context configured for hit testing.

methoddrawImage
drawImage(image: unknown, x: number, y: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number, sx: number, sy: number, sWidth: number, sHeight: number): void

Draws an image at its natural size.

methodendNodeSemantics(): void

Ends the semantic scene-node boundary started by beginNodeSemantics.

methodfill(): void

Fills the active path with the current fill style.

methodfillText(text: string, x: number, y: number, maxWidth?: number): void

Draws text at the given position.

methodgetAttribute(name: string): string

Reads a host-visible attribute from the backing target.

methodgetImageData(x: number, y: number, width: number, height: number): { data: [number, number, number, number][]; height: number; width: number }

Reads raster pixels from the target.

methodgetLineWidth(): number

Returns the current stroke line width.

methodgetMaxLineWidth(): number

Returns the largest stroke width tracked for erase padding.

methodgetRasterScale(): number

Raster units represented by one host-view unit for this context.

methodgetRenderTarget(): SVGSVGElement

Returns the native backing target owned by this render context.

methodgetRoot(): SVGSVGElement

Returns the event root associated with this render context.

methodgetViewScale(): number

Returns the current logical view scale.

methodinitialize(scale?: number): void

Initializes target sizing and adapter-specific state.

methodlineTo(x: number, y: number): void

Adds a line from the current path cursor.

methodmeasureText(text: string): { fontAscent?: number; fontDescent?: number; height: number; width: number }

Measures text using the active font and returns normalized metrics.

methodmoveTo(x: number, y: number): void

Moves the active path cursor.

methodputImageData(imageData: RenderImageData, x: number, y: number): void

Writes raster pixels to the target.

methodrect(x: number, y: number, width: number, height: number): void

Adds a rectangle to the active path.

methodremoveClickEventListener(callBack: (event: EventWithOffset): void): void

Removes a click listener.

methodremoveMouseDownEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-press listener.

methodremoveMouseMoveEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-move listener.

methodremoveMouseUpEventListener(callBack: (event: EventWithOffset): void): void

Removes a pointer-release listener.

methodremoveResizeListener(): void

Removes the active resize listener, if any.

methodrequiresExplicitNodeClear(): boolean

Whether an existing node must erase its prior output before it is redrawn.

methodrequiresFrameRebuild(): boolean

Whether the target must rebuild a complete visual frame instead of reusing a pixel cache.

methodresetHitFrame(_width: number, _height: number): void

Resets the complete hit-test frame using the target's native lifecycle.

methodresetTransform(): void

Resets the current transform to the identity transform.

methodresize(width: number, height: number, scale?: number): void

Resizes the backing render target to the host view's logical size and raster scale.

methodrestore(): void

Restores the most recently saved drawing state.

methodsave(): void

Saves the current drawing state.

methodsetAttribute(name: string, value: string): void

Sets a host-visible attribute on the backing target.

methodsetFillStyle(fillStyle: RenderPaint): void

Sets the current fill style.

methodsetFont(font: string): void

Sets the active platform-neutral font descriptor.

methodsetLineDash(segments: number[]): void

Sets the current line dash pattern.

methodsetLineWidth(width: number): void

Sets the current stroke line width.

methodsetStrokeStyle(strokeStyle: RenderPaint): void

Sets the current stroke style.

methodsetTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Replaces the current transform matrix.

methodsetViewScale(scale: number): void

Logical view scale (distinct from device pixel ratio).

methodstroke(): void

Strokes the active path with the current stroke style.

methodstrokeRect(x: number, y: number, width: number, height: number): void

Strokes a rectangle without requiring a separate path.

methodsupportsDirtyRedraw(): boolean

Whether the target can apply a redraw to only its accumulated dirty regions.

methodtranslate(x: number, y: number): void

Translates the current drawing transform.

Inherited members 3

Inherited from RenderContext.

WebGL

classWebWebGLRenderContext
class WebWebGLRenderContext extends RenderContext

Native WebGL implementation of the platform-neutral RenderContext.

Geometry, images, and glyph quads are submitted directly to GPU buffers. Canvas2D is used only to measure text and rasterize glyphs into texture atlases; it never receives scene or complete-frame drawing.

Example
const context = new WebWebGLRenderContext(canvas, platform);
context.initialize(window.devicePixelRatio);
constructorWebWebGLRenderContext(renderTarget: unknown, platform?: Platform): WebWebGLRenderContext
propertyreadonly symbol: symbolstatic

DI token for the primary visible render layer.

methodaddClickEventListener(callback: (event: EventWithOffset): void): void

Attaches a click listener.

methodaddEventListener(type: string, callback: (event: EventWithOffset): void): (): void

Attaches a normalized event listener and returns an idempotent disposer.

methodaddMouseDownEventListener(callback: (event: EventWithOffset): void): void

Attaches a pointer-press listener.

methodaddMouseMoveEventListener(callback: (event: EventWithOffset): void): void

Attaches a pointer-move listener.

methodaddMouseUpEventListener(callback: (event: EventWithOffset): void): void

Attaches a pointer-release listener.

methodaddResizeListener(callback: (): void): void

Attaches a resize listener for host target size changes.

methodbeginFrame(): void

Starts a new render frame when the target rebuilds its visual state.

methodbeginPath(): void

Begins a new path.

methodclearRect(x: number, y: number, width: number, height: number): void

Clears a rectangle from the target.

methodclip(): void

Clips future drawing to the active path.

methodcloneNode(): WebWebGLRenderContext

Creates a same-kind render context for an auxiliary render layer.

methodclosePath(): void

Closes the active path.

methodcreateHitNode(): WebCanvasRenderContext

Creates a same-kind render context configured for hit testing.

methoddrawImage
drawImage(image: unknown, x: number, y: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number): void drawImage(image: unknown, x: number, y: number, width: number, height: number, sx: number, sy: number, sWidth: number, sHeight: number): void

Draws an image at its natural size.

methodfill(): void

Fills the active path with the current fill style.

methodfillText(text: string, x: number, y: number, maxWidth?: number): void

Draws text at the given position.

methodgetAttribute(name: string): string

Reads a host-visible attribute from the backing target.

methodgetImageData(x: number, y: number, width: number, height: number): RenderImageData

Reads raster pixels from the target.

methodgetLineWidth(): number

Returns the current stroke line width.

methodgetMaxLineWidth(): number

Returns the largest stroke width tracked for erase padding.

methodgetRasterScale(): number

Raster units represented by one host-view unit for this context.

methodgetRenderTarget(): HTMLCanvasElement

Returns the native backing target owned by this render context.

methodgetRoot(): HTMLCanvasElement

Returns the event root associated with this render context.

methodgetViewScale(): number

Returns the current logical view scale.

methodinitialize(scale?: number): void

Initializes target sizing and adapter-specific state.

methodlineTo(x: number, y: number): void

Adds a line from the current path cursor.

methodmeasureText(text: string): { fontAscent?: number; fontDescent?: number; fontLineGap?: number; height: number; width: number }

Measures text using the active font and returns normalized metrics.

methodmoveTo(x: number, y: number): void

Moves the active path cursor.

methodputImageData(imageData: RenderImageData, x: number, y: number): void

Writes raster pixels to the target.

methodrect(x: number, y: number, width: number, height: number): void

Adds a rectangle to the active path.

methodremoveClickEventListener(): void

Removes a click listener.

methodremoveMouseDownEventListener(): void

Removes a pointer-press listener.

methodremoveMouseMoveEventListener(): void

Removes a pointer-move listener.

methodremoveMouseUpEventListener(): void

Removes a pointer-release listener.

methodremoveResizeListener(): void

Removes the active resize listener, if any.

methodrequiresExplicitNodeClear(): boolean

Whether an existing node must erase its prior output before it is redrawn.

methodrequiresFrameRebuild(): boolean

Whether the target must rebuild a complete visual frame instead of reusing a pixel cache.

methodresetTransform(): void

Resets the current transform to the identity transform.

methodresize(width: number, height: number, scale?: number): void

Resizes the backing render target to the host view's logical size and raster scale.

methodrestore(): void

Restores the most recently saved drawing state.

methodsave(): void

Saves the current drawing state.

methodsetAttribute(name: string, value: string): void

Sets a host-visible attribute on the backing target.

methodsetFillStyle(fillStyle: RenderPaint): void

Sets the current fill style.

methodsetFont(font: string): void

Sets the active platform-neutral font descriptor.

methodsetLineDash(segments: number[]): void

Sets the current line dash pattern.

methodsetLineWidth(width: number): void

Sets the current stroke line width.

methodsetStrokeStyle(strokeStyle: RenderPaint): void

Sets the current stroke style.

methodsetTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Replaces the current transform matrix.

methodsetViewScale(scale: number): void

Logical view scale (distinct from device pixel ratio).

methodstroke(): void

Strokes the active path with the current stroke style.

methodstrokeRect(x: number, y: number, width: number, height: number): void

Strokes a rectangle without requiring a separate path.

methodsupportsDirtyRedraw(): boolean

Whether the target can apply a redraw to only its accumulated dirty regions.

methodtranslate(x: number, y: number): void

Translates the current drawing transform.

Inherited members 6

Inherited from RenderContext.

Headless rendering

Headless contexts preserve engine state and hit-test roles without producing a visible raster.

classHeadlessRenderContext
class HeadlessRenderContext extends RenderContext

Render context that preserves engine state while producing no raster output.

constructorHeadlessRenderContext(): HeadlessRenderContext
propertyreadonly symbol: symbolstatic

DI token for resolving the headless render context.

methodaddClickEventListener(_callback: (event: EventWithOffset): void): void

Attaches a click listener.

methodaddEventListener(_type: string, _callback: (event: EventWithOffset): void): (): void

Attaches a normalized event listener and returns an idempotent disposer.

methodaddMouseDownEventListener(_callback: (event: EventWithOffset): void): void

Attaches a pointer-press listener.

methodaddMouseMoveEventListener(_callback: (event: EventWithOffset): void): void

Attaches a pointer-move listener.

methodaddMouseUpEventListener(_callback: (event: EventWithOffset): void): void

Attaches a pointer-release listener.

methodaddResizeListener(_callback: (): void): void

Attaches a resize listener for host target size changes.

methodbeginPath(): void

Begins a new path.

methodclearRect(_x: number, _y: number, _width: number, _height: number): void

Clears a rectangle from the target.

methodclip(): void

Clips future drawing to the active path.

methodcloneNode(): RenderContext

Creates a same-kind render context for an auxiliary render layer.

methodclosePath(): void

Closes the active path.

methodcreateHitNode(): RenderContext

Creates a same-kind render context configured for hit testing.

methoddrawImage
drawImage(_image: unknown, _x: number, _y: number): void drawImage(_image: unknown, _x: number, _y: number, _width: number, _height: number): void drawImage(_image: unknown, _x: number, _y: number, _width: number, _height: number, _sx: number, _sy: number, _sWidth: number, _sHeight: number): void

Draws an image at its natural size.

methodfill(): void

Fills the active path with the current fill style.

methodfillText(_text: string, _x: number, _y: number, _maxWidth?: number): void

Draws text at the given position.

methodgetAttribute(name: string): string

Reads a host-visible attribute from the backing target.

methodgetImageData(_x: number, _y: number, width: number, height: number): RenderImageData

Reads raster pixels from the target.

methodgetLineWidth(): number

Returns the current stroke line width.

methodgetMaxLineWidth(): number

Returns the largest stroke width tracked for erase padding.

methodgetRasterScale(): number

Raster units represented by one host-view unit for this context.

methodgetRenderTarget(): unknown

Returns the native backing target owned by this render context.

methodgetRoot(): unknown

Returns the event root associated with this render context.

methodgetViewScale(): number

Returns the current logical view scale.

methodinitialize(scale?: number): void

Initializes target sizing and adapter-specific state.

methodlineTo(_x: number, _y: number): void

Adds a line from the current path cursor.

methodmeasureText(text: string): { height: number; width: number }

Measures text using the active font and returns normalized metrics.

methodmoveTo(_x: number, _y: number): void

Moves the active path cursor.

methodputImageData(_imageData: RenderImageData, _x: number, _y: number): void

Writes raster pixels to the target.

methodrect(_x: number, _y: number, _width: number, _height: number): void

Adds a rectangle to the active path.

methodremoveClickEventListener(_callback: (event: EventWithOffset): void): void

Removes a click listener.

methodremoveMouseDownEventListener(_callback: (event: EventWithOffset): void): void

Removes a pointer-press listener.

methodremoveMouseMoveEventListener(_callback: (event: EventWithOffset): void): void

Removes a pointer-move listener.

methodremoveMouseUpEventListener(_callback: (event: EventWithOffset): void): void

Removes a pointer-release listener.

methodremoveResizeListener(): void

Removes the active resize listener, if any.

methodresetTransform(): void

Resets the current transform to the identity transform.

methodresize(_width: number, _height: number, scale?: number): void

Resizes the backing render target to the host view's logical size and raster scale.

methodrestore(): void

Restores the most recently saved drawing state.

methodsave(): void

Saves the current drawing state.

methodsetAttribute(name: string, value: string): void

Sets a host-visible attribute on the backing target.

methodsetFillStyle(_fillStyle: RenderPaint): void

Sets the current fill style.

methodsetFont(_font: string): void

Sets the active platform-neutral font descriptor.

methodsetLineDash(_segments: number[]): void

Sets the current line dash pattern.

methodsetLineWidth(width: number): void

Sets the current stroke line width.

methodsetStrokeStyle(_strokeStyle: RenderPaint): void

Sets the current stroke style.

methodsetTransform(_a: number, _b: number, _c: number, _d: number, _e: number, _f: number): void

Replaces the current transform matrix.

methodsetViewScale(scale: number): void

Logical view scale (distinct from device pixel ratio).

methodstroke(): void

Strokes the active path with the current stroke style.

methodstrokeRect(_x: number, _y: number, _width: number, _height: number): void

Strokes a rectangle without requiring a separate path.

methodtranslate(_x: number, _y: number): void

Translates the current drawing transform.

Inherited members 10

Inherited from RenderContext.