Skip to main content

Class: abstract GenericViewport<TViewState, TDataPresentation, TContext>

Generic GenericViewport controller.

The base class owns only shared viewport state and binding orchestration: loaded logical data, mounted renderings, view state, and per-dataset render-state forwarding. It does not know how CPU, VTK, DOM, image, volume, or media runtimes work internally.

Concrete viewport families are expected to stay thin and provide:

  • a render context for their render paths
  • a data provider
  • a render path resolver when the default is not enough
  • viewport-family-specific public APIs

Concrete render paths are expected to own:

  • runtime add/remove lifecycle
  • view-state interpretation for that render path
  • per-dataset render-state application
  • render-path-specific coordinate transforms

This split keeps migration from legacy viewports incremental without centralizing render-mode-specific behavior in the controller.

Extended by​

Type Parameters​

• TViewState extends object

• TDataPresentation = unknown

• TContext extends BaseViewportRenderContext = BaseViewportRenderContext

Implements​

  • ViewportController<TViewState, TDataPresentation>

Constructors​

new GenericViewport()​

new GenericViewport<TViewState, TDataPresentation, TContext>(args): GenericViewport<TViewState, TDataPresentation, TContext>

Parameters​

• args

• args.element: HTMLDivElement

• args.id: string

Returns​

GenericViewport<TViewState, TDataPresentation, TContext>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:91

Properties​

_debug​

readonly _debug: object

renderModes​

renderModes: Record<string, string>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:87


bindings​

protected bindings: Map<string, ViewportDataBinding<TDataPresentation>>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:77


dataPresentation​

protected dataPresentation: Map<string, TDataPresentation>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:81


dataProvider​

protected dataProvider: DataProvider<object, unknown>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:73


element​

readonly element: HTMLDivElement

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:66


id​

readonly id: string

Implementation of​

ViewportController.id

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:65


isDestroyed​

protected isDestroyed: boolean = false

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:83


renderContext​

protected renderContext: TContext

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:75


renderingEngineId​

abstract readonly renderingEngineId: string

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:68


renderPathResolver​

protected renderPathResolver: RenderPathResolver

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:74


type​

abstract readonly type: ViewportType

Implementation of​

ViewportController.type

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:67


viewportStatus​

viewportStatus: ViewportStatus = ViewportStatus.NO_DATA

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:69


viewState​

protected viewState: TViewState

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:82

Methods​

addDisplaySet()​

addDisplaySet(displaySetId, options): Promise<void>

Loads a logical display set through the viewport data provider and adds it through the render-path resolver.

Parameters​

• displaySetId: string

• options: DataAddOptions

Returns​

Promise<void>

Implementation of​

ViewportController.addDisplaySet

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:130


addLoadedData()​

protected addLoadedData(displaySetId, data, options, shouldIgnore?): Promise<boolean>

Converts loaded logical data into a mounted rendering binding.

The binding stores render-path callbacks so future per-dataset render state, camera, transform, resize, and render requests can be routed back to the correct render-path runtime.

Parameters​

• displaySetId: string

• data: LoadedData

• options: DataAddOptions

• shouldIgnore?

Returns​

Promise<boolean>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:531


canvasToWorld()​

canvasToWorld(canvasPos): Point3

Converts a canvas-space point to world-space coordinates using the computed camera.

Parameters​

• canvasPos: Point2

Returns​

Point3

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:308


destroy()​

destroy(): void

Releases mounted bindings and viewport-local resources.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:410


destroyBindings()​

protected destroyBindings(): void

Tears down all mounted dataset bindings by removing each one individually.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:944


dispose()​

dispose(): void

Alias for destroy. Provided for compatibility with disposable resource conventions.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:433


forEachBinding()​

protected forEachBinding(visitor): void

Iterates mounted bindings without exposing the underlying map to subclasses.

Parameters​

• visitor

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:862


getAspectRatio()​

getAspectRatio(): Point2

Returns the current axis-based stretch as [scaleX, scaleY]. The new generic viewport pipeline does not apply axis-based stretching for now, so this defaults to [1, 1]. Subclasses that support aspect-ratio stretching should override.

Returns​

Point2

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:342


getBinding()​

