Skip to content

Documentation / @ripl/core / Context

Abstract Class: Context<TElement, TMeta> ​

Defined in: packages/core/src/context/context.ts:99

Abstract rendering context providing a unified API for Canvas and SVG, with state management and coordinate scaling.

Extends ​

Extended by ​

Type Parameters ​

Type ParameterDefault type
TElement extends ElementElement
TMeta extends Record<string, unknown>Record<string, unknown>

Implements ​

Constructors ​

Constructor ​

new Context<TElement, TMeta>(type, element, options?): Context<TElement, TMeta>

Defined in: packages/core/src/context/context.ts:417

Parameters ​

ParameterType
typestring
elementTElement
options?ContextOptions<TMeta>

Returns ​

Context<TElement, TMeta>

Overrides ​

EventBus.constructor

Properties ​

PropertyModifierTypeDefault valueDescriptionInherited fromDefined in
currentStateprotectedBaseStateundefined--packages/core/src/context/context.ts:104
elementreadonlyTElementundefinedThe underlying DOM element the context renders into.-packages/core/src/context/context.ts:111
heightpublicnumberundefinedCurrent height of the rendering surface, in logical pixels — CSS pixels, unaffected by the device pixel ratio.-packages/core/src/context/context.ts:124
hitTestHonorsTransformpublicbooleanfalseWhether this context's hit testing natively accounts for element and ancestor group transforms (as SVG does, via the DOM). When false (e.g. canvas), callers map the hit point into the element's local space before testing. See Element.getWorldTransform.-packages/core/src/context/context.ts:120
metareadonlyTMetaundefinedArbitrary metadata attached to the context.-packages/core/src/context/context.ts:113
parent?publicEventBus<ContextEventMap>undefinedThe parent event bus that emitted events bubble up to, if any.EventBus.parentpackages/core/src/core/event-bus.ts:107
renderDepthprotectednumber0--packages/core/src/context/context.ts:105
renderedElementspublicRenderElement[]undefinedElements rendered during the current pass, used for hit testing.-packages/core/src/context/context.ts:132
renderElement?publicRenderElementundefinedThe element currently being rendered, if any.-packages/core/src/context/context.ts:130
saveDepthprotectednumber0--packages/core/src/context/context.ts:106
scaleXpublicScale<number, number>undefinedScale mapping logical x coordinates onto this backend's surface x coordinates. Drives drawing, not a conversion seam for callers — use Context.toSurfacePoint.-packages/core/src/context/context.ts:126
scaleYpublicScale<number, number>undefinedScale mapping logical y coordinates onto this backend's surface y coordinates. Drives drawing, not a conversion seam for callers — use Context.toSurfacePoint.-packages/core/src/context/context.ts:128
statesprotectedBaseState[]undefined--packages/core/src/context/context.ts:103
typereadonlystringundefinedThe context type identifier (e.g. canvas, svg).-packages/core/src/context/context.ts:109
widthpublicnumberundefinedCurrent width of the rendering surface, in logical pixels — CSS pixels, unaffected by the device pixel ratio.-packages/core/src/context/context.ts:122
defaultKeyreadonlytypeof defaultKeyundefinedThe key under which resources are retained when no explicit key is provided.EventBus.defaultKeypackages/core/src/core/disposer.ts:11

Accessors ​

$events ​

Get Signature ​

get $events(): keyof ContextEventMap[]

Defined in: packages/core/src/context/context.ts:135

The event types a context can emit. See EventBus.$events.

Returns ​

keyof ContextEventMap[]

Overrides ​

EventBus.$events


currentRenderElement ​

Get Signature ​

get currentRenderElement(): RenderElement | undefined

Defined in: packages/core/src/context/context.ts:153

The element currently being rendered; setting a non-abstract element also records it in Context.renderedElements.

Returns ​

RenderElement | undefined

Set Signature ​

set currentRenderElement(element): void

Defined in: packages/core/src/context/context.ts:157

Parameters ​
ParameterType
elementRenderElement | undefined
Returns ​

void


direction ​

Get Signature ​

get direction(): Direction

Defined in: packages/core/src/context/context.ts:184

Directionality used when rendering text.

Returns ​

Direction

Set Signature ​

set direction(value): void

Defined in: packages/core/src/context/context.ts:188

Directionality used when rendering text.

