Skip to main content

VolumeViewport

An object representing a VolumeViewport. VolumeViewports are used to render 3D volumes from which various orientations can be viewed. Since VolumeViewports use SharedVolumeMappers behind the scene, memory footprint of visualizations of the same volume in different orientations is very small.

For setting volumes on viewports you need to use addVolumesToViewports which will add volumes to the specified viewports.

Hierarchy

Index

Constructors

constructor

  • Parameters

    • props: ViewportInput

    Returns VolumeViewport

Properties

_actors

_actors: Map<string, any>

a Map containing the actor uid and actors

_suppressCameraModifiedEvents

_suppressCameraModifiedEvents: boolean = false

informs if a new actor was added before a resetCameraClippingRange phase

readonlycanvas

canvas: HTMLCanvasElement

an internal canvas that is created on the provided HTML element

customRenderViewportToCanvas

customRenderViewportToCanvas: () => unknown

Type declaration

    • (): unknown
    • Returns unknown

readonlydefaultOptions

defaultOptions: Record<string, any>

Default options for the viewport which includes orientation, viewPlaneNormal and backgroundColor

readonlyelement

element: HTMLDivElement

HTML element in DOM that is used for rendering the viewport

readonlyid

id: string

unique identifier for the viewport

publicisDisabled

isDisabled: boolean

if the viewport has been disabled

options

options for the viewport which includes orientation axis, backgroundColor and displayArea

readonlyrenderingEngineId

renderingEngineId: string

RenderingEngine id that the viewport belongs to

resize

resize: () => void

Type declaration

    • (): void
    • Returns void

sHeight

sHeight: number

sHeight of viewport on the offscreen canvas

sWidth

sWidth: number

sWidth of viewport on the offscreen canvas

readonlysuppressEvents

suppressEvents: boolean

A flag representing if viewport methods should fire events or not

sx

sx: number

sx of viewport on the offscreen canvas

sy

sy: number

sy of viewport on the offscreen canvas

readonlytype

Type of viewport

updateRenderingPipeline

updateRenderingPipeline: () => void

Type declaration

    • (): void
    • Returns void

useCPURendering

useCPURendering: boolean = false

useNativeDataType

useNativeDataType: boolean = false

publicviewportStatus

viewportStatus: ViewportStatus = ViewportStatus.NO_DATA

Record the rendering status, mostly for testing purposes, but can also be useful for knowing things like whether the viewport is initialized

publicstaticreadonlyCameraViewPresentation

CameraViewPresentation: ViewPresentationSelector = ...

CameraViewPresentation is a view preentation selector that has all the camera related presentation selections, and would typically be used for choosing presentation information between two viewports showing the same type of orientation of a view, such as the CT, PT and fusion views in the same orientation view.

publicstaticreadonlyTransferViewPresentation

TransferViewPresentation: ViewPresentationSelector = ...

TransferViewPresentation is a view presentation selector that selects all the transfer function related attributes. It would typically be used for synchronizing different orientations of the same series, or for synchronizing two views of the same type of series such as a CT.

Accessors

staticuseCustomRenderingPipeline

  • get useCustomRenderingPipeline(): boolean
  • Returns boolean

Methods

_getCorners

  • _getCorners(bounds: number[]): number[][]
  • Parameters

    • bounds: number[]

    Returns number[][]

_getEdges

  • _getEdges(bounds: number[]): [number[], number[]][]
  • Returns a list of edges for the imageData bounds, which are the cube edges in the case of volumeViewport edges. p1: front, bottom, left p2: front, top, left p3: back, bottom, left p4: back, top, left p5: front, bottom, right p6: front, top, right p7: back, bottom, right p8: back, top, right


    Parameters

    • bounds: number[]

      Bounds of the renderer

    Returns [number[], number[]][]

    Edges of the containing bounds