protected getBinding(displaySetId): ViewportDataBinding<TDataPresentation>

Looks up a binding by dataset identifier.

Parameters​

• displaySetId: string

Returns​

ViewportDataBinding<TDataPresentation>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:796


getCameraForEvent()​

protected getCameraForEvent(): ICamera<number>

Returns the camera representation used for event payloads. Delegates to the computed camera's ICamera projection when available, falling back to the raw view state.

Returns​

ICamera<number>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:755


getCurrentBinding()​

protected getCurrentBinding(): ViewportDataBinding<TDataPresentation>

Returns the binding used for generic transform and frame-of-reference queries when a viewport family does not override the selection logic.

Returns​

ViewportDataBinding<TDataPresentation>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:852


getCurrentMode()​

getCurrentMode(): ViewportContentMode

Content-true classification of the currently bound source data.

The duck-typing capability guards (viewportSupportsImageSlices, viewportSupportsVolumeId, ...) report which methods a viewport exposes, not what it is showing, so a single generic viewport reports support for both stack and volume operations regardless of its bound content. This method answers the content question instead, derived from the mounted source binding. The base implementation only distinguishes "has bound data" from "empty"; concrete viewport families override it to report stack, volume, volume3d, etc. See ViewportContentMode.

Returns​

ViewportContentMode

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:227


getDataPresentationState()​

protected getDataPresentationState(displaySetId): TDataPresentation

Returns the last render state stored for a display set, even if that display set is not currently mounted.

Parameters​

• displaySetId: string

Returns​

TDataPresentation

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:648


getDisplaySetPresentation()​

getDisplaySetPresentation(displaySetId): TDataPresentation

Returns the stored presentation state for a specific dataset.

Parameters​

• displaySetId: string

Returns​

TDataPresentation

Implementation of​

ViewportController.getDisplaySetPresentation

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:209


getDisplaySetRenderMode()​

protected getDisplaySetRenderMode(displaySetId): string

Internal helper: returns the mounted render mode for a specific dataset when present.

Parameters​

• displaySetId: string

Returns​

string

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:806


getDisplaySetRole()​

protected getDisplaySetRole(displaySetId): BindingRole

Internal helper: returns the binding role for a mounted dataset when present.

Parameters​

• displaySetId: string

Returns​

BindingRole

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:816


getDisplaySets()​

getDisplaySets(): object[]

Returns the display sets currently mounted on the viewport, in mount order (source binding first, then overlays). Derived from the live bindings, so it always reflects what is actually rendered - including overlays and any removeData calls. The per-entry options carry the binding role.

Returns​

object[]

Implementation of​

ViewportController.getDisplaySets

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:148


getFirstBinding()​

protected getFirstBinding(): ViewportDataBinding<TDataPresentation>

Returns the first mounted binding when a viewport family does not have a stronger notion of "current" selection.

Returns​

ViewportDataBinding<TDataPresentation>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:826


getFrameOfReferenceUID()​

getFrameOfReferenceUID(): string

Returns the frame of reference UID from the computed camera when available, falling back to the current binding or a viewport-local identifier.

Returns​

string

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:274


getReferenceViewContexts()​

protected getReferenceViewContexts(_viewReference?): GenericViewportReferenceContext[]

Returns generic reference-compatibility contexts for mounted datasets. Subclasses can add image, volume, slice, plane, and dimension facts.

Parameters​

• _viewReference?: ViewReference

Returns​

GenericViewportReferenceContext[]

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:874


getRenderingEngine()​

getRenderingEngine(): RenderingEngine

Returns the rendering engine that owns this viewport. Tools and utilities rely on this method existing on every viewport (legacy Viewport provides it); without it, calls like viewport.getRenderingEngine() threw on native generic viewports.

Returns​

RenderingEngine

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:287


getResolvedView()​

abstract getResolvedView(): ResolvedViewportView<unknown, ICamera<unknown>>

Returns the viewport's computed camera snapshot for coordinate transforms and legacy ICamera interop. Subclasses must implement this to produce the viewport-family-specific computed camera.

Returns​

ResolvedViewportView<unknown, ICamera<unknown>>

Implementation of​

ViewportController.getResolvedView

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:300


