From 6f24dd3f75dca4fc3276b1afc394267fca7d9b8f Mon Sep 17 00:00:00 2001 From: Dongsheng Zhao <41723543+Blackman99@users.noreply.github.com> Date: Tue, 23 Jan 2024 05:35:42 +0800 Subject: [PATCH] fix(splines): add auto removing when outside image for SplineROITool series (#1021) Co-authored-by: Dongsheng Zhao <223121194@gehealthcare.com> --- packages/tools/src/tools/annotation/SplineROITool.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/tools/src/tools/annotation/SplineROITool.ts b/packages/tools/src/tools/annotation/SplineROITool.ts index 4b8bae8cad..12f90a6da0 100644 --- a/packages/tools/src/tools/annotation/SplineROITool.ts +++ b/packages/tools/src/tools/annotation/SplineROITool.ts @@ -1,8 +1,8 @@ -import { utilities } from '@cornerstonejs/core'; import { getEnabledElement, eventTarget, triggerEvent, + utilities, } from '@cornerstonejs/core'; import type { Types } from '@cornerstonejs/core'; import { vec3 } from 'gl-matrix'; @@ -305,6 +305,16 @@ class SplineROITool extends ContourSegmentationBaseTool { const enabledElement = getEnabledElement(element); const { renderingEngine } = enabledElement; + // Decide whether there's at least one point is outside image + const image = this.getTargetIdImage( + this.getTargetId(enabledElement.viewport), + enabledElement.renderingEngine + ); + const { imageData, dimensions } = image; + this.isHandleOutsideImage = data.handles.points + .map((p) => utilities.transformWorldToIndex(imageData, p)) + .some((index) => !utilities.indexWithinDimensions(index, dimensions)); + if ( this.isHandleOutsideImage && this.configuration.preventHandleOutsideImage