_getFocalPointForResetCamera

  • _getFocalPointForResetCamera(centeredFocalPoint: Point3, previousCamera: ICamera, __namedParameters: Object): Point3
  • Parameters

    • centeredFocalPoint: Point3
    • previousCamera: ICamera
    • __namedParameters: Object

    Returns Point3

_isInBounds

  • _isInBounds(point: Point3, bounds: number[]): boolean
  • Determines whether or not the 3D point position is inside the boundaries of the 3D imageData.


    Parameters

    • point: Point3

      3D coordinate

    • bounds: number[]

      Bounds of the image

    Returns boolean

    boolean

_removeActor

  • _removeActor(actorUID: string): void
  • Remove the actor from the viewport


    Parameters

    • actorUID: string

      The unique identifier for the actor.

    Returns void

publicaddActor

  • Add an actor to the viewport including its id, its actor and slabThickness if defined


    Parameters

    • actorEntry: ActorEntry

      ActorEntry

      • actorEntry.uid - The unique identifier for the actor.
      • actorEntry.actor - The volume actor.
      • actorEntry.slabThickness - The slab thickness.

    Returns void

publicaddActors

  • addActors(actors: ActorEntry[], resetCameraPanAndZoom?: boolean): void
  • Add a list of actors (actor entries) to the viewport


    Parameters

    • actors: ActorEntry[]

      An array of ActorEntry objects.

    • resetCameraPanAndZoom: boolean = false

      force reset pan and zoom of the camera, default value is false.

    Returns void

publicaddVolumes

  • addVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>
  • Creates and adds volume actors for all volumes defined in the volumeInputArray. For each entry, if a callback is supplied, it will be called with the new volume actor as input.


    Parameters

    • volumeInputArray: IVolumeInput[]

      The array of VolumeInputs which define the volumes to add.

    • immediate: boolean = false

      Whether the Viewport should be rendered as soon as volumes are added.

    • suppressEvents: boolean = false

    Returns Promise<void>

publicaddWidget

  • addWidget(widgetId: any, widget: any): void
  • Parameters

    • widgetId: any
    • widget: any

    Returns void

publiccanvasToWorld

  • canvasToWorld Returns the world coordinates of the given canvasPos projected onto the plane defined by the Viewport‘s vtkCamera‘s focal point and the direction of projection.


    Parameters

    • canvasPos: Point2

      The position in canvas coordinates.

    Returns Point3

    The corresponding world coordinates.

publicclearDefaultProperties

  • clearDefaultProperties(volumeId?: string): void
  • Remove the global default properties of the viewport or remove default properties for a volumeId if specified


    Parameters

    • optionalvolumeId: string

      If given, we remove the default properties only for this volumeId, if not the global default properties will be removed

    Returns void

publicflip

  • Flip the viewport along the desired axis


    Parameters

    Returns void

publicgetActor

  • Get an actor by its UID


    Parameters

    • actorUID: string

      The unique ID of the actor.

    Returns ActorEntry

    An ActorEntry object.

publicgetActorByIndex

  • Get an actor by its index


    Parameters

    • index: number

      array index.

    Returns ActorEntry

    actorUID

publicgetActorUIDByIndex

  • getActorUIDByIndex(index: number): string
  • Get an actor UID by its index


    Parameters

    • index: number

      array index.

    Returns string

    actorUID

publicgetActorUIDs

  • getActorUIDs(): string[]
  • Returns an array of unique identifiers for all the actors in the viewport.


    Returns string[]

    An array of strings

publicgetActors

  • Get all the actors in the viewport


    Returns ActorEntry[]

    An array of ActorEntry objects.

publicgetBounds

  • getBounds(): number[]
  • gets the visible bounds of the viewport in the world coordinate system


    Returns number[]

publicgetCamera

  • Get the camera’s current state


    Returns ICamera

    The camera object.

publicgetCanvas

  • getCanvas(): HTMLCanvasElement
  • Gets the target output canvas for the Viewport.


    Returns HTMLCanvasElement

    an HTMLCanvasElement.

