@cornerstonejs/tools 1.52.0 → 1.54.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.
Files changed (909) hide show
  1. package/dist/cjs/drawingSvg/drawPath.d.ts +11 -0
  2. package/dist/cjs/drawingSvg/drawPath.js +55 -0
  3. package/dist/cjs/drawingSvg/drawPath.js.map +1 -0
  4. package/dist/cjs/drawingSvg/drawPolyline.d.ts +1 -1
  5. package/dist/cjs/drawingSvg/drawPolyline.js +2 -10
  6. package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
  7. package/dist/cjs/drawingSvg/index.d.ts +2 -1
  8. package/dist/cjs/drawingSvg/index.js +3 -1
  9. package/dist/cjs/drawingSvg/index.js.map +1 -1
  10. package/dist/cjs/enums/WorkerTypes.d.ts +8 -0
  11. package/dist/cjs/enums/WorkerTypes.js +12 -0
  12. package/dist/cjs/enums/WorkerTypes.js.map +1 -0
  13. package/dist/cjs/enums/index.d.ts +2 -1
  14. package/dist/cjs/enums/index.js +3 -1
  15. package/dist/cjs/enums/index.js.map +1 -1
  16. package/dist/cjs/eventDispatchers/shared/getActiveToolForMouseEvent.js.map +1 -1
  17. package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +1 -1
  18. package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +171 -89
  19. package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -1
  20. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js +4 -3
  21. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js.map +1 -1
  22. package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +58 -47
  23. package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -1
  24. package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +1 -0
  25. package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +5 -0
  26. package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +1 -1
  27. package/dist/cjs/stateManagement/annotation/annotationState.d.ts +7 -1
  28. package/dist/cjs/stateManagement/annotation/annotationState.js +54 -1
  29. package/dist/cjs/stateManagement/annotation/annotationState.js.map +1 -1
  30. package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +2 -1
  31. package/dist/cjs/stateManagement/annotation/helpers/state.js +14 -3
  32. package/dist/cjs/stateManagement/annotation/helpers/state.js.map +1 -1
  33. package/dist/cjs/stateManagement/index.d.ts +6 -1
  34. package/dist/cjs/stateManagement/index.js +6 -1
  35. package/dist/cjs/stateManagement/index.js.map +1 -1
  36. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +4 -1
  37. package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
  38. package/dist/cjs/stateManagement/segmentation/addRepresentationData.d.ts +12 -0
  39. package/dist/cjs/stateManagement/segmentation/addRepresentationData.js +35 -0
  40. package/dist/cjs/stateManagement/segmentation/addRepresentationData.js.map +1 -0
  41. package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentation.js +32 -14
  42. package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentation.js.map +1 -1
  43. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js +3 -52
  44. package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
  45. package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +9 -2
  46. package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.js +44 -27
  47. package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.js.map +1 -1
  48. package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +13 -0
  49. package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.js +52 -26
  50. package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.js.map +1 -1
  51. package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.js +6 -9
  52. package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.js.map +1 -1
  53. package/dist/cjs/stateManagement/segmentation/index.d.ts +3 -1
  54. package/dist/cjs/stateManagement/segmentation/index.js +5 -1
  55. package/dist/cjs/stateManagement/segmentation/index.js.map +1 -1
  56. package/dist/cjs/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts +2 -0
  57. package/dist/cjs/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js +8 -0
  58. package/dist/cjs/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js.map +1 -0
  59. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts +2 -0
  60. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +11 -0
  61. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js.map +1 -0
  62. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts +7 -0
  63. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +162 -0
  64. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js.map +1 -0
  65. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts +6 -0
  66. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js +71 -0
  67. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js.map +1 -0
  68. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts +6 -0
  69. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +120 -0
  70. package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js.map +1 -0
  71. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts +4 -0
  72. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js +12 -0
  73. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js.map +1 -0
  74. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts +3 -0
  75. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js +52 -0
  76. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js.map +1 -0
  77. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +3 -0
  78. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +60 -0
  79. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js.map +1 -0
  80. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts +5 -0
  81. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +56 -0
  82. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js.map +1 -0
  83. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts +12 -0
  84. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +94 -0
  85. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js.map +1 -0
  86. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts +1 -0
  87. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +74 -0
  88. package/dist/cjs/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js.map +1 -0
  89. package/dist/cjs/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -0
  90. package/dist/cjs/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +83 -0
  91. package/dist/cjs/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js.map +1 -0
  92. package/dist/cjs/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +3 -0
  93. package/dist/cjs/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +64 -0
  94. package/dist/cjs/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js.map +1 -0
  95. package/dist/cjs/stateManagement/segmentation/polySeg/index.d.ts +5 -0
  96. package/dist/cjs/stateManagement/segmentation/polySeg/index.js +12 -0
  97. package/dist/cjs/stateManagement/segmentation/polySeg/index.js.map +1 -0
  98. package/dist/cjs/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts +1 -0
  99. package/dist/cjs/stateManagement/segmentation/polySeg/registerPolySegWorker.js +27 -0
  100. package/dist/cjs/stateManagement/segmentation/polySeg/registerPolySegWorker.js.map +1 -0
  101. package/dist/cjs/stateManagement/segmentation/segmentIndex.js +4 -0
  102. package/dist/cjs/stateManagement/segmentation/segmentIndex.js.map +1 -1
  103. package/dist/cjs/stateManagement/segmentation/segmentationState.d.ts +6 -1
  104. package/dist/cjs/stateManagement/segmentation/segmentationState.js +30 -1
  105. package/dist/cjs/stateManagement/segmentation/segmentationState.js.map +1 -1
  106. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +3 -1
  107. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +3 -2
  108. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  109. package/dist/cjs/tools/ScaleOverlayTool.js +2 -1
  110. package/dist/cjs/tools/ScaleOverlayTool.js.map +1 -1
  111. package/dist/cjs/tools/SegmentationIntersectionTool.js +1 -1
  112. package/dist/cjs/tools/SegmentationIntersectionTool.js.map +1 -1
  113. package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js +1 -1
  114. package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
  115. package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +4 -3
  116. package/dist/cjs/tools/annotation/LivewireContourTool.js +26 -26
  117. package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
  118. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
  119. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js +0 -11
  120. package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
  121. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +2 -2
  122. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  123. package/dist/cjs/tools/annotation/ProbeTool.js +3 -0
  124. package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
  125. package/dist/cjs/tools/annotation/SplineROITool.d.ts +6 -3
  126. package/dist/cjs/tools/annotation/SplineROITool.js +37 -18
  127. package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
  128. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +12 -7
  129. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  130. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +25 -19
  131. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  132. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +16 -10
  133. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  134. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
  135. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
  136. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js +19 -7
  137. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
  138. package/dist/cjs/tools/annotation/splines/LinearSpline.js +1 -1
  139. package/dist/cjs/tools/annotation/splines/LinearSpline.js.map +1 -1
  140. package/dist/cjs/tools/annotation/splines/Spline.d.ts +2 -0
  141. package/dist/cjs/tools/annotation/splines/Spline.js +7 -3
  142. package/dist/cjs/tools/annotation/splines/Spline.js.map +1 -1
  143. package/dist/cjs/tools/base/AnnotationTool.js +1 -1
  144. package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
  145. package/dist/cjs/tools/base/BaseTool.js.map +1 -1
  146. package/dist/cjs/tools/base/ContourBaseTool.d.ts +1 -0
  147. package/dist/cjs/tools/base/ContourBaseTool.js +18 -1
  148. package/dist/cjs/tools/base/ContourBaseTool.js.map +1 -1
  149. package/dist/cjs/tools/base/ContourSegmentationBaseTool.d.ts +1 -2
  150. package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +28 -24
  151. package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -1
  152. package/dist/cjs/tools/displayTools/Contour/contourConfig.js +1 -0
  153. package/dist/cjs/tools/displayTools/Contour/contourConfig.js.map +1 -1
  154. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +9 -6
  155. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  156. package/dist/cjs/tools/displayTools/Contour/removeContourFromElement.js.map +1 -1
  157. package/dist/cjs/tools/displayTools/Contour/{addContourSetsToElement.d.ts → vtkContour/addContourSetsToElement.d.ts} +1 -1
  158. package/dist/cjs/tools/displayTools/Contour/vtkContour/addContourSetsToElement.js.map +1 -0
  159. package/dist/cjs/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.d.ts +3 -0
  160. package/dist/cjs/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.js +14 -0
  161. package/dist/cjs/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.js.map +1 -0
  162. package/dist/cjs/tools/displayTools/Contour/vtkContour/contourConfigCache.js.map +1 -0
  163. package/dist/cjs/tools/displayTools/Contour/vtkContour/updateVTKContourSets.d.ts +3 -0
  164. package/dist/cjs/tools/displayTools/Contour/{updateContourSets.js → vtkContour/updateVTKContourSets.js} +4 -4
  165. package/dist/cjs/tools/displayTools/Contour/vtkContour/updateVTKContourSets.js.map +1 -0
  166. package/dist/cjs/tools/displayTools/Contour/{utils.d.ts → vtkContour/utils.d.ts} +2 -2
  167. package/dist/cjs/tools/displayTools/Contour/vtkContour/utils.js.map +1 -0
  168. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js +1 -1
  169. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
  170. package/dist/cjs/tools/displayTools/Labelmap/index.d.ts +2 -1
  171. package/dist/cjs/tools/displayTools/Labelmap/index.js +4 -1
  172. package/dist/cjs/tools/displayTools/Labelmap/index.js.map +1 -1
  173. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +20 -2
  174. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  175. package/dist/cjs/tools/displayTools/Labelmap/validateLabelmap.d.ts +4 -0
  176. package/dist/cjs/tools/displayTools/Labelmap/validateLabelmap.js +38 -0
  177. package/dist/cjs/tools/displayTools/Labelmap/validateLabelmap.js.map +1 -0
  178. package/dist/cjs/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +3 -0
  179. package/dist/cjs/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +112 -0
  180. package/dist/cjs/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js.map +1 -0
  181. package/dist/cjs/tools/displayTools/Surface/surfaceConfig.d.ts +3 -0
  182. package/dist/cjs/tools/displayTools/Surface/surfaceConfig.js +11 -0
  183. package/dist/cjs/tools/displayTools/Surface/surfaceConfig.js.map +1 -0
  184. package/dist/cjs/tools/displayTools/Surface/surfaceDisplay.d.ts +7 -0
  185. package/dist/cjs/tools/displayTools/Surface/surfaceDisplay.js +173 -27
  186. package/dist/cjs/tools/displayTools/Surface/surfaceDisplay.js.map +1 -1
  187. package/dist/cjs/tools/displayTools/registerDisplayToolsWorker.d.ts +1 -0
  188. package/dist/cjs/tools/displayTools/registerDisplayToolsWorker.js +27 -0
  189. package/dist/cjs/tools/displayTools/registerDisplayToolsWorker.js.map +1 -0
  190. package/dist/cjs/tools/segmentation/BrushTool.js +1 -1
  191. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  192. package/dist/cjs/tools/segmentation/CircleScissorsTool.js +1 -1
  193. package/dist/cjs/tools/segmentation/CircleScissorsTool.js.map +1 -1
  194. package/dist/cjs/tools/segmentation/PaintFillTool.js +1 -1
  195. package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
  196. package/dist/cjs/tools/segmentation/RectangleScissorsTool.js +1 -1
  197. package/dist/cjs/tools/segmentation/RectangleScissorsTool.js.map +1 -1
  198. package/dist/cjs/tools/segmentation/SegmentSelectTool.d.ts +6 -2
  199. package/dist/cjs/tools/segmentation/SegmentSelectTool.js +45 -35
  200. package/dist/cjs/tools/segmentation/SegmentSelectTool.js.map +1 -1
  201. package/dist/cjs/tools/segmentation/SphereScissorsTool.js +1 -1
  202. package/dist/cjs/tools/segmentation/SphereScissorsTool.js.map +1 -1
  203. package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js +7 -5
  204. package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js.map +1 -1
  205. package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js +1 -1
  206. package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js.map +1 -1
  207. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +14 -5
  208. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
  209. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js +21 -9
  210. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
  211. package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +5 -5
  212. package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.js +15 -8
  213. package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.js.map +1 -1
  214. package/dist/cjs/types/AnnotationTypes.d.ts +2 -0
  215. package/dist/cjs/types/ContourAnnotation.d.ts +6 -0
  216. package/dist/cjs/types/ContourAnnotation.js +7 -0
  217. package/dist/cjs/types/ContourAnnotation.js.map +1 -1
  218. package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +0 -1
  219. package/dist/cjs/types/ContourTypes.d.ts +1 -0
  220. package/dist/cjs/types/EventTypes.d.ts +4 -1
  221. package/dist/cjs/types/ISpline.d.ts +1 -0
  222. package/dist/cjs/types/LabelmapTypes.d.ts +5 -1
  223. package/dist/cjs/types/PolySeg.d.ts +6 -0
  224. package/dist/cjs/types/PolySeg.js +3 -0
  225. package/dist/cjs/types/PolySeg.js.map +1 -0
  226. package/dist/cjs/types/SegmentationStateTypes.d.ts +12 -2
  227. package/dist/cjs/types/SplineProps.d.ts +1 -0
  228. package/dist/cjs/types/SurfaceTypes.d.ts +1 -1
  229. package/dist/cjs/types/index.d.ts +2 -1
  230. package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.js +6 -6
  231. package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.js.map +1 -1
  232. package/dist/cjs/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts +2 -0
  233. package/dist/cjs/utilities/contourSegmentation/addContourSegmentationAnnotation.js +20 -0
  234. package/dist/cjs/utilities/contourSegmentation/addContourSegmentationAnnotation.js.map +1 -0
  235. package/dist/cjs/utilities/contourSegmentation/areSameSegment.js +0 -2
  236. package/dist/cjs/utilities/contourSegmentation/areSameSegment.js.map +1 -1
  237. package/dist/cjs/utilities/contourSegmentation/index.d.ts +2 -0
  238. package/dist/cjs/utilities/contourSegmentation/index.js +5 -1
  239. package/dist/cjs/utilities/contourSegmentation/index.js.map +1 -1
  240. package/dist/cjs/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts +2 -0
  241. package/dist/cjs/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +19 -0
  242. package/dist/cjs/utilities/contourSegmentation/removeContourSegmentationAnnotation.js.map +1 -0
  243. package/dist/cjs/utilities/contours/detectContourHoles.js.map +1 -1
  244. package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.js +2 -2
  245. package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.js.map +1 -1
  246. package/dist/cjs/utilities/contours/getContourHolesDataCanvas.d.ts +3 -0
  247. package/dist/cjs/utilities/contours/getContourHolesDataCanvas.js +21 -0
  248. package/dist/cjs/utilities/contours/getContourHolesDataCanvas.js.map +1 -0
  249. package/dist/cjs/utilities/contours/getContourHolesDataWorld.d.ts +3 -0
  250. package/dist/cjs/utilities/contours/getContourHolesDataWorld.js +10 -0
  251. package/dist/cjs/utilities/contours/getContourHolesDataWorld.js.map +1 -0
  252. package/dist/cjs/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts +11 -0
  253. package/dist/cjs/utilities/contours/getDeduplicatedVTKPolyDataPoints.js +50 -0
  254. package/dist/cjs/utilities/contours/getDeduplicatedVTKPolyDataPoints.js.map +1 -0
  255. package/dist/cjs/utilities/contours/index.d.ts +5 -2
  256. package/dist/cjs/utilities/contours/index.js +9 -3
  257. package/dist/cjs/utilities/contours/index.js.map +1 -1
  258. package/dist/cjs/utilities/contours/updateContourPolyline.d.ts +10 -0
  259. package/dist/cjs/utilities/contours/updateContourPolyline.js +64 -0
  260. package/dist/cjs/utilities/contours/updateContourPolyline.js.map +1 -0
  261. package/dist/cjs/utilities/index.d.ts +3 -1
  262. package/dist/cjs/utilities/index.js +5 -1
  263. package/dist/cjs/utilities/index.js.map +1 -1
  264. package/dist/cjs/utilities/math/polyline/containsPoint.js.map +1 -1
  265. package/dist/cjs/utilities/math/polyline/containsPoints.d.ts +2 -0
  266. package/dist/cjs/utilities/math/polyline/containsPoints.js +16 -0
  267. package/dist/cjs/utilities/math/polyline/containsPoints.js.map +1 -0
  268. package/dist/cjs/utilities/math/polyline/getWindingDirection.d.ts +2 -0
  269. package/dist/cjs/utilities/math/polyline/getWindingDirection.js +12 -0
  270. package/dist/cjs/utilities/math/polyline/getWindingDirection.js.map +1 -0
  271. package/dist/cjs/utilities/math/polyline/index.d.ts +4 -1
  272. package/dist/cjs/utilities/math/polyline/index.js +7 -1
  273. package/dist/cjs/utilities/math/polyline/index.js.map +1 -1
  274. package/dist/cjs/utilities/math/polyline/isPointInsidePolyline3D.d.ts +2 -0
  275. package/dist/cjs/utilities/math/polyline/isPointInsidePolyline3D.js +34 -0
  276. package/dist/cjs/utilities/math/polyline/isPointInsidePolyline3D.js.map +1 -0
  277. package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +1 -0
  278. package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.js +0 -1
  279. package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.js.map +1 -1
  280. package/dist/cjs/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts +1 -0
  281. package/dist/cjs/utilities/segmentation/getHoveredContourSegmentationAnnotation.js +18 -0
  282. package/dist/cjs/utilities/segmentation/getHoveredContourSegmentationAnnotation.js.map +1 -0
  283. package/dist/cjs/utilities/segmentation/getSegmentAtLabelmapBorder.d.ts +7 -0
  284. package/dist/cjs/utilities/segmentation/getSegmentAtLabelmapBorder.js +77 -0
  285. package/dist/cjs/utilities/segmentation/getSegmentAtLabelmapBorder.js.map +1 -0
  286. package/dist/cjs/utilities/segmentation/getSegmentAtWorldPoint.d.ts +11 -0
  287. package/dist/cjs/utilities/segmentation/getSegmentAtWorldPoint.js +82 -0
  288. package/dist/cjs/utilities/segmentation/getSegmentAtWorldPoint.js.map +1 -0
  289. package/dist/cjs/utilities/segmentation/getUniqueSegmentIndices.d.ts +2 -0
  290. package/dist/cjs/utilities/segmentation/getUniqueSegmentIndices.js +59 -0
  291. package/dist/cjs/utilities/segmentation/getUniqueSegmentIndices.js.map +1 -0
  292. package/dist/cjs/utilities/segmentation/index.d.ts +5 -1
  293. package/dist/cjs/utilities/segmentation/index.js +9 -1
  294. package/dist/cjs/utilities/segmentation/index.js.map +1 -1
  295. package/dist/cjs/utilities/triggerAnnotationRenderForToolGroupIds.d.ts +2 -0
  296. package/dist/cjs/utilities/triggerAnnotationRenderForToolGroupIds.js +32 -0
  297. package/dist/cjs/utilities/triggerAnnotationRenderForToolGroupIds.js.map +1 -0
  298. package/dist/cjs/workers/clippingPlaneWorker.d.ts +1 -0
  299. package/dist/cjs/workers/clippingPlaneWorker.js +63 -0
  300. package/dist/cjs/workers/clippingPlaneWorker.js.map +1 -0
  301. package/dist/cjs/workers/polySegConverters.d.ts +1 -0
  302. package/dist/cjs/workers/polySegConverters.js +267 -0
  303. package/dist/cjs/workers/polySegConverters.js.map +1 -0
  304. package/dist/esm/drawingSvg/drawPath.js +49 -0
  305. package/dist/esm/drawingSvg/drawPath.js.map +1 -0
  306. package/dist/esm/drawingSvg/drawPolyline.js +2 -10
  307. package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
  308. package/dist/esm/drawingSvg/index.js +2 -1
  309. package/dist/esm/drawingSvg/index.js.map +1 -1
  310. package/dist/esm/enums/WorkerTypes.js +10 -0
  311. package/dist/esm/enums/WorkerTypes.js.map +1 -0
  312. package/dist/esm/enums/index.js +2 -1
  313. package/dist/esm/enums/index.js.map +1 -1
  314. package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js.map +1 -1
  315. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +112 -43
  316. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -1
  317. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +3 -3
  318. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js.map +1 -1
  319. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +59 -45
  320. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -1
  321. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +5 -0
  322. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +1 -1
  323. package/dist/esm/stateManagement/annotation/annotationState.js +46 -1
  324. package/dist/esm/stateManagement/annotation/annotationState.js.map +1 -1
  325. package/dist/esm/stateManagement/annotation/helpers/state.js +12 -2
  326. package/dist/esm/stateManagement/annotation/helpers/state.js.map +1 -1
  327. package/dist/esm/stateManagement/index.js +2 -2
  328. package/dist/esm/stateManagement/index.js.map +1 -1
  329. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +4 -1
  330. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
  331. package/dist/esm/stateManagement/segmentation/addRepresentationData.js +30 -0
  332. package/dist/esm/stateManagement/segmentation/addRepresentationData.js.map +1 -0
  333. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js +32 -15
  334. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js.map +1 -1
  335. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +1 -46
  336. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
  337. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +42 -27
  338. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js.map +1 -1
  339. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +49 -25
  340. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js.map +1 -1
  341. package/dist/esm/stateManagement/segmentation/helpers/validateSegmentationInput.js +6 -6
  342. package/dist/esm/stateManagement/segmentation/helpers/validateSegmentationInput.js.map +1 -1
  343. package/dist/esm/stateManagement/segmentation/index.js +3 -1
  344. package/dist/esm/stateManagement/segmentation/index.js.map +1 -1
  345. package/dist/esm/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js +4 -0
  346. package/dist/esm/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js.map +1 -0
  347. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +7 -0
  348. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js.map +1 -0
  349. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +142 -0
  350. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js.map +1 -0
  351. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js +53 -0
  352. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js.map +1 -0
  353. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +108 -0
  354. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js.map +1 -0
  355. package/dist/esm/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js +8 -0
  356. package/dist/esm/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js.map +1 -0
  357. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js +37 -0
  358. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js.map +1 -0
  359. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +45 -0
  360. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js.map +1 -0
  361. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +41 -0
  362. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js.map +1 -0
  363. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +78 -0
  364. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js.map +1 -0
  365. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +59 -0
  366. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js.map +1 -0
  367. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +68 -0
  368. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js.map +1 -0
  369. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +47 -0
  370. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js.map +1 -0
  371. package/dist/esm/stateManagement/segmentation/polySeg/index.js +6 -0
  372. package/dist/esm/stateManagement/segmentation/polySeg/index.js.map +1 -0
  373. package/dist/esm/stateManagement/segmentation/polySeg/registerPolySegWorker.js +23 -0
  374. package/dist/esm/stateManagement/segmentation/polySeg/registerPolySegWorker.js.map +1 -0
  375. package/dist/esm/stateManagement/segmentation/segmentIndex.js +4 -0
  376. package/dist/esm/stateManagement/segmentation/segmentIndex.js.map +1 -1
  377. package/dist/esm/stateManagement/segmentation/segmentationState.js +28 -1
  378. package/dist/esm/stateManagement/segmentation/segmentationState.js.map +1 -1
  379. package/dist/esm/store/ToolGroupManager/ToolGroup.js +3 -2
  380. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  381. package/dist/esm/tools/ScaleOverlayTool.js +2 -1
  382. package/dist/esm/tools/ScaleOverlayTool.js.map +1 -1
  383. package/dist/esm/tools/SegmentationIntersectionTool.js +1 -1
  384. package/dist/esm/tools/SegmentationIntersectionTool.js.map +1 -1
  385. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +1 -1
  386. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
  387. package/dist/esm/tools/annotation/LivewireContourTool.js +28 -28
  388. package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
  389. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +0 -11
  390. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
  391. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +3 -3
  392. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  393. package/dist/esm/tools/annotation/ProbeTool.js +3 -0
  394. package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
  395. package/dist/esm/tools/annotation/SplineROITool.js +37 -19
  396. package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
  397. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +12 -7
  398. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  399. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +26 -20
  400. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  401. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +16 -10
  402. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  403. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
  404. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
  405. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +20 -8
  406. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
  407. package/dist/esm/tools/annotation/splines/LinearSpline.js +1 -1
  408. package/dist/esm/tools/annotation/splines/LinearSpline.js.map +1 -1
  409. package/dist/esm/tools/annotation/splines/Spline.js +5 -1
  410. package/dist/esm/tools/annotation/splines/Spline.js.map +1 -1
  411. package/dist/esm/tools/base/AnnotationTool.js +1 -1
  412. package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
  413. package/dist/esm/tools/base/BaseTool.js +1 -1
  414. package/dist/esm/tools/base/BaseTool.js.map +1 -1
  415. package/dist/esm/tools/base/ContourBaseTool.js +20 -3
  416. package/dist/esm/tools/base/ContourBaseTool.js.map +1 -1
  417. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +28 -24
  418. package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -1
  419. package/dist/esm/tools/displayTools/Contour/contourConfig.js +1 -0
  420. package/dist/esm/tools/displayTools/Contour/contourConfig.js.map +1 -1
  421. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +10 -7
  422. package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  423. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js.map +1 -1
  424. package/dist/esm/tools/displayTools/Contour/vtkContour/addContourSetsToElement.js.map +1 -0
  425. package/dist/esm/tools/displayTools/Contour/{addOrUpdateContourSets.js → vtkContour/addOrUpdateVTKContourSets.js} +4 -4
  426. package/dist/esm/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.js.map +1 -0
  427. package/dist/esm/tools/displayTools/Contour/vtkContour/contourConfigCache.js.map +1 -0
  428. package/dist/esm/tools/displayTools/Contour/{updateContourSets.js → vtkContour/updateVTKContourSets.js} +2 -2
  429. package/dist/esm/tools/displayTools/Contour/vtkContour/updateVTKContourSets.js.map +1 -0
  430. package/dist/esm/tools/displayTools/Contour/vtkContour/utils.js.map +1 -0
  431. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +1 -1
  432. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
  433. package/dist/esm/tools/displayTools/Labelmap/index.js +2 -1
  434. package/dist/esm/tools/displayTools/Labelmap/index.js.map +1 -1
  435. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +20 -2
  436. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  437. package/dist/esm/tools/displayTools/Labelmap/validateLabelmap.js +33 -0
  438. package/dist/esm/tools/displayTools/Labelmap/validateLabelmap.js.map +1 -0
  439. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +106 -0
  440. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js.map +1 -0
  441. package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +9 -0
  442. package/dist/esm/tools/displayTools/Surface/surfaceConfig.js.map +1 -0
  443. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +162 -28
  444. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js.map +1 -1
  445. package/dist/esm/tools/displayTools/registerDisplayToolsWorker.js +23 -0
  446. package/dist/esm/tools/displayTools/registerDisplayToolsWorker.js.map +1 -0
  447. package/dist/esm/tools/segmentation/BrushTool.js +1 -1
  448. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  449. package/dist/esm/tools/segmentation/CircleScissorsTool.js +1 -1
  450. package/dist/esm/tools/segmentation/CircleScissorsTool.js.map +1 -1
  451. package/dist/esm/tools/segmentation/PaintFillTool.js +1 -1
  452. package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
  453. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +1 -1
  454. package/dist/esm/tools/segmentation/RectangleScissorsTool.js.map +1 -1
  455. package/dist/esm/tools/segmentation/SegmentSelectTool.js +47 -37
  456. package/dist/esm/tools/segmentation/SegmentSelectTool.js.map +1 -1
  457. package/dist/esm/tools/segmentation/SphereScissorsTool.js +1 -1
  458. package/dist/esm/tools/segmentation/SphereScissorsTool.js.map +1 -1
  459. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +7 -5
  460. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js.map +1 -1
  461. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +1 -1
  462. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js.map +1 -1
  463. package/dist/esm/tools/segmentation/strategies/fillSphere.js +14 -5
  464. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
  465. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +21 -9
  466. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
  467. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +15 -7
  468. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js.map +1 -1
  469. package/dist/esm/types/ContourAnnotation.js +6 -1
  470. package/dist/esm/types/ContourAnnotation.js.map +1 -1
  471. package/dist/esm/types/PolySeg.js +2 -0
  472. package/dist/esm/types/PolySeg.js.map +1 -0
  473. package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.js +3 -2
  474. package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.js.map +1 -1
  475. package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +16 -0
  476. package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js.map +1 -0
  477. package/dist/esm/utilities/contourSegmentation/areSameSegment.js +0 -2
  478. package/dist/esm/utilities/contourSegmentation/areSameSegment.js.map +1 -1
  479. package/dist/esm/utilities/contourSegmentation/index.js +2 -0
  480. package/dist/esm/utilities/contourSegmentation/index.js.map +1 -1
  481. package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +15 -0
  482. package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js.map +1 -0
  483. package/dist/esm/utilities/contours/detectContourHoles.js.map +1 -1
  484. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +2 -2
  485. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js.map +1 -1
  486. package/dist/esm/utilities/contours/getContourHolesDataCanvas.js +15 -0
  487. package/dist/esm/utilities/contours/getContourHolesDataCanvas.js.map +1 -0
  488. package/dist/esm/utilities/contours/getContourHolesDataWorld.js +6 -0
  489. package/dist/esm/utilities/contours/getContourHolesDataWorld.js.map +1 -0
  490. package/dist/esm/utilities/contours/getDeduplicatedVTKPolyDataPoints.js +46 -0
  491. package/dist/esm/utilities/contours/getDeduplicatedVTKPolyDataPoints.js.map +1 -0
  492. package/dist/esm/utilities/contours/index.js +5 -2
  493. package/dist/esm/utilities/contours/index.js.map +1 -1
  494. package/dist/esm/utilities/contours/updateContourPolyline.js +38 -0
  495. package/dist/esm/utilities/contours/updateContourPolyline.js.map +1 -0
  496. package/dist/esm/utilities/index.js +3 -1
  497. package/dist/esm/utilities/index.js.map +1 -1
  498. package/dist/esm/utilities/math/polyline/containsPoint.js.map +1 -1
  499. package/dist/esm/utilities/math/polyline/containsPoints.js +10 -0
  500. package/dist/esm/utilities/math/polyline/containsPoints.js.map +1 -0
  501. package/dist/esm/utilities/math/polyline/getWindingDirection.js +6 -0
  502. package/dist/esm/utilities/math/polyline/getWindingDirection.js.map +1 -0
  503. package/dist/esm/utilities/math/polyline/index.js +4 -1
  504. package/dist/esm/utilities/math/polyline/index.js.map +1 -1
  505. package/dist/esm/utilities/math/polyline/isPointInsidePolyline3D.js +27 -0
  506. package/dist/esm/utilities/math/polyline/isPointInsidePolyline3D.js.map +1 -0
  507. package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js +0 -1
  508. package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js.map +1 -1
  509. package/dist/esm/utilities/segmentation/getHoveredContourSegmentationAnnotation.js +14 -0
  510. package/dist/esm/utilities/segmentation/getHoveredContourSegmentationAnnotation.js.map +1 -0
  511. package/dist/esm/utilities/segmentation/getSegmentAtLabelmapBorder.js +73 -0
  512. package/dist/esm/utilities/segmentation/getSegmentAtLabelmapBorder.js.map +1 -0
  513. package/dist/esm/utilities/segmentation/getSegmentAtWorldPoint.js +75 -0
  514. package/dist/esm/utilities/segmentation/getSegmentAtWorldPoint.js.map +1 -0
  515. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +55 -0
  516. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js.map +1 -0
  517. package/dist/esm/utilities/segmentation/index.js +5 -1
  518. package/dist/esm/utilities/segmentation/index.js.map +1 -1
  519. package/dist/esm/utilities/triggerAnnotationRenderForToolGroupIds.js +25 -0
  520. package/dist/esm/utilities/triggerAnnotationRenderForToolGroupIds.js.map +1 -0
  521. package/dist/esm/workers/clippingPlaneWorker.js +58 -0
  522. package/dist/esm/workers/clippingPlaneWorker.js.map +1 -0
  523. package/dist/esm/workers/polySegConverters.js +241 -0
  524. package/dist/esm/workers/polySegConverters.js.map +1 -0
  525. package/dist/types/drawingSvg/drawPath.d.ts +12 -0
  526. package/dist/types/drawingSvg/drawPath.d.ts.map +1 -0
  527. package/dist/types/drawingSvg/drawPolyline.d.ts +1 -1
  528. package/dist/types/drawingSvg/drawPolyline.d.ts.map +1 -1
  529. package/dist/types/drawingSvg/index.d.ts +2 -1
  530. package/dist/types/drawingSvg/index.d.ts.map +1 -1
  531. package/dist/types/enums/WorkerTypes.d.ts +9 -0
  532. package/dist/types/enums/WorkerTypes.d.ts.map +1 -0
  533. package/dist/types/enums/index.d.ts +2 -1
  534. package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +1 -1
  535. package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts.map +1 -1
  536. package/dist/types/eventListeners/segmentation/imageChangeEventListener.d.ts.map +1 -1
  537. package/dist/types/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts.map +1 -1
  538. package/dist/types/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +1 -0
  539. package/dist/types/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts.map +1 -1
  540. package/dist/types/stateManagement/annotation/annotationState.d.ts +7 -1
  541. package/dist/types/stateManagement/annotation/annotationState.d.ts.map +1 -1
  542. package/dist/types/stateManagement/annotation/helpers/state.d.ts +2 -1
  543. package/dist/types/stateManagement/annotation/helpers/state.d.ts.map +1 -1
  544. package/dist/types/stateManagement/index.d.ts +6 -1
  545. package/dist/types/stateManagement/segmentation/SegmentationStateManager.d.ts.map +1 -1
  546. package/dist/types/stateManagement/segmentation/addRepresentationData.d.ts +13 -0
  547. package/dist/types/stateManagement/segmentation/addRepresentationData.d.ts.map +1 -0
  548. package/dist/types/stateManagement/segmentation/addSegmentationRepresentation.d.ts.map +1 -1
  549. package/dist/types/stateManagement/segmentation/config/segmentationVisibility.d.ts.map +1 -1
  550. package/dist/types/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +9 -2
  551. package/dist/types/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts.map +1 -1
  552. package/dist/types/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +13 -0
  553. package/dist/types/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts.map +1 -1
  554. package/dist/types/stateManagement/segmentation/helpers/validateSegmentationInput.d.ts.map +1 -1
  555. package/dist/types/stateManagement/segmentation/index.d.ts +3 -1
  556. package/dist/types/stateManagement/segmentation/index.d.ts.map +1 -1
  557. package/dist/types/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts +3 -0
  558. package/dist/types/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts.map +1 -0
  559. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts +3 -0
  560. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts.map +1 -0
  561. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts +8 -0
  562. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts.map +1 -0
  563. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts +7 -0
  564. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts.map +1 -0
  565. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts +7 -0
  566. package/dist/types/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts.map +1 -0
  567. package/dist/types/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts +5 -0
  568. package/dist/types/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts.map +1 -0
  569. package/dist/types/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts +4 -0
  570. package/dist/types/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts.map +1 -0
  571. package/dist/types/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +4 -0
  572. package/dist/types/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts.map +1 -0
  573. package/dist/types/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts +6 -0
  574. package/dist/types/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts.map +1 -0
  575. package/dist/types/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts +13 -0
  576. package/dist/types/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts.map +1 -0
  577. package/dist/types/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts +2 -0
  578. package/dist/types/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts.map +1 -0
  579. package/dist/types/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +3 -0
  580. package/dist/types/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts.map +1 -0
  581. package/dist/types/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +4 -0
  582. package/dist/types/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts.map +1 -0
  583. package/dist/types/stateManagement/segmentation/polySeg/index.d.ts +6 -0
  584. package/dist/types/stateManagement/segmentation/polySeg/index.d.ts.map +1 -0
  585. package/dist/types/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts +2 -0
  586. package/dist/types/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts.map +1 -0
  587. package/dist/types/stateManagement/segmentation/segmentIndex.d.ts.map +1 -1
  588. package/dist/types/stateManagement/segmentation/segmentationState.d.ts +6 -1
  589. package/dist/types/stateManagement/segmentation/segmentationState.d.ts.map +1 -1
  590. package/dist/types/store/ToolGroupManager/ToolGroup.d.ts +3 -1
  591. package/dist/types/store/ToolGroupManager/ToolGroup.d.ts.map +1 -1
  592. package/dist/types/tools/ScaleOverlayTool.d.ts.map +1 -1
  593. package/dist/types/tools/annotation/LivewireContourTool.d.ts +4 -3
  594. package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
  595. package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
  596. package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts.map +1 -1
  597. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
  598. package/dist/types/tools/annotation/ProbeTool.d.ts.map +1 -1
  599. package/dist/types/tools/annotation/SplineROITool.d.ts +6 -3
  600. package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -1
  601. package/dist/types/tools/annotation/planarFreehandROITool/closedContourEditLoop.d.ts.map +1 -1
  602. package/dist/types/tools/annotation/planarFreehandROITool/drawLoop.d.ts.map +1 -1
  603. package/dist/types/tools/annotation/planarFreehandROITool/openContourEditLoop.d.ts.map +1 -1
  604. package/dist/types/tools/annotation/planarFreehandROITool/renderMethods.d.ts.map +1 -1
  605. package/dist/types/tools/annotation/splines/Spline.d.ts +2 -0
  606. package/dist/types/tools/annotation/splines/Spline.d.ts.map +1 -1
  607. package/dist/types/tools/base/AnnotationTool.d.ts.map +1 -1
  608. package/dist/types/tools/base/BaseTool.d.ts.map +1 -1
  609. package/dist/types/tools/base/ContourBaseTool.d.ts +1 -0
  610. package/dist/types/tools/base/ContourBaseTool.d.ts.map +1 -1
  611. package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts +1 -2
  612. package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -1
  613. package/dist/types/tools/displayTools/Contour/contourConfig.d.ts.map +1 -1
  614. package/dist/types/tools/displayTools/Contour/contourDisplay.d.ts.map +1 -1
  615. package/dist/types/tools/displayTools/Contour/removeContourFromElement.d.ts.map +1 -1
  616. package/dist/types/tools/displayTools/Contour/{addContourSetsToElement.d.ts → vtkContour/addContourSetsToElement.d.ts} +1 -1
  617. package/dist/types/tools/displayTools/Contour/vtkContour/addContourSetsToElement.d.ts.map +1 -0
  618. package/dist/types/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.d.ts +4 -0
  619. package/dist/types/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.d.ts.map +1 -0
  620. package/dist/types/tools/displayTools/Contour/vtkContour/contourConfigCache.d.ts.map +1 -0
  621. package/dist/types/tools/displayTools/Contour/vtkContour/updateVTKContourSets.d.ts +4 -0
  622. package/dist/types/tools/displayTools/Contour/vtkContour/updateVTKContourSets.d.ts.map +1 -0
  623. package/dist/types/tools/displayTools/Contour/{utils.d.ts → vtkContour/utils.d.ts} +2 -2
  624. package/dist/types/tools/displayTools/Contour/vtkContour/utils.d.ts.map +1 -0
  625. package/dist/types/tools/displayTools/Labelmap/index.d.ts +2 -1
  626. package/dist/types/tools/displayTools/Labelmap/index.d.ts.map +1 -1
  627. package/dist/types/tools/displayTools/Labelmap/labelmapDisplay.d.ts.map +1 -1
  628. package/dist/types/tools/displayTools/Labelmap/validateLabelmap.d.ts +5 -0
  629. package/dist/types/tools/displayTools/Labelmap/validateLabelmap.d.ts.map +1 -0
  630. package/dist/types/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +4 -0
  631. package/dist/types/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts.map +1 -0
  632. package/dist/types/tools/displayTools/Surface/surfaceConfig.d.ts +4 -0
  633. package/dist/types/tools/displayTools/Surface/surfaceConfig.d.ts.map +1 -0
  634. package/dist/types/tools/displayTools/Surface/surfaceDisplay.d.ts +7 -0
  635. package/dist/types/tools/displayTools/Surface/surfaceDisplay.d.ts.map +1 -1
  636. package/dist/types/tools/displayTools/registerDisplayToolsWorker.d.ts +2 -0
  637. package/dist/types/tools/displayTools/registerDisplayToolsWorker.d.ts.map +1 -0
  638. package/dist/types/tools/segmentation/CircleScissorsTool.d.ts.map +1 -1
  639. package/dist/types/tools/segmentation/RectangleScissorsTool.d.ts.map +1 -1
  640. package/dist/types/tools/segmentation/SegmentSelectTool.d.ts +6 -2
  641. package/dist/types/tools/segmentation/SegmentSelectTool.d.ts.map +1 -1
  642. package/dist/types/tools/segmentation/SphereScissorsTool.d.ts.map +1 -1
  643. package/dist/types/tools/segmentation/strategies/BrushStrategy.d.ts.map +1 -1
  644. package/dist/types/tools/segmentation/strategies/fillSphere.d.ts.map +1 -1
  645. package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts.map +1 -1
  646. package/dist/types/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +5 -5
  647. package/dist/types/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts.map +1 -1
  648. package/dist/types/types/AnnotationTypes.d.ts +2 -0
  649. package/dist/types/types/AnnotationTypes.d.ts.map +1 -1
  650. package/dist/types/types/ContourAnnotation.d.ts +6 -0
  651. package/dist/types/types/ContourAnnotation.d.ts.map +1 -1
  652. package/dist/types/types/ContourSegmentationAnnotation.d.ts +0 -1
  653. package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -1
  654. package/dist/types/types/ContourTypes.d.ts +1 -0
  655. package/dist/types/types/ContourTypes.d.ts.map +1 -1
  656. package/dist/types/types/EventTypes.d.ts +4 -1
  657. package/dist/types/types/EventTypes.d.ts.map +1 -1
  658. package/dist/types/types/ISpline.d.ts +1 -0
  659. package/dist/types/types/ISpline.d.ts.map +1 -1
  660. package/dist/types/types/LabelmapTypes.d.ts +5 -1
  661. package/dist/types/types/LabelmapTypes.d.ts.map +1 -1
  662. package/dist/types/types/PolySeg.d.ts +7 -0
  663. package/dist/types/types/PolySeg.d.ts.map +1 -0
  664. package/dist/types/types/SegmentationStateTypes.d.ts +12 -2
  665. package/dist/types/types/SegmentationStateTypes.d.ts.map +1 -1
  666. package/dist/types/types/SplineProps.d.ts +1 -0
  667. package/dist/types/types/SplineProps.d.ts.map +1 -1
  668. package/dist/types/types/SurfaceTypes.d.ts +1 -1
  669. package/dist/types/types/SurfaceTypes.d.ts.map +1 -1
  670. package/dist/types/types/index.d.ts +2 -1
  671. package/dist/types/types/index.d.ts.map +1 -1
  672. package/dist/types/utilities/boundingBox/getBoundingBoxAroundShape.d.ts.map +1 -1
  673. package/dist/types/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts +3 -0
  674. package/dist/types/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts.map +1 -0
  675. package/dist/types/utilities/contourSegmentation/areSameSegment.d.ts.map +1 -1
  676. package/dist/types/utilities/contourSegmentation/index.d.ts +2 -0
  677. package/dist/types/utilities/contourSegmentation/index.d.ts.map +1 -1
  678. package/dist/types/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts +3 -0
  679. package/dist/types/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts.map +1 -0
  680. package/dist/types/utilities/contours/detectContourHoles.d.ts.map +1 -1
  681. package/dist/types/utilities/contours/getContourHolesDataCanvas.d.ts +4 -0
  682. package/dist/types/utilities/contours/getContourHolesDataCanvas.d.ts.map +1 -0
  683. package/dist/types/utilities/contours/getContourHolesDataWorld.d.ts +4 -0
  684. package/dist/types/utilities/contours/getContourHolesDataWorld.d.ts.map +1 -0
  685. package/dist/types/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts +12 -0
  686. package/dist/types/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts.map +1 -0
  687. package/dist/types/utilities/contours/index.d.ts +5 -2
  688. package/dist/types/utilities/contours/index.d.ts.map +1 -1
  689. package/dist/types/utilities/contours/updateContourPolyline.d.ts +11 -0
  690. package/dist/types/utilities/contours/updateContourPolyline.d.ts.map +1 -0
  691. package/dist/types/utilities/index.d.ts +3 -1
  692. package/dist/types/utilities/index.d.ts.map +1 -1
  693. package/dist/types/utilities/math/polyline/containsPoint.d.ts.map +1 -1
  694. package/dist/types/utilities/math/polyline/containsPoints.d.ts +3 -0
  695. package/dist/types/utilities/math/polyline/containsPoints.d.ts.map +1 -0
  696. package/dist/types/utilities/math/polyline/getWindingDirection.d.ts +3 -0
  697. package/dist/types/utilities/math/polyline/getWindingDirection.d.ts.map +1 -0
  698. package/dist/types/utilities/math/polyline/index.d.ts +4 -1
  699. package/dist/types/utilities/math/polyline/index.d.ts.map +1 -1
  700. package/dist/types/utilities/math/polyline/isPointInsidePolyline3D.d.ts +3 -0
  701. package/dist/types/utilities/math/polyline/isPointInsidePolyline3D.d.ts.map +1 -0
  702. package/dist/types/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +1 -0
  703. package/dist/types/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts.map +1 -1
  704. package/dist/types/utilities/segmentation/contourAndFindLargestBidirectional.d.ts.map +1 -1
  705. package/dist/types/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts +2 -0
  706. package/dist/types/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts.map +1 -0
  707. package/dist/types/utilities/segmentation/getSegmentAtLabelmapBorder.d.ts +8 -0
  708. package/dist/types/utilities/segmentation/getSegmentAtLabelmapBorder.d.ts.map +1 -0
  709. package/dist/types/utilities/segmentation/getSegmentAtWorldPoint.d.ts +12 -0
  710. package/dist/types/utilities/segmentation/getSegmentAtWorldPoint.d.ts.map +1 -0
  711. package/dist/types/utilities/segmentation/getUniqueSegmentIndices.d.ts +3 -0
  712. package/dist/types/utilities/segmentation/getUniqueSegmentIndices.d.ts.map +1 -0
  713. package/dist/types/utilities/segmentation/index.d.ts +5 -1
  714. package/dist/types/utilities/segmentation/index.d.ts.map +1 -1
  715. package/dist/types/utilities/triggerAnnotationRenderForToolGroupIds.d.ts +3 -0
  716. package/dist/types/utilities/triggerAnnotationRenderForToolGroupIds.d.ts.map +1 -0
  717. package/dist/types/workers/clippingPlaneWorker.d.ts +2 -0
  718. package/dist/types/workers/clippingPlaneWorker.d.ts.map +1 -0
  719. package/dist/types/workers/polySegConverters.d.ts +2 -0
  720. package/dist/types/workers/polySegConverters.d.ts.map +1 -0
  721. package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
  722. package/dist/umd/444.index.js +3 -0
  723. package/dist/umd/444.index.js.LICENSE.txt +5 -0
  724. package/dist/umd/444.index.js.map +1 -0
  725. package/dist/umd/78.index.js +3 -0
  726. package/dist/umd/78.index.js.LICENSE.txt +5 -0
  727. package/dist/umd/78.index.js.map +1 -0
  728. package/dist/umd/985.index.js +2 -0
  729. package/dist/umd/985.index.js.map +1 -0
  730. package/dist/umd/index.js +1 -1
  731. package/dist/umd/index.js.map +1 -1
  732. package/package.json +5 -3
  733. package/src/drawingSvg/drawPath.ts +96 -0
  734. package/src/drawingSvg/drawPolyline.ts +12 -16
  735. package/src/drawingSvg/index.ts +2 -0
  736. package/src/enums/WorkerTypes.ts +16 -0
  737. package/src/enums/index.js +2 -0
  738. package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +1 -1
  739. package/src/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.ts +204 -75
  740. package/src/eventListeners/segmentation/imageChangeEventListener.ts +3 -4
  741. package/src/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.ts +97 -69
  742. package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +11 -0
  743. package/src/stateManagement/annotation/annotationState.ts +107 -0
  744. package/src/stateManagement/annotation/helpers/state.ts +29 -1
  745. package/src/stateManagement/index.js +10 -0
  746. package/src/stateManagement/segmentation/SegmentationStateManager.ts +4 -1
  747. package/src/stateManagement/segmentation/addRepresentationData.ts +71 -0
  748. package/src/stateManagement/segmentation/addSegmentationRepresentation.ts +39 -16
  749. package/src/stateManagement/segmentation/config/segmentationVisibility.ts +1 -59
  750. package/src/stateManagement/segmentation/convertStackToVolumeSegmentation.ts +74 -37
  751. package/src/stateManagement/segmentation/convertVolumeToStackSegmentation.ts +102 -38
  752. package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +13 -8
  753. package/src/stateManagement/segmentation/index.ts +9 -2
  754. package/src/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.ts +17 -0
  755. package/src/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.ts +25 -0
  756. package/src/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.ts +273 -0
  757. package/src/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.ts +89 -0
  758. package/src/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.ts +193 -0
  759. package/src/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.ts +26 -0
  760. package/src/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.ts +62 -0
  761. package/src/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.ts +81 -0
  762. package/src/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.ts +81 -0
  763. package/src/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.ts +167 -0
  764. package/src/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.ts +95 -0
  765. package/src/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.ts +123 -0
  766. package/src/stateManagement/segmentation/polySeg/computeAndAddRepresentation.ts +97 -0
  767. package/src/stateManagement/segmentation/polySeg/index.ts +12 -0
  768. package/src/stateManagement/segmentation/polySeg/registerPolySegWorker.ts +34 -0
  769. package/src/stateManagement/segmentation/segmentIndex.ts +5 -0
  770. package/src/stateManagement/segmentation/segmentationState.ts +62 -0
  771. package/src/store/ToolGroupManager/ToolGroup.ts +9 -2
  772. package/src/tools/ScaleOverlayTool.ts +4 -1
  773. package/src/tools/SegmentationIntersectionTool.ts +1 -1
  774. package/src/tools/annotation/LivewireContourSegmentationTool.ts +1 -1
  775. package/src/tools/annotation/LivewireContourTool.ts +65 -38
  776. package/src/tools/annotation/PlanarFreehandContourSegmentationTool.ts +1 -22
  777. package/src/tools/annotation/PlanarFreehandROITool.ts +8 -5
  778. package/src/tools/annotation/ProbeTool.ts +4 -0
  779. package/src/tools/annotation/SplineROITool.ts +76 -29
  780. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +20 -11
  781. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +42 -23
  782. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +28 -13
  783. package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +1 -1
  784. package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +28 -10
  785. package/src/tools/annotation/splines/LinearSpline.ts +1 -1
  786. package/src/tools/annotation/splines/Spline.ts +13 -1
  787. package/src/tools/base/AnnotationTool.ts +2 -1
  788. package/src/tools/base/BaseTool.ts +1 -6
  789. package/src/tools/base/ContourBaseTool.ts +46 -4
  790. package/src/tools/base/ContourSegmentationBaseTool.ts +51 -42
  791. package/src/tools/displayTools/Contour/contourConfig.ts +1 -0
  792. package/src/tools/displayTools/Contour/contourDisplay.ts +82 -9
  793. package/src/tools/displayTools/Contour/removeContourFromElement.ts +2 -0
  794. package/src/tools/displayTools/Contour/{addContourSetsToElement.ts → vtkContour/addContourSetsToElement.ts} +1 -1
  795. package/src/tools/displayTools/Contour/{addOrUpdateContourSets.ts → vtkContour/addOrUpdateVTKContourSets.ts} +4 -4
  796. package/src/tools/displayTools/Contour/{updateContourSets.ts → vtkContour/updateVTKContourSets.ts} +2 -2
  797. package/src/tools/displayTools/Contour/{utils.ts → vtkContour/utils.ts} +1 -1
  798. package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +1 -1
  799. package/src/tools/displayTools/Labelmap/index.ts +10 -1
  800. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +39 -4
  801. package/src/tools/displayTools/Labelmap/validateLabelmap.ts +71 -0
  802. package/src/tools/displayTools/Surface/addOrUpdateSurfaceToElement.ts +172 -0
  803. package/src/tools/displayTools/Surface/surfaceConfig.ts +12 -0
  804. package/src/tools/displayTools/Surface/surfaceDisplay.ts +275 -35
  805. package/src/tools/displayTools/registerDisplayToolsWorker.ts +34 -0
  806. package/src/tools/segmentation/BrushTool.ts +1 -1
  807. package/src/tools/segmentation/CircleScissorsTool.ts +3 -1
  808. package/src/tools/segmentation/PaintFillTool.ts +1 -1
  809. package/src/tools/segmentation/RectangleScissorsTool.ts +3 -1
  810. package/src/tools/segmentation/SegmentSelectTool.ts +70 -75
  811. package/src/tools/segmentation/SphereScissorsTool.ts +3 -1
  812. package/src/tools/segmentation/strategies/BrushStrategy.ts +12 -9
  813. package/src/tools/segmentation/strategies/compositions/regionFill.ts +1 -1
  814. package/src/tools/segmentation/strategies/fillSphere.ts +13 -5
  815. package/src/tools/segmentation/strategies/utils/getStrategyData.ts +30 -15
  816. package/src/tools/segmentation/strategies/utils/stackVolumeCheck.ts +24 -17
  817. package/src/types/AnnotationTypes.ts +14 -0
  818. package/src/types/ContourAnnotation.ts +13 -0
  819. package/src/types/ContourSegmentationAnnotation.ts +0 -1
  820. package/src/types/ContourTypes.ts +3 -0
  821. package/src/types/EventTypes.ts +9 -0
  822. package/src/types/ISpline.ts +3 -0
  823. package/src/types/LabelmapTypes.ts +7 -1
  824. package/src/types/PolySeg.ts +7 -0
  825. package/src/types/SegmentationStateTypes.ts +20 -4
  826. package/src/types/SplineProps.ts +10 -0
  827. package/src/types/SurfaceTypes.ts +1 -1
  828. package/src/types/index.ts +3 -0
  829. package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +4 -2
  830. package/src/utilities/contourSegmentation/addContourSegmentationAnnotation.ts +29 -0
  831. package/src/utilities/contourSegmentation/areSameSegment.ts +0 -2
  832. package/src/utilities/contourSegmentation/index.ts +2 -0
  833. package/src/utilities/contourSegmentation/removeContourSegmentationAnnotation.ts +30 -0
  834. package/src/utilities/contours/detectContourHoles.ts +2 -0
  835. package/src/utilities/contours/generateContourSetsFromLabelmap.ts +2 -2
  836. package/src/utilities/contours/getContourHolesDataCanvas.ts +33 -0
  837. package/src/utilities/contours/getContourHolesDataWorld.ts +19 -0
  838. package/src/utilities/contours/getDeduplicatedVTKPolyDataPoints.ts +66 -0
  839. package/src/utilities/contours/index.ts +8 -2
  840. package/src/utilities/contours/updateContourPolyline.ts +74 -0
  841. package/src/utilities/index.ts +4 -0
  842. package/src/utilities/math/polyline/containsPoint.ts +4 -2
  843. package/src/utilities/math/polyline/containsPoints.ts +22 -0
  844. package/src/utilities/math/polyline/getWindingDirection.ts +14 -0
  845. package/src/utilities/math/polyline/index.ts +6 -0
  846. package/src/utilities/math/polyline/isPointInsidePolyline3D.ts +56 -0
  847. package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +1 -0
  848. package/src/utilities/segmentation/contourAndFindLargestBidirectional.ts +0 -1
  849. package/src/utilities/segmentation/getHoveredContourSegmentationAnnotation.ts +25 -0
  850. package/src/utilities/segmentation/getSegmentAtLabelmapBorder.ts +179 -0
  851. package/src/utilities/segmentation/getSegmentAtWorldPoint.ts +173 -0
  852. package/src/utilities/segmentation/getUniqueSegmentIndices.ts +76 -0
  853. package/src/utilities/segmentation/index.ts +8 -0
  854. package/src/utilities/triggerAnnotationRenderForToolGroupIds.ts +38 -0
  855. package/src/workers/clippingPlaneWorker.js +87 -0
  856. package/src/workers/polySegConverters.js +467 -0
  857. package/dist/cjs/tools/displayTools/Contour/addContourSetsToElement.js.map +0 -1
  858. package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.d.ts +0 -3
  859. package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.js +0 -14
  860. package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.js.map +0 -1
  861. package/dist/cjs/tools/displayTools/Contour/contourConfigCache.js.map +0 -1
  862. package/dist/cjs/tools/displayTools/Contour/updateContourSets.d.ts +0 -3
  863. package/dist/cjs/tools/displayTools/Contour/updateContourSets.js.map +0 -1
  864. package/dist/cjs/tools/displayTools/Contour/utils.js.map +0 -1
  865. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.d.ts +0 -3
  866. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js +0 -20
  867. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js.map +0 -1
  868. package/dist/cjs/tools/displayTools/Surface/addSurfaceToElement.d.ts +0 -2
  869. package/dist/cjs/tools/displayTools/Surface/addSurfaceToElement.js +0 -84
  870. package/dist/cjs/tools/displayTools/Surface/addSurfaceToElement.js.map +0 -1
  871. package/dist/cjs/utilities/contours/mergePoints.d.ts +0 -8
  872. package/dist/cjs/utilities/contours/mergePoints.js +0 -77
  873. package/dist/cjs/utilities/contours/mergePoints.js.map +0 -1
  874. package/dist/esm/tools/displayTools/Contour/addContourSetsToElement.js.map +0 -1
  875. package/dist/esm/tools/displayTools/Contour/addOrUpdateContourSets.js.map +0 -1
  876. package/dist/esm/tools/displayTools/Contour/contourConfigCache.js.map +0 -1
  877. package/dist/esm/tools/displayTools/Contour/updateContourSets.js.map +0 -1
  878. package/dist/esm/tools/displayTools/Contour/utils.js.map +0 -1
  879. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js +0 -18
  880. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js.map +0 -1
  881. package/dist/esm/tools/displayTools/Surface/addSurfaceToElement.js +0 -79
  882. package/dist/esm/tools/displayTools/Surface/addSurfaceToElement.js.map +0 -1
  883. package/dist/esm/utilities/contours/mergePoints.js +0 -73
  884. package/dist/esm/utilities/contours/mergePoints.js.map +0 -1
  885. package/dist/types/tools/displayTools/Contour/addContourSetsToElement.d.ts.map +0 -1
  886. package/dist/types/tools/displayTools/Contour/addOrUpdateContourSets.d.ts +0 -4
  887. package/dist/types/tools/displayTools/Contour/addOrUpdateContourSets.d.ts.map +0 -1
  888. package/dist/types/tools/displayTools/Contour/contourConfigCache.d.ts.map +0 -1
  889. package/dist/types/tools/displayTools/Contour/updateContourSets.d.ts +0 -4
  890. package/dist/types/tools/displayTools/Contour/updateContourSets.d.ts.map +0 -1
  891. package/dist/types/tools/displayTools/Contour/utils.d.ts.map +0 -1
  892. package/dist/types/tools/displayTools/Labelmap/validateRepresentationData.d.ts +0 -4
  893. package/dist/types/tools/displayTools/Labelmap/validateRepresentationData.d.ts.map +0 -1
  894. package/dist/types/tools/displayTools/Surface/addSurfaceToElement.d.ts +0 -3
  895. package/dist/types/tools/displayTools/Surface/addSurfaceToElement.d.ts.map +0 -1
  896. package/dist/types/utilities/contours/mergePoints.d.ts +0 -9
  897. package/dist/types/utilities/contours/mergePoints.d.ts.map +0 -1
  898. package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +0 -36
  899. package/src/tools/displayTools/Surface/addSurfaceToElement.ts +0 -115
  900. package/src/utilities/contours/mergePoints.ts +0 -108
  901. /package/dist/cjs/tools/displayTools/Contour/{addContourSetsToElement.js → vtkContour/addContourSetsToElement.js} +0 -0
  902. /package/dist/cjs/tools/displayTools/Contour/{contourConfigCache.d.ts → vtkContour/contourConfigCache.d.ts} +0 -0
  903. /package/dist/cjs/tools/displayTools/Contour/{contourConfigCache.js → vtkContour/contourConfigCache.js} +0 -0
  904. /package/dist/cjs/tools/displayTools/Contour/{utils.js → vtkContour/utils.js} +0 -0
  905. /package/dist/esm/tools/displayTools/Contour/{addContourSetsToElement.js → vtkContour/addContourSetsToElement.js} +0 -0
  906. /package/dist/esm/tools/displayTools/Contour/{contourConfigCache.js → vtkContour/contourConfigCache.js} +0 -0
  907. /package/dist/esm/tools/displayTools/Contour/{utils.js → vtkContour/utils.js} +0 -0
  908. /package/dist/types/tools/displayTools/Contour/{contourConfigCache.d.ts → vtkContour/contourConfigCache.d.ts} +0 -0
  909. /package/src/tools/displayTools/Contour/{contourConfigCache.ts → vtkContour/contourConfigCache.ts} +0 -0
