@cornerstonejs/tools 1.43.6 → 1.44.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/index.d.ts +2 -2
- package/dist/cjs/index.js +5 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.d.ts +3 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +7 -2
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.d.ts +2 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js +23 -9
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +14 -1
- package/dist/cjs/stateManagement/segmentation/helpers/normalizeSegmentationInput.js.map +1 -1
- package/dist/cjs/tools/annotation/AngleTool.js +4 -3
- package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +4 -3
- package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
- package/dist/cjs/tools/annotation/BidirectionalTool.js +4 -4
- package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/cjs/tools/annotation/CircleROITool.js +4 -3
- package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/CobbAngleTool.js +4 -3
- package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/DragProbeTool.js +4 -1
- package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.js +4 -3
- package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/KeyImageTool.js +4 -1
- package/dist/cjs/tools/annotation/KeyImageTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LengthTool.js +4 -4
- package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.d.ts +6 -0
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js +14 -0
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js.map +1 -0
- package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +14 -5
- package/dist/cjs/tools/annotation/LivewireContourTool.js +126 -159
- package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +8 -0
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js +24 -0
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -0
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +16 -6
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +104 -134
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.js +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/RectangleROITool.js +4 -3
- package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/SplineContourSegmentationTool.d.ts +8 -0
- package/dist/cjs/tools/annotation/SplineContourSegmentationTool.js +23 -0
- package/dist/cjs/tools/annotation/SplineContourSegmentationTool.js.map +1 -0
- package/dist/cjs/tools/annotation/SplineROITool.d.ts +15 -8
- package/dist/cjs/tools/annotation/SplineROITool.js +168 -240
- package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +5 -5
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +4 -4
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +7 -7
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js +19 -15
- package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.d.ts +15 -0
- package/dist/cjs/tools/base/AnnotationTool.js +24 -0
- package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
- package/dist/cjs/tools/base/ContourBaseTool.d.ts +19 -0
- package/dist/cjs/tools/base/ContourBaseTool.js +130 -0
- package/dist/cjs/tools/base/ContourBaseTool.js.map +1 -0
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.d.ts +18 -0
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +139 -0
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -0
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +1 -0
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/cjs/tools/index.d.ts +4 -1
- package/dist/cjs/tools/index.js +7 -1
- package/dist/cjs/tools/index.js.map +1 -1
- package/dist/cjs/types/ContourAnnotation.d.ts +11 -0
- package/dist/cjs/types/ContourAnnotation.js +3 -0
- package/dist/cjs/types/ContourAnnotation.js.map +1 -0
- package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +11 -0
- package/dist/cjs/types/ContourSegmentationAnnotation.js +3 -0
- package/dist/cjs/types/ContourSegmentationAnnotation.js.map +1 -0
- package/dist/cjs/types/ContourTypes.d.ts +4 -1
- package/dist/cjs/types/SegmentationStateTypes.d.ts +1 -1
- package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +11 -52
- package/dist/cjs/types/index.d.ts +3 -1
- package/dist/cjs/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
- package/dist/cjs/utilities/pointInSurroundingSphereCallback.d.ts +4 -0
- package/dist/cjs/utilities/pointInSurroundingSphereCallback.js +70 -0
- package/dist/cjs/utilities/pointInSurroundingSphereCallback.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +7 -2
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +20 -7
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +13 -1
- package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js.map +1 -1
- package/dist/esm/tools/annotation/AngleTool.js +4 -3
- package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js +4 -3
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +4 -4
- package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/esm/tools/annotation/CircleROITool.js +4 -3
- package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/CobbAngleTool.js +4 -3
- package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/DragProbeTool.js +4 -1
- package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +4 -3
- package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/esm/tools/annotation/KeyImageTool.js +4 -1
- package/dist/esm/tools/annotation/KeyImageTool.js.map +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +4 -4
- package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +9 -0
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js.map +1 -0
- package/dist/esm/tools/annotation/LivewireContourTool.js +123 -160
- package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +19 -0
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -0
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +104 -134
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/ProbeTool.js +1 -1
- package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/RectangleROITool.js +4 -3
- package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/SplineContourSegmentationTool.js +18 -0
- package/dist/esm/tools/annotation/SplineContourSegmentationTool.js.map +1 -0
- package/dist/esm/tools/annotation/SplineROITool.js +153 -227
- package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +5 -5
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +4 -4
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +7 -7
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +19 -15
- package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.js +24 -0
- package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
- package/dist/esm/tools/base/ContourBaseTool.js +122 -0
- package/dist/esm/tools/base/ContourBaseTool.js.map +1 -0
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +131 -0
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -0
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +1 -0
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/esm/tools/index.js +4 -1
- package/dist/esm/tools/index.js.map +1 -1
- package/dist/esm/types/ContourAnnotation.js +2 -0
- package/dist/esm/types/ContourAnnotation.js.map +1 -0
- package/dist/esm/types/ContourSegmentationAnnotation.js +2 -0
- package/dist/esm/types/ContourSegmentationAnnotation.js.map +1 -0
- package/dist/esm/utilities/pointInSurroundingSphereCallback.js +64 -0
- package/dist/esm/utilities/pointInSurroundingSphereCallback.js.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/SegmentationStateManager.d.ts +3 -1
- package/dist/types/stateManagement/segmentation/SegmentationStateManager.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/config/segmentationVisibility.d.ts +2 -1
- package/dist/types/stateManagement/segmentation/config/segmentationVisibility.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/helpers/normalizeSegmentationInput.d.ts.map +1 -1
- package/dist/types/tools/annotation/AngleTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/ArrowAnnotateTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/CircleROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/CobbAngleTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/DragProbeTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/EllipticalROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/KeyImageTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/LengthTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts +7 -0
- package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts.map +1 -0
- package/dist/types/tools/annotation/LivewireContourTool.d.ts +14 -5
- package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +9 -0
- package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts.map +1 -0
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts +16 -6
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/RectangleROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/SplineContourSegmentationTool.d.ts +9 -0
- package/dist/types/tools/annotation/SplineContourSegmentationTool.d.ts.map +1 -0
- package/dist/types/tools/annotation/SplineROITool.d.ts +15 -8
- 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/findOpenUShapedContourVectorToPeak.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/openContourEditLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/openContourEndEditLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/renderMethods.d.ts.map +1 -1
- package/dist/types/tools/base/AnnotationTool.d.ts +15 -0
- package/dist/types/tools/base/AnnotationTool.d.ts.map +1 -1
- package/dist/types/tools/base/ContourBaseTool.d.ts +20 -0
- package/dist/types/tools/base/ContourBaseTool.d.ts.map +1 -0
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts +19 -0
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Contour/contourDisplay.d.ts.map +1 -1
- package/dist/types/tools/index.d.ts +4 -1
- package/dist/types/tools/index.d.ts.map +1 -1
- package/dist/types/types/ContourAnnotation.d.ts +12 -0
- package/dist/types/types/ContourAnnotation.d.ts.map +1 -0
- package/dist/types/types/ContourSegmentationAnnotation.d.ts +12 -0
- package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -0
- package/dist/types/types/ContourTypes.d.ts +4 -1
- package/dist/types/types/ContourTypes.d.ts.map +1 -1
- package/dist/types/types/SegmentationStateTypes.d.ts +1 -1
- package/dist/types/types/SegmentationStateTypes.d.ts.map +1 -1
- package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +11 -52
- package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +3 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
- package/dist/types/utilities/pointInSurroundingSphereCallback.d.ts +5 -0
- package/dist/types/utilities/pointInSurroundingSphereCallback.d.ts.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +6 -0
- package/src/stateManagement/segmentation/SegmentationStateManager.ts +11 -2
- package/src/stateManagement/segmentation/config/segmentationVisibility.ts +52 -6
- package/src/stateManagement/segmentation/helpers/normalizeSegmentationInput.ts +27 -1
- package/src/tools/annotation/AngleTool.ts +4 -3
- package/src/tools/annotation/ArrowAnnotateTool.ts +4 -3
- package/src/tools/annotation/BidirectionalTool.ts +4 -4
- package/src/tools/annotation/CircleROITool.ts +4 -3
- package/src/tools/annotation/CobbAngleTool.ts +4 -3
- package/src/tools/annotation/DragProbeTool.ts +4 -1
- package/src/tools/annotation/EllipticalROITool.ts +4 -3
- package/src/tools/annotation/KeyImageTool.ts +4 -1
- package/src/tools/annotation/LengthTool.ts +4 -5
- package/src/tools/annotation/LivewireContourSegmentationTool.ts +13 -0
- package/src/tools/annotation/LivewireContourTool.ts +75 -150
- package/src/tools/annotation/PlanarFreehandContourSegmentationTool.ts +30 -0
- package/src/tools/annotation/PlanarFreehandROITool.ts +153 -187
- package/src/tools/annotation/ProbeTool.ts +1 -1
- package/src/tools/annotation/RectangleROITool.ts +4 -3
- package/src/tools/annotation/SplineContourSegmentationTool.ts +28 -0
- package/src/tools/annotation/SplineROITool.ts +172 -282
- package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +7 -5
- package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +4 -4
- package/src/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.ts +3 -1
- package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +12 -9
- package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +5 -2
- package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +19 -14
- package/src/tools/base/AnnotationTool.ts +35 -0
- package/src/tools/base/ContourBaseTool.ts +226 -0
- package/src/tools/base/ContourSegmentationBaseTool.ts +276 -0
- package/src/tools/displayTools/Contour/contourDisplay.ts +1 -0
- package/src/tools/index.ts +6 -0
- package/src/types/ContourAnnotation.ts +13 -0
- package/src/types/ContourSegmentationAnnotation.ts +14 -0
- package/src/types/ContourTypes.ts +8 -1
- package/src/types/SegmentationStateTypes.ts +1 -1
- package/src/types/ToolSpecificAnnotationTypes.ts +17 -53
- package/src/types/index.ts +12 -0
- package/src/utilities/pointInSurroundingSphereCallback.ts +188 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { vec3 } from 'gl-matrix';
|
|
2
|
-
import { AnnotationTool } from '../base';
|
|
3
2
|
|
|
4
3
|
import {
|
|
5
4
|
getEnabledElement,
|
|
@@ -10,20 +9,13 @@ import {
|
|
|
10
9
|
VolumeViewport,
|
|
11
10
|
} from '@cornerstonejs/core';
|
|
12
11
|
import type { Types } from '@cornerstonejs/core';
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
getAnnotations,
|
|
16
|
-
removeAnnotation,
|
|
17
|
-
} from '../../stateManagement/annotation/annotationState';
|
|
18
|
-
import { isAnnotationVisible } from '../../stateManagement/annotation/annotationVisibility';
|
|
19
|
-
import {
|
|
20
|
-
drawHandles as drawHandlesSvg,
|
|
21
|
-
drawPolyline as drawPolylineSvg,
|
|
22
|
-
} from '../../drawingSvg';
|
|
12
|
+
import { removeAnnotation } from '../../stateManagement/annotation/annotationState';
|
|
13
|
+
import { drawHandles as drawHandlesSvg } from '../../drawingSvg';
|
|
23
14
|
import { state } from '../../store';
|
|
24
15
|
import { Events } from '../../enums';
|
|
25
16
|
import { resetElementCursor } from '../../cursors/elementCursor';
|
|
26
17
|
import {
|
|
18
|
+
Annotation,
|
|
27
19
|
EventTypes,
|
|
28
20
|
ToolHandle,
|
|
29
21
|
PublicToolProps,
|
|
@@ -36,15 +28,15 @@ import {
|
|
|
36
28
|
AnnotationCompletedEventDetail,
|
|
37
29
|
AnnotationModifiedEventDetail,
|
|
38
30
|
} from '../../types/EventTypes';
|
|
39
|
-
import { StyleSpecifier } from '../../types/AnnotationStyle';
|
|
40
31
|
|
|
41
32
|
import { LivewireScissors } from '../../utilities/livewire/LivewireScissors';
|
|
42
33
|
import { LivewirePath } from '../../utilities/livewire/LiveWirePath';
|
|
43
34
|
import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
|
|
35
|
+
import ContourSegmentationBaseTool from '../base/ContourSegmentationBaseTool';
|
|
44
36
|
|
|
45
37
|
const CLICK_CLOSE_CURVE_SQR_DIST = 10 ** 2; // px
|
|
46
38
|
|
|
47
|
-
class LivewireContourTool extends
|
|
39
|
+
class LivewireContourTool extends ContourSegmentationBaseTool {
|
|
48
40
|
public static toolName: string;
|
|
49
41
|
private scissors: LivewireScissors;
|
|
50
42
|
|
|
@@ -86,9 +78,9 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
86
78
|
* @returns The annotation object.
|
|
87
79
|
*
|
|
88
80
|
*/
|
|
89
|
-
addNewAnnotation
|
|
81
|
+
addNewAnnotation(
|
|
90
82
|
evt: EventTypes.InteractionEventType
|
|
91
|
-
): LivewireContourAnnotation
|
|
83
|
+
): LivewireContourAnnotation {
|
|
92
84
|
const eventDetail = evt.detail;
|
|
93
85
|
const { currentPoints, element } = eventDetail;
|
|
94
86
|
const { world: worldPos, canvas: canvasPos } = currentPoints;
|
|
@@ -98,17 +90,6 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
98
90
|
|
|
99
91
|
this.isDrawing = true;
|
|
100
92
|
|
|
101
|
-
const camera = viewport.getCamera();
|
|
102
|
-
const { viewPlaneNormal, viewUp } = camera;
|
|
103
|
-
|
|
104
|
-
const referencedImageId = this.getReferencedImageId(
|
|
105
|
-
viewport,
|
|
106
|
-
worldPos,
|
|
107
|
-
viewPlaneNormal,
|
|
108
|
-
viewUp
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
|
|
112
93
|
const defaultActor = viewport.getDefaultActor();
|
|
113
94
|
|
|
114
95
|
if (!defaultActor || !csUtils.isImageActor(defaultActor)) {
|
|
@@ -193,26 +174,9 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
193
174
|
confirmedPath.addPoint(startPos);
|
|
194
175
|
confirmedPath.addControlPoint(startPos);
|
|
195
176
|
|
|
196
|
-
const annotation
|
|
197
|
-
highlighted: true,
|
|
198
|
-
invalidated: true,
|
|
199
|
-
metadata: {
|
|
200
|
-
toolName: this.getToolName(),
|
|
201
|
-
viewPlaneNormal: <Types.Point3>[...viewPlaneNormal],
|
|
202
|
-
viewUp: <Types.Point3>[...viewUp],
|
|
203
|
-
FrameOfReferenceUID,
|
|
204
|
-
referencedImageId,
|
|
205
|
-
},
|
|
206
|
-
data: {
|
|
207
|
-
polyline: [],
|
|
208
|
-
handles: {
|
|
209
|
-
points: [[...worldPos]],
|
|
210
|
-
activeHandleIndex: null,
|
|
211
|
-
},
|
|
212
|
-
},
|
|
213
|
-
};
|
|
177
|
+
const annotation = this.createAnnotation(evt) as LivewireContourAnnotation;
|
|
214
178
|
|
|
215
|
-
addAnnotation(annotation, element);
|
|
179
|
+
this.addAnnotation(annotation, element);
|
|
216
180
|
|
|
217
181
|
const viewportIdsToRender = getViewportIdsWithToolToRender(
|
|
218
182
|
element,
|
|
@@ -237,7 +201,7 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
237
201
|
triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
|
|
238
202
|
|
|
239
203
|
return annotation;
|
|
240
|
-
}
|
|
204
|
+
}
|
|
241
205
|
|
|
242
206
|
/**
|
|
243
207
|
* It returns if the canvas point is near the provided annotation in the provided
|
|
@@ -259,7 +223,7 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
259
223
|
const enabledElement = getEnabledElement(element);
|
|
260
224
|
const { viewport } = enabledElement;
|
|
261
225
|
const proximitySquared = proximity * proximity;
|
|
262
|
-
const canvasPoints = annotation.data.polyline.map((p) =>
|
|
226
|
+
const canvasPoints = annotation.data.contour.polyline.map((p) =>
|
|
263
227
|
viewport.worldToCanvas(p)
|
|
264
228
|
);
|
|
265
229
|
|
|
@@ -515,7 +479,7 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
515
479
|
const { deltaPoints } = eventDetail as EventTypes.MouseDragEventDetail;
|
|
516
480
|
const worldPosDelta = deltaPoints.world;
|
|
517
481
|
|
|
518
|
-
const points = data.polyline;
|
|
482
|
+
const points = data.contour.polyline;
|
|
519
483
|
|
|
520
484
|
points.forEach((point) => {
|
|
521
485
|
point[0] += worldPosDelta[0];
|
|
@@ -636,129 +600,90 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
636
600
|
element.removeEventListener(Events.TOUCH_TAP, this._mouseDownCallback);
|
|
637
601
|
};
|
|
638
602
|
|
|
639
|
-
|
|
640
|
-
* it is used to draw the circleROI annotation in each
|
|
641
|
-
* request animation frame. It calculates the updated cached statistics if
|
|
642
|
-
* data is invalidated and cache it.
|
|
643
|
-
*
|
|
644
|
-
* @param enabledElement - The Cornerstone's enabledElement.
|
|
645
|
-
* @param svgDrawingHelper - The svgDrawingHelper providing the context for drawing.
|
|
646
|
-
*/
|
|
647
|
-
renderAnnotation = (
|
|
603
|
+
public renderAnnotation(
|
|
648
604
|
enabledElement: Types.IEnabledElement,
|
|
649
605
|
svgDrawingHelper: SVGDrawingHelper
|
|
650
|
-
): boolean
|
|
651
|
-
let renderStatus = false;
|
|
606
|
+
): boolean {
|
|
652
607
|
const { viewport } = enabledElement;
|
|
653
|
-
const { worldToCanvas } = viewport;
|
|
654
608
|
const { element } = viewport;
|
|
655
609
|
|
|
656
|
-
//
|
|
657
|
-
|
|
658
|
-
console.warn('Rendering Engine has been destroyed');
|
|
659
|
-
return renderStatus;
|
|
660
|
-
}
|
|
610
|
+
// Update the annotation that is in editData (being edited)
|
|
611
|
+
this._updateAnnotation(element, this.editData?.currentPath);
|
|
661
612
|
|
|
662
|
-
|
|
613
|
+
return super.renderAnnotation(enabledElement, svgDrawingHelper);
|
|
614
|
+
}
|
|
663
615
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
616
|
+
protected isContourSegmentationTool(): boolean {
|
|
617
|
+
// Disable contour segmenatation behavior because it shall be activated only
|
|
618
|
+
// for LivewireContourSegmentationTool
|
|
619
|
+
return false;
|
|
620
|
+
}
|
|
667
621
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
622
|
+
protected createAnnotation(evt: EventTypes.InteractionEventType): Annotation {
|
|
623
|
+
const contourSegmentationAnnotation = super.createAnnotation(evt);
|
|
624
|
+
const { world: worldPos } = evt.detail.currentPoints;
|
|
625
|
+
|
|
626
|
+
return <LivewireContourAnnotation>csUtils.deepMerge(
|
|
627
|
+
contourSegmentationAnnotation,
|
|
628
|
+
{
|
|
629
|
+
data: {
|
|
630
|
+
handles: {
|
|
631
|
+
points: [[...worldPos]],
|
|
632
|
+
},
|
|
633
|
+
},
|
|
634
|
+
}
|
|
671
635
|
);
|
|
636
|
+
}
|
|
672
637
|
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
638
|
+
/**
|
|
639
|
+
* Render an annotation instance
|
|
640
|
+
* @param renderContext - Render context that contains the annotation, enabledElement, etc.
|
|
641
|
+
* @returns True if the annotation is rendered or false otherwise
|
|
642
|
+
*/
|
|
643
|
+
protected renderAnnotationInstance(renderContext: {
|
|
644
|
+
enabledElement: Types.IEnabledElement;
|
|
645
|
+
targetId: string;
|
|
646
|
+
annotation: Annotation;
|
|
647
|
+
annotationStyle: Record<string, any>;
|
|
648
|
+
svgDrawingHelper: SVGDrawingHelper;
|
|
649
|
+
}): boolean {
|
|
650
|
+
const { enabledElement, svgDrawingHelper, annotationStyle } = renderContext;
|
|
651
|
+
const { viewport } = enabledElement;
|
|
652
|
+
const { worldToCanvas } = viewport;
|
|
653
|
+
const annotation = renderContext.annotation as LivewireContourAnnotation;
|
|
654
|
+
const { annotationUID, data } = annotation;
|
|
655
|
+
const { handles } = data;
|
|
677
656
|
const newAnnotation = this.editData?.newAnnotation;
|
|
678
|
-
const
|
|
679
|
-
toolGroupId: this.toolGroupId,
|
|
680
|
-
toolName: this.getToolName(),
|
|
681
|
-
viewportId: enabledElement.viewport.id,
|
|
682
|
-
};
|
|
683
|
-
|
|
684
|
-
// Update the annotation that is in editData (being edited)
|
|
685
|
-
this._updateAnnotation(element, this.editData?.currentPath);
|
|
657
|
+
const { lineWidth, lineDash, color } = annotationStyle;
|
|
686
658
|
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
const
|
|
696
|
-
'lineWidth',
|
|
697
|
-
styleSpecifier,
|
|
698
|
-
annotation
|
|
699
|
-
) as number;
|
|
700
|
-
const lineDash = this.getStyle(
|
|
701
|
-
'lineDash',
|
|
702
|
-
styleSpecifier,
|
|
703
|
-
annotation
|
|
704
|
-
) as string;
|
|
705
|
-
const color = this.getStyle(
|
|
706
|
-
'color',
|
|
707
|
-
styleSpecifier,
|
|
708
|
-
annotation
|
|
709
|
-
) as string;
|
|
710
|
-
|
|
711
|
-
const canvasCoordinates = points.map((p) =>
|
|
712
|
-
worldToCanvas(p)
|
|
713
|
-
) as Types.Point2[];
|
|
714
|
-
|
|
715
|
-
if (!isAnnotationVisible(annotationUID)) {
|
|
716
|
-
continue;
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
// Render the first control point only when the annotaion is drawn for the
|
|
720
|
-
// first time to make it easier to know where the user needs to click to
|
|
721
|
-
// to close the ROI.
|
|
722
|
-
if (
|
|
723
|
-
newAnnotation &&
|
|
724
|
-
annotation.annotationUID === this.editData?.annotation?.annotationUID
|
|
725
|
-
) {
|
|
726
|
-
const handleGroupUID = '0';
|
|
727
|
-
drawHandlesSvg(
|
|
728
|
-
svgDrawingHelper,
|
|
729
|
-
annotationUID,
|
|
730
|
-
handleGroupUID,
|
|
731
|
-
[canvasCoordinates[0]],
|
|
732
|
-
{
|
|
733
|
-
color,
|
|
734
|
-
lineDash,
|
|
735
|
-
lineWidth,
|
|
736
|
-
}
|
|
737
|
-
);
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
const canvasPolyline = data.polyline.map((worldPoint) =>
|
|
741
|
-
viewport.worldToCanvas(worldPoint)
|
|
742
|
-
);
|
|
659
|
+
// Render the first control point only when the annotaion is drawn for the
|
|
660
|
+
// first time to make it easier to know where the user needs to click to
|
|
661
|
+
// to close the ROI.
|
|
662
|
+
if (
|
|
663
|
+
newAnnotation &&
|
|
664
|
+
annotation.annotationUID === this.editData?.annotation?.annotationUID
|
|
665
|
+
) {
|
|
666
|
+
const handleGroupUID = '0';
|
|
667
|
+
const startPoint = worldToCanvas(handles.points[0]);
|
|
743
668
|
|
|
744
|
-
|
|
669
|
+
drawHandlesSvg(
|
|
745
670
|
svgDrawingHelper,
|
|
746
671
|
annotationUID,
|
|
747
|
-
|
|
748
|
-
|
|
672
|
+
handleGroupUID,
|
|
673
|
+
[startPoint],
|
|
749
674
|
{
|
|
750
675
|
color,
|
|
751
676
|
lineDash,
|
|
752
677
|
lineWidth,
|
|
753
678
|
}
|
|
754
679
|
);
|
|
755
|
-
|
|
756
|
-
renderStatus = true;
|
|
757
|
-
annotation.invalidated = false;
|
|
758
680
|
}
|
|
759
681
|
|
|
760
|
-
|
|
761
|
-
|
|
682
|
+
// Let the base class render the contour
|
|
683
|
+
super.renderAnnotationInstance(renderContext);
|
|
684
|
+
|
|
685
|
+
return true;
|
|
686
|
+
}
|
|
762
687
|
|
|
763
688
|
private _updateAnnotation(
|
|
764
689
|
element: HTMLDivElement,
|
|
@@ -770,7 +695,7 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
770
695
|
|
|
771
696
|
const { pointArray: imagePoints } = livewirePath;
|
|
772
697
|
const worldPolylinePoints: Types.Point3[] = [];
|
|
773
|
-
const { sliceToWorld } = this.editData;
|
|
698
|
+
const { annotation, sliceToWorld } = this.editData;
|
|
774
699
|
|
|
775
700
|
for (let i = 0, len = imagePoints.length; i < len; i++) {
|
|
776
701
|
const imagePoint = imagePoints[i];
|
|
@@ -782,7 +707,7 @@ class LivewireContourTool extends AnnotationTool {
|
|
|
782
707
|
worldPolylinePoints.push([...worldPolylinePoints[0]]);
|
|
783
708
|
}
|
|
784
709
|
|
|
785
|
-
|
|
710
|
+
annotation.data.contour.polyline = worldPolylinePoints;
|
|
786
711
|
}
|
|
787
712
|
}
|
|
788
713
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { utilities } from '@cornerstonejs/core';
|
|
2
|
+
import { PublicToolProps } from '../../types';
|
|
3
|
+
import PlanarFreehandROITool from './PlanarFreehandROITool';
|
|
4
|
+
|
|
5
|
+
class PlanarFreehandContourSegmentationTool extends PlanarFreehandROITool {
|
|
6
|
+
static toolName;
|
|
7
|
+
|
|
8
|
+
constructor(toolProps: PublicToolProps) {
|
|
9
|
+
const initialProps = utilities.deepMerge(
|
|
10
|
+
{
|
|
11
|
+
configuration: {
|
|
12
|
+
calculateStats: false,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
toolProps
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
super(initialProps);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
protected isContourSegmentationTool(): boolean {
|
|
22
|
+
// Re-enable contour segmentation behavior disabled by PlanarFreehandROITool
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
PlanarFreehandContourSegmentationTool.toolName =
|
|
28
|
+
'PlanarFreehandContourSegmentationTool';
|
|
29
|
+
|
|
30
|
+
export default PlanarFreehandContourSegmentationTool;
|