publicgetClippingPlanesForActor

  • getClippingPlanesForActor(actorEntry?: ActorEntry): vtkPlane[]
  • Method to get the clipping planes of a given actor


    Parameters

    • optionalactorEntry: ActorEntry

      The actor entry (a specific type you’ll define dependent on your code)

    Returns vtkPlane[]

    vtkPlanes - An array of vtkPlane objects associated with the given actor

publicgetCurrentImageId

  • getCurrentImageId(): string
  • Uses viewport camera and volume actor to decide if the viewport is looking at the volume in the direction of acquisition (imageIds). If so, it uses the origin and focalPoint to find which imageId is currently being viewed.


    Returns string

    ImageId

publicgetCurrentImageIdIndex

  • getCurrentImageIdIndex(volumeId?: string): number
  • Uses the origin and focalPoint to calculate the slice index.


    Parameters

    • optionalvolumeId: string

    Returns number

    The slice index in the direction of the view

publicgetDefaultActor

  • Get the default actor


    Returns ActorEntry

    An actor entry.

publicgetDefaultProperties

  • Retrieve the viewport default properties


    Parameters

    • optionalvolumeId: string

      If given, we retrieve the default properties of a volumeId if it exists If not given,we return the global properties of the viewport

    Returns VolumeViewportProperties

    default viewport properties including voi, invert, interpolation type, colormap

publicgetDisplayArea

  • returns the displayArea


    Returns DisplayArea

publicgetFrameOfReferenceUID

  • getFrameOfReferenceUID(): string
  • Returns string

publicgetImageData

  • Returns the image and its properties that is being shown inside the stack viewport. It returns, the image dimensions, image direction, image scalar data, vtkImageData object, metadata, and scaling (e.g., PET suvbw) Note: since the volume viewport supports fusion, to get the image data for a specific volume, use the optional volumeId argument.


    Parameters

    • optionalvolumeId: string

      The volumeId of the volume to get the image for.

    Returns IImageData

    IImageData: {dimensions, direction, scalarData, vtkImageData, metadata, scaling}

publicgetImageIds

  • getImageIds(volumeId?: string): string[]
  • Returns the list of image Ids for the current viewport


    Parameters

    • optionalvolumeId: string

      volumeId

    Returns string[]

    list of strings for image Ids

publicgetIntensityFromWorld

  • getIntensityFromWorld(point: Point3): number
  • Given a point in world coordinates, return the intensity at that point


    Parameters

    • point: Point3

      The point in world coordinates to get the intensity from.

    Returns number

    The intensity value of the voxel at the given point.

publicgetNumberOfSlices

  • getNumberOfSlices(): number
  • Gets the number of slices the volume is broken up into in the camera direction


    Returns number

publicgetPan

  • Helper function to return the current canvas pan value.


    Parameters

    Returns Point2

    a Point2 containing the current pan values on the canvas, computed from the current camera, where the initial pan value is [0,0].

publicgetProperties

  • Retrieve the viewport properties


    Parameters

    • optionalvolumeId: string

      The volume id to get the properties for (if undefined, the first volume)

    Returns VolumeViewportProperties

    viewport properties including voi, interpolation type: TODO: slabThickness, invert, rotation, flip

publicgetReferenceId

  • Gets a referenced image url of some sort - could be a real image id, or could be a URL with parameters


    Parameters

    Returns string

publicgetRenderer

  • getRenderer(): any
  • Returns the vtkRenderer responsible for rendering the Viewport.


    Returns any

    The vtkRenderer for the Viewport.

publicgetRenderingEngine

  • Returns the rendering engine driving the Viewport.


    Returns default

    The RenderingEngine instance.

publicgetRotation

  • getRotation(): number
  • Gets the rotation resulting from the value set in setRotation AND taking into account any flips that occurred subsequently from the camera provided or the viewport.


    Returns number

    the rotation resulting from the value set in setRotation AND taking into account any flips that occurred subsequently.

