@cornerstonejs/core
Version:
Cornerstone3D Core
42 lines (41 loc) • 1.66 kB
JavaScript
import { isGenericViewport } from './viewportCapabilities.js';
import { getVolumeId } from './getVolumeId.js';
import { resolveGenericViewportVolumeId } from './resolveGenericViewportVolumeId.js';
function _getScalingDescriptor(viewport, targetId, getVolume) {
if (!getVolume) {
throw new Error('getVolume is required, use the utilities export instead');
}
if (isGenericViewport(viewport)) {
const resolvedVolumeId = resolveGenericViewportVolumeId(viewport, targetId);
const volume = resolvedVolumeId ? getVolume(resolvedVolumeId) : undefined;
const imageData = viewport.getImageData?.();
return {
modality: volume?.metadata?.Modality ?? imageData?.metadata?.Modality,
isPreScaled: isScalingPresent(volume?.scaling),
};
}
if (typeof viewport.setVolumes === 'function') {
const volumeViewport = viewport;
const volumeId = targetId
? getVolumeId(targetId)
: volumeViewport.getVolumeId();
const volume = volumeId ? getVolume(volumeId) : undefined;
return {
modality: volume?.metadata?.Modality,
isPreScaled: isScalingPresent(volume?.scaling),
};
}
if (typeof viewport.setStack === 'function') {
const stackViewport = viewport;
const { preScale } = stackViewport.getImageData() || {};
return {
modality: stackViewport.modality,
isPreScaled: !!preScale?.scaled,
};
}
return undefined;
}
function isScalingPresent(scaling) {
return !!scaling && Object.keys(scaling).length > 0;
}
export { _getScalingDescriptor };