@cornerstonejs/tools 1.52.0 → 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 +2 -10
- 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/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 +2 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.js +14 -3
- 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.js +1 -1
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +4 -3
- package/dist/cjs/tools/annotation/LivewireContourTool.js +26 -26
- package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +1 -0
- 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 +37 -18
- 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/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/SplineProps.d.ts +1 -0
- 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/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/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/esm/drawingSvg/drawPath.js +49 -0
- package/dist/esm/drawingSvg/drawPath.js.map +1 -0
- package/dist/esm/drawingSvg/drawPolyline.js +2 -10
- 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/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 +12 -2
- 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 +1 -1
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourTool.js +28 -28
- package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +2 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/SplineROITool.js +37 -19
- 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/updateContourPolyline.js +38 -0
- package/dist/esm/utilities/contours/updateContourPolyline.js.map +1 -0
- 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/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/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 +2 -1
- 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/LivewireContourTool.d.ts +4 -3
- 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/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/SplineProps.d.ts +1 -0
- package/dist/types/types/SplineProps.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/updateContourPolyline.d.ts +11 -0
- package/dist/types/utilities/contours/updateContourPolyline.d.ts.map +1 -0
- 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/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 +12 -16
- package/src/drawingSvg/index.ts +2 -0
- 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 +29 -1
- 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 +1 -1
- package/src/tools/annotation/LivewireContourTool.ts +65 -38
- package/src/tools/annotation/PlanarFreehandROITool.ts +6 -1
- package/src/tools/annotation/SplineROITool.ts +75 -28
- 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/ContourTypes.ts +3 -0
- package/src/types/EventTypes.ts +9 -0
- package/src/types/ISpline.ts +3 -0
- package/src/types/SplineProps.ts +10 -0
- 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/updateContourPolyline.ts +74 -0
- 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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
|
+
import type { Annotation, ContourAnnotation } from '../../types';
|
|
3
|
+
import { getAnnotation } from '../../stateManagement';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Get child polylines data in world space for contour annotations that represent the holes
|
|
7
|
+
* @param annotation - Annotation
|
|
8
|
+
* @param viewport - Viewport used to convert the points from world to canvas space
|
|
9
|
+
* @returns An array that contains all child polylines (holes) in world space
|
|
10
|
+
*/
|
|
11
|
+
export default function getContourHolesDataWorld(
|
|
12
|
+
annotation: Annotation
|
|
13
|
+
): Types.Point3[][] {
|
|
14
|
+
const childAnnotationUIDs = annotation.childAnnotationUIDs ?? [];
|
|
15
|
+
|
|
16
|
+
return childAnnotationUIDs.map(
|
|
17
|
+
(uid) => (getAnnotation(uid) as ContourAnnotation).data.contour.polyline
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -4,6 +4,9 @@ import mergePoints from './mergePoints';
|
|
|
4
4
|
import detectContourHoles from './detectContourHoles';
|
|
5
5
|
import { generateContourSetsFromLabelmap } from './generateContourSetsFromLabelmap';
|
|
6
6
|
import AnnotationToPointData from './AnnotationToPointData';
|
|
7
|
+
import getContourHolesDataWorld from './getContourHolesDataWorld';
|
|
8
|
+
import getContourHolesDataCanvas from './getContourHolesDataCanvas';
|
|
9
|
+
import updateContourPolyline from './updateContourPolyline';
|
|
7
10
|
import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
|
|
8
11
|
import * as interpolation from './interpolation';
|
|
9
12
|
import findHandlePolylineIndex from './findHandlePolylineIndex';
|
|
@@ -15,6 +18,9 @@ export {
|
|
|
15
18
|
detectContourHoles,
|
|
16
19
|
generateContourSetsFromLabelmap,
|
|
17
20
|
AnnotationToPointData,
|
|
21
|
+
getContourHolesDataWorld,
|
|
22
|
+
getContourHolesDataCanvas,
|
|
23
|
+
updateContourPolyline,
|
|
18
24
|
interpolation,
|
|
19
25
|
acceptAutogeneratedInterpolations,
|
|
20
26
|
findHandlePolylineIndex,
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { utilities as csUtils } from '@cornerstonejs/core';
|
|
2
|
+
import { Types } from '@cornerstonejs/core';
|
|
3
|
+
import type { ContourAnnotation } from '../../types';
|
|
4
|
+
import type { ContourWindingDirection } from '../../types/ContourAnnotation';
|
|
5
|
+
import * as math from '../math';
|
|
6
|
+
import {
|
|
7
|
+
getParentAnnotation,
|
|
8
|
+
invalidateAnnotation,
|
|
9
|
+
} from '../../stateManagement';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Update the contour polyline data
|
|
13
|
+
* @param annotation - Contour annotation
|
|
14
|
+
* @param viewport - Viewport
|
|
15
|
+
* @param polylineData - Polyline data (points, winding direction and closed)
|
|
16
|
+
* @param transforms - Methods to convert points to/from canvas and world spaces
|
|
17
|
+
*/
|
|
18
|
+
export default function updateContourPolyline(
|
|
19
|
+
annotation: ContourAnnotation,
|
|
20
|
+
polylineData: {
|
|
21
|
+
points: Types.Point2[];
|
|
22
|
+
closed?: boolean;
|
|
23
|
+
targetWindingDirection?: ContourWindingDirection;
|
|
24
|
+
},
|
|
25
|
+
transforms: {
|
|
26
|
+
canvasToWorld: (point: Types.Point2) => Types.Point3;
|
|
27
|
+
}
|
|
28
|
+
) {
|
|
29
|
+
const { canvasToWorld } = transforms;
|
|
30
|
+
const { data } = annotation;
|
|
31
|
+
const { points: polyline, targetWindingDirection } = polylineData;
|
|
32
|
+
let { closed } = polylineData;
|
|
33
|
+
const numPoints = polyline.length;
|
|
34
|
+
const polylineWorldPoints = new Array(numPoints);
|
|
35
|
+
const currentWindingDirection = math.polyline.getWindingDirection(polyline);
|
|
36
|
+
const parentAnnotation = getParentAnnotation(annotation) as ContourAnnotation;
|
|
37
|
+
|
|
38
|
+
if (closed === undefined) {
|
|
39
|
+
let currentClosedState = false;
|
|
40
|
+
|
|
41
|
+
// With two points it is just a line and do not make sense to consider it closed
|
|
42
|
+
if (polyline.length > 3) {
|
|
43
|
+
const lastToFirstDist = math.point.distanceToPointSquared(
|
|
44
|
+
polyline[0],
|
|
45
|
+
polyline[numPoints - 1]
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
currentClosedState = csUtils.isEqual(0, lastToFirstDist);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
closed = currentClosedState;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// It must be in the opposite direction if it is a child annotation (hole)
|
|
55
|
+
let windingDirection = parentAnnotation
|
|
56
|
+
? parentAnnotation.data.contour.windingDirection * -1
|
|
57
|
+
: targetWindingDirection;
|
|
58
|
+
|
|
59
|
+
if (windingDirection === undefined) {
|
|
60
|
+
windingDirection = currentWindingDirection;
|
|
61
|
+
} else if (windingDirection !== currentWindingDirection) {
|
|
62
|
+
polyline.reverse();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
for (let i = 0; i < numPoints; i++) {
|
|
66
|
+
polylineWorldPoints[i] = canvasToWorld(polyline[i]);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
data.contour.polyline = polylineWorldPoints;
|
|
70
|
+
data.contour.closed = closed;
|
|
71
|
+
data.contour.windingDirection = windingDirection;
|
|
72
|
+
|
|
73
|
+
invalidateAnnotation(annotation);
|
|
74
|
+
}
|
|
@@ -10,7 +10,7 @@ import isClosed from './isClosed';
|
|
|
10
10
|
*
|
|
11
11
|
* @param polyline - Polyline points (2D)
|
|
12
12
|
* @param point - 2D Point
|
|
13
|
-
* @returns True
|
|
13
|
+
* @returns True if the point is inside the polyline or false otherwise
|
|
14
14
|
*/
|
|
15
15
|
export default function containsPoint(
|
|
16
16
|
polyline: Types.Point2[],
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
|
+
import containsPoint from './containsPoint';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a polyline contains a set of points.
|
|
6
|
+
*
|
|
7
|
+
* @param polyline - Polyline points (2D)
|
|
8
|
+
* @param points - 2D points to verify
|
|
9
|
+
* @returns True if all points are inside the polyline or false otherwise
|
|
10
|
+
*/
|
|
11
|
+
export default function containsPoints(
|
|
12
|
+
polyline: Types.Point2[],
|
|
13
|
+
points: Types.Point2[]
|
|
14
|
+
): boolean {
|
|
15
|
+
for (let i = 0, numPoint = points.length; i < numPoint; i++) {
|
|
16
|
+
if (!containsPoint(polyline, points[i])) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
|
+
import getSignedArea from './getSignedArea';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Calculate the winding direction (CW or CCW) of a polyline
|
|
6
|
+
* @param polyline - Polyline (2D)
|
|
7
|
+
* @returns 1 for CW or -1 for CCW polylines
|
|
8
|
+
*/
|
|
9
|
+
export default function getWindingDirection(polyline: Types.Point2[]): number {
|
|
10
|
+
const signedArea = getSignedArea(polyline);
|
|
11
|
+
|
|
12
|
+
// Return 1 or -1 which is also possible to convert into ContourOrientation
|
|
13
|
+
return signedArea >= 0 ? 1 : -1;
|
|
14
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import isClosed from './isClosed';
|
|
2
2
|
import containsPoint from './containsPoint';
|
|
3
|
+
import containsPoints from './containsPoints';
|
|
3
4
|
import getAABB from './getAABB';
|
|
4
5
|
import getArea from './getArea';
|
|
5
6
|
import getSignedArea from './getSignedArea';
|
|
7
|
+
import getWindingDirection from './getWindingDirection';
|
|
6
8
|
import getNormal3 from './getNormal3';
|
|
7
9
|
import getNormal2 from './getNormal2';
|
|
8
10
|
import { mergePolylines, subtractPolylines } from './combinePolyline';
|
|
@@ -19,9 +21,11 @@ import pointCanProjectOnLine from './pointCanProjectOnLine';
|
|
|
19
21
|
export {
|
|
20
22
|
isClosed,
|
|
21
23
|
containsPoint,
|
|
24
|
+
containsPoints,
|
|
22
25
|
getAABB,
|
|
23
26
|
getArea,
|
|
24
27
|
getSignedArea,
|
|
28
|
+
getWindingDirection,
|
|
25
29
|
getNormal3,
|
|
26
30
|
getNormal2,
|
|
27
31
|
intersectPolyline,
|