Parameters ​
ParameterType
valueDirection
Returns ​

void

Directionality used when rendering text.

Implementation of ​

BaseState.direction


fill ​

Get Signature ​

get fill(): string

Defined in: packages/core/src/context/context.ts:166

Fill style (CSS color, gradient, or pattern) used to paint filled regions.

Returns ​

string

Set Signature ​

set fill(value): void

Defined in: packages/core/src/context/context.ts:170

Fill style (CSS color, gradient, or pattern) used to paint filled regions.

Parameters ​
ParameterType
valuestring
Returns ​

void

Fill style (CSS color, gradient, or pattern) used to paint filled regions.

Implementation of ​

BaseState.fill


filter ​

Get Signature ​

get filter(): string

Defined in: packages/core/src/context/context.ts:175

CSS filter string applied to subsequent drawing operations (e.g. blur(4px)).

Returns ​

string

Set Signature ​

set filter(value): void

Defined in: packages/core/src/context/context.ts:179

CSS filter string applied to subsequent drawing operations (e.g. blur(4px)).

Parameters ​
ParameterType
valuestring
Returns ​

void

CSS filter string applied to subsequent drawing operations (e.g. blur(4px)).

Implementation of ​

BaseState.filter


font ​

Get Signature ​

get font(): string

Defined in: packages/core/src/context/context.ts:193

CSS font shorthand used when rendering text.

Returns ​

string

Set Signature ​

set font(value): void

Defined in: packages/core/src/context/context.ts:197

CSS font shorthand used when rendering text.

Parameters ​
ParameterType
valuestring
Returns ​

void

CSS font shorthand used when rendering text.

Implementation of ​

BaseState.font


fontKerning ​

Get Signature ​

get fontKerning(): FontKerning

Defined in: packages/core/src/context/context.ts:202

Whether font kerning is applied when rendering text.

Returns ​

FontKerning

Set Signature ​

set fontKerning(value): void

Defined in: packages/core/src/context/context.ts:206

Whether font kerning is applied when rendering text.

Parameters ​
ParameterType
valueFontKerning
Returns ​

void

Whether font kerning is applied when rendering text.

Implementation of ​

BaseState.fontKerning


globalCompositeOperation ​

Get Signature ​

get globalCompositeOperation(): unknown

Defined in: packages/core/src/context/context.ts:220

Compositing operation controlling how new drawing is blended with existing content.

Returns ​

unknown

Set Signature ​

set globalCompositeOperation(value): void

Defined in: packages/core/src/context/context.ts:224

Compositing operation controlling how new drawing is blended with existing content.

Parameters ​
ParameterType
valueunknown
Returns ​

void

Compositing operation controlling how new drawing is blended with existing content.

Implementation of ​

BaseState.globalCompositeOperation


lineCap ​

Get Signature ​

get lineCap(): LineCap

Defined in: packages/core/src/context/context.ts:229

Cap style drawn at the endpoints of stroked lines.

Returns ​

LineCap

Set Signature ​

set lineCap(value): void

Defined in: packages/core/src/context/context.ts:233

Cap style drawn at the endpoints of stroked lines.

Parameters ​
ParameterType
valueLineCap
Returns ​

void

Cap style drawn at the endpoints of stroked lines.

Implementation of ​

BaseState.lineCap


lineDash ​

Get Signature ​

get lineDash(): number[]

Defined in: packages/core/src/context/context.ts:238

Dash pattern as alternating stroke and gap lengths; empty for a solid line.

Returns ​

number[]

Set Signature ​

set lineDash(value): void

Defined in: packages/core/src/context/context.ts:242

Dash pattern as alternating stroke and gap lengths; empty for a solid line.

Parameters ​
ParameterType
valuenumber[]
Returns ​

void

Dash pattern as alternating stroke and gap lengths; empty for a solid line.

Implementation of ​

BaseState.lineDash


lineDashOffset ​

Get Signature ​

get lineDashOffset(): number

Defined in: packages/core/src/context/context.ts:247

Distance into the line dash pattern at which dashing begins.

Returns ​

number

Set Signature ​

set lineDashOffset(value): void

Defined in: packages/core/src/context/context.ts:251

Distance into the line dash pattern at which dashing begins.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Distance into the line dash pattern at which dashing begins.

Implementation of ​

BaseState.lineDashOffset


