@cornerstonejs/tools 1.51.5 → 1.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/drawingSvg/drawPath.d.ts +11 -0
- package/dist/cjs/drawingSvg/drawPath.js +55 -0
- package/dist/cjs/drawingSvg/drawPath.js.map +1 -0
- package/dist/cjs/drawingSvg/drawPolyline.d.ts +1 -1
- package/dist/cjs/drawingSvg/drawPolyline.js +3 -11
- package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
- package/dist/cjs/drawingSvg/index.d.ts +2 -1
- package/dist/cjs/drawingSvg/index.js +3 -1
- package/dist/cjs/drawingSvg/index.js.map +1 -1
- package/dist/cjs/enums/ChangeTypes.d.ts +2 -1
- package/dist/cjs/enums/ChangeTypes.js +1 -0
- package/dist/cjs/enums/ChangeTypes.js.map +1 -1
- package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js +1 -1
- package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
- package/dist/cjs/eventDispatchers/shared/getActiveToolForMouseEvent.js.map +1 -1
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +1 -1
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +165 -78
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/annotationState.d.ts +6 -1
- package/dist/cjs/stateManagement/annotation/annotationState.js +49 -1
- package/dist/cjs/stateManagement/annotation/annotationState.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +4 -2
- package/dist/cjs/stateManagement/annotation/helpers/state.js +16 -4
- package/dist/cjs/stateManagement/annotation/helpers/state.js.map +1 -1
- package/dist/cjs/stateManagement/index.d.ts +6 -1
- package/dist/cjs/stateManagement/index.js +6 -1
- package/dist/cjs/stateManagement/index.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +3 -1
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +3 -2
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/cjs/tools/SegmentationIntersectionTool.js +1 -1
- package/dist/cjs/tools/SegmentationIntersectionTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.d.ts +4 -0
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js +82 -0
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +13 -11
- package/dist/cjs/tools/annotation/LivewireContourTool.js +78 -65
- package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +3 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/SplineROITool.d.ts +6 -3
- package/dist/cjs/tools/annotation/SplineROITool.js +40 -21
- package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +12 -7
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +24 -18
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +16 -10
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js +19 -7
- package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
- package/dist/cjs/tools/annotation/splines/LinearSpline.js +1 -1
- package/dist/cjs/tools/annotation/splines/LinearSpline.js.map +1 -1
- package/dist/cjs/tools/annotation/splines/Spline.d.ts +2 -0
- package/dist/cjs/tools/annotation/splines/Spline.js +7 -3
- package/dist/cjs/tools/annotation/splines/Spline.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
- package/dist/cjs/tools/base/ContourBaseTool.d.ts +1 -0
- package/dist/cjs/tools/base/ContourBaseTool.js +18 -1
- package/dist/cjs/tools/base/ContourBaseTool.js.map +1 -1
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +4 -0
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -1
- package/dist/cjs/tools/displayTools/Contour/contourConfig.js +1 -0
- package/dist/cjs/tools/displayTools/Contour/contourConfig.js.map +1 -1
- package/dist/cjs/types/AnnotationTypes.d.ts +2 -0
- package/dist/cjs/types/ContourAnnotation.d.ts +6 -0
- package/dist/cjs/types/ContourAnnotation.js +7 -0
- package/dist/cjs/types/ContourAnnotation.js.map +1 -1
- package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +8 -0
- package/dist/cjs/types/ContourTypes.d.ts +1 -0
- package/dist/cjs/types/EventTypes.d.ts +4 -1
- package/dist/cjs/types/ISpline.d.ts +1 -0
- package/dist/cjs/types/InterpolationTypes.d.ts +2 -0
- package/dist/cjs/types/SplineProps.d.ts +1 -0
- package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +2 -5
- package/dist/cjs/utilities/contours/getContourHolesDataCanvas.d.ts +3 -0
- package/dist/cjs/utilities/contours/getContourHolesDataCanvas.js +21 -0
- package/dist/cjs/utilities/contours/getContourHolesDataCanvas.js.map +1 -0
- package/dist/cjs/utilities/contours/getContourHolesDataWorld.d.ts +3 -0
- package/dist/cjs/utilities/contours/getContourHolesDataWorld.js +10 -0
- package/dist/cjs/utilities/contours/getContourHolesDataWorld.js.map +1 -0
- package/dist/cjs/utilities/contours/index.d.ts +4 -1
- package/dist/cjs/utilities/contours/index.js +7 -1
- package/dist/cjs/utilities/contours/index.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js +2 -1
- package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js +2 -1
- package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js +3 -1
- package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/interpolate.d.ts +8 -0
- package/dist/cjs/utilities/contours/interpolation/interpolate.js +56 -42
- package/dist/cjs/utilities/contours/interpolation/interpolate.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/selectHandles.d.ts +4 -0
- package/dist/cjs/utilities/contours/interpolation/selectHandles.js +170 -0
- package/dist/cjs/utilities/contours/interpolation/selectHandles.js.map +1 -0
- package/dist/cjs/utilities/contours/updateContourPolyline.d.ts +10 -0
- package/dist/cjs/utilities/contours/updateContourPolyline.js +64 -0
- package/dist/cjs/utilities/contours/updateContourPolyline.js.map +1 -0
- package/dist/cjs/utilities/livewire/LivewireScissors.d.ts +2 -1
- package/dist/cjs/utilities/livewire/LivewireScissors.js +46 -24
- package/dist/cjs/utilities/livewire/LivewireScissors.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/containsPoints.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/containsPoints.js +16 -0
- package/dist/cjs/utilities/math/polyline/containsPoints.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getWindingDirection.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getWindingDirection.js +12 -0
- package/dist/cjs/utilities/math/polyline/getWindingDirection.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/index.d.ts +3 -1
- package/dist/cjs/utilities/math/polyline/index.js +5 -1
- package/dist/cjs/utilities/math/polyline/index.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +1 -0
- package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js +13 -3
- package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -1
- package/dist/esm/drawingSvg/drawPath.js +49 -0
- package/dist/esm/drawingSvg/drawPath.js.map +1 -0
- package/dist/esm/drawingSvg/drawPolyline.js +3 -11
- package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
- package/dist/esm/drawingSvg/index.js +2 -1
- package/dist/esm/drawingSvg/index.js.map +1 -1
- package/dist/esm/enums/ChangeTypes.js +1 -0
- package/dist/esm/enums/ChangeTypes.js.map +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
- package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js.map +1 -1
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +106 -32
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -1
- package/dist/esm/stateManagement/annotation/annotationState.js +42 -1
- package/dist/esm/stateManagement/annotation/annotationState.js.map +1 -1
- package/dist/esm/stateManagement/annotation/helpers/state.js +15 -4
- package/dist/esm/stateManagement/annotation/helpers/state.js.map +1 -1
- package/dist/esm/stateManagement/index.js +2 -2
- package/dist/esm/stateManagement/index.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +3 -2
- package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/esm/tools/SegmentationIntersectionTool.js +1 -1
- package/dist/esm/tools/SegmentationIntersectionTool.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +81 -0
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourTool.js +80 -67
- package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +3 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/SplineROITool.js +40 -22
- package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +12 -7
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +25 -19
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +16 -10
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +20 -8
- package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
- package/dist/esm/tools/annotation/splines/LinearSpline.js +1 -1
- package/dist/esm/tools/annotation/splines/LinearSpline.js.map +1 -1
- package/dist/esm/tools/annotation/splines/Spline.js +5 -1
- package/dist/esm/tools/annotation/splines/Spline.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
- package/dist/esm/tools/base/ContourBaseTool.js +20 -3
- package/dist/esm/tools/base/ContourBaseTool.js.map +1 -1
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +4 -0
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -1
- package/dist/esm/tools/displayTools/Contour/contourConfig.js +1 -0
- package/dist/esm/tools/displayTools/Contour/contourConfig.js.map +1 -1
- package/dist/esm/types/ContourAnnotation.js +6 -1
- package/dist/esm/types/ContourAnnotation.js.map +1 -1
- package/dist/esm/utilities/contours/getContourHolesDataCanvas.js +15 -0
- package/dist/esm/utilities/contours/getContourHolesDataCanvas.js.map +1 -0
- package/dist/esm/utilities/contours/getContourHolesDataWorld.js +6 -0
- package/dist/esm/utilities/contours/getContourHolesDataWorld.js.map +1 -0
- package/dist/esm/utilities/contours/index.js +4 -1
- package/dist/esm/utilities/contours/index.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js +2 -1
- package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js +2 -1
- package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/getInterpolationData.js +3 -1
- package/dist/esm/utilities/contours/interpolation/getInterpolationData.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/interpolate.js +57 -43
- package/dist/esm/utilities/contours/interpolation/interpolate.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/selectHandles.js +164 -0
- package/dist/esm/utilities/contours/interpolation/selectHandles.js.map +1 -0
- package/dist/esm/utilities/contours/updateContourPolyline.js +38 -0
- package/dist/esm/utilities/contours/updateContourPolyline.js.map +1 -0
- package/dist/esm/utilities/livewire/LivewireScissors.js +46 -24
- package/dist/esm/utilities/livewire/LivewireScissors.js.map +1 -1
- package/dist/esm/utilities/math/polyline/containsPoints.js +10 -0
- package/dist/esm/utilities/math/polyline/containsPoints.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getWindingDirection.js +6 -0
- package/dist/esm/utilities/math/polyline/getWindingDirection.js.map +1 -0
- package/dist/esm/utilities/math/polyline/index.js +3 -1
- package/dist/esm/utilities/math/polyline/index.js.map +1 -1
- package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js +13 -3
- package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -1
- package/dist/types/drawingSvg/drawPath.d.ts +12 -0
- package/dist/types/drawingSvg/drawPath.d.ts.map +1 -0
- package/dist/types/drawingSvg/drawPolyline.d.ts +1 -1
- package/dist/types/drawingSvg/drawPolyline.d.ts.map +1 -1
- package/dist/types/drawingSvg/index.d.ts +2 -1
- package/dist/types/drawingSvg/index.d.ts.map +1 -1
- package/dist/types/enums/ChangeTypes.d.ts +2 -1
- package/dist/types/enums/ChangeTypes.d.ts.map +1 -1
- package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +1 -1
- package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts.map +1 -1
- package/dist/types/stateManagement/annotation/annotationState.d.ts +6 -1
- package/dist/types/stateManagement/annotation/annotationState.d.ts.map +1 -1
- package/dist/types/stateManagement/annotation/helpers/state.d.ts +4 -2
- package/dist/types/stateManagement/annotation/helpers/state.d.ts.map +1 -1
- package/dist/types/stateManagement/index.d.ts +6 -1
- package/dist/types/store/ToolGroupManager/ToolGroup.d.ts +3 -1
- package/dist/types/store/ToolGroupManager/ToolGroup.d.ts.map +1 -1
- package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts +4 -0
- package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/LivewireContourTool.d.ts +13 -11
- package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/SplineROITool.d.ts +6 -3
- package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/closedContourEditLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/drawLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/openContourEditLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/renderMethods.d.ts.map +1 -1
- package/dist/types/tools/annotation/splines/Spline.d.ts +2 -0
- package/dist/types/tools/annotation/splines/Spline.d.ts.map +1 -1
- package/dist/types/tools/base/AnnotationTool.d.ts.map +1 -1
- package/dist/types/tools/base/ContourBaseTool.d.ts +1 -0
- package/dist/types/tools/base/ContourBaseTool.d.ts.map +1 -1
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -1
- package/dist/types/tools/displayTools/Contour/contourConfig.d.ts.map +1 -1
- package/dist/types/types/AnnotationTypes.d.ts +2 -0
- package/dist/types/types/AnnotationTypes.d.ts.map +1 -1
- package/dist/types/types/ContourAnnotation.d.ts +6 -0
- package/dist/types/types/ContourAnnotation.d.ts.map +1 -1
- package/dist/types/types/ContourSegmentationAnnotation.d.ts +8 -0
- package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -1
- package/dist/types/types/ContourTypes.d.ts +1 -0
- package/dist/types/types/ContourTypes.d.ts.map +1 -1
- package/dist/types/types/EventTypes.d.ts +4 -1
- package/dist/types/types/EventTypes.d.ts.map +1 -1
- package/dist/types/types/ISpline.d.ts +1 -0
- package/dist/types/types/ISpline.d.ts.map +1 -1
- package/dist/types/types/InterpolationTypes.d.ts +2 -0
- package/dist/types/types/InterpolationTypes.d.ts.map +1 -1
- package/dist/types/types/SplineProps.d.ts +1 -0
- package/dist/types/types/SplineProps.d.ts.map +1 -1
- package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +2 -5
- package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
- package/dist/types/utilities/contours/getContourHolesDataCanvas.d.ts +4 -0
- package/dist/types/utilities/contours/getContourHolesDataCanvas.d.ts.map +1 -0
- package/dist/types/utilities/contours/getContourHolesDataWorld.d.ts +4 -0
- package/dist/types/utilities/contours/getContourHolesDataWorld.d.ts.map +1 -0
- package/dist/types/utilities/contours/index.d.ts +4 -1
- package/dist/types/utilities/contours/index.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/createPolylineToolData.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/getInterpolationData.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/interpolate.d.ts +8 -0
- package/dist/types/utilities/contours/interpolation/interpolate.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/selectHandles.d.ts +5 -0
- package/dist/types/utilities/contours/interpolation/selectHandles.d.ts.map +1 -0
- package/dist/types/utilities/contours/updateContourPolyline.d.ts +11 -0
- package/dist/types/utilities/contours/updateContourPolyline.d.ts.map +1 -0
- package/dist/types/utilities/livewire/LivewireScissors.d.ts +2 -1
- package/dist/types/utilities/livewire/LivewireScissors.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/containsPoints.d.ts +3 -0
- package/dist/types/utilities/math/polyline/containsPoints.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getWindingDirection.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getWindingDirection.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/index.d.ts +3 -1
- package/dist/types/utilities/math/polyline/index.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +1 -0
- package/dist/types/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts.map +1 -1
- package/dist/types/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/drawingSvg/drawPath.ts +96 -0
- package/src/drawingSvg/drawPolyline.ts +13 -17
- package/src/drawingSvg/index.ts +2 -0
- package/src/enums/ChangeTypes.ts +4 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +1 -1
- package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +1 -1
- package/src/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.ts +194 -58
- package/src/stateManagement/annotation/annotationState.ts +101 -0
- package/src/stateManagement/annotation/helpers/state.ts +33 -3
- package/src/stateManagement/index.js +10 -0
- package/src/store/ToolGroupManager/ToolGroup.ts +9 -2
- package/src/tools/SegmentationIntersectionTool.ts +1 -1
- package/src/tools/annotation/LivewireContourSegmentationTool.ts +151 -0
- package/src/tools/annotation/LivewireContourTool.ts +172 -114
- package/src/tools/annotation/PlanarFreehandROITool.ts +13 -3
- package/src/tools/annotation/SplineROITool.ts +78 -31
- package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +20 -11
- package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +40 -21
- package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +28 -13
- package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +28 -10
- package/src/tools/annotation/splines/LinearSpline.ts +1 -1
- package/src/tools/annotation/splines/Spline.ts +13 -1
- package/src/tools/base/AnnotationTool.ts +1 -0
- package/src/tools/base/ContourBaseTool.ts +45 -3
- package/src/tools/base/ContourSegmentationBaseTool.ts +6 -0
- package/src/tools/displayTools/Contour/contourConfig.ts +1 -0
- package/src/types/AnnotationTypes.ts +14 -0
- package/src/types/ContourAnnotation.ts +13 -0
- package/src/types/ContourSegmentationAnnotation.ts +38 -0
- package/src/types/ContourTypes.ts +3 -0
- package/src/types/EventTypes.ts +9 -0
- package/src/types/ISpline.ts +3 -0
- package/src/types/InterpolationTypes.ts +6 -0
- package/src/types/SplineProps.ts +10 -0
- package/src/types/ToolSpecificAnnotationTypes.ts +7 -5
- package/src/utilities/contours/getContourHolesDataCanvas.ts +33 -0
- package/src/utilities/contours/getContourHolesDataWorld.ts +19 -0
- package/src/utilities/contours/index.ts +6 -0
- package/src/utilities/contours/interpolation/acceptAutogeneratedInterpolations.ts +3 -1
- package/src/utilities/contours/interpolation/createPolylineToolData.ts +7 -1
- package/src/utilities/contours/interpolation/findAnnotationForInterpolation.ts +2 -1
- package/src/utilities/contours/interpolation/getInterpolationData.ts +3 -1
- package/src/utilities/contours/interpolation/interpolate.ts +94 -75
- package/src/utilities/contours/interpolation/selectHandles.ts +240 -0
- package/src/utilities/contours/updateContourPolyline.ts +74 -0
- package/src/utilities/livewire/LivewireScissors.ts +65 -53
- package/src/utilities/math/polyline/containsPoint.ts +1 -1
- package/src/utilities/math/polyline/containsPoints.ts +22 -0
- package/src/utilities/math/polyline/getWindingDirection.ts +14 -0
- package/src/utilities/math/polyline/index.ts +4 -0
- package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +1 -0
- package/src/utilities/segmentation/InterpolationManager/InterpolationManager.ts +39 -4
- package/dist/cjs/utilities/contours/PointsArray.d.ts +0 -29
- package/dist/cjs/utilities/contours/PointsArray.js +0 -104
- package/dist/cjs/utilities/contours/PointsArray.js.map +0 -1
- package/dist/esm/utilities/contours/PointsArray.js +0 -98
- package/dist/esm/utilities/contours/PointsArray.js.map +0 -1
- package/dist/types/utilities/contours/PointsArray.d.ts +0 -30
- package/dist/types/utilities/contours/PointsArray.d.ts.map +0 -1
- package/src/utilities/contours/PointsArray.ts +0 -165
|
@@ -59,6 +59,81 @@ function getAnnotations(
|
|
|
59
59
|
return manager.getAnnotations(groupKey, toolName) as Annotations;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Removes the association between the annotation passed as parameter and its
|
|
64
|
+
* parent in case it has one (eg: contour holes).
|
|
65
|
+
* @param annotation - Annotation
|
|
66
|
+
*/
|
|
67
|
+
function clearParentAnnotation(annotation: Annotation): void {
|
|
68
|
+
const { annotationUID: childUID, parentAnnotationUID } = annotation;
|
|
69
|
+
|
|
70
|
+
if (!parentAnnotationUID) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const parentAnnotation = getAnnotation(parentAnnotationUID);
|
|
75
|
+
const childUIDIndex = parentAnnotation.childAnnotationUIDs.indexOf(childUID);
|
|
76
|
+
|
|
77
|
+
parentAnnotation.childAnnotationUIDs.splice(childUIDIndex, 1);
|
|
78
|
+
annotation.parentAnnotationUID = undefined;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Creates a parent/child association between annotations.
|
|
83
|
+
* A annotation may have only one parent and multiple children (eg: a contour
|
|
84
|
+
* may have multiple holes in it).
|
|
85
|
+
* @param parentAnnotation - Parent annotation
|
|
86
|
+
* @param childAnnotation - Child annotation
|
|
87
|
+
*/
|
|
88
|
+
function addChildAnnotation(
|
|
89
|
+
parentAnnotation: Annotation,
|
|
90
|
+
childAnnotation: Annotation
|
|
91
|
+
): void {
|
|
92
|
+
const { annotationUID: parentUID } = parentAnnotation;
|
|
93
|
+
const { annotationUID: childUID } = childAnnotation;
|
|
94
|
+
|
|
95
|
+
// Make sure it is not associated with any other tool
|
|
96
|
+
clearParentAnnotation(childAnnotation);
|
|
97
|
+
|
|
98
|
+
if (!parentAnnotation.childAnnotationUIDs) {
|
|
99
|
+
parentAnnotation.childAnnotationUIDs = [];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Check if it is already a child
|
|
103
|
+
if (parentAnnotation.childAnnotationUIDs.includes(childUID)) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
parentAnnotation.childAnnotationUIDs.push(childUID);
|
|
108
|
+
childAnnotation.parentAnnotationUID = parentUID;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Returns the parent annotation of a given one since annotations can be
|
|
113
|
+
* associated in a parent/child way (eg: polyline holes)
|
|
114
|
+
* @param annotation - Annotation
|
|
115
|
+
* @returns Parent annotation
|
|
116
|
+
*/
|
|
117
|
+
function getParentAnnotation(annotation: Annotation) {
|
|
118
|
+
return annotation.parentAnnotationUID
|
|
119
|
+
? getAnnotation(annotation.parentAnnotationUID)
|
|
120
|
+
: undefined;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Returns all children annotation of a given one since annotations can be
|
|
125
|
+
* associated in a parent/child way (eg: polyline holes)
|
|
126
|
+
* @param annotation - Annotation
|
|
127
|
+
* @returns Child annotations
|
|
128
|
+
*/
|
|
129
|
+
function getChildAnnotations(annotation: Annotation) {
|
|
130
|
+
return (
|
|
131
|
+
annotation.childAnnotationUIDs?.map((childAnnotationUID) =>
|
|
132
|
+
getAnnotation(childAnnotationUID)
|
|
133
|
+
) ?? []
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
62
137
|
/**
|
|
63
138
|
* Add the annotation to the annotation manager along with the options that is
|
|
64
139
|
* used to filter the annotation manager and the annotation group that
|
|
@@ -137,6 +212,11 @@ function removeAnnotation(annotationUID: string): void {
|
|
|
137
212
|
return;
|
|
138
213
|
}
|
|
139
214
|
|
|
215
|
+
// Remove all child annotations first
|
|
216
|
+
annotation.childAnnotationUIDs?.forEach((childAnnotationUID) =>
|
|
217
|
+
removeAnnotation(childAnnotationUID)
|
|
218
|
+
);
|
|
219
|
+
|
|
140
220
|
manager.removeAnnotation(annotationUID);
|
|
141
221
|
|
|
142
222
|
// trigger annotation removed
|
|
@@ -169,8 +249,28 @@ function removeAllAnnotations(): void {
|
|
|
169
249
|
manager.removeAllAnnotations();
|
|
170
250
|
}
|
|
171
251
|
|
|
252
|
+
/**
|
|
253
|
+
* Invalidate current and all parent annotations (eg: contour holes)
|
|
254
|
+
* @param annotation - Annotation
|
|
255
|
+
*/
|
|
256
|
+
function invalidateAnnotation(annotation: Annotation): void {
|
|
257
|
+
let currAnnotation = annotation;
|
|
258
|
+
|
|
259
|
+
while (currAnnotation) {
|
|
260
|
+
currAnnotation.invalidated = true;
|
|
261
|
+
|
|
262
|
+
currAnnotation = currAnnotation.parentAnnotationUID
|
|
263
|
+
? getAnnotation(currAnnotation.parentAnnotationUID)
|
|
264
|
+
: undefined;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
172
268
|
export {
|
|
173
269
|
getAnnotations,
|
|
270
|
+
getParentAnnotation,
|
|
271
|
+
getChildAnnotations,
|
|
272
|
+
clearParentAnnotation,
|
|
273
|
+
addChildAnnotation,
|
|
174
274
|
getNumberOfAnnotations,
|
|
175
275
|
addAnnotation,
|
|
176
276
|
getAnnotation,
|
|
@@ -180,4 +280,5 @@ export {
|
|
|
180
280
|
setAnnotationManager,
|
|
181
281
|
getAnnotationManager,
|
|
182
282
|
resetAnnotationManager,
|
|
283
|
+
invalidateAnnotation,
|
|
183
284
|
};
|
|
@@ -4,13 +4,14 @@ import {
|
|
|
4
4
|
eventTarget,
|
|
5
5
|
getEnabledElementByIds,
|
|
6
6
|
} from '@cornerstonejs/core';
|
|
7
|
-
import { Events } from '../../../enums';
|
|
7
|
+
import { Events, ChangeTypes } from '../../../enums';
|
|
8
8
|
import { Annotation } from '../../../types/AnnotationTypes';
|
|
9
9
|
import { getToolGroupsWithToolName } from '../../../store/ToolGroupManager';
|
|
10
10
|
import {
|
|
11
11
|
AnnotationAddedEventDetail,
|
|
12
12
|
AnnotationModifiedEventDetail,
|
|
13
13
|
AnnotationCompletedEventDetail,
|
|
14
|
+
ContourAnnotationCompletedEventDetail,
|
|
14
15
|
} from '../../../types/EventTypes';
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -85,7 +86,8 @@ function triggerAnnotationAddedForFOR(annotation: Annotation) {
|
|
|
85
86
|
*/
|
|
86
87
|
function triggerAnnotationModified(
|
|
87
88
|
annotation: Annotation,
|
|
88
|
-
element: HTMLDivElement
|
|
89
|
+
element: HTMLDivElement,
|
|
90
|
+
changeType = ChangeTypes.HandlesUpdated
|
|
89
91
|
): void {
|
|
90
92
|
const enabledElement = getEnabledElement(element);
|
|
91
93
|
const { viewportId, renderingEngineId } = enabledElement;
|
|
@@ -94,6 +96,7 @@ function triggerAnnotationModified(
|
|
|
94
96
|
annotation,
|
|
95
97
|
viewportId,
|
|
96
98
|
renderingEngineId,
|
|
99
|
+
changeType,
|
|
97
100
|
};
|
|
98
101
|
|
|
99
102
|
triggerEvent(eventTarget, eventType, eventDetail);
|
|
@@ -103,11 +106,37 @@ function triggerAnnotationModified(
|
|
|
103
106
|
* Triggers an annotation completed event.
|
|
104
107
|
*/
|
|
105
108
|
function triggerAnnotationCompleted(annotation: Annotation): void {
|
|
106
|
-
const eventType = Events.ANNOTATION_COMPLETED;
|
|
107
109
|
const eventDetail: AnnotationCompletedEventDetail = {
|
|
108
110
|
annotation,
|
|
109
111
|
};
|
|
110
112
|
|
|
113
|
+
_triggerAnnotationCompleted(eventDetail);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Triggers an annotation completed event for contours (same annotation completed
|
|
118
|
+
* event but with more specific details).
|
|
119
|
+
*/
|
|
120
|
+
function triggerContourAnnotationCompleted(
|
|
121
|
+
annotation: Annotation,
|
|
122
|
+
contourHoleProcessingEnabled = false
|
|
123
|
+
): void {
|
|
124
|
+
const eventDetail: ContourAnnotationCompletedEventDetail = {
|
|
125
|
+
annotation,
|
|
126
|
+
contourHoleProcessingEnabled,
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
_triggerAnnotationCompleted(eventDetail);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Triggers an annotation completed event for the `detail` provided
|
|
134
|
+
* @param eventDetail - Event detail
|
|
135
|
+
*/
|
|
136
|
+
function _triggerAnnotationCompleted(
|
|
137
|
+
eventDetail: AnnotationCompletedEventDetail
|
|
138
|
+
) {
|
|
139
|
+
const eventType = Events.ANNOTATION_COMPLETED;
|
|
111
140
|
triggerEvent(eventTarget, eventType, eventDetail);
|
|
112
141
|
}
|
|
113
142
|
|
|
@@ -116,4 +145,5 @@ export {
|
|
|
116
145
|
triggerAnnotationAddedForFOR,
|
|
117
146
|
triggerAnnotationModified,
|
|
118
147
|
triggerAnnotationCompleted,
|
|
148
|
+
triggerContourAnnotationCompleted,
|
|
119
149
|
};
|
|
@@ -9,10 +9,15 @@ import {
|
|
|
9
9
|
addAnnotation,
|
|
10
10
|
removeAnnotation,
|
|
11
11
|
getAnnotation,
|
|
12
|
+
getParentAnnotation,
|
|
13
|
+
getChildAnnotations,
|
|
14
|
+
clearParentAnnotation,
|
|
15
|
+
addChildAnnotation,
|
|
12
16
|
getNumberOfAnnotations,
|
|
13
17
|
setAnnotationManager,
|
|
14
18
|
getAnnotationManager,
|
|
15
19
|
resetAnnotationManager,
|
|
20
|
+
invalidateAnnotation,
|
|
16
21
|
} from './annotation/annotationState';
|
|
17
22
|
|
|
18
23
|
import {
|
|
@@ -31,9 +36,14 @@ export {
|
|
|
31
36
|
getNumberOfAnnotations,
|
|
32
37
|
removeAnnotation,
|
|
33
38
|
getAnnotation,
|
|
39
|
+
getParentAnnotation,
|
|
40
|
+
getChildAnnotations,
|
|
41
|
+
clearParentAnnotation,
|
|
42
|
+
addChildAnnotation,
|
|
34
43
|
setAnnotationManager,
|
|
35
44
|
getAnnotationManager,
|
|
36
45
|
resetAnnotationManager,
|
|
46
|
+
invalidateAnnotation,
|
|
37
47
|
// segmentations
|
|
38
48
|
addSegmentationRepresentations,
|
|
39
49
|
removeSegmentationsFromToolGroup,
|
|
@@ -418,8 +418,14 @@ export default class ToolGroup implements IToolGroup {
|
|
|
418
418
|
* - Renders data if the tool has a `renderAnnotation` method.
|
|
419
419
|
*
|
|
420
420
|
* @param toolName - tool name
|
|
421
|
+
* @param options - Options used when setting the tool as passive
|
|
422
|
+
* - removeAllBindings: only the primary button bindings are removed but
|
|
423
|
+
* if this parameter is set to true all bindings are removed.
|
|
421
424
|
*/
|
|
422
|
-
public setToolPassive(
|
|
425
|
+
public setToolPassive(
|
|
426
|
+
toolName: string,
|
|
427
|
+
options?: { removeAllBindings?: boolean }
|
|
428
|
+
): void {
|
|
423
429
|
const toolInstance = this._toolInstances[toolName];
|
|
424
430
|
|
|
425
431
|
if (toolInstance === undefined) {
|
|
@@ -448,7 +454,8 @@ export default class ToolGroup implements IToolGroup {
|
|
|
448
454
|
// Remove the primary button bindings without modifiers, if they exist
|
|
449
455
|
toolOptions.bindings = toolOptions.bindings.filter(
|
|
450
456
|
(binding) =>
|
|
451
|
-
|
|
457
|
+
options?.removeAllBindings !== true &&
|
|
458
|
+
(binding.mouseButton !== defaultMousePrimary || binding.modifierKey)
|
|
452
459
|
);
|
|
453
460
|
// If there are other bindings, set the tool to be active
|
|
454
461
|
let mode = Passive;
|
|
@@ -146,7 +146,7 @@ class SegmentationIntersectionTool extends AnnotationDisplayTool {
|
|
|
146
146
|
color: color,
|
|
147
147
|
fillColor: color,
|
|
148
148
|
fillOpacity: this.configuration.opacity,
|
|
149
|
-
|
|
149
|
+
closePath: true,
|
|
150
150
|
};
|
|
151
151
|
|
|
152
152
|
const polyLineUID = actorEntry.uid + '#' + polyLineIdx;
|
|
@@ -1,8 +1,159 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
|
+
import { utilities as csUtils } from '@cornerstonejs/core';
|
|
3
|
+
|
|
1
4
|
import LivewireContourTool from './LivewireContourTool';
|
|
5
|
+
import { LivewirePath } from '../../utilities/livewire/LiveWirePath';
|
|
6
|
+
import { triggerAnnotationModified } from '../../stateManagement/annotation/helpers/state';
|
|
7
|
+
import { ChangeTypes } from '../../enums';
|
|
8
|
+
import type { ContourSegmentationAnnotation } from '../../types';
|
|
9
|
+
import { drawPolyline as drawPolylineSvg } from '../../drawingSvg';
|
|
2
10
|
|
|
3
11
|
class LivewireContourSegmentationTool extends LivewireContourTool {
|
|
4
12
|
static toolName;
|
|
5
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Updates the interpolated annotations with the currently displayed image data,
|
|
16
|
+
* performing hte livewire on the image data as generated.
|
|
17
|
+
* Note - this function is only called for interpolated livewire SEGMENTATION
|
|
18
|
+
* objects, and will return immediately otherwise.
|
|
19
|
+
*
|
|
20
|
+
* The work for the interpolation is performed in a microtask, enabling this
|
|
21
|
+
* method to return quickly for faster render speeds, but ensuring that the
|
|
22
|
+
* annotation data isn't updated before the changes are performed. The removes
|
|
23
|
+
* some irritating flickering on navigation.
|
|
24
|
+
*/
|
|
25
|
+
public updateInterpolatedAnnotation(
|
|
26
|
+
annotation: ContourSegmentationAnnotation,
|
|
27
|
+
enabledElement: Types.IEnabledElement
|
|
28
|
+
) {
|
|
29
|
+
// The interpolation sources is used as a flag here - a true livewire
|
|
30
|
+
// behaviour would be to perform a livewire between the two planes
|
|
31
|
+
// closest to this plane for each point, and use that handle. That is
|
|
32
|
+
// oblique, however, which is not currently supported.
|
|
33
|
+
if (
|
|
34
|
+
this.editData ||
|
|
35
|
+
!annotation.invalidated ||
|
|
36
|
+
!annotation.data.handles.interpolationSources
|
|
37
|
+
) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
annotation.data.contour.originalPolyline = annotation.data.contour.polyline;
|
|
41
|
+
|
|
42
|
+
// See docs above for why this is a microtask
|
|
43
|
+
queueMicrotask(() => {
|
|
44
|
+
if (!annotation.data.handles.interpolationSources) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const { points } = annotation.data.handles;
|
|
48
|
+
|
|
49
|
+
const { element } = enabledElement.viewport;
|
|
50
|
+
this.setupBaseEditData(points[0], element, annotation);
|
|
51
|
+
const { length: count } = points;
|
|
52
|
+
const { scissors } = this;
|
|
53
|
+
const { nearestEdge, repeatInterpolation } =
|
|
54
|
+
this.configuration.interpolation;
|
|
55
|
+
annotation.data.handles.originalPoints = points;
|
|
56
|
+
const { worldToSlice, sliceToWorld } = this.editData;
|
|
57
|
+
const handleSmoothing = [];
|
|
58
|
+
|
|
59
|
+
// New path generation - go through the handles and regenerate the polyline
|
|
60
|
+
if (nearestEdge) {
|
|
61
|
+
let lastPoint = worldToSlice(points[points.length - 1]);
|
|
62
|
+
// Nearest edge handling
|
|
63
|
+
points.forEach((point, hIndex) => {
|
|
64
|
+
const testPoint = worldToSlice(point);
|
|
65
|
+
lastPoint = testPoint;
|
|
66
|
+
handleSmoothing.push(testPoint);
|
|
67
|
+
|
|
68
|
+
// Fill the costs buffer and then find the minimum cost
|
|
69
|
+
// This is a little too aggressive about pulling the line in
|
|
70
|
+
scissors.startSearch(lastPoint);
|
|
71
|
+
scissors.findPathToPoint(testPoint);
|
|
72
|
+
// Fill the costs for a point a bit further along by searching for a
|
|
73
|
+
// point further along.
|
|
74
|
+
scissors.findPathToPoint(
|
|
75
|
+
worldToSlice(points[(hIndex + 3) % points.length])
|
|
76
|
+
);
|
|
77
|
+
const minPoint = scissors.findMinNearby(testPoint, nearestEdge);
|
|
78
|
+
if (!csUtils.isEqual(testPoint, minPoint)) {
|
|
79
|
+
handleSmoothing[hIndex] = minPoint;
|
|
80
|
+
lastPoint = minPoint;
|
|
81
|
+
points[hIndex] = sliceToWorld(minPoint);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Regenerate the updated data based on the updated handles
|
|
87
|
+
const acceptedPath = new LivewirePath();
|
|
88
|
+
for (let i = 0; i < count; i++) {
|
|
89
|
+
scissors.startSearch(worldToSlice(points[i]));
|
|
90
|
+
const path = scissors.findPathToPoint(
|
|
91
|
+
worldToSlice(points[(i + 1) % count])
|
|
92
|
+
);
|
|
93
|
+
acceptedPath.addPoints(path);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Now, update the rendering
|
|
97
|
+
this.updateAnnotation(acceptedPath);
|
|
98
|
+
this.scissors = null;
|
|
99
|
+
this.scissorsRight = null;
|
|
100
|
+
this.editData = null;
|
|
101
|
+
annotation.data.handles.interpolationSources = null;
|
|
102
|
+
|
|
103
|
+
if (repeatInterpolation) {
|
|
104
|
+
triggerAnnotationModified(
|
|
105
|
+
annotation,
|
|
106
|
+
enabledElement.viewport.element,
|
|
107
|
+
ChangeTypes.InterpolationUpdated
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Adds the update to the interpolated annotaiton on render an instance,
|
|
115
|
+
* but otherwise just calls the parent render annotation instance.
|
|
116
|
+
*/
|
|
117
|
+
protected renderAnnotationInstance(renderContext): boolean {
|
|
118
|
+
const { enabledElement, svgDrawingHelper } = renderContext;
|
|
119
|
+
const annotation =
|
|
120
|
+
renderContext.annotation as ContourSegmentationAnnotation;
|
|
121
|
+
const { annotationUID } = annotation;
|
|
122
|
+
const { viewport } = enabledElement;
|
|
123
|
+
const { worldToCanvas } = viewport;
|
|
124
|
+
const { showInterpolationPolyline } =
|
|
125
|
+
this.configuration.interpolation || {};
|
|
126
|
+
|
|
127
|
+
this.updateInterpolatedAnnotation?.(annotation, enabledElement);
|
|
128
|
+
const { originalPolyline } = annotation.data.contour;
|
|
129
|
+
|
|
130
|
+
const rendered = super.renderAnnotationInstance(renderContext);
|
|
131
|
+
|
|
132
|
+
if (
|
|
133
|
+
showInterpolationPolyline &&
|
|
134
|
+
originalPolyline &&
|
|
135
|
+
annotation.autoGenerated
|
|
136
|
+
) {
|
|
137
|
+
const polylineCanvasPoints = originalPolyline.map(
|
|
138
|
+
worldToCanvas
|
|
139
|
+
) as Types.Point2[];
|
|
140
|
+
polylineCanvasPoints.push(polylineCanvasPoints[0]);
|
|
141
|
+
drawPolylineSvg(
|
|
142
|
+
svgDrawingHelper,
|
|
143
|
+
annotationUID,
|
|
144
|
+
'interpolationContour-0',
|
|
145
|
+
polylineCanvasPoints,
|
|
146
|
+
{
|
|
147
|
+
color: '#70ffff',
|
|
148
|
+
lineWidth: 1,
|
|
149
|
+
fillOpacity: 0,
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return rendered;
|
|
155
|
+
}
|
|
156
|
+
|
|
6
157
|
protected isContourSegmentationTool(): boolean {
|
|
7
158
|
// Re-enable contour segmentation behavior disabled by LivewireContourTool
|
|
8
159
|
return true;
|