Skip to main content

Rendering Engine Viewport Accessors

Overview

RenderingEngine.getStackViewport(), RenderingEngine.getStackViewports(), and RenderingEngine.getVolumeViewports() have been removed.

Use getViewport() or getViewports() and then filter by the behavior you need.

This change matters for ViewportV2 because a PlanarViewport can expose stack-style or volume-style compatibility methods without being a StackViewport or VolumeViewport.

Why This Changed

The old accessors classified viewports by legacy concrete classes.

That breaks down for V2 viewports, where the same viewport may support:

  • image-slice workflows such as setStack()
  • volume workflows such as setVolumes()
  • shared image queries such as getCurrentImageId() or hasImageURI()

without actually being a legacy stack or volume viewport type.

Migration

getStackViewport(viewportId)

Before:

const viewport = renderingEngine.getStackViewport(viewportId);
await viewport.setStack(imageIds);

After:

import { utilities } from '@cornerstonejs/core';

const viewport = renderingEngine.getViewport(viewportId);

if (!utilities.viewportSupportsStackCompatibility(viewport)) {
throw new Error(`Viewport ${viewportId} does not implement setStack`);
}

await viewport.setStack(imageIds);

getStackViewports()

Before:

const stackViewports = renderingEngine.getStackViewports();

After:

import { utilities } from '@cornerstonejs/core';

const stackViewports = renderingEngine
.getViewports()
.filter(utilities.viewportSupportsStackCompatibility);

If you only need image-slice queries, use the narrower guard instead:

const sliceViewports = renderingEngine
.getViewports()
.filter(utilities.viewportSupportsImageSlices);

getVolumeViewports()

Before:

const volumeViewports = renderingEngine.getVolumeViewports();

After:

Choose the guard that matches the operation you need:

import { utilities } from '@cornerstonejs/core';

const volumeInputViewports = renderingEngine
.getViewports()
.filter(utilities.viewportSupportsVolumeCompatibility);

const volumeActorViewports = renderingEngine
.getViewports()
.filter(utilities.viewportSupportsVolumeActors);

const volumeURIViewports = renderingEngine
.getViewports()
.filter(utilities.viewportSupportsVolumeURI);

New Capability Guards

Cornerstone3D now exposes capability-based helpers under utilities:

  • viewportSupportsStackCompatibility
  • viewportSupportsImageSlices
  • viewportSupportsStackCalibration
  • viewportSupportsVolumeCompatibility
  • viewportSupportsVolumeActors
  • viewportSupportsVolumeId
  • viewportSupportsVolumeURI

These guards let your code depend on supported behavior instead of legacy viewport classes.