getSourceBinding()​

protected getSourceBinding(): ViewportDataBinding<TDataPresentation>

Returns the active source binding (the dataset that defines the view), falling back to the first mounted binding when no explicit source role is present. Used for content-mode classification and source-scoped queries.

Returns​

ViewportDataBinding<TDataPresentation>

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:837


getViewReference()​

getViewReference(_specifier): ViewReference

Returns a spatial reference for the current viewport state.

Parameters​

• _specifier: ViewReferenceSpecifier = {}

Returns​

ViewReference

Implementation of​

ViewportController.getViewReference

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:234


getViewReferenceId()​

getViewReferenceId(_specifier): string

Returns a stable string identifier for the current view reference.

Parameters​

• _specifier: ViewReferenceSpecifier = {}

Returns​

string

Implementation of​

ViewportController.getViewReferenceId

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:244


getViewState()​

getViewState(): TViewState

Returns the controller's current shared view state.

Returns​

TViewState

Implementation of​

ViewportController.getViewState

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:372


isReferenceViewable()​

isReferenceViewable(viewReference, options): boolean

Returns whether a spatial reference is compatible with this viewport.

Parameters​

• viewReference: ViewReference

• options: ReferenceCompatibleOptions = {}

Returns​

boolean

Implementation of​

ViewportController.isReferenceViewable

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:258


mergeDataPresentation()​

protected mergeDataPresentation(displaySetId, props): TDataPresentation

Merges object-like updates into the stored per-display-set render state and forwards the result immediately when mounted.

Parameters​

• displaySetId: string

• props: Partial<TDataPresentation>

Returns​

TDataPresentation

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:679


modified()​

protected modified(previousCamera?): void

Pushes the current shared view state to every binding and schedules a render. Optionally fires a camera-modified event when a previous camera snapshot is provided.

Parameters​

• previousCamera?: ICamera<number>

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:734


normalizeViewState()​

protected normalizeViewState(viewState): TViewState

Hook for subclasses to clamp or adjust view-state values before they are stored. The default implementation returns the view state unchanged.

Parameters​

• viewState: TViewState

Returns​

TViewState

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:725


notifyDataPresentationModified()​

protected notifyDataPresentationModified(_displaySetId, _props): void

Hook invoked after a per-display-set presentation update is applied through the public setDisplaySetPresentation path and the target display set is mounted. Concrete viewport families override this to emit their presentation-modified events (e.g. VOI_MODIFIED, COLORMAP_MODIFIED) so application UI and synchronizers can react to programmatic and tool-driven presentation changes. The base implementation is intentionally a no-op.

Parameters​

• _displaySetId: string

• _props: Partial<TDataPresentation>

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:710


onDestroy()​

protected onDestroy(): void

Hook for subclasses to release viewport-local resources during destroy. Called after bindings have been torn down but before the maps are cleared.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:954


removeAllData()​

protected removeAllData(): void

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:615


removeData()​

removeData(displaySetId): void

Removes a dataset binding and its stored presentation state, then triggers a re-render so the viewport reflects the removal.

Parameters​

• displaySetId: string

Returns​

void

Implementation of​

ViewportController.removeData

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:161


removeWidgets()​

removeWidgets(): void

Returns​

void

Deprecated​

Compatibility no-op retained during the V2 migration.

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:403


render()​

abstract render(): void

Schedules a render pass for the viewport. Concrete viewport families implement this to delegate to their rendering runtime.

Returns​

void

Implementation of​

ViewportController.render

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:465


renderBindings()​

protected renderBindings(): boolean

Invokes render on each binding and reports whether any binding handled the render request directly.

Returns​

boolean

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:913


resetViewState()​

resetViewState(_options?): boolean

Resets viewport-owned view state for viewport families that support a navigation reset.

Parameters​

• _options?: unknown

Returns​

boolean

Implementation of​

ViewportController.resetViewState

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:495


resize()​

resize(): void

Recomputes viewport-owned runtime sizing. Concrete viewport families may override this when they need to resize canvases or external runtimes.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:482


resizeBindings()​

protected resizeBindings(): void

Invokes resize on each mounted binding.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:931