lineJoin ​

Get Signature ​

get lineJoin(): LineJoin

Defined in: packages/core/src/context/context.ts:256

Join style drawn where two stroked segments meet.

Returns ​

LineJoin

Set Signature ​

set lineJoin(value): void

Defined in: packages/core/src/context/context.ts:260

Join style drawn where two stroked segments meet.

Parameters ​
ParameterType
valueLineJoin
Returns ​

void

Join style drawn where two stroked segments meet.

Implementation of ​

BaseState.lineJoin


lineWidth ​

Get Signature ​

get lineWidth(): number

Defined in: packages/core/src/context/context.ts:265

Width, in pixels, of stroked lines.

Returns ​

number

Set Signature ​

set lineWidth(value): void

Defined in: packages/core/src/context/context.ts:269

Width, in pixels, of stroked lines.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Width, in pixels, of stroked lines.

Implementation of ​

BaseState.lineWidth


miterLimit ​

Get Signature ​

get miterLimit(): number

Defined in: packages/core/src/context/context.ts:274

Miter length limit ratio applied to miter line joins.

Returns ​

number

Set Signature ​

set miterLimit(value): void

Defined in: packages/core/src/context/context.ts:278

Miter length limit ratio applied to miter line joins.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Miter length limit ratio applied to miter line joins.

Implementation of ​

BaseState.miterLimit


opacity ​

Get Signature ​

get opacity(): number

Defined in: packages/core/src/context/context.ts:211

Global alpha applied to everything drawn, from 0 to 1. Assignment replaces the current alpha; element and group opacity instead composite multiplicatively through CONTEXT_OPERATIONS.

Returns ​

number

Set Signature ​

set opacity(value): void

Defined in: packages/core/src/context/context.ts:215

Global alpha applied to everything drawn, from 0 to 1.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Global alpha applied to everything drawn, from 0 to 1.

Implementation of ​

BaseState.opacity


rotation ​

Get Signature ​

get rotation(): Rotation

Defined in: packages/core/src/context/context.ts:391

Rotation applied to the element's transform, as radians or a deg/rad string.

Returns ​

Rotation

Set Signature ​

set rotation(value): void

Defined in: packages/core/src/context/context.ts:395

Rotation applied to the element's transform, as radians or a deg/rad string.

Parameters ​
ParameterType
valueRotation
Returns ​

void

Rotation applied to the element's transform, as radians or a deg/rad string.

Implementation of ​

BaseState.rotation


shadowBlur ​

Get Signature ​

get shadowBlur(): number

Defined in: packages/core/src/context/context.ts:283

Gaussian blur radius applied to drawn shadows.

Returns ​

number

Set Signature ​

set shadowBlur(value): void

Defined in: packages/core/src/context/context.ts:287

Gaussian blur radius applied to drawn shadows.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Gaussian blur radius applied to drawn shadows.

Implementation of ​

BaseState.shadowBlur


shadowColor ​

Get Signature ​

get shadowColor(): string

Defined in: packages/core/src/context/context.ts:292

Color of drawn shadows.

Returns ​

string

Set Signature ​

set shadowColor(value): void

Defined in: packages/core/src/context/context.ts:296

Color of drawn shadows.

Parameters ​
ParameterType
valuestring
Returns ​

void

Color of drawn shadows.

Implementation of ​

BaseState.shadowColor


shadowOffsetX ​

Get Signature ​

get shadowOffsetX(): number

Defined in: packages/core/src/context/context.ts:301

Horizontal offset, in pixels, of drawn shadows.

Returns ​

number

Set Signature ​

set shadowOffsetX(value): void

Defined in: packages/core/src/context/context.ts:305

Horizontal offset, in pixels, of drawn shadows.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Horizontal offset, in pixels, of drawn shadows.

Implementation of ​

BaseState.shadowOffsetX


shadowOffsetY ​

Get Signature ​

get shadowOffsetY(): number

Defined in: packages/core/src/context/context.ts:310

Vertical offset, in pixels, of drawn shadows.

Returns ​

number

Set Signature ​

set shadowOffsetY(value): void

Defined in: packages/core/src/context/context.ts:314

Vertical offset, in pixels, of drawn shadows.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Vertical offset, in pixels, of drawn shadows.

Implementation of ​

BaseState.shadowOffsetY