publicgetSlabThickness

  • getSlabThickness(): number
  • Gets the largest slab thickness from all actors in the viewport.


    Returns number

    slabThickness - The slab thickness.

publicgetSliceIndex

  • getSliceIndex(): number
  • Returns the image index associated with the volume viewport.


    Returns number

    The image index.

publicgetSlicePlaneCoordinates

  • getSlicePlaneCoordinates(): { point: Point3; sliceIndex: number }[]
  • Returns an array of 3D coordinates representing the slice plane positions. It starts by the focal point as a reference point on the current slice that the camera is looking at, and then it calculates the slice plane positions by moving the focal point in the direction of the view plane normal back and forward, and snaps them to the slice.


    Returns { point: Point3; sliceIndex: number }[]

    An array of Point3 representing the slice plane coordinates.

getSlicesClippingPlanes

  • getSlicesClippingPlanes(): { planes: { normal: Point3; origin: Point3 }[]; sliceIndex: number }[]
  • Retrieves the clipping planes for the slices in the volume viewport.


    Returns { planes: { normal: Point3; origin: Point3 }[]; sliceIndex: number }[]

    An array of vtkPlane objects representing the clipping planes, or an array of objects with normal and origin properties if raw is true.

publicgetViewPresentation

  • Gets a view presentation information specifying HOW a viewport displays something, but not what is being displayed. See getViewReference to get information on WHAT is being displayed.

    This is intended to have information on how an image is presented to the user, without specifying what image s displayed. All of this information is available externally, but this method combines the parts of this that are appropriate for remember or applying to other views, without necessarily needing to know what all the atributes are. That differs from methods like getCamera which fetch exact view details that are not likely to be identical between viewports as they change sizes or apply to different images.

    Note that the results of this can be used on different viewports, for example, the pan values can be applied to a volume viewport showing a CT, and a stack viewport showing an ultrasound.

    The selector allows choosing which view presentation attributes to return. Some default values are available from Viewport.CameraViewPresentation and Viewport.TransferViewPresentation


    Parameters

    Returns ViewPresentation

publicgetViewReference

  • Gets a view target, allowing comparison between view positions as well as restoring views later.


    Parameters

    Returns ViewReference

publicgetWidget

  • getWidget(id: any): any
  • Parameters

    • id: any

    Returns any

publicgetWidgets

  • getWidgets(): any[]
  • Returns any[]

publicgetZoom

  • getZoom(compareCamera?: ICamera): number
  • Returns a current zoom level relative to the initial parallel scale originally applied to the image. That is, on initial display, the zoom level is 1. Computed as a function of the camera.


    Parameters

    Returns number

publichasImageURI

  • hasImageURI(imageURI: string): boolean
  • if the volume viewport has imageURI (no loader schema) in one of its volume actors


    Parameters

    • imageURI: string

    Returns boolean

publichasVolumeId

  • hasVolumeId(volumeId: string): boolean
  • Checks if the viewport has a volume actor with the given volumeId


    Parameters

    • volumeId: string

      the volumeId to look for

    Returns boolean

    Boolean indicating if the volume is present in the viewport

publicisReferenceViewable

  • Find out if this viewport would show this view


    Parameters

    Returns boolean

    true if the target is compatible with this view

publicremoveActors

  • removeActors(actorUIDs: string[]): void
  • Remove the actors with the given UIDs from the viewport


    Parameters

    • actorUIDs: string[]

      An array of actor UIDs to remove.

    Returns void

publicremoveAllActors

  • removeAllActors(): void
  • Remove all actors from the renderer


    Returns void

publicremoveVolumeActors

  • removeVolumeActors(actorUIDs: string[], immediate?: boolean): void
  • It removes the volume actor from the Viewport. If the volume actor is not in the viewport, it does nothing.


    Parameters

    • actorUIDs: string[]

      Array of actor UIDs to remove. In case of simple volume it will be the volume Id, but in case of Segmentation it will be {volumeId}-{representationType} since the same volume can be rendered in multiple representations.

    • immediate: boolean = false

      If true, the Viewport will be rendered immediately

    Returns void

