diff --git a/packages/tools/src/utilities/cine/playClip.ts b/packages/tools/src/utilities/cine/playClip.ts index 6ce5f9087a..a7ac76e164 100644 --- a/packages/tools/src/utilities/cine/playClip.ts +++ b/packages/tools/src/utilities/cine/playClip.ts @@ -5,6 +5,7 @@ import { StackViewport, VolumeViewport, cache, + BaseVolumeViewport, } from '@cornerstonejs/core'; import { Types } from '@cornerstonejs/core'; @@ -301,7 +302,7 @@ function _getVolumeFromViewport(viewport): Types.IImageVolume { const actorEntry = viewport.getDefaultActor(); if (!actorEntry) { - console.warn('No actor found'); + // This can happen during setup/teardown of viewports. return; } diff --git a/packages/tools/src/utilities/planar/filterAnnotationsWithinSlice.ts b/packages/tools/src/utilities/planar/filterAnnotationsWithinSlice.ts index c2ab393eae..b99d8d97e7 100644 --- a/packages/tools/src/utilities/planar/filterAnnotationsWithinSlice.ts +++ b/packages/tools/src/utilities/planar/filterAnnotationsWithinSlice.ts @@ -1,7 +1,8 @@ import { vec3 } from 'gl-matrix'; -import { CONSTANTS } from '@cornerstonejs/core'; +import { CONSTANTS, metaData } from '@cornerstonejs/core'; import type { Types } from '@cornerstonejs/core'; import { Annotations, Annotation } from '../../types'; +import { debug } from 'console'; const { EPSILON } = CONSTANTS; @@ -33,8 +34,33 @@ export default function filterAnnotationsWithinSlice( // logic down below. const annotationsWithParallelNormals = annotations.filter( (td: Annotation) => { - const annotationViewPlaneNormal = td.metadata.viewPlaneNormal; - + let annotationViewPlaneNormal = td.metadata.viewPlaneNormal; + + if (!annotationViewPlaneNormal) { + // This code is run to set the annotation view plane normal + // for historical data which was saved without the normal. + const { referencedImageId } = td.metadata; + const { imageOrientationPatient } = metaData.get( + 'imagePlaneModule', + referencedImageId + ); + const rowCosineVec = vec3.fromValues( + imageOrientationPatient[0], + imageOrientationPatient[1], + imageOrientationPatient[2] + ); + + const colCosineVec = vec3.fromValues( + imageOrientationPatient[3], + imageOrientationPatient[4], + imageOrientationPatient[5] + ); + + annotationViewPlaneNormal = vec3.create() as Types.Point3; + + vec3.cross(annotationViewPlaneNormal, rowCosineVec, colCosineVec); + td.metadata.viewPlaneNormal = annotationViewPlaneNormal; + } const isParallel = Math.abs(vec3.dot(viewPlaneNormal, annotationViewPlaneNormal)) > PARALLEL_THRESHOLD;