stroke ​

Get Signature ​

get stroke(): string

Defined in: packages/core/src/context/context.ts:319

Stroke style (CSS color, gradient, or pattern) used to paint outlines.

Returns ​

string

Set Signature ​

set stroke(value): void

Defined in: packages/core/src/context/context.ts:323

Stroke style (CSS color, gradient, or pattern) used to paint outlines.

Parameters ​
ParameterType
valuestring
Returns ​

void

Stroke style (CSS color, gradient, or pattern) used to paint outlines.

Implementation of ​

BaseState.stroke


supportsPathCaching ​

Get Signature ​

get supportsPathCaching(): boolean

Defined in: packages/core/src/context/context.ts:733

Whether cached ContextPaths may be safely reused across render cycles. false by default; backends whose Context.createPath is free of per-frame side effects (e.g. canvas) override this to true. SVG, for example, returns false because createPath registers the path into a per-frame virtual DOM tree.

Returns ​

boolean


textAlign ​

Get Signature ​

get textAlign(): TextAlignment

Defined in: packages/core/src/context/context.ts:328

Horizontal alignment of text relative to the drawing position.

Returns ​

TextAlignment

Set Signature ​

set textAlign(value): void

Defined in: packages/core/src/context/context.ts:332

Horizontal alignment of text relative to the drawing position.

Parameters ​
ParameterType
valueTextAlignment
Returns ​

void

Horizontal alignment of text relative to the drawing position.

Implementation of ​

BaseState.textAlign


textBaseline ​

Get Signature ​

get textBaseline(): TextBaseline

Defined in: packages/core/src/context/context.ts:337

Vertical baseline used when positioning text.

Returns ​

TextBaseline

Set Signature ​

set textBaseline(value): void

Defined in: packages/core/src/context/context.ts:341

Vertical baseline used when positioning text.

Parameters ​
ParameterType
valueTextBaseline
Returns ​

void

Vertical baseline used when positioning text.

Implementation of ​

BaseState.textBaseline


transformOriginX ​

Get Signature ​

get transformOriginX(): TransformOrigin

Defined in: packages/core/src/context/context.ts:400

Horizontal origin about which rotation and scaling are applied.

Returns ​

TransformOrigin

Set Signature ​

set transformOriginX(value): void

Defined in: packages/core/src/context/context.ts:404

Horizontal origin about which rotation and scaling are applied.

Parameters ​
ParameterType
valueTransformOrigin
Returns ​

void

Horizontal origin about which rotation and scaling are applied.

Implementation of ​

BaseState.transformOriginX


transformOriginY ​

Get Signature ​

get transformOriginY(): TransformOrigin

Defined in: packages/core/src/context/context.ts:409

Vertical origin about which rotation and scaling are applied.

Returns ​

TransformOrigin

Set Signature ​

set transformOriginY(value): void

Defined in: packages/core/src/context/context.ts:413

Vertical origin about which rotation and scaling are applied.

Parameters ​
ParameterType
valueTransformOrigin
Returns ​

void

Vertical origin about which rotation and scaling are applied.

Implementation of ​

BaseState.transformOriginY


transformScaleX ​

Get Signature ​

get transformScaleX(): number

Defined in: packages/core/src/context/context.ts:373

Horizontal scale factor applied to the element's transform.

Returns ​

number

Set Signature ​

set transformScaleX(value): void

Defined in: packages/core/src/context/context.ts:377

Horizontal scale factor applied to the element's transform.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Horizontal scale factor applied to the element's transform.

Implementation of ​

BaseState.transformScaleX


transformScaleY ​

Get Signature ​

get transformScaleY(): number

Defined in: packages/core/src/context/context.ts:382

Vertical scale factor applied to the element's transform.

Returns ​

number

Set Signature ​

set transformScaleY(value): void

Defined in: packages/core/src/context/context.ts:386

Vertical scale factor applied to the element's transform.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Vertical scale factor applied to the element's transform.

Implementation of ​

BaseState.transformScaleY


translateX ​

Get Signature ​

get translateX(): number

Defined in: packages/core/src/context/context.ts:355

Horizontal translation, in pixels, applied to the element's transform.

Returns ​

number

Set Signature ​

set translateX(value): void

Defined in: packages/core/src/context/context.ts:359