resizeForRenderingEngine()​

resizeForRenderingEngine(__namedParameters): void

RenderingEngine-owned resize hook for custom-pipeline viewports.

Generic viewports own semantic view state, so the rendering engine delegates resize behavior here instead of preserving legacy getCamera/setCamera snapshots around a reset.

Parameters​

• __namedParameters: RenderingEngineResizeOptions = {}

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:506


setDataPresentationState()​

protected setDataPresentationState(displaySetId, props): void

Stores per-dataset render state and forwards it immediately when that dataset is already added.

Parameters​

• displaySetId: string

• props: TDataPresentation

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:625


setDefaultDataPresentation()​

protected setDefaultDataPresentation(displaySetId, defaults): TDataPresentation

Stores object-like defaults for a display set without clobbering any values already tracked for that display set.

Parameters​

• displaySetId: string

• defaults: TDataPresentation

Returns​

TDataPresentation

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:658


setDisplaySetPresentation()​

setDisplaySetPresentation(props)​

setDisplaySetPresentation(props): void

Updates the stored per-display-set presentation state. When called with just props, the update is applied to the current (source) binding. When called with an explicit displaySetId, the update targets that binding.

Parameters​

• props: Partial<TDataPresentation>

Returns​

void

Implementation of​

ViewportController.setDisplaySetPresentation

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:183

setDisplaySetPresentation(displaySetId, props)​

setDisplaySetPresentation(displaySetId, props): void

Parameters​

• displaySetId: string

• props: Partial<TDataPresentation>

Returns​

void

Implementation of​

ViewportController.setDisplaySetPresentation

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:184


setDisplaySets()​

setDisplaySets(...entries): Promise<void>

Replaces all mounted display sets with the provided logical display sets. The first entry is mounted as the source binding; subsequent entries default to the overlay role unless they specify one explicitly.

Parameters​

• ...entries: object[]

Returns​

Promise<void>

Implementation of​

ViewportController.setDisplaySets

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:105


setNeedsRender()​

setNeedsRender(): void

Marks the viewport as waiting for a render pass without scheduling one.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:457


setRendered()​

setRendered(): void

Called by rendering engines after a frame is rendered.

Most GenericViewport families do not need to track this separately because their render paths own concrete runtime state.

Returns​

void

Implementation of​

ViewportController.setRendered

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:443


setViewReference()​

setViewReference(_viewReference): void

Applies a spatial reference to the current viewport state.

Parameters​

• _viewReference: ViewReference

Returns​

void

Implementation of​

ViewportController.setViewReference

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:251


setViewState()​

setViewState(viewStatePatch): void

Merges partial view-state updates into the viewport source of truth and propagates the result to every active binding.

Parameters​

• viewStatePatch: Partial<TViewState>

Returns​

void

Implementation of​

ViewportController.setViewState

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:354


triggerCameraModifiedEvent()​

protected triggerCameraModifiedEvent(previousCamera): void

Fires a Events.CAMERA_MODIFIED event on the viewport element.

Parameters​

• previousCamera: ICamera<number>

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:763


triggerCameraResetEvent()​

protected triggerCameraResetEvent(): void

Fires a Events.CAMERA_RESET event on the viewport element.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:778


updateRenderingPipeline()​

updateRenderingPipeline(): void

Re-evaluates render paths after a global rendering-configuration change (setRenderBackend, or a deprecated CPU-rendering toggle). The default is a no-op; viewport families that support a live render-path swap override it. Present on every viewport so the global fan-out in init() can call it unconditionally.

Returns​

void

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:474


updateViewState()​

updateViewState(updater): void

Computes a view-state patch from the current state, then applies it through setViewState so normalization, events, and render invalidation stay in the canonical mutation path.

Parameters​

• updater: Partial<TViewState> | (viewState) => void | Partial<TViewState>

Returns​

void

Implementation of​

ViewportController.updateViewState

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:381


worldToCanvas()​

worldToCanvas(worldPos): Point2

Converts a world-space point to canvas-space coordinates using the computed camera.

Parameters​

• worldPos: Point3

Returns​

Point2

Defined in​

packages/core/src/RenderingEngine/GenericViewport/GenericViewport.ts:324