@@ -6,7 +6,10 @@ import {
6
6
  } from '@cornerstonejs/core';
7
7
  import type { Types } from '@cornerstonejs/core';
8
8
  import { vec3 } from 'gl-matrix';
9
- import { removeAnnotation } from '../../stateManagement/annotation/annotationState';
9
+ import {
10
+ getChildAnnotations,
11
+ removeAnnotation,
12
+ } from '../../stateManagement/annotation/annotationState';
10
13
  import {
11
14
  drawHandles as drawHandlesSvg,
12
15
  drawPolyline as drawPolylineSvg,
@@ -37,13 +40,15 @@ import {
37
40
  getCalibratedScale,
38
41
  getCalibratedAreaUnits,
39
42
  } from '../../utilities';
43
+ import getMouseModifierKey from '../../eventDispatchers/shared/getMouseModifier';
40
44
  import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
41
45
  import { getTextBoxCoordsCanvas } from '../../utilities/drawing';
42
46
 
43
- import { SplineROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
44
- import {
45
- AnnotationCompletedEventDetail,
47
+ import { ContourWindingDirection } from '../../types/ContourAnnotation';
48
+ import type { SplineROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
49
+ import type {
46
50
  AnnotationModifiedEventDetail,
51
+ ContourAnnotationCompletedEventDetail,
47
52
  } from '../../types/EventTypes';
48
53
  import { ISpline } from '../../types/ISpline';
49
54
  import { CardinalSpline } from './splines/CardinalSpline';
@@ -51,7 +56,7 @@ import { LinearSpline } from './splines/LinearSpline';
51
56
  import { CatmullRomSpline } from './splines/CatmullRomSpline';
52
57
  import { BSpline } from './splines/BSpline';
53
58
  import ContourSegmentationBaseTool from '../base/ContourSegmentationBaseTool';
54
- import reverseIfAntiClockwise from '../../utilities/contours/reverseIfAntiClockwise';
59
+ import updateContourPolyline from '../../utilities/contours/updateContourPolyline';
55
60
 
56
61
  const SPLINE_MIN_POINTS = 3;
57
62
  const SPLINE_CLICK_CLOSE_CURVE_DIST = 10;
@@ -93,12 +98,14 @@ class SplineROITool extends ContourSegmentationBaseTool {
93
98
  newAnnotation?: boolean;
94
99
  hasMoved?: boolean;
95
100
  lastCanvasPoint?: Types.Point2;
101
+ contourHoleProcessingEnabled?: boolean;
96
102
  } | null;
97
103
  isDrawing: boolean;
98
104
  isHandleOutsideImage = false;
99
105
  fireChangeOnUpdate: {
100
106
  annotationUID: string;
101
107
  changeType: ChangeTypes;
108
+ contourHoleProcessingEnabled: boolean;
102
109
  } = null;
103
110
 
104
111
  constructor(
@@ -109,6 +116,11 @@ class SplineROITool extends ContourSegmentationBaseTool {
109
116
  preventHandleOutsideImage: false,
110
117
  calculateStats: true,
111
118
  getTextLines: defaultGetTextLines,
119
+ /**
120
+ * Specify which modifier key is used to add a hole to a contour. The
121
+ * modifier must be pressed when the first point of a new contour is added.
122
+ */
123
+ contourHoleAdditionModifierKey: KeyboardBindings.Shift,
112
124
  spline: {
113
125
  configuration: {
114
126
  [SplineTypesEnum.Cardinal]: {
@@ -176,6 +188,9 @@ class SplineROITool extends ContourSegmentationBaseTool {
176
188
  const eventDetail = evt.detail;
177
189
  const { currentPoints, element } = eventDetail;
178
190
  const { canvas: canvasPos } = currentPoints;
191
+ const contourHoleProcessingEnabled =
192
+ getMouseModifierKey(evt.detail.event) ===
193
+ this.configuration.contourHoleAdditionModifierKey;
179
194
 
180
195
  const enabledElement = getEnabledElement(element);
181
196
  const { renderingEngine } = enabledElement;
@@ -196,6 +211,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
196
211
  newAnnotation: true,
197
212
  hasMoved: false,
198
213
  lastCanvasPoint: canvasPos,
214
+ contourHoleProcessingEnabled,
199
215
  };
200
216
 
201
217
  this._activateDraw(element);
@@ -303,7 +319,12 @@ class SplineROITool extends ContourSegmentationBaseTool {
303
319
  const eventDetail = evt.detail;
304
320
  const { element } = eventDetail;
305
321
 
306
- const { annotation, viewportIdsToRender, newAnnotation } = this.editData;
322
+ const {
323
+ annotation,
324
+ viewportIdsToRender,
325
+ newAnnotation,
326
+ contourHoleProcessingEnabled,
327
+ } = this.editData;
307
328
  const { data } = annotation;
308
329
  annotation.autoGenerated = false;
309
330
 
@@ -338,6 +359,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
338
359
  changeType: newAnnotation
339
360
  ? ChangeTypes.Completed
340
361
  : ChangeTypes.HandlesUpdated,
362
+ contourHoleProcessingEnabled,
341
363
  };
342
364
 
343
365
  triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
@@ -466,14 +488,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
466
488
  const { deltaPoints } = eventDetail as EventTypes.MouseDragEventDetail;
467
489
  const worldPosDelta = deltaPoints.world;
468
490
 
469
- const points = data.handles.points;
470
-
471
- points.forEach((point) => {
472
- point[0] += worldPosDelta[0];
473
- point[1] += worldPosDelta[1];
474
- point[2] += worldPosDelta[2];
475
- });
476
- annotation.invalidated = true;
491
+ this.moveAnnotation(annotation, worldPosDelta);
477
492
  } else {
478
493
  // Move mode - after double click, and mouse move to draw
479
494
  const { currentPoints } = eventDetail;
@@ -522,11 +537,15 @@ class SplineROITool extends ContourSegmentationBaseTool {
522
537
  /**
523
538
  * Triggers an annotation completed event.
524
539
  */
525
- triggerAnnotationCompleted = (annotation: SplineROIAnnotation): void => {
540
+ triggerAnnotationCompleted = (
541
+ annotation: SplineROIAnnotation,
542
+ contourHoleProcessingEnabled: boolean
543
+ ): void => {
526
544
  const eventType = Events.ANNOTATION_COMPLETED;
527
- const eventDetail: AnnotationCompletedEventDetail = {
545
+ const eventDetail: ContourAnnotationCompletedEventDetail = {
528
546
  annotation,
529
547
  changeType: ChangeTypes.Completed,
548
+ contourHoleProcessingEnabled,
530
549
  };
531
550
 
532
551
  triggerEvent(eventTarget, eventType, eventDetail);
@@ -558,10 +577,11 @@ class SplineROITool extends ContourSegmentationBaseTool {
558
577
  triggerChangeEvent = (
559
578
  annotation: SplineROIAnnotation,
560
579
  enabledElement: Types.IEnabledElement,
561
- changeType = ChangeTypes.StatsUpdated
580
+ changeType = ChangeTypes.StatsUpdated,
581
+ contourHoleProcessingEnabled
562
582
  ): void => {
563
583
  if (changeType === ChangeTypes.Completed) {
564
- this.triggerAnnotationCompleted(annotation);
584
+ this.triggerAnnotationCompleted(annotation, contourHoleProcessingEnabled);
565
585
  } else {
566
586
  this.triggerAnnotationModified(annotation, enabledElement, changeType);
567
587
  }
@@ -620,7 +640,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
620
640
  };
621
641
 
622
642
  protected isContourSegmentationTool(): boolean {
623
- // Disable contour segmenatation behavior because it shall be activated only
643
+ // Disable contour segmentation behavior because it shall be activated only
624
644
  // for SplineContourSegmentationTool
625
645
  return false;
626
646
  }
@@ -658,15 +678,32 @@ class SplineROITool extends ContourSegmentationBaseTool {
658
678
  const { drawPreviewEnabled } = this.configuration.spline;
659
679
  const splineType = annotation.data.spline.type;
660
680
  const splineConfig = this._getSplineConfig(splineType);
661
- const spline = this._updateSplineInstance(element, annotation);
662
- const splinePolylineCanvas = reverseIfAntiClockwise(
663
- spline.getPolylinePoints()
664
- );
665
- const splinePolylineWorld = splinePolylineCanvas.map((point2) =>
666
- viewport.canvasToWorld(point2)
667
- );
681
+ const spline = annotation.data.spline.instance;
668
682
 
669
- data.contour.polyline = splinePolylineWorld;
683
+ // Update current and all child annotations/splines
684
+ if (annotation.invalidated) {
685
+ const splineAnnotationsGroup = [
686
+ annotation,
687
+ ...getChildAnnotations(annotation),
688
+ ].filter((annotation) =>
689
+ this._isSplineROIAnnotation(annotation)
690
+ ) as SplineROIAnnotation[];
691
+
692
+ splineAnnotationsGroup.forEach((annotation) => {
693
+ const spline = this._updateSplineInstance(element, annotation);
694
+ const splinePolylineCanvas = spline.getPolylinePoints();
695
+
696
+ updateContourPolyline(
697
+ annotation,
698
+ {
699
+ points: splinePolylineCanvas,
700
+ closed: data.contour.closed,
701
+ targetWindingDirection: ContourWindingDirection.Clockwise,
702
+ },
703
+ viewport
704
+ );
705
+ });
706
+ }
670
707
 
671
708
  // Let the base class render the contour
672
709
  super.renderAnnotationInstance(renderContext);
@@ -768,7 +805,8 @@ class SplineROITool extends ContourSegmentationBaseTool {
768
805
  this.triggerChangeEvent(
769
806
  annotation,
770
807
  enabledElement,
771
- this.fireChangeOnUpdate.changeType
808
+ this.fireChangeOnUpdate.changeType,
809
+ this.fireChangeOnUpdate.contourHoleProcessingEnabled
772
810
  );
773
811
  this.fireChangeOnUpdate = null;
774
812
  }
@@ -990,6 +1028,12 @@ class SplineROITool extends ContourSegmentationBaseTool {
990
1028
  );
991
1029
  };
992
1030
 
1031
+ _isSplineROIAnnotation(
1032
+ annotation: Annotation
1033
+ ): annotation is SplineROIAnnotation {
1034
+ return !!(<SplineROIAnnotation>annotation).data?.spline;
1035
+ }
1036
+
993
1037
  /**
994
1038
  * Get a spline config merged with the default settings.
995
1039
  * @param type - Spline type (CARDINAL, CATMULLROM, LINEAR or BSPLINE)
@@ -1019,7 +1063,10 @@ class SplineROITool extends ContourSegmentationBaseTool {
1019
1063
  spline.closed = !!data.contour.closed;
1020
1064
 
1021
1065
  // Update spline resolution in case it has changed
1022
- if (spline.resolution !== splineConfig.resolution) {
1066
+ if (
1067
+ !spline.fixedResolution &&
1068
+ spline.resolution !== splineConfig.resolution
1069
+ ) {
1023
1070
  spline.resolution = parseInt(splineConfig.resolution);
1024
1071
  annotation.invalidated = true;
1025
1072
  }
@@ -7,14 +7,16 @@ import {
7
7
  resetElementCursor,
8
8
  hideElementCursor,
9
9
  } from '../../../cursors/elementCursor';
10
- import { EventTypes } from '../../../types';
10
+ import type { EventTypes } from '../../../types';
11
11
  import { polyline } from '../../../utilities/math';
12
- import { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
12
+ import { ContourWindingDirection } from '../../../types/ContourAnnotation';
13
+ import type { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
13
14
  import {
14
15
  getInterpolatedPoints,
15
16
  shouldSmooth,
16
17
  } from '../../../utilities/planarFreehandROITool/smoothPoints';
17
18
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
19
+ import updateContourPolyline from '../../../utilities/contours/updateContourPolyline';
18
20
  import { triggerAnnotationModified } from '../../../stateManagement/annotation/helpers/state';
19
21
 
20
22
  const { getSubPixelSpacingAndXYDirections, addCanvasPointsToArray, getArea } =
@@ -223,12 +225,16 @@ function finishEditAndStartNewEdit(evt: EventTypes.InteractionEventType): void {
223
225
  const { annotation, viewportIdsToRender } = this.commonData;
224
226
  const { fusedCanvasPoints, editCanvasPoints } = this.editData;
225
227
 
226
- const worldPoints = fusedCanvasPoints.map((canvasPoint) =>
227
- viewport.canvasToWorld(canvasPoint)
228
+ updateContourPolyline(
229
+ annotation,
230
+ {
231
+ points: fusedCanvasPoints,
232
+ closed: true,
233
+ targetWindingDirection: ContourWindingDirection.Clockwise,
234
+ },
235
+ viewport
228
236
  );
229
237
 
230
- annotation.data.contour.polyline = worldPoints;
231
- annotation.data.contour.closed = true;
232
238
  // If any manual update, triggered on an annotation, then it will be treated as non-autogenerated.
233
239
  if (annotation.autoGenerated) {
234
240
  annotation.autoGenerated = false;
@@ -446,12 +452,15 @@ function completeClosedContourEdit(element: HTMLDivElement) {
446
452
  )
447
453
  : fusedCanvasPoints;
448
454
 
449
- const worldPoints = updatedPoints.map((canvasPoint) =>
450
- viewport.canvasToWorld(canvasPoint)
455
+ updateContourPolyline(
456
+ annotation,
457
+ {
458
+ points: updatedPoints,
459
+ closed: true,
460
+ targetWindingDirection: ContourWindingDirection.Clockwise,
461
+ },
462
+ viewport
451
463
  );
452
- annotation.data.contour.polyline = worldPoints;
453
- annotation.data.contour.closed = true;
454
- annotation.invalidated = true;
455
464
 
456
465
  // If any manual update, triggered on an annotation, then it will be treated as non-autogenerated.
457
466
  if (annotation.autoGenerated) {
@@ -11,12 +11,14 @@ import {
11
11
  shouldSmooth,
12
12
  getInterpolatedPoints,
13
13
  } from '../../../utilities/planarFreehandROITool/smoothPoints';
14
+ import getMouseModifierKey from '../../../eventDispatchers/shared/getMouseModifier';
14
15
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
15
- import { triggerAnnotationCompleted } from '../../../stateManagement/annotation/helpers/state';
16
+ import { triggerContourAnnotationCompleted } from '../../../stateManagement/annotation/helpers/state';
16
17
  import { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
17
18
  import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
18
19
  import { polyline } from '../../../utilities/math';
19
20
  import { removeAnnotation } from '../../../stateManagement/annotation/annotationState';
21
+ import { updateContourPolyline } from '../../../utilities/contours/';
20
22
  import reverseIfAntiClockwise from '../../../utilities/contours/reverseIfAntiClockwise';
21
23
 
22
24
  const {
@@ -41,6 +43,9 @@ function activateDraw(
41
43
  const canvasPos = currentPoints.canvas;
42
44
  const enabledElement = getEnabledElement(element);
43
45
  const { viewport } = enabledElement;
46
+ const contourHoleProcessingEnabled =
47
+ getMouseModifierKey(evt.detail.event) ===
48
+ this.configuration.contourHoleAdditionModifierKey;
44
49
 
45
50
  const { spacing, xDir, yDir } = getSubPixelSpacingAndXYDirections(
46
51
  viewport,
@@ -50,6 +55,7 @@ function activateDraw(
50
55
  this.drawData = {
51
56
  canvasPoints: [canvasPos],
52
57
  polylineIndex: 0,
58
+ contourHoleProcessingEnabled,
53
59
  };
54
60
 
55
61
  this.commonData = {
@@ -171,7 +177,7 @@ function mouseDragDrawCallback(evt: EventTypes.InteractionEventType): void {
171
177
  */
172
178
  function mouseUpDrawCallback(evt: EventTypes.InteractionEventType): void {
173
179
  const { allowOpenContours } = this.configuration;
174
- const { canvasPoints } = this.drawData;
180
+ const { canvasPoints, contourHoleProcessingEnabled } = this.drawData;
175
181
  const firstPoint = canvasPoints[0];
176
182
  const lastPoint = canvasPoints[canvasPoints.length - 1];
177
183
  const eventDetail = evt.detail;
@@ -185,16 +191,19 @@ function mouseUpDrawCallback(evt: EventTypes.InteractionEventType): void {
185
191
  this.configuration.closeContourProximity
186
192
  )
187
193
  ) {
188
- this.completeDrawOpenContour(element);
194
+ this.completeDrawOpenContour(element, contourHoleProcessingEnabled);
189
195
  } else {
190
- this.completeDrawClosedContour(element);
196
+ this.completeDrawClosedContour(element, contourHoleProcessingEnabled);
191
197
  }
192
198
  }
193
199
 
194
200
  /**
195
201
  * Completes the contour being drawn, creating a closed contour annotation. It will return true if contour is completed or false in case contour drawing is halted.
196
202
  */
197
- function completeDrawClosedContour(element: HTMLDivElement): boolean {
203
+ function completeDrawClosedContour(
204
+ element: HTMLDivElement,
205
+ contourHoleProcessingEnabled: boolean
206
+ ): boolean {
198
207
  this.removeCrossedLinesOnCompleteDraw();
199
208
  const { canvasPoints } = this.drawData;
200
209
 
@@ -226,19 +235,22 @@ function completeDrawClosedContour(element: HTMLDivElement): boolean {
226
235
  : clockwise;
227
236
 
228
237
  // Note: -> This is pretty expensive and may not scale well with hundreds of
229
- // contours. A future optimisation if we use this for segmentation is to re-do
238
+ // contours. A future optimization if we use this for segmentation is to re-do
230
239
  // this rendering with the GPU rather than SVG.
231
- const worldPoints = updatedPoints.map((canvasPoint) =>
232
- viewport.canvasToWorld(canvasPoint)
240
+
241
+ updateContourPolyline(
242
+ annotation,
243
+ {
244
+ points: updatedPoints,
245
+ closed: true,
246
+ },
247
+ viewport
233
248
  );
234
249
 
235
- annotation.data.contour.polyline = worldPoints;
236
- annotation.data.contour.closed = true;
237
- annotation.invalidated = true;
238
250
  const { textBox } = annotation.data.handles;
239
251
 
240
- if (!textBox.hasMoved) {
241
- triggerAnnotationCompleted(annotation);
252
+ if (!textBox?.hasMoved) {
253
+ triggerContourAnnotationCompleted(annotation, contourHoleProcessingEnabled);
242
254
  }
243
255
 
244
256
  this.isDrawing = false;
@@ -280,7 +292,10 @@ function removeCrossedLinesOnCompleteDraw(): void {
280
292
  /**
281
293
  * Completes the contour being drawn, creating an open contour annotation. It will return true if contour is completed or false in case contour drawing is halted.
282
294
  */
283
- function completeDrawOpenContour(element: HTMLDivElement): boolean {
295
+ function completeDrawOpenContour(
296
+ element: HTMLDivElement,
297
+ contourHoleProcessingEnabled: boolean
298
+ ): boolean {
284
299
  const { canvasPoints } = this.drawData;
285
300
 
286
301
  // check and halt if necessary the drawing process, last chance to complete drawing and fire events.
@@ -299,14 +314,18 @@ function completeDrawOpenContour(element: HTMLDivElement): boolean {
299
314
  // Note: -> This is pretty expensive and may not scale well with hundreds of
300
315
  // contours. A future optimisation if we use this for segmentation is to re-do
301
316
  // this rendering with the GPU rather than SVG.
302
- const worldPoints = updatedPoints.map((canvasPoint) =>
303
- viewport.canvasToWorld(canvasPoint)
317
+
318
+ updateContourPolyline(
319
+ annotation,
320
+ {
321
+ points: updatedPoints,
322
+ closed: false,
323
+ },
324
+ viewport
304
325
  );
305
326
 
306
- annotation.data.contour.polyline = worldPoints;
307
- annotation.data.contour.closed = false;
308
- annotation.invalidated = true;
309
327
  const { textBox } = annotation.data.handles;
328
+ const worldPoints = annotation.data.contour.polyline;
310
329
 
311
330
  // Add the first and last points to the list of handles. These means they
312
331
  // will render handles on mouse hover.
@@ -322,7 +341,7 @@ function completeDrawOpenContour(element: HTMLDivElement): boolean {
322
341
  }
323
342
 
324
343
  if (!textBox.hasMoved) {
325
- triggerAnnotationCompleted(annotation);
344
+ triggerContourAnnotationCompleted(annotation, contourHoleProcessingEnabled);
326
345
  }
327
346
 
328
347
  this.isDrawing = false;
@@ -407,7 +426,7 @@ function applyCreateOnCross(
407
426
  */
408
427
  function cancelDrawing(element: HTMLElement) {
409
428
  const { allowOpenContours } = this.configuration;
410
- const { canvasPoints } = this.drawData;
429
+ const { canvasPoints, contourHoleProcessingEnabled } = this.drawData;
411
430
  const firstPoint = canvasPoints[0];
412
431
  const lastPoint = canvasPoints[canvasPoints.length - 1];
413
432
 
@@ -419,9 +438,9 @@ function cancelDrawing(element: HTMLElement) {
419
438
  this.configuration.closeContourProximity
420
439
  )
421
440
  ) {
422
- this.completeDrawOpenContour(element);
441
+ this.completeDrawOpenContour(element, contourHoleProcessingEnabled);
423
442
  } else {
424
- this.completeDrawClosedContour(element);
443
+ this.completeDrawClosedContour(element, contourHoleProcessingEnabled);
425
444
  }
426
445
  }
427
446
 
@@ -15,6 +15,7 @@ import {
15
15
  getInterpolatedPoints,
16
16
  } from '../../../utilities/planarFreehandROITool/smoothPoints';
17
17
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
18
+ import { updateContourPolyline } from '../../../utilities/contours';
18
19
  import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
19
20
  import { triggerAnnotationModified } from '../../../stateManagement/annotation/helpers/state';
20
21
 
@@ -213,12 +214,17 @@ function openContourEditOverwriteEnd(
213
214
  const { annotation, viewportIdsToRender } = this.commonData;
214
215
  const fusedCanvasPoints = this.fuseEditPointsForOpenContourEndEdit();
215
216
 
216
- const worldPoints = fusedCanvasPoints.map((canvasPoint) =>
217
- viewport.canvasToWorld(canvasPoint)
217
+ updateContourPolyline(
218
+ annotation,
219
+ {
220
+ points: fusedCanvasPoints,
221
+ closed: false,
222
+ },
223
+ viewport
218
224
  );
219
225
 
220
- annotation.data.contour.polyline = worldPoints;
221
- annotation.data.contour.closed = false;
226
+ const worldPoints = annotation.data.contour.polyline;
227
+
222
228
  // Note: Contours generate from fusedCanvasPoints will be in the direction
223
229
  // with the last point being the current mouse position
224
230
  annotation.data.handles.points = [
@@ -495,12 +501,17 @@ function finishEditOpenOnSecondCrossing(
495
501
  const { annotation, viewportIdsToRender } = this.commonData;
496
502
  const { fusedCanvasPoints, editCanvasPoints } = this.editData;
497
503
 
498
- const worldPoints = fusedCanvasPoints.map((canvasPoint) =>
499
- viewport.canvasToWorld(canvasPoint)
504
+ updateContourPolyline(
505
+ annotation,
506
+ {
507
+ points: fusedCanvasPoints,
508
+ closed: false,
509
+ },
510
+ viewport
500
511
  );
501
512
 
502
- annotation.data.contour.polyline = worldPoints;
503
- annotation.data.contour.closed = false;
513
+ const worldPoints = annotation.data.contour.polyline;
514
+
504
515
  annotation.data.handles.points = [
505
516
  worldPoints[0],
506
517
  worldPoints[worldPoints.length - 1],
@@ -551,13 +562,17 @@ function completeOpenContourEdit(element: HTMLDivElement) {
551
562
  )
552
563
  : fusedCanvasPoints;
553
564
 
554
- const worldPoints = updatedPoints.map((canvasPoint) =>
555
- viewport.canvasToWorld(canvasPoint)
565
+ updateContourPolyline(
566
+ annotation,
567
+ {
568
+ points: updatedPoints,
569
+ closed: false,
570
+ },
571
+ viewport
556
572
  );
557
573
 
558
- annotation.invalidated = true;
559
- annotation.data.contour.polyline = worldPoints;
560
- annotation.data.contour.closed = false;
574
+ const worldPoints = annotation.data.contour.polyline;
575
+
561
576
  annotation.data.handles.points = [
562
577
  worldPoints[0],
563
578
  worldPoints[worldPoints.length - 1],
@@ -47,7 +47,7 @@ function activateOpenContourEndEdit(
47
47
  }
48
48
 
49
49
  let movingTextBox = false;
50
- if ((handle as TextBoxHandle).worldPosition) {
50
+ if ((handle as TextBoxHandle)?.worldPosition) {
51
51
  movingTextBox = true;
52
52
  }
53
53
 
@@ -2,12 +2,14 @@ import type { Types } from '@cornerstonejs/core';
2
2
  import {
3
3
  drawHandles as drawHandlesSvg,
4
4
  drawPolyline as drawPolylineSvg,
5
+ drawPath as drawPathSvg,
5
6
  } from '../../../drawingSvg';
6
7
  import { polyline } from '../../../utilities/math';
7
8
  import { findOpenUShapedContourVectorToPeakOnRender } from './findOpenUShapedContourVectorToPeak';
8
9
  import { PlanarFreehandROIAnnotation } from '../../../types/ToolSpecificAnnotationTypes';
9
10
  import { StyleSpecifier } from '../../../types/AnnotationStyle';
10
11
  import { SVGDrawingHelper } from '../../../types';
12
+ import { getContourHolesDataCanvas } from '../../../utilities/contours';
11
13
 
12
14
  const { pointsAreWithinCloseContourProximity } = polyline;
13
15
 
@@ -42,7 +44,7 @@ function _getRenderingOptions(
42
44
  lineDash,
43
45
  fillColor,
44
46
  fillOpacity,
45
- connectLastToFirst: isClosedContour,
47
+ closePath: isClosedContour,
46
48
  };
47
49
 
48
50
  return options;
@@ -106,6 +108,10 @@ function renderClosedContour(
106
108
  svgDrawingHelper: SVGDrawingHelper,
107
109
  annotation: PlanarFreehandROIAnnotation
108
110
  ): void {
111
+ if (annotation.parentAnnotationUID) {
112
+ return;
113
+ }
114
+
109
115
  const { viewport } = enabledElement;
110
116
  const options = this._getRenderingOptions(enabledElement, annotation);
111
117
 
@@ -114,17 +120,19 @@ function renderClosedContour(
114
120
  // element on the tool? That feels very weird also as we'd need to manage
115
121
  // it/clean them up. Its a pre-optimisation for now and we can tackle it if it
116
122
  // becomes a problem.
117
- const canvasPoints = annotation.data.contour.polyline.map((worldPos) =>
123
+ const canvasPolyline = annotation.data.contour.polyline.map((worldPos) =>
118
124
  viewport.worldToCanvas(worldPos)
119
125
  );
120
126
 
127
+ const childContours = getContourHolesDataCanvas(annotation, viewport);
128
+ const allContours = [canvasPolyline, ...childContours];
121
129
  const polylineUID = '1';
122
130
 
123
- drawPolylineSvg(
131
+ drawPathSvg(
124
132
  svgDrawingHelper,
125
133
  annotation.annotationUID,
126
134
  polylineUID,
127
- canvasPoints,
135
+ allContours,
128
136
  options
129
137
  );
130
138
  }
@@ -245,7 +253,7 @@ function renderOpenUShapedContour(
245
253
  {
246
254
  color: options.color,
247
255
  width: options.width,
248
- connectLastToFirst: false,
256
+ closePath: false,
249
257
  lineDash: '2,2',
250
258
  }
251
259
  );
@@ -262,7 +270,7 @@ function renderOpenUShapedContour(
262
270
  {
263
271
  color: options.color,
264
272
  width: options.width,
265
- connectLastToFirst: false,
273
+ closePath: false,
266
274
  lineDash: '2,2',
267
275
  }
268
276
  );
@@ -284,7 +292,7 @@ function renderContourBeingDrawn(
284
292
 
285
293
  // Override rendering whilst drawing the contour, we don't know if its open
286
294
  // or closed yet
287
- options.connectLastToFirst = false;
295
+ options.closePath = false;
288
296
 
289
297
  drawPolylineSvg(
290
298
  svgDrawingHelper,
@@ -337,6 +345,7 @@ function renderClosedContourBeingEdited(
337
345
  svgDrawingHelper,
338
346
  annotation
339
347
  ): void {
348
+ const { viewport } = enabledElement;
340
349
  const { fusedCanvasPoints } = this.editData;
341
350
 
342
351
  if (fusedCanvasPoints === undefined) {
@@ -346,15 +355,24 @@ function renderClosedContourBeingEdited(
346
355
  return;
347
356
  }
348
357
 
349
- const options = this._getRenderingOptions(enabledElement, annotation);
358
+ // Get the polylines from child annotations (holes)
359
+ const childContours = getContourHolesDataCanvas(annotation, viewport);
350
360
 
361
+ const allContours = [fusedCanvasPoints, ...childContours];
362
+ const options = this._getRenderingOptions(enabledElement, annotation);
351
363
  const polylineUIDToRender = 'preview-1';
352
364
 
353
- drawPolylineSvg(
365
+ // Set `fillOpacity` to zero if it is a child annotation (hole) otherwise
366
+ // it would "close" the hole when editing it
367
+ if (annotation.parentAnnotationUID && options.fillOpacity) {
368
+ options.fillOpacity = 0;
369
+ }
370
+
371
+ drawPathSvg(
354
372
  svgDrawingHelper,
355
373
  annotation.annotationUID,
356
374
  polylineUIDToRender,
357
- fusedCanvasPoints,
375
+ allContours,
358
376
  options
359
377
  );
360
378
  }
@@ -13,7 +13,7 @@ import { CardinalSpline } from './CardinalSpline';
13
13
  */
14
14
  class LinearSpline extends CardinalSpline {
15
15
  constructor() {
16
- super({ scale: 0, fixedScale: true });
16
+ super({ resolution: 0, fixedResolution: true, scale: 0, fixedScale: true });
17
17
  }
18
18
  }
19
19