Horizontal translation, in pixels, applied to the element's transform.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Horizontal translation, in pixels, applied to the element's transform.

Implementation of ​

BaseState.translateX


translateY ​

Get Signature ​

get translateY(): number

Defined in: packages/core/src/context/context.ts:364

Vertical translation, in pixels, applied to the element's transform.

Returns ​

number

Set Signature ​

set translateY(value): void

Defined in: packages/core/src/context/context.ts:368

Vertical translation, in pixels, applied to the element's transform.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Vertical translation, in pixels, applied to the element's transform.

Implementation of ​

BaseState.translateY


zIndex ​

Get Signature ​

get zIndex(): number

Defined in: packages/core/src/context/context.ts:346

Stacking order used to sort elements during rendering; higher values draw on top.

Returns ​

number

Set Signature ​

set zIndex(value): void

Defined in: packages/core/src/context/context.ts:350

Stacking order used to sort elements during rendering; higher values draw on top.

Parameters ​
ParameterType
valuenumber
Returns ​

void

Stacking order used to sort elements during rendering; higher values draw on top.

Implementation of ​

BaseState.zIndex

Methods ​

applyClip() ​

applyClip(path, fillRule?): void

Defined in: packages/core/src/context/context.ts:753

Clips subsequent drawing operations to the given path.

Parameters ​

ParameterType
pathContextPath
fillRule?FillRule

Returns ​

void


applyFill() ​

applyFill(path, fillRule?): void

Defined in: packages/core/src/context/context.ts:758

Fills the given path or text element using the current fill style.

Parameters ​

ParameterType
pathContextElement
fillRule?FillRule

Returns ​

void


applyGroupPaint() ​

protected applyGroupPaint(group): void

Defined in: packages/core/src/context/context.ts:603

Applies a group's own inherited paint (fill, stroke, opacity, font, line, shadow, text) to the context so descendants pick it up from the copied state. Transforms are applied separately, so they are skipped here.

Two boundary semantics are fixed here and every backend must honour them:

  • Opacity composites multiplicatively. CONTEXT_OPERATIONS multiplies rather than assigns, so nested groups compound and a leaf's own alpha stacks under its ancestors' instead of replacing it.
  • A group's gradient or pattern resolves against the group's own box. The group is the Context.currentRenderElement for the duration of the boundary, so a paint that bakes geometry at set time (canvas) and one that resolves it per leaf (SVG) agree on the same reference box: group.getBoundingBox(true), never a sibling's and never the surface.

Parameters ​

ParameterType
groupElement

Returns ​

void


applyStroke() ​

applyStroke(path): void

Defined in: packages/core/src/context/context.ts:763

Strokes the given path or text element using the current stroke style.

Parameters ​

ParameterType
pathContextElement

Returns ​

void


batch() ​

batch<TResult>(body): TResult

Defined in: packages/core/src/context/context.ts:534

Clears the rendering surface and brackets the callback in markRenderStart/markRenderEnd, returning the callback's result. On exit the state stack is unwound to the depth captured on entry, giving the scene root the same guarantee Context.popGroup gives a group: a root-level clip: true shape deliberately skips its own restore() so the clip persists to later siblings, and with no enclosing group to absorb it that save would otherwise leak one state per frame, unbounded.

The surface is only cleared at render depth 0: a pass entered while an outer one is open continues it (matching Context.markRenderStart) rather than wiping what it drew.

Type Parameters ​

Type ParameterDefault type
TResultvoid

Parameters ​

ParameterType
body() => TResult

Returns ​

TResult


clear() ​

clear(): void

Defined in: packages/core/src/context/context.ts:483

Clears the entire rendering surface.

Returns ​

void


createPath() ​

createPath(id?): ContextPath

Defined in: packages/core/src/context/context.ts:738

Creates a new path element, optionally reusing an id for SVG diffing efficiency.

Parameters ​

ParameterType
id?string

Returns ​

ContextPath


createText() ​

createText(options): ContextText

Defined in: packages/core/src/context/context.ts:743

Creates a new text element from the given options.

Parameters ​

ParameterType
optionsTextOptions

Returns ​

ContextText


destroy() ​

destroy(): void

Defined in: packages/core/src/context/context.ts:837

Destroys the context and disposes all resources, releasing the element graph it retains for hit testing.

Returns ​

void

Overrides ​

EventBus.destroy