publicremoveWidgets

  • removeWidgets(): void
  • Returns void

publicrender

  • render(): void
  • Renders the Viewport using the RenderingEngine.


    Returns void

publicreset

  • reset(immediate?: boolean): void
  • Resets the options the Viewport‘s defaultOptions


    Parameters

    • immediate: boolean = false

      If true, renders the viewport after the options are reset.

    Returns void

publicresetCamera

  • resetCamera(resetPan?: boolean, resetZoom?: boolean, resetToCenter?: boolean, resetRotation?: boolean): boolean
  • Reset the camera for the volume viewport


    Parameters

    • resetPan: boolean = true
    • resetZoom: boolean = true
    • resetToCenter: boolean = true
    • resetRotation: boolean = false

    Returns boolean

publicresetProperties

  • resetProperties(volumeId?: string): void
  • Reset the viewport properties to the default values


    Parameters

    • optionalvolumeId: string

      Optional volume ID to specify which volume properties to reset. If not provided, it will reset the properties of the default actor.

    Returns void

    void

publicresetToDefaultProperties

  • resetToDefaultProperties(volumeId: string): void
  • Reset the viewport properties to the default values


    Parameters

    • volumeId: string

    Returns void

publicsetActors

  • It removes all actors from the viewport and then adds the actors from the array.


    Parameters

    • actors: ActorEntry[]

      An array of ActorEntry objects.

    Returns void

publicsetBlendMode

  • setBlendMode(blendMode: BlendModes, filterActorUIDs?: any[], immediate?: boolean): void
  • Sets the blendMode for actors of the viewport.


    Parameters

    • blendMode: BlendModes
    • filterActorUIDs: any[] = []
    • immediate: boolean = false

    Returns void

publicsetCamera

  • setCamera(cameraInterface: ICamera, storeAsInitialCamera?: boolean): void
  • Set the camera parameters


    Parameters

    • cameraInterface: ICamera

      ICamera

    • storeAsInitialCamera: boolean = false

      to set the provided camera as the initial one, used to compute differences for things like pan and zoom.

    Returns void

publicsetDefaultProperties

  • Update the default properties for the volume viewport on the volume


    Parameters

    • ViewportProperties: VolumeViewportProperties

      The properties to set

    • optionalvolumeId: string

      The volume id to set the default properties for (if undefined, we set the global default viewport properties)

    Returns void

publicsetDisplayArea

  • setDisplayArea(displayArea: DisplayArea, suppressEvents?: boolean): void
  • Sets the camera to an initial bounds. If resetPan and resetZoom are true it places the focal point at the center of the volume (or slice); otherwise, only the camera zoom and camera Pan or Zoom is reset for the current view.


    Parameters

    • displayArea: DisplayArea

      The display area of interest.

    • suppressEvents: boolean = false

      If true, don’t fire displayArea event.

    Returns void

publicsetOptions

  • Sets new options and (TODO) applies them.


    Parameters

    • options: ViewportInputOptions

      The viewport options to set.

    • immediate: boolean = false

      If true, renders the viewport after the options are set.

    Returns void

publicsetOrientation

  • It sets the orientation for the camera, the orientation can be one of the following: axial, sagittal, coronal, default. Use the Enums.OrientationAxis to set the orientation. The “default” orientation is the orientation that the volume was acquired in (scan axis)


    Parameters

    • orientation: OrientationAxis | OrientationVectors

      The orientation to set the camera to.

    • immediate: boolean = true

      Whether the Viewport should be rendered as soon as the camera is set.

    Returns void

publicsetOrientationOfClippingPlanes

  • setOrientationOfClippingPlanes(vtkPlanes: vtkPlane[], slabThickness: number, viewPlaneNormal: Point3, focalPoint: Point3): void
  • Parameters

    • vtkPlanes: vtkPlane[]
    • slabThickness: number
    • viewPlaneNormal: Point3
    • focalPoint: Point3

    Returns void

