UNPKG

@cornerstonejs/core

Version:
60 lines (59 loc) 2.1 kB
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] } : {}), }; }