dispose() ​

protected dispose(key?): void

Defined in: packages/core/src/core/disposer.ts:25

Disposes all resources under the given key, or all resources if no key is provided.

Parameters ​

ParameterType
key?PropertyKey

Returns ​

void

Inherited from ​

EventBus.dispose


drawImage() ​

drawImage(image, x, y, width?, height?): void

Defined in: packages/core/src/context/context.ts:748

Draws an image onto the rendering surface at the given position and optional size.

Parameters ​

ParameterType
imageCanvasImageSource
xnumber
ynumber
width?number
height?number

Returns ​

void


emit() ​

Call Signature ​

emit<TEvent>(event): TEvent

Defined in: packages/core/src/core/event-bus.ts:185

Emits an event, invoking all matching handlers and bubbling to the parent if applicable. Handlers for the event's own type run first, then EVENT_WILDCARD subscriptions.

Type Parameters ​
Type ParameterDefault type
TEvent extends Event<undefined>Event<undefined>
Parameters ​
ParameterType
eventTEvent
Returns ​

TEvent

Inherited from ​

EventBus.emit

Call Signature ​

emit<TEvent>(type, data): Event<ContextEventMap[TEvent]>

Defined in: packages/core/src/core/event-bus.ts:186

Emits an event, invoking all matching handlers and bubbling to the parent if applicable. Handlers for the event's own type run first, then EVENT_WILDCARD subscriptions.

Type Parameters ​
Type Parameter
TEvent extends keyof ContextEventMap
Parameters ​
ParameterType
typeTEvent
dataContextEventMap[TEvent]
Returns ​

Event<ContextEventMap[TEvent]>

Inherited from ​

EventBus.emit


export() ​

export(): ContextExport

Defined in: packages/core/src/context/context.ts:832

Captures a snapshot of the current context surface and returns format-specific exporters (see ContextExport). The base implementation is unsupported; each context overrides this with the formats relevant to it (image, url, string).

Returns ​

ContextExport


getDefaultState() ​

protected getDefaultState(): BaseState

Defined in: packages/core/src/context/context.ts:446

Returns ​

BaseState


has() ​

has(type): boolean

Defined in: packages/core/src/core/event-bus.ts:123

Returns whether there are any listeners registered for the given event type. Wildcard subscriptions (EVENT_WILDCARD) are not listeners for any concrete type, so a bus observed only through the wildcard still reports false here.

Parameters ​

ParameterType
typekeyof ContextEventMap

Returns ​

boolean

Inherited from ​

EventBus.has


hitTest() ​

protected hitTest(events, x, y): RenderElement[]

Defined in: packages/core/src/context/context.ts:808

Tests which rendered elements intersect the given point for the given event types, returning them topmost-first — the exact reverse of the order they were painted in.

The point is in logical space — the space pointer event payloads report — so a handler passes the coordinates it was given straight through.

Paint order is the sole key. Context.renderedElements already records the resolved stacking order (groups paint as contiguous stacking contexts), whereas RenderElement.zIndex is additive across the parent chain and so says nothing about two descendants of different groups; sorting by it discarded correct information.

Parameters ​

ParameterType
eventsstring[]
xnumber
ynumber

Returns ​

RenderElement[]


invalidateTrackedElements() ​

invalidateTrackedElements(event?): void

Defined in: packages/core/src/context/context.ts:496

Clears the cached list of tracked elements for interaction, forcing a rebuild on the next hit test.

Parameters ​

ParameterType
event?string

Returns ​

void


isPointInPath() ​

isPointInPath(path, x, y, fillRule?): boolean

Defined in: packages/core/src/context/context.ts:776

Tests whether a point is inside the filled region of a path.

Parameters ​

