Documentation / @ripl/3d / Context3D
Class: Context3D ​
Defined in: 3d/src/core/context.ts:174
Base 3D rendering context providing view/projection matrices, camera, lighting, and projection. Subclassed by CanvasContext3D and WebGPUContext3D.
Extends ​
DOMContext<HTMLCanvasElement,Context3DMeta>
Extended by ​
Constructors ​
Constructor ​
new Context3D(
type,target,element,options?,renderStrategy?):Context3D
Defined in: 3d/src/core/context.ts:283
Parameters ​
| Parameter | Type | Default value | Description |
|---|---|---|---|
type | string | undefined | The context type name. |
target | string | HTMLElement | undefined | The host element or selector the surface mounts into. |
element | HTMLCanvasElement | undefined | The canvas backing the surface. |
options? | Context3DOptions | undefined | Camera, lighting and base context options. |
renderStrategy? | RenderStrategy | 'cpu' | The strategy this backend renders with. Applied after the caller's meta, because it is the subclass's invariant rather than a preference: a caller-supplied renderStrategy used to be able to downgrade a GPU context to 'cpu', routing every shape into a CPU painter the backend never draws. |
Returns ​
Context3D
Overrides ​
Properties ​
| Property | Modifier | Type | Default value | Description | Inherited from | Defined in |
|---|---|---|---|---|---|---|
cameraPosition | public | Vector3 | undefined | The camera's world-space position, as last set by setCamera. | - | 3d/src/core/context.ts:185 |
currentState | protected | BaseState | undefined | - | DOMContext.currentState | core/src/context/context.ts:104 |
element | readonly | HTMLCanvasElement | undefined | The underlying DOM element the context renders into. | DOMContext.element | core/src/context/context.ts:111 |
faceBuffer | public | ProjectedFace3D[] | [] | Faces accumulated since the last flush, sorted back-to-front and drained when they are drawn (painter's algorithm). A backend that never draws them — the base class, or a GPU context — leaves this empty by clearing it at the start of each pass. | - | 3d/src/core/context.ts:191 |
far | protected | number | undefined | - | - | 3d/src/core/context.ts:195 |
fov | protected | number | undefined | - | - | 3d/src/core/context.ts:193 |
height | public | number | undefined | Current height of the rendering surface, in logical pixels — CSS pixels, unaffected by the device pixel ratio. | DOMContext.height | core/src/context/context.ts:124 |
hitTestHonorsTransform | public | boolean | false | Whether 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. | DOMContext.hitTestHonorsTransform | core/src/context/context.ts:120 |
lights | readonly | LightList | undefined | The lights illuminating the scene. | - | 3d/src/core/context.ts:183 |
meta | readonly | Context3DMeta | undefined | Arbitrary metadata attached to the context. | DOMContext.meta | core/src/context/context.ts:113 |
near | protected | number | undefined | - | - | 3d/src/core/context.ts:194 |
parent? | public | EventBus<ContextEventMap> | undefined | The parent event bus that emitted events bubble up to, if any. | DOMContext.parent | core/src/core/event-bus.ts:107 |
projectionMatrix | public | Matrix4 | undefined | The projection matrix transforming view space into clip space. | - | 3d/src/core/context.ts:179 |
renderDepth | protected | number | 0 | - | DOMContext.renderDepth | core/src/context/context.ts:105 |
renderedElements | public | RenderElement[] | undefined | Elements rendered during the current pass, used for hit testing. | DOMContext.renderedElements | core/src/context/context.ts:132 |
renderElement? | public | RenderElement | undefined | The element currently being rendered, if any. | DOMContext.renderElement | core/src/context/context.ts:130 |
root | readonly | HTMLElement | undefined | The host DOM element that the context's rendering surface is mounted into. | DOMContext.root | dom/src/context.ts:48 |
saveDepth | protected | number | 0 | - | DOMContext.saveDepth | core/src/context/context.ts:106 |
scaleX | public | Scale<number, number> | undefined | Scale mapping logical x coordinates onto this backend's surface x coordinates. Drives drawing, not a conversion seam for callers — use Context.toSurfacePoint. | DOMContext.scaleX | core/src/context/context.ts:126 |
scaleY | public | Scale<number, number> | undefined | Scale mapping logical y coordinates onto this backend's surface y coordinates. Drives drawing, not a conversion seam for callers — use Context.toSurfacePoint. | DOMContext.scaleY | core/src/context/context.ts:128 |
states | protected | BaseState[] | undefined | - | DOMContext.states | core/src/context/context.ts:103 |
type | readonly | string | undefined | The context type identifier (e.g. canvas, svg). | DOMContext.type | core/src/context/context.ts:109 |
viewMatrix | public | Matrix4 | undefined | The view matrix transforming world space into camera (view) space. | - | 3d/src/core/context.ts:177 |
viewProjectionMatrix | public | Matrix4 | undefined | The combined view-projection matrix, transforming world space directly into clip space. | - | 3d/src/core/context.ts:181 |
width | public | number | undefined | Current width of the rendering surface, in logical pixels — CSS pixels, unaffected by the device pixel ratio. | DOMContext.width | core/src/context/context.ts:122 |
defaultKey | readonly | typeof defaultKey | undefined | The key under which resources are retained when no explicit key is provided. | DOMContext.defaultKey | core/src/core/disposer.ts:11 |
Accessors ​
$events ​
Get Signature ​
get $events(): keyof
ContextEventMap[]
Defined in: core/src/context/context.ts:135
The event types a context can emit. See EventBus.$events.
Returns ​
keyof ContextEventMap[]
Inherited from ​
currentRenderElement ​
Get Signature ​
get currentRenderElement():
RenderElement|undefined
Defined in: 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: core/src/context/context.ts:157
Parameters ​
| Parameter | Type |
|---|---|
element | RenderElement | undefined |
Returns ​
void
Inherited from ​
DOMContext.currentRenderElement
direction ​
Get Signature ​
get direction():
Direction
Defined in: core/src/context/context.ts:184
Directionality used when rendering text.
Returns ​
Set Signature ​
set direction(
value):void
Defined in: core/src/context/context.ts:188
Directionality used when rendering text.
Parameters ​
| Parameter | Type |
|---|---|
value | Direction |
Returns ​
void
Directionality used when rendering text.
Inherited from ​
fill ​
Get Signature ​
get fill():
string
Defined in: 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: core/src/context/context.ts:170
Fill style (CSS color, gradient, or pattern) used to paint filled regions.
Parameters ​
| Parameter | Type |
|---|---|
value | string |
Returns ​
void
Fill style (CSS color, gradient, or pattern) used to paint filled regions.
Inherited from ​
filter ​
Get Signature ​
get filter():
string
Defined in: 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: core/src/context/context.ts:179
CSS filter string applied to subsequent drawing operations (e.g. blur(4px)).
Parameters ​
| Parameter | Type |
|---|---|
value | string |
Returns ​
void
CSS filter string applied to subsequent drawing operations (e.g. blur(4px)).
Inherited from ​
fog ​
Get Signature ​
get fog():
Fog|null
Defined in: 3d/src/core/context.ts:212
Atmospheric haze blending distant geometry towards a colour, or null for none.
Both backends resolve it identically. Assign a new object to change it — mutating the existing one in place will not repaint.
Returns ​
Fog | null
Set Signature ​
set fog(
value):void
Defined in: 3d/src/core/context.ts:216
Parameters ​
| Parameter | Type |
|---|---|
value | Fog | null |
Returns ​
void
font ​
Get Signature ​
get font():
string
Defined in: core/src/context/context.ts:193
CSS font shorthand used when rendering text.
Returns ​
string
Set Signature ​
set font(
value):void
Defined in: core/src/context/context.ts:197
CSS font shorthand used when rendering text.
Parameters ​
| Parameter | Type |
|---|---|
value | string |
Returns ​
void
CSS font shorthand used when rendering text.
Inherited from ​
fontKerning ​
Get Signature ​
get fontKerning():
FontKerning
Defined in: core/src/context/context.ts:202
Whether font kerning is applied when rendering text.
Returns ​
Set Signature ​
set fontKerning(
value):void
Defined in: core/src/context/context.ts:206
Whether font kerning is applied when rendering text.
Parameters ​
| Parameter | Type |
|---|---|
value | FontKerning |
Returns ​
void
Whether font kerning is applied when rendering text.
Inherited from ​
globalCompositeOperation ​
Get Signature ​
get globalCompositeOperation():
unknown
Defined in: 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: core/src/context/context.ts:224
Compositing operation controlling how new drawing is blended with existing content.
Parameters ​
| Parameter | Type |
|---|---|
value | unknown |
Returns ​
void
Compositing operation controlling how new drawing is blended with existing content.
Inherited from ​
DOMContext.globalCompositeOperation
lightDirection ​
Get Signature ​
get lightDirection():
Vector3
Defined in: 3d/src/core/context.ts:244
The direction of the default rig's directional light.
A convenience over reaching into lights for the single-light case. Replacing the rig through Context3DOptions.lights, or removing that light, leaves this inert — set the light's own direction instead.
Returns ​
Set Signature ​
set lightDirection(
value):void
Defined in: 3d/src/core/context.ts:248
Parameters ​
| Parameter | Type |
|---|---|
value | Vector3 |
Returns ​
void
lightMode ​
Get Signature ​
get lightMode():
LightMode
Defined in: 3d/src/core/context.ts:261
Whether the default rig's directional light is fixed in world space or follows the camera.
Inert once the default rig is replaced, exactly as lightDirection is.
Returns ​
Set Signature ​
set lightMode(
value):void
Defined in: 3d/src/core/context.ts:265
Parameters ​
| Parameter | Type |
|---|---|
value | LightMode |
Returns ​
void
lineCap ​
Get Signature ​
get lineCap():
LineCap
Defined in: core/src/context/context.ts:229
Cap style drawn at the endpoints of stroked lines.
Returns ​
Set Signature ​
set lineCap(
value):void
Defined in: core/src/context/context.ts:233
Cap style drawn at the endpoints of stroked lines.
Parameters ​
| Parameter | Type |
|---|---|
value | LineCap |
Returns ​
void
Cap style drawn at the endpoints of stroked lines.
Inherited from ​
lineDash ​
Get Signature ​
get lineDash():
number[]
Defined in: 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: core/src/context/context.ts:242
Dash pattern as alternating stroke and gap lengths; empty for a solid line.
Parameters ​
| Parameter | Type |
|---|---|
value | number[] |
Returns ​
void
Dash pattern as alternating stroke and gap lengths; empty for a solid line.
Inherited from ​
lineDashOffset ​
Get Signature ​
get lineDashOffset():
number
Defined in: 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: core/src/context/context.ts:251
Distance into the line dash pattern at which dashing begins.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Distance into the line dash pattern at which dashing begins.
Inherited from ​
lineJoin ​
Get Signature ​
get lineJoin():
LineJoin
Defined in: core/src/context/context.ts:256
Join style drawn where two stroked segments meet.
Returns ​
Set Signature ​
set lineJoin(
value):void
Defined in: core/src/context/context.ts:260
Join style drawn where two stroked segments meet.
Parameters ​
| Parameter | Type |
|---|---|
value | LineJoin |
Returns ​
void
Join style drawn where two stroked segments meet.
Inherited from ​
lineWidth ​
Get Signature ​
get lineWidth():
number
Defined in: core/src/context/context.ts:265
Width, in pixels, of stroked lines.
Returns ​
number
Set Signature ​
set lineWidth(
value):void
Defined in: core/src/context/context.ts:269
Width, in pixels, of stroked lines.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Width, in pixels, of stroked lines.
Inherited from ​
miterLimit ​
Get Signature ​
get miterLimit():
number
Defined in: 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: core/src/context/context.ts:278
Miter length limit ratio applied to miter line joins.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Miter length limit ratio applied to miter line joins.
Inherited from ​
opacity ​
Get Signature ​
get opacity():
number
Defined in: 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: core/src/context/context.ts:215
Global alpha applied to everything drawn, from 0 to 1.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Global alpha applied to everything drawn, from 0 to 1.
Inherited from ​
projectionMode ​
Get Signature ​
get projectionMode():
"perspective"|"orthographic"
Defined in: 3d/src/core/context.ts:228
The projection currently in effect, which a resize preserves.
Returns ​
"perspective" | "orthographic"
renderStrategy ​
Get Signature ​
get renderStrategy():
RenderStrategy
Defined in: 3d/src/core/context.ts:233
The active rendering strategy (cpu or gpu) for this context.
Returns ​
resolvedFog ​
Get Signature ​
get resolvedFog():
ResolvedFog|null
Defined in: 3d/src/core/context.ts:223
The resolved fog both backends shade against, or null when there is none.
Returns ​
ResolvedFog | null
rotation ​
Get Signature ​
get rotation():
Rotation
Defined in: core/src/context/context.ts:391
Rotation applied to the element's transform, as radians or a deg/rad string.
Returns ​
Set Signature ​
set rotation(
value):void
Defined in: core/src/context/context.ts:395
Rotation applied to the element's transform, as radians or a deg/rad string.
Parameters ​
| Parameter | Type |
|---|---|
value | Rotation |
Returns ​
void
Rotation applied to the element's transform, as radians or a deg/rad string.
Inherited from ​
shadowBlur ​
Get Signature ​
get shadowBlur():
number
Defined in: core/src/context/context.ts:283
Gaussian blur radius applied to drawn shadows.
Returns ​
number
Set Signature ​
set shadowBlur(
value):void
Defined in: core/src/context/context.ts:287
Gaussian blur radius applied to drawn shadows.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Gaussian blur radius applied to drawn shadows.
Inherited from ​
shadowColor ​
Get Signature ​
get shadowColor():
string
Defined in: core/src/context/context.ts:292
Color of drawn shadows.
Returns ​
string
Set Signature ​
set shadowColor(
value):void
Defined in: core/src/context/context.ts:296
Color of drawn shadows.
Parameters ​
| Parameter | Type |
|---|---|
value | string |
Returns ​
void
Color of drawn shadows.
Inherited from ​
shadowOffsetX ​
Get Signature ​
get shadowOffsetX():
number
Defined in: core/src/context/context.ts:301
Horizontal offset, in pixels, of drawn shadows.
Returns ​
number
Set Signature ​
set shadowOffsetX(
value):void
Defined in: core/src/context/context.ts:305
Horizontal offset, in pixels, of drawn shadows.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Horizontal offset, in pixels, of drawn shadows.
Inherited from ​
shadowOffsetY ​
Get Signature ​
get shadowOffsetY():
number
Defined in: core/src/context/context.ts:310
Vertical offset, in pixels, of drawn shadows.
Returns ​
number
Set Signature ​
set shadowOffsetY(
value):void
Defined in: core/src/context/context.ts:314
Vertical offset, in pixels, of drawn shadows.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Vertical offset, in pixels, of drawn shadows.
Inherited from ​
stroke ​
Get Signature ​
get stroke():
string
Defined in: 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: core/src/context/context.ts:323
Stroke style (CSS color, gradient, or pattern) used to paint outlines.
Parameters ​
| Parameter | Type |
|---|---|
value | string |
Returns ​
void
Stroke style (CSS color, gradient, or pattern) used to paint outlines.
Inherited from ​
supportsPathCaching ​
Get Signature ​
get supportsPathCaching():
boolean
Defined in: 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
Inherited from ​
DOMContext.supportsPathCaching
textAlign ​
Get Signature ​
get textAlign():
TextAlignment
Defined in: core/src/context/context.ts:328
Horizontal alignment of text relative to the drawing position.
Returns ​
Set Signature ​
set textAlign(
value):void
Defined in: core/src/context/context.ts:332
Horizontal alignment of text relative to the drawing position.
Parameters ​
| Parameter | Type |
|---|---|
value | TextAlignment |
Returns ​
void
Horizontal alignment of text relative to the drawing position.
Inherited from ​
textBaseline ​
Get Signature ​
get textBaseline():
TextBaseline
Defined in: core/src/context/context.ts:337
Vertical baseline used when positioning text.
Returns ​
Set Signature ​
set textBaseline(
value):void
Defined in: core/src/context/context.ts:341
Vertical baseline used when positioning text.
Parameters ​
| Parameter | Type |
|---|---|
value | TextBaseline |
Returns ​
void
Vertical baseline used when positioning text.
Inherited from ​
transformOriginX ​
Get Signature ​
get transformOriginX():
TransformOrigin
Defined in: core/src/context/context.ts:400
Horizontal origin about which rotation and scaling are applied.
Returns ​
Set Signature ​
set transformOriginX(
value):void
Defined in: core/src/context/context.ts:404
Horizontal origin about which rotation and scaling are applied.
Parameters ​
| Parameter | Type |
|---|---|
value | TransformOrigin |
Returns ​
void
Horizontal origin about which rotation and scaling are applied.
Inherited from ​
transformOriginY ​
Get Signature ​
get transformOriginY():
TransformOrigin
Defined in: core/src/context/context.ts:409
Vertical origin about which rotation and scaling are applied.
Returns ​
Set Signature ​
set transformOriginY(
value):void
Defined in: core/src/context/context.ts:413
Vertical origin about which rotation and scaling are applied.
Parameters ​
| Parameter | Type |
|---|---|
value | TransformOrigin |
Returns ​
void
Vertical origin about which rotation and scaling are applied.
Inherited from ​
transformScaleX ​
Get Signature ​
get transformScaleX():
number
Defined in: 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: core/src/context/context.ts:377
Horizontal scale factor applied to the element's transform.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Horizontal scale factor applied to the element's transform.
Inherited from ​
transformScaleY ​
Get Signature ​
get transformScaleY():
number
Defined in: 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: core/src/context/context.ts:386
Vertical scale factor applied to the element's transform.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Vertical scale factor applied to the element's transform.
Inherited from ​
translateX ​
Get Signature ​
get translateX():
number
Defined in: 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: core/src/context/context.ts:359
Horizontal translation, in pixels, applied to the element's transform.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Horizontal translation, in pixels, applied to the element's transform.
Inherited from ​
translateY ​
Get Signature ​
get translateY():
number
Defined in: 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: core/src/context/context.ts:368
Vertical translation, in pixels, applied to the element's transform.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Vertical translation, in pixels, applied to the element's transform.
Inherited from ​
zIndex ​
Get Signature ​
get zIndex():
number
Defined in: 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: core/src/context/context.ts:350
Stacking order used to sort elements during rendering; higher values draw on top.
Parameters ​
| Parameter | Type |
|---|---|
value | number |
Returns ​
void
Stacking order used to sort elements during rendering; higher values draw on top.
Inherited from ​
Methods ​
applyClip() ​
applyClip(
path,fillRule?):void
Defined in: core/src/context/context.ts:753
Clips subsequent drawing operations to the given path.
Parameters ​
| Parameter | Type |
|---|---|
path | ContextPath |
fillRule? | FillRule |
Returns ​
void
Inherited from ​
applyFill() ​
applyFill(
path,fillRule?):void
Defined in: core/src/context/context.ts:758
Fills the given path or text element using the current fill style.
Parameters ​
| Parameter | Type |
|---|---|
path | ContextElement |
fillRule? | FillRule |
Returns ​
void
Inherited from ​
applyGroupPaint() ​
protectedapplyGroupPaint(group):void
Defined in: 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 ​
| Parameter | Type |
|---|---|
group | Element |
Returns ​
void
Inherited from ​
applyStroke() ​
applyStroke(
path):void
Defined in: core/src/context/context.ts:763
Strokes the given path or text element using the current stroke style.
Parameters ​
| Parameter | Type |
|---|---|
path | ContextElement |
Returns ​
void
Inherited from ​
batch() ​
batch<
TResult>(body):TResult
Defined in: 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 Parameter | Default type |
|---|---|
TResult | void |
Parameters ​
| Parameter | Type |
|---|---|
body | () => TResult |
Returns ​
TResult
Inherited from ​
captureFaceState() ​
captureFaceState(
transform):ProjectedFaceState3D
Defined in: 3d/src/core/context.ts:585
Snapshots the drawing state a face must be painted with.
The CPU painter buffers faces and flushes them at the end of the frame, by which point every element restore() and popGroup() has already unwound the state the face was projected under. Capturing it here is what lets CanvasContext3D re-apply it at draw time.
Parameters ​
| Parameter | Type | Description |
|---|---|---|
transform | Matrix | null | The element's composed 2D world transform, or null for the identity. |
Returns ​
The resolved drawing state to store on each of the element's faces.
clear() ​
clear():
void
Defined in: core/src/context/context.ts:483
Clears the entire rendering surface.
Returns ​
void
Inherited from ​
createPath() ​
createPath(
id?):ContextPath
Defined in: core/src/context/context.ts:738
Creates a new path element, optionally reusing an id for SVG diffing efficiency.
Parameters ​
| Parameter | Type |
|---|---|
id? | string |
Returns ​
Inherited from ​
createText() ​
createText(
options):ContextText
Defined in: core/src/context/context.ts:743
Creates a new text element from the given options.
Parameters ​
| Parameter | Type |
|---|---|
options | TextOptions |
Returns ​
Inherited from ​
destroy() ​
destroy():
void
Defined in: dom/src/context.ts:403
Destroys the context, removing the DOM element and disposing all resources.
Returns ​
void
Inherited from ​
disableInteraction() ​
disableInteraction():
void
Defined in: dom/src/context.ts:388
Disables DOM interaction events, unwinding any hover with a final mouseleave per element.
Returns ​
void
Inherited from ​
dispose() ​
protecteddispose(key?):void
Defined in: core/src/core/disposer.ts:25
Disposes all resources under the given key, or all resources if no key is provided.
Parameters ​
| Parameter | Type |
|---|---|
key? | PropertyKey |
Returns ​
void
Inherited from ​
drawImage() ​
drawImage(
image,x,y,width?,height?):void
Defined in: core/src/context/context.ts:748
Draws an image onto the rendering surface at the given position and optional size.
Parameters ​
| Parameter | Type |
|---|---|
image | CanvasImageSource |
x | number |
y | number |
width? | number |
height? | number |
Returns ​
void
Inherited from ​
emit() ​
Call Signature ​
emit<
TEvent>(event):TEvent
Defined in: 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 Parameter | Default type |
|---|---|
TEvent extends Event<undefined> | Event<undefined> |
Parameters ​
| Parameter | Type |
|---|---|
event | TEvent |
Returns ​
TEvent
Inherited from ​
Call Signature ​
emit<
TEvent>(type,data):Event<ContextEventMap[TEvent]>
Defined in: 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 ​
| Parameter | Type |
|---|---|
type | TEvent |
data | ContextEventMap[TEvent] |
Returns ​
Event<ContextEventMap[TEvent]>
Inherited from ​
enableInteraction() ​
enableInteraction():
void
Defined in: dom/src/context.ts:344
Enables DOM interaction events (mouse enter, leave, move, down, up, click, drag) with element hit testing.
Returns ​
void
Inherited from ​
export() ​
export():
ContextExport
Defined in: 3d/src/core/context.ts:627
Exports the rendered canvas. Shared by CPU and GPU 3D contexts; call after a frame has rendered (GPU present textures are transient, so createCanvasExport snapshots immediately).
Returns ​
Overrides ​
getDefaultState() ​
protectedgetDefaultState():BaseState
Defined in: core/src/context/context.ts:446
Returns ​
Inherited from ​
getLightDirectionForRender() ​
getLightDirectionForRender():
Vector3
Defined in: 3d/src/core/context.ts:414
Returns the effective light direction for the current render, accounting for the light mode.
Both consumers dot this against a world-space normal, so 'world' is the identity and 'camera' reads lightDirection as camera-relative and carries it into world space through the inverse of the view rotation.
Returns ​
has() ​
has(
type):boolean
Defined in: 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 ​
| Parameter | Type |
|---|---|
type | keyof ContextEventMap |
Returns ​
boolean
Inherited from ​
hitTest() ​
protectedhitTest(events,x,y):RenderElement[]
Defined in: 3d/src/core/context.ts:480
Tests which rendered elements the pointer is over, ranking 3D shapes by how near their geometry is rather than by paint order.
The base class ranks by paint order, which for 2D is exactly right — the last thing painted is the thing on top. A 3D scene does not paint in element order: CanvasContext3D.flushFaces buffers the faces of every shape and depth-sorts them globally, so what you see is ordered by depth while what the base class hits is ordered by the position an element happened to take in the render stream. For an assembly of interleaved parts those two orders routinely disagree.
2D elements keep their paint order and their positions in the list, so a 2D element painted over a 3D one still wins: it flushed the face buffer, and paint order genuinely does decide there.
Parameters ​
| Parameter | Type |
|---|---|
events | string[] |
x | number |
y | number |
Returns ​
Overrides ​
init() ​
protectedinit():void
Defined in: dom/src/context.ts:85
Returns ​
void
Inherited from ​
invalidateTrackedElements() ​
invalidateTrackedElements(
event?):void
Defined in: core/src/context/context.ts:496
Clears the cached list of tracked elements for interaction, forcing a rebuild on the next hit test.
Parameters ​
| Parameter | Type |
|---|---|
event? | string |
Returns ​
void
Inherited from ​
DOMContext.invalidateTrackedElements
isPointInPath() ​
isPointInPath(
path,x,y,fillRule?):boolean
Defined in: core/src/context/context.ts:776
Tests whether a point is inside the filled region of a path.
Parameters ​
| Parameter | Type | Description |
|---|---|---|
path | ContextPath | The path to test against. |
x | number | X 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. |
y | number | Y coordinate in logical space (CSS pixels relative to the context's top-left). |
fillRule? | FillRule | The 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.
Inherited from ​
isPointInStroke() ​
isPointInStroke(
path,x,y):boolean
Defined in: core/src/context/context.ts:788
Tests whether a point is on the stroked outline of a path.
Parameters ​
| Parameter | Type | Description |
|---|---|---|
path | ContextPath | The path to test against. |
x | number | X 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. |
y | number | Y coordinate in logical space (CSS pixels relative to the context's top-left). |
Returns ​
boolean
Whether the point lies on the path's stroke.
Inherited from ​
layer() ​
layer<
TResult>(body):TResult
Defined in: core/src/context/context.ts:472
Executes a callback within a save/restore pair, returning the callback's result.
Type Parameters ​
| Type Parameter | Default type |
|---|---|
TResult | void |
Parameters ​
| Parameter | Type |
|---|---|
body | () => TResult |
Returns ​
TResult
Inherited from ​
markRenderEnd() ​
markRenderEnd():
void
Defined in: 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
Inherited from ​
markRenderStart() ​
markRenderStart():
void
Defined in: 3d/src/core/context.ts:609
Begins a render pass, emptying the frame's face buffer at the outermost depth.
Every 3D context accumulates faces, but only a backend that paints them drains the buffer — so the reset belongs here, or a context that never draws them grows it without bound.
Returns ​
void
Overrides ​
measureText() ​
measureText(
text,font?):TextMetrics
Defined in: 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 ​
| Parameter | Type |
|---|---|
text | string |
font? | string |
Returns ​
TextMetrics
Inherited from ​
off() ​
off<
TEvent>(type,handler):void
Defined in: 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 ​
| Parameter | Type |
|---|---|
type | TEvent |
handler | EventHandler<ContextEventMap[TEvent]> |
Returns ​
void
Inherited from ​
on() ​
on<
TEvent>(type,handler,options?):Disposable
Defined in: 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 ​
| Parameter | Type |
|---|---|
type | TEvent |
handler | EventHandler<ContextEventMap[TEvent]> |
options? | EventSubscriptionOptions |
Returns ​
Inherited from ​
once() ​
once<
TEvent>(type,handler,options?):Disposable
Defined in: 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 ​
| Parameter | Type |
|---|---|
type | TEvent |
handler | EventHandler<ContextEventMap[TEvent]> |
options? | EventSubscriptionOptions |
Returns ​
Inherited from ​
popGroup() ​
popGroup():
void
Defined in: 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
Inherited from ​
project() ​
project(
point):ProjectedPoint
Defined in: 3d/src/core/context.ts:571
Projects a 3D world-space point to 2D logical coordinates — CSS pixels relative to the context's top-left — plus a depth for z-ordering.
Parameters ​
| Parameter | Type |
|---|---|
point | Vector3 |
Returns ​
pushGroup() ​
pushGroup(
group):void
Defined in: 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 ​
| Parameter | Type | Description |
|---|---|---|
group | Element | The group element whose boundary is being entered. |
Returns ​
void
Inherited from ​
raycast() ​
raycast(
x,y):Ray|null
Defined in: 3d/src/core/context.ts:429
Builds the world-space ray through a point on the surface.
Parameters ​
| Parameter | Type | Description |
|---|---|---|
x | number | Screen-space x, in logical CSS pixels relative to the context's top-left. |
y | number | Screen-space y. |
Returns ​
Ray | null
The ray, or null when the view-projection matrix is singular.
raycastAll() ​
raycastAll(
root,x,y,options?):Intersection3D[]
Defined in: 3d/src/core/context.ts:446
Casts a ray through a point on the surface and returns every 3D shape it meets.
Reports the full intersection — point, face, normal and texture coordinate — where hitTest answers only which elements the pointer is over. It also ignores pointerEvents and whether a shape has any handlers, so it sees the whole scene.
Parameters ​
| Parameter | Type | Description |
|---|---|---|
root | Element | The element to search, typically the scene. |
x | number | Screen-space x, in logical CSS pixels relative to the context's top-left. |
y | number | Screen-space y. |
options? | Raycast3DOptions | Whether to accept back-facing hits. |
Returns ​
The intersections, nearest first.
requestRender() ​
requestRender():
void
Defined in: 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
Inherited from ​
rescale() ​
protectedrescale(width,height):void
Defined in: core/src/context/context.ts:436
Parameters ​
| Parameter | Type |
|---|---|
width | number |
height | number |
Returns ​
void
Inherited from ​
reset() ​
reset():
void
Defined in: 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
Inherited from ​
resolveLights() ​
resolveLights():
ResolvedLight[]
Defined in: 3d/src/core/context.ts:518
Resolves the scene's lights into the flat numeric form both backends shade against.
Cached until a light changes or the camera moves, because the CPU painter asks for it once per shape and camera-space lights depend on the view matrix.
Returns ​
The enabled lights, capped at MAX_LIGHTS.
restore() ​
restore():
void
Defined in: core/src/context/context.ts:462
Restores the most recently saved state from the stack.
Returns ​
void
Inherited from ​
retain() ​
protectedretain(value,key?):void
Defined in: core/src/core/disposer.ts:14
Registers a disposable resource under an optional key for later cleanup.
Parameters ​
| Parameter | Type | Default value |
|---|---|---|
value | Disposable | undefined |
key | PropertyKey | Disposer.defaultKey |
Returns ​
void
Inherited from ​
rotate() ​
rotate(
angle):void
Defined in: core/src/context/context.ts:634
Applies a rotation transformation.
Parameters ​
| Parameter | Type |
|---|---|
angle | number |
Returns ​
void
Inherited from ​
save() ​
save():
void
Defined in: 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
Inherited from ​
scale() ​
scale(
x,y):void
Defined in: core/src/context/context.ts:639
Applies a scale transformation.
Parameters ​
| Parameter | Type |
|---|---|
x | number |
y | number |
Returns ​
void
Inherited from ​
setCamera() ​
setCamera(
eye,target,up):void
Defined in: 3d/src/core/context.ts:367
Sets the view matrix from an eye position, look-at target, and up direction.
Parameters ​
| Parameter | Type |
|---|---|
eye | Vector3 |
target | Vector3 |
up | Vector3 |
Returns ​
void
setOrthographic() ​
setOrthographic(
left,right,bottom,top,near,far):void
Defined in: 3d/src/core/context.ts:393
Sets an orthographic projection with explicit frustum bounds.
The bounds are retained and replayed verbatim whenever the projection is rebuilt, so a resize keeps the projection orthographic. It does not re-fit the frustum to the new aspect ratio — the caller owns that, and Camera recomputes it on its next flush.
Parameters ​
| Parameter | Type |
|---|---|
left | number |
right | number |
bottom | number |
top | number |
near | number |
far | number |
Returns ​
void
setPerspective() ​
setPerspective(
fov,near,far):void
Defined in: 3d/src/core/context.ts:377
Updates the perspective projection with the given field of view, near, and far planes, replacing any orthographic projection.
Parameters ​
| Parameter | Type |
|---|---|
fov | number |
near | number |
far | number |
Returns ​
void
setTransform() ​
setTransform(
a,b,c,d,e,f):void
Defined in: 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 ​
| Parameter | Type | Description |
|---|---|---|
a | number | Horizontal scaling. |
b | number | Vertical skewing. |
c | number | Horizontal skewing. |
d | number | Vertical scaling. |
e | number | Horizontal translation, in logical pixels. |
f | number | Vertical translation, in logical pixels. |
Returns ​
void
Inherited from ​
submitMesh() ​
submitMesh(
submission):void
Defined in: 3d/src/core/context.ts:619
Submits a mesh for rendering this frame. Noop in the base class; overridden by GPU-backed contexts.
Parameters ​
| Parameter | Type |
|---|---|
submission | MeshSubmission |
Returns ​
void
toLogicalPoint() ​
toLogicalPoint(
x,y): [number,number]
Defined in: 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 ​
| Parameter | Type | Description |
|---|---|---|
x | number | X coordinate in surface space. |
y | number | Y coordinate in surface space. |
Returns ​
[number, number]
The [x, y] pair in logical space.
Inherited from ​
toSurfacePoint() ​
toSurfacePoint(
x,y): [number,number]
Defined in: 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 ​
| Parameter | Type | Description |
|---|---|---|
x | number | X coordinate in logical space. |
y | number | Y coordinate in logical space. |
Returns ​
[number, number]
The [x, y] pair in surface space.
Inherited from ​
transform() ​
transform(
a,b,c,d,e,f):void
Defined in: core/src/context/context.ts:677
Multiplies the current transformation matrix by [a, b, c, d, e, f].
Parameters ​
| Parameter | Type | Description |
|---|---|---|
a | number | Horizontal scaling. |
b | number | Vertical skewing. |
c | number | Horizontal skewing. |
d | number | Vertical scaling. |
e | number | Horizontal translation. |
f | number | Vertical translation. |
Returns ​
void
Inherited from ​
translate() ​
translate(
x,y):void
Defined in: core/src/context/context.ts:644
Applies a translation transformation.
Parameters ​
| Parameter | Type |
|---|---|
x | number |
y | number |
Returns ​
void
Inherited from ​
updateProjectionMatrix() ​
protectedupdateProjectionMatrix():void
Defined in: 3d/src/core/context.ts:346
Returns ​
void
updateViewProjectionMatrix() ​
protectedupdateViewProjectionMatrix():void
Defined in: 3d/src/core/context.ts:342
Returns ​
void