@cornerstonejs/core
Version:
Cornerstone3D Core
60 lines (59 loc) • 2.1 kB
JavaScript
import { OrientationAxis } from '../../../enums/index.js';
import { deepClone } from '../../../utilities/deepClone.js';
import { clonePlanarOrientation } from './planarLegacyCompatibility.js';
import { normalizePlanarRotation } from './planarViewPresentation.js';
import { clonePlanarScale, normalizePlanarScaleMode, } from './planarCameraScale.js';
export function cloneDisplayArea(displayArea) {
return deepClone(displayArea);
}
export function createDefaultPlanarViewState() {
return {
slice: {
kind: 'stackIndex',
imageIdIndex: 0,
},
orientation: OrientationAxis.ACQUISITION,
flipHorizontal: false,
flipVertical: false,
anchorCanvas: [0.5, 0.5],
scale: [1, 1],
scaleMode: 'fit',
rotation: 0,
};
}
function cloneSlice(slice) {
if (!slice) {
return;
}
if (slice.kind === 'stackIndex') {
return {
kind: 'stackIndex',
imageIdIndex: Math.max(0, Math.round(slice.imageIdIndex)),
};
}
return {
kind: 'volumePoint',
sliceWorldPoint: [...slice.sliceWorldPoint],
};
}
export function normalizePlanarViewState(viewState) {
return {
...(viewState.slice ? { slice: cloneSlice(viewState.slice) } : {}),
orientation: clonePlanarOrientation(viewState.orientation) ??
OrientationAxis.ACQUISITION,
flipHorizontal: viewState.flipHorizontal === true,
flipVertical: viewState.flipVertical === true,
anchorCanvas: viewState.anchorCanvas
? [...viewState.anchorCanvas]
: [0.5, 0.5],
scale: clonePlanarScale(viewState.scale),
scaleMode: normalizePlanarScaleMode(viewState.displayArea?.scaleMode ?? viewState.scaleMode),
rotation: normalizePlanarRotation(viewState.rotation ?? 0),
...(viewState.displayArea
? { displayArea: cloneDisplayArea(viewState.displayArea) }
: {}),
...(viewState.anchorWorld
? { anchorWorld: [...viewState.anchorWorld] }
: {}),
};
}