ParameterTypeDescription
pathContextPathThe path to test against.
xnumberX coordinate in logical space (CSS pixels relative to the context's top-left); a backend whose native test wants its own drawing coordinates converts internally.
ynumberY coordinate in logical space (CSS pixels relative to the context's top-left).
fillRule?FillRuleThe fill rule determining what counts as inside. Defaults to the backend's own default.

Returns ​

boolean

Whether the point lies inside the path's fill.


isPointInStroke() ​

isPointInStroke(path, x, y): boolean

Defined in: packages/core/src/context/context.ts:788

Tests whether a point is on the stroked outline of a path.

Parameters ​

ParameterTypeDescription
pathContextPathThe path to test against.
xnumberX coordinate in logical space (CSS pixels relative to the context's top-left); a backend whose native test wants its own drawing coordinates converts internally.
ynumberY coordinate in logical space (CSS pixels relative to the context's top-left).

Returns ​

boolean

Whether the point lies on the path's stroke.


layer() ​

layer<TResult>(body): TResult

Defined in: packages/core/src/context/context.ts:472

Executes a callback within a save/restore pair, returning the callback's result.

Type Parameters ​

Type ParameterDefault type
TResultvoid

Parameters ​

ParameterType
body() => TResult

Returns ​

TResult


markRenderEnd() ​

markRenderEnd(): void

Defined in: packages/core/src/context/context.ts:519

Signals the end of a render pass. Clamped at zero, so an unbalanced call cannot drive the depth negative and make backends that gate their flush on depth 0 fire mid-frame.

Returns ​

void


markRenderStart() ​

markRenderStart(): void

Defined in: packages/core/src/context/context.ts:510

Signals the start of a render pass; resets the rendered-elements list at depth 0.

Returns ​

void


measureText() ​

measureText(text, font?): TextMetrics

Defined in: packages/core/src/context/context.ts:719

Measures text dimensions using the context's current font, text alignment, and baseline, or an optional font override. actualBoundingBox* is anchor-relative, so the alignment and baseline have to be forwarded or the reported box is anchored at the wrong corner.

Parameters ​

ParameterType
textstring
font?string

Returns ​

TextMetrics


off() ​

off<TEvent>(type, handler): void

Defined in: packages/core/src/core/event-bus.ts:144

Removes a previously registered handler for the given event type.

Type Parameters ​

Type Parameter
TEvent extends keyof ContextEventMap

Parameters ​

ParameterType
typeTEvent
handlerEventHandler<ContextEventMap[TEvent]>

Returns ​

void

Inherited from ​

EventBus.off


on() ​

on<TEvent>(type, handler, options?): Disposable

Defined in: packages/core/src/core/event-bus.ts:131

Subscribes a handler to the given event type and returns a disposable for cleanup. Pass EVENT_WILDCARD to receive every event emitted on the bus regardless of type.

Type Parameters ​

Type Parameter
TEvent extends keyof ContextEventMap

Parameters ​

ParameterType
typeTEvent
handlerEventHandler<ContextEventMap[TEvent]>
options?EventSubscriptionOptions

Returns ​

Disposable

Inherited from ​

EventBus.on


once() ​

once<TEvent>(type, handler, options?): Disposable

Defined in: packages/core/src/core/event-bus.ts:159

Subscribes a handler that is automatically removed after it fires once.

Type Parameters ​

Type Parameter
TEvent extends keyof ContextEventMap

Parameters ​

ParameterType
typeTEvent
handlerEventHandler<ContextEventMap[TEvent]>
options?EventSubscriptionOptions

Returns ​

Disposable

Inherited from ​

EventBus.once


popGroup() ​

popGroup(): void

Defined in: packages/core/src/context/context.ts:620

Closes the most recently opened group boundary, unwinding the state stack back to the depth captured at Context.pushGroup and restoring the render element that was current before it. This absorbs any dangling save() left by a group-scoped clip (which deliberately skips its own restore so the clip persists to later siblings), confining the clip to the group rather than leaking it to the scene.

Returns ​

void


pushGroup() ​

pushGroup(group): void

Defined in: packages/core/src/context/context.ts:573

Opens a group boundary: saves the current drawing state and applies the group's own transform and inherited paint (see applyGroupPaint for the opacity and gradient-bounds semantics every backend must honour), so that descendant elements render within the group's coordinate system, inherit its paint through the copied state (the render-tree cascade), and composite under its opacity. Any group-scoped clip is confined to the group. Every Context.pushGroup must be balanced by a matching Context.popGroup. Backends that render hierarchy structurally (such as SVG) override this to nest descendants under a group node.

Parameters ​

ParameterTypeDescription
groupElementThe group element whose boundary is being entered.

Returns ​

void


requestRender() ​

requestRender(): void

Defined in: packages/core/src/context/context.ts:505

Requests that the bound scene repaint on the next frame, for context-level changes (e.g. a 3D camera move) that mutate no element and so would otherwise be skipped by the renderer's dirty check.

Returns ​

void


rescale() ​

protected rescale(width, height): void

Defined in: packages/core/src/context/context.ts:436

Parameters ​

ParameterType
widthnumber
heightnumber

Returns ​

void


reset() ​

reset(): void

Defined in: packages/core/src/context/context.ts:488

Resets the context to its initial state: drops the saved-state stack, restores the default drawing state, and closes any open group boundary.

Returns ​

void


restore() ​

restore(): void

Defined in: packages/core/src/context/context.ts:462

Restores the most recently saved state from the stack.

Returns ​

void


retain() ​

protected retain(value, key?): void

Defined in: packages/core/src/core/disposer.ts:14

Registers a disposable resource under an optional key for later cleanup.

Parameters ​

ParameterTypeDefault value
valueDisposableundefined
keyPropertyKeyDisposer.defaultKey

Returns ​

void

Inherited from ​

EventBus.retain


rotate() ​

rotate(angle): void

Defined in: packages/core/src/context/context.ts:634

Applies a rotation transformation.

Parameters ​

ParameterType
anglenumber

Returns ​

void


save() ​

save(): void

Defined in: packages/core/src/context/context.ts:455

Pushes the current state onto the stack and continues with a copy of it, so nested scopes inherit the enclosing drawing state (matching native canvas). This is what lets a group's paint, applied once at its boundary via Context.pushGroup, cascade to descendants.

Returns ​

void


scale() ​

scale(x, y): void

Defined in: packages/core/src/context/context.ts:639

Applies a scale transformation.

Parameters ​

ParameterType
xnumber
ynumber

Returns ​

void


setTransform() ​

setTransform(a, b, c, d, e, f): void

Defined in: packages/core/src/context/context.ts:663

Replaces the current transformation matrix with [a, b, c, d, e, f].

The matrix is in logical space, so the identity (1, 0, 0, 1, 0, 0) restores the context's own baseline rather than the backend's — on canvas that baseline is the device pixel ratio, which the backend composes back underneath. Translations are therefore in CSS pixels.

Parameters ​

ParameterTypeDescription
anumberHorizontal scaling.
bnumberVertical skewing.
cnumberHorizontal skewing.
dnumberVertical scaling.
enumberHorizontal translation, in logical pixels.
fnumberVertical translation, in logical pixels.

Returns ​

void


toLogicalPoint() ​

toLogicalPoint(x, y): [number, number]

Defined in: packages/core/src/context/context.ts:697

Maps a point from surface space — this backend's own drawing coordinates, as produced by Context.scaleX and Context.scaleY — into the logical space elements are authored in and every public coordinate is expressed in.

Backends disagree on what surface space is: canvas maps logical coordinates onto device pixels while SVG leaves them identity, so a backend has to invert what this context actually does rather than assume the device pixel ratio.

This is a seam for backend implementors, not for consumers — nothing crossing the public API is in surface space, so a caller holding a pointer coordinate already has a logical one.

Parameters ​

ParameterTypeDescription
xnumberX coordinate in surface space.
ynumberY coordinate in surface space.

Returns ​

[number, number]

The [x, y] pair in logical space.


toSurfacePoint() ​

toSurfacePoint(x, y): [number, number]

Defined in: packages/core/src/context/context.ts:710

Maps a point from the logical space elements are authored in into this backend's own drawing coordinates. The inverse of Context.toLogicalPoint, and likewise a seam for backend implementors rather than consumers.

Parameters ​

ParameterTypeDescription
xnumberX coordinate in logical space.
ynumberY coordinate in logical space.

Returns ​

[number, number]

The [x, y] pair in surface space.


transform() ​

transform(a, b, c, d, e, f): void

Defined in: packages/core/src/context/context.ts:677

Multiplies the current transformation matrix by [a, b, c, d, e, f].

Parameters ​

ParameterTypeDescription
anumberHorizontal scaling.
bnumberVertical skewing.
cnumberHorizontal skewing.
dnumberVertical scaling.
enumberHorizontal translation.
fnumberVertical translation.

Returns ​

void


translate() ​

translate(x, y): void

Defined in: packages/core/src/context/context.ts:644

Applies a translation transformation.

Parameters ​

ParameterType
xnumber
ynumber

Returns ​

void