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()orhasImageURI()
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:
viewportSupportsStackCompatibilityviewportSupportsImageSlicesviewportSupportsStackCalibrationviewportSupportsVolumeCompatibilityviewportSupportsVolumeActorsviewportSupportsVolumeIdviewportSupportsVolumeURI
These guards let your code depend on supported behavior instead of legacy viewport classes.