publicsetPan

  • setPan(pan: Point2, storeAsInitialCamera?: boolean): void
  • Sets the canvas pan value relative to the initial view position of 0,0 Modifies the camera to perform the pan.


    Parameters

    • pan: Point2
    • storeAsInitialCamera: boolean = false

    Returns void

publicsetProperties

  • Sets the properties for the volume viewport on the volume and if setProperties is called for the first time, the properties will also become the default one. (if fusion, it sets it for the first volume in the fusion)


    Parameters

    • VolumeViewportProperties: VolumeViewportProperties = {}

      The properties to set

    • optionalvolumeId: string

      The volume id to set the properties for (if undefined, the first volume)

    • suppressEvents: boolean = false

      If true, the viewport will not emit events

    Returns void

publicsetRendered

  • setRendered(): void
  • Indicate that the image has been rendered. This will set the viewportStatus to RENDERED if there is image data available to actually be rendered - otherwise, the rendering simply showed the background image.


    Returns void

publicsetSlabThickness

  • setSlabThickness(slabThickness: number, filterActorUIDs?: any[]): void
  • It sets the slabThickness of the actors of the viewport. If filterActorUIDs are provided, only the actors with the given UIDs will be affected. If no filterActorUIDs are provided, all actors will be affected.


    Parameters

    • slabThickness: number

      The slab thickness to set.

    • filterActorUIDs: any[] = []

      Optional argument to filter the actors to apply the slab thickness to (if not provided, all actors will be affected).

    Returns void

publicsetView

  • Sets the given view. This can apply both the view reference and view presentation without getting multiple event notifications on shared values like camera updates or flickers as multiple changes are applied.


    Parameters

    • optionalviewRef: ViewReference

      the basic positioning in terms of what image id/slice index/orientation to display * The viewRef must be applicable to the current stack or volume, otherwise an exception will be thrown

    • optionalviewPres: ViewPresentation

      the presentation information to apply to the current image (as chosen above)

    Returns void

publicsetVolumes

  • setVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>
  • Creates volume actors for all volumes defined in the volumeInputArray. For each entry, if a callback is supplied, it will be called with the new volume actor as input. For each entry, if a blendMode and/or slabThickness is defined, this will be set on the actor’s VolumeMapper.


    Parameters

    • volumeInputArray: IVolumeInput[]

      The array of VolumeInputs which define the volumes to add.

    • immediate: boolean = false

      Whether the Viewport should be rendered as soon as volumes are added.

    • suppressEvents: boolean = false

    Returns Promise<void>

publicsetZoom

  • setZoom(value: number, storeAsInitialCamera?: boolean): void
  • Zooms the image using parallel scale by updating the camera value.


    Parameters

    • value: number

      The relative parallel scale to apply. It is relative to the initial offsets value.

    • storeAsInitialCamera: boolean = false

      can be set to true to reset the camera after applying this zoom as the initial camera. A subsequent getZoom call will return “1”, but the zoom will have been applied.

    Returns void

publictriggerCameraModifiedEventIfNecessary

  • triggerCameraModifiedEventIfNecessary(previousCamera: ICamera, updatedCamera: ICamera): void
  • Trigger camera modified event


    Parameters

    Returns void

publicupdateCameraClippingPlanesAndRange

  • updateCameraClippingPlanesAndRange(): void
  • Updates the camera’s clipping planes and range.


    Returns void

publicworldToCanvas

  • Returns the canvas coordinates of the given worldPos projected onto the Viewport‘s canvas.


    Parameters

    • worldPos: Point3

      The position in world coordinates.

    Returns Point2

    The corresponding canvas coordinates.

staticboundsRadius

  • boundsRadius(bounds: number[]): number
  • Computes the bounds radius value


    Parameters

    • bounds: number[]

    Returns number