@cornerstonejs/tools 2.0.0-beta.26 → 2.0.0-beta.28

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 (318) hide show
  1. package/dist/esm/eventListeners/index.d.ts +2 -2
  2. package/dist/esm/eventListeners/index.js +2 -2
  3. package/dist/esm/eventListeners/mouse/mouseDownListener.js +8 -0
  4. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +18 -12
  5. package/dist/esm/eventListeners/segmentation/index.d.ts +1 -3
  6. package/dist/esm/eventListeners/segmentation/index.js +1 -3
  7. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +13 -10
  8. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -3
  9. package/dist/esm/index.d.ts +2 -2
  10. package/dist/esm/index.js +2 -2
  11. package/dist/esm/init.js +1 -5
  12. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +2 -0
  13. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +6 -5
  14. package/dist/esm/stateManagement/annotation/annotationState.js +11 -2
  15. package/dist/esm/stateManagement/index.d.ts +1 -4
  16. package/dist/esm/stateManagement/index.js +1 -3
  17. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +9 -6
  18. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +43 -25
  19. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +207 -162
  20. package/dist/esm/stateManagement/segmentation/SegmentationStyle.d.ts +42 -0
  21. package/dist/esm/stateManagement/segmentation/SegmentationStyle.js +162 -0
  22. package/dist/esm/stateManagement/segmentation/activeSegmentation.d.ts +4 -5
  23. package/dist/esm/stateManagement/segmentation/activeSegmentation.js +10 -14
  24. package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -2
  25. package/dist/esm/stateManagement/segmentation/addColorLUT.js +15 -1
  26. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.d.ts +15 -0
  27. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.js +49 -0
  28. package/dist/esm/stateManagement/segmentation/addSegmentations.d.ts +1 -1
  29. package/dist/esm/stateManagement/segmentation/addSegmentations.js +11 -7
  30. package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
  31. package/dist/esm/stateManagement/segmentation/config/index.js +2 -2
  32. package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +4 -4
  33. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +24 -24
  34. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +22 -7
  35. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +29 -29
  36. package/dist/esm/stateManagement/segmentation/config/styleHelpers.d.ts +39 -0
  37. package/dist/esm/stateManagement/segmentation/config/styleHelpers.js +48 -0
  38. package/dist/esm/stateManagement/segmentation/getActiveSegmentation.d.ts +2 -0
  39. package/dist/esm/stateManagement/segmentation/{getGlobalConfig.js → getActiveSegmentation.js} +2 -2
  40. package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -1
  41. package/dist/esm/stateManagement/segmentation/getGlobalStyle.d.ts +3 -0
  42. package/dist/esm/stateManagement/segmentation/getGlobalStyle.js +4 -0
  43. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +9 -1
  44. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +10 -2
  45. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +5 -1
  46. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +2 -2
  47. package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +5 -5
  48. package/dist/esm/stateManagement/segmentation/getViewportSegmentations.d.ts +3 -0
  49. package/dist/esm/stateManagement/segmentation/getViewportSegmentations.js +15 -0
  50. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.d.ts +1 -0
  51. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.js +31 -0
  52. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.d.ts +1 -2
  53. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +4 -6
  54. package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.d.ts → helpers/computeStackLabelmapFromVolume.d.ts} +2 -2
  55. package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.js → helpers/computeStackLabelmapFromVolume.js} +8 -5
  56. package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.d.ts +3 -0
  57. package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.js +4 -0
  58. package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.d.ts +1 -0
  59. package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.js +7 -0
  60. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.d.ts +8 -0
  61. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.js +27 -0
  62. package/dist/esm/stateManagement/segmentation/helpers/index.d.ts +2 -1
  63. package/dist/esm/stateManagement/segmentation/helpers/index.js +2 -1
  64. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +4 -6
  65. package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +1 -1
  66. package/dist/esm/stateManagement/segmentation/index.d.ts +14 -7
  67. package/dist/esm/stateManagement/segmentation/index.js +14 -7
  68. package/dist/esm/stateManagement/segmentation/{addRepresentationData.d.ts → internalAddRepresentationData.d.ts} +2 -2
  69. package/dist/esm/stateManagement/segmentation/{addRepresentationData.js → internalAddRepresentationData.js} +5 -2
  70. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.d.ts +1 -1
  71. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.js +18 -58
  72. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +9 -10
  73. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/extractContourData.js +8 -5
  74. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +9 -2
  75. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +2 -2
  76. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +4 -6
  77. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +1 -1
  78. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +4 -4
  79. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +1 -7
  80. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +1 -3
  81. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +9 -8
  82. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -1
  83. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -9
  84. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +1 -1
  85. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +7 -5
  86. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.d.ts +14 -2
  87. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +69 -19
  88. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +6 -18
  89. package/dist/esm/stateManagement/segmentation/segmentationState.js +9 -18
  90. package/dist/esm/stateManagement/segmentation/setActiveSegmentation.d.ts +1 -0
  91. package/dist/esm/stateManagement/segmentation/setActiveSegmentation.js +5 -0
  92. package/dist/esm/stateManagement/segmentation/setGlobalStyle.d.ts +3 -0
  93. package/dist/esm/stateManagement/segmentation/setGlobalStyle.js +8 -0
  94. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +5 -1
  95. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +2 -2
  96. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +1 -3
  97. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +1 -3
  98. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -1
  99. package/dist/esm/store/ToolGroupManager/ToolGroup.js +23 -9
  100. package/dist/esm/store/ToolGroupManager/createToolGroup.d.ts +1 -1
  101. package/dist/esm/store/ToolGroupManager/createToolGroup.js +3 -3
  102. package/dist/esm/tools/AdvancedMagnifyTool.js +1 -1
  103. package/dist/esm/tools/CrosshairsTool.js +1 -2
  104. package/dist/esm/tools/MIPJumpToClickTool.js +1 -1
  105. package/dist/esm/tools/ReferenceLinesTool.js +5 -2
  106. package/dist/esm/tools/StackScrollTool.d.ts +4 -0
  107. package/dist/esm/tools/StackScrollTool.js +104 -15
  108. package/dist/esm/tools/WindowLevelTool.js +3 -2
  109. package/dist/esm/tools/annotation/AngleTool.js +1 -1
  110. package/dist/esm/tools/annotation/BidirectionalTool.js +1 -1
  111. package/dist/esm/tools/annotation/CircleROITool.js +1 -1
  112. package/dist/esm/tools/annotation/EllipticalROITool.js +1 -1
  113. package/dist/esm/tools/annotation/HeightTool.js +1 -1
  114. package/dist/esm/tools/annotation/LengthTool.js +1 -1
  115. package/dist/esm/tools/annotation/LivewireContourTool.js +3 -3
  116. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +1 -1
  117. package/dist/esm/tools/annotation/ProbeTool.js +2 -2
  118. package/dist/esm/tools/annotation/RectangleROITool.js +1 -1
  119. package/dist/esm/tools/annotation/SplineROITool.js +2 -3
  120. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +1 -1
  121. package/dist/esm/tools/base/BaseTool.d.ts +1 -2
  122. package/dist/esm/tools/base/BaseTool.js +5 -18
  123. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +28 -25
  124. package/dist/esm/tools/displayTools/Contour/contourConfig.d.ts +3 -3
  125. package/dist/esm/tools/displayTools/Contour/contourConfig.js +2 -2
  126. package/dist/esm/tools/displayTools/Contour/contourDisplay.d.ts +1 -1
  127. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -7
  128. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +26 -57
  129. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.d.ts +1 -1
  130. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js +2 -4
  131. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +1 -1
  132. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +39 -10
  133. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.d.ts +3 -5
  134. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +3 -16
  135. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -1
  136. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +86 -90
  137. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.d.ts +1 -1
  138. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -2
  139. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +1 -1
  140. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +3 -3
  141. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.d.ts +2 -2
  142. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.js +5 -3
  143. package/dist/esm/tools/displayTools/Surface/surfaceConfig.d.ts +3 -3
  144. package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +2 -2
  145. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.d.ts +1 -1
  146. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +7 -8
  147. package/dist/esm/tools/index.d.ts +1 -2
  148. package/dist/esm/tools/index.js +1 -2
  149. package/dist/esm/tools/segmentation/BrushTool.d.ts +0 -4
  150. package/dist/esm/tools/segmentation/BrushTool.js +23 -22
  151. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +2 -2
  152. package/dist/esm/tools/segmentation/CircleScissorsTool.d.ts +1 -1
  153. package/dist/esm/tools/segmentation/CircleScissorsTool.js +11 -10
  154. package/dist/esm/tools/segmentation/PaintFillTool.js +5 -7
  155. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +2 -2
  156. package/dist/esm/tools/segmentation/RectangleScissorsTool.d.ts +0 -1
  157. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +9 -10
  158. package/dist/esm/tools/segmentation/SegmentSelectTool.d.ts +2 -2
  159. package/dist/esm/tools/segmentation/SegmentSelectTool.js +17 -26
  160. package/dist/esm/tools/segmentation/SphereScissorsTool.d.ts +0 -1
  161. package/dist/esm/tools/segmentation/SphereScissorsTool.js +6 -9
  162. package/dist/esm/tools/segmentation/strategies/BrushStrategy.d.ts +2 -0
  163. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +2 -0
  164. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +1 -2
  165. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +1 -1
  166. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +3 -3
  167. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +4 -4
  168. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +1 -1
  169. package/dist/esm/tools/segmentation/strategies/fillCircle.js +3 -3
  170. package/dist/esm/tools/segmentation/strategies/fillSphere.js +3 -3
  171. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +21 -6
  172. package/dist/esm/types/AnnotationGroupSelector.js +0 -1
  173. package/dist/esm/types/AnnotationRenderContext.js +0 -1
  174. package/dist/esm/types/AnnotationStyle.js +0 -1
  175. package/dist/esm/types/AnnotationTypes.js +0 -1
  176. package/dist/esm/types/BoundsIJK.js +0 -1
  177. package/dist/esm/types/CINETypes.js +0 -1
  178. package/dist/esm/types/CalculatorTypes.js +0 -1
  179. package/dist/esm/types/CardinalSplineProps.js +0 -1
  180. package/dist/esm/types/ClosestControlPoint.js +0 -1
  181. package/dist/esm/types/ClosestPoint.js +0 -1
  182. package/dist/esm/types/ClosestSplinePoint.js +0 -1
  183. package/dist/esm/types/ContourSegmentationAnnotation.js +0 -1
  184. package/dist/esm/types/ContourTypes.d.ts +1 -2
  185. package/dist/esm/types/ContourTypes.js +0 -1
  186. package/dist/esm/types/ControlPointInfo.js +0 -1
  187. package/dist/esm/types/CursorTypes.js +0 -1
  188. package/dist/esm/types/EventTypes.d.ts +2 -2
  189. package/dist/esm/types/EventTypes.js +0 -1
  190. package/dist/esm/types/FloodFillTypes.js +0 -1
  191. package/dist/esm/types/IAnnotationManager.js +0 -1
  192. package/dist/esm/types/IBaseTool.js +0 -1
  193. package/dist/esm/types/IDistance.js +0 -1
  194. package/dist/esm/types/IPoints.js +0 -1
  195. package/dist/esm/types/ISculptToolShape.js +0 -1
  196. package/dist/esm/types/ISetToolModeOptions.js +0 -1
  197. package/dist/esm/types/ISpline.js +0 -1
  198. package/dist/esm/types/ISynchronizerEventHandler.js +0 -1
  199. package/dist/esm/types/IToolClassReference.js +0 -1
  200. package/dist/esm/types/IToolGroup.js +0 -1
  201. package/dist/esm/types/ITouchPoints.js +0 -1
  202. package/dist/esm/types/InteractionTypes.js +0 -1
  203. package/dist/esm/types/InternalToolTypes.js +0 -1
  204. package/dist/esm/types/InterpolationTypes.js +0 -1
  205. package/dist/esm/types/JumpToSliceOptions.js +0 -1
  206. package/dist/esm/types/LabelmapToolOperationData.d.ts +0 -1
  207. package/dist/esm/types/LabelmapToolOperationData.js +0 -1
  208. package/dist/esm/types/LabelmapTypes.d.ts +3 -7
  209. package/dist/esm/types/LabelmapTypes.js +0 -1
  210. package/dist/esm/types/PlanarBoundingBox.js +0 -1
  211. package/dist/esm/types/PolySeg.d.ts +1 -1
  212. package/dist/esm/types/PolySeg.js +0 -1
  213. package/dist/esm/types/SVGDrawingHelper.js +0 -1
  214. package/dist/esm/types/ScrollOptions.js +0 -1
  215. package/dist/esm/types/SegmentationStateTypes.d.ts +35 -56
  216. package/dist/esm/types/SegmentationStateTypes.js +0 -1
  217. package/dist/esm/types/SplineCurveSegment.js +0 -1
  218. package/dist/esm/types/SplineLineSegment.js +0 -1
  219. package/dist/esm/types/SplineProps.js +0 -1
  220. package/dist/esm/types/SurfaceTypes.d.ts +1 -1
  221. package/dist/esm/types/SurfaceTypes.js +0 -1
  222. package/dist/esm/types/ToolAction.js +0 -1
  223. package/dist/esm/types/ToolHandle.js +0 -1
  224. package/dist/esm/types/ToolProps.js +0 -1
  225. package/dist/esm/types/ToolSpecificAnnotationTypes.js +0 -1
  226. package/dist/esm/types/index.d.ts +2 -2
  227. package/dist/esm/types/index.js +0 -1
  228. package/dist/esm/utilities/cine/playClip.js +1 -1
  229. package/dist/esm/utilities/contours/updateContourPolyline.js +3 -0
  230. package/dist/esm/utilities/index.d.ts +2 -1
  231. package/dist/esm/utilities/index.js +2 -1
  232. package/dist/esm/utilities/math/circle/_types.js +0 -1
  233. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.js +0 -1
  234. package/dist/esm/utilities/pointInSurroundingSphereCallback.d.ts +8 -0
  235. package/dist/esm/utilities/pointInSurroundingSphereCallback.js +71 -0
  236. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +2 -2
  237. package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.js +10 -9
  238. package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.js +9 -8
  239. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +14 -16
  240. package/dist/esm/utilities/segmentation/index.d.ts +1 -3
  241. package/dist/esm/utilities/segmentation/index.js +1 -3
  242. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +3 -0
  243. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +1 -1
  244. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +0 -1
  245. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +0 -1
  246. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +0 -1
  247. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +0 -1
  248. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +0 -1
  249. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +0 -1
  250. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +0 -1
  251. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +0 -1
  252. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +0 -1
  253. package/dist/esm/utilities/voi/colorbar/types/index.js +0 -1
  254. package/dist/esm/widgets/types/WidgetProps.js +0 -1
  255. package/dist/esm/widgets/types/WidgetSize.js +0 -1
  256. package/dist/esm/widgets/types/index.js +0 -1
  257. package/dist/esm/workers/polySegConverters.js +4 -3
  258. package/package.json +73 -20
  259. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.d.ts +0 -3
  260. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +0 -14
  261. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.d.ts +0 -3
  262. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +0 -8
  263. package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +0 -2
  264. package/dist/esm/stateManagement/segmentation/addSegmentation.js +0 -11
  265. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +0 -2
  266. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +0 -10
  267. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.d.ts +0 -8
  268. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js +0 -19
  269. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +0 -14
  270. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +0 -54
  271. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +0 -1
  272. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +0 -8
  273. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +0 -1
  274. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +0 -8
  275. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +0 -2
  276. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +0 -5
  277. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +0 -2
  278. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +0 -6
  279. package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +0 -2
  280. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +0 -2
  281. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +0 -5
  282. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +0 -2
  283. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +0 -5
  284. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +0 -7
  285. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +0 -6
  286. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +0 -2
  287. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +0 -12
  288. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +0 -2
  289. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +0 -5
  290. package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +0 -1
  291. package/dist/esm/stateManagement/segmentation/removeRepresentation.js +0 -9
  292. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +0 -1
  293. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +0 -9
  294. package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +0 -2
  295. package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +0 -9
  296. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +0 -2
  297. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +0 -9
  298. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +0 -2
  299. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +0 -9
  300. package/dist/esm/tools/VolumeRotateMouseWheelTool.d.ts +0 -9
  301. package/dist/esm/tools/VolumeRotateMouseWheelTool.js +0 -52
  302. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.d.ts +0 -9
  303. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.js +0 -10
  304. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +0 -5
  305. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +0 -13
  306. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.d.ts +0 -2
  307. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.js +0 -11
  308. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.d.ts +0 -2
  309. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.js +0 -10
  310. package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
  311. package/dist/umd/78.index.js +0 -3
  312. package/dist/umd/78.index.js.LICENSE.txt +0 -5
  313. package/dist/umd/78.index.js.map +0 -1
  314. package/dist/umd/985.index.js +0 -2
  315. package/dist/umd/985.index.js.map +0 -1
  316. package/dist/umd/index.js +0 -3
  317. package/dist/umd/index.js.LICENSE.txt +0 -6
  318. package/dist/umd/index.js.map +0 -1
@@ -1,6 +1,13 @@
1
1
  import { SegmentationRepresentations } from '../../../../enums';
2
2
  import { computeAndAddRepresentation } from '../computeAndAddRepresentation';
3
3
  import { computeLabelmapData } from './labelmapComputationStrategies';
4
- export function computeAndAddLabelmapRepresentation(segmentationId, options = {}) {
5
- return computeAndAddRepresentation(segmentationId, SegmentationRepresentations.Labelmap, () => computeLabelmapData(segmentationId, options), () => undefined);
4
+ import { defaultSegmentationStateManager } from '../../SegmentationStateManager';
5
+ import { triggerSegmentationDataModified } from '../../triggerSegmentationEvents';
6
+ export async function computeAndAddLabelmapRepresentation(segmentationId, options = {}) {
7
+ return computeAndAddRepresentation(segmentationId, SegmentationRepresentations.Labelmap, () => computeLabelmapData(segmentationId, options), () => null, () => {
8
+ defaultSegmentationStateManager.processLabelmapRepresentationAddition(options.viewport.id, segmentationId);
9
+ setTimeout(() => {
10
+ triggerSegmentationDataModified(segmentationId);
11
+ }, 0);
12
+ });
6
13
  }
@@ -17,7 +17,7 @@ export async function convertContourToVolumeLabelmap(contourRepresentationData,
17
17
  throw new Error('No imageIds found, labelmap computation from contour requires viewports with imageIds');
18
18
  }
19
19
  const segmentationVolumeId = utilities.uuidv4();
20
- const segmentationVolume = volumeLoader.createAndCacheDerivedSegmentationVolume(volumeId, {
20
+ const segmentationVolume = volumeLoader.createAndCacheDerivedLabelmapVolume(volumeId, {
21
21
  volumeId: segmentationVolumeId,
22
22
  });
23
23
  const { dimensions, origin, direction, spacing, voxelManager } = segmentationVolume;
@@ -59,7 +59,7 @@ export async function convertContourToStackLabelmap(contourRepresentationData, o
59
59
  throw new Error('ImageIds must be cached before converting contour to labelmap');
60
60
  }
61
61
  });
62
- const segImages = await imageLoader.createAndCacheDerivedSegmentationImages(imageIds);
62
+ const segImages = await imageLoader.createAndCacheDerivedLabelmapImages(imageIds);
63
63
  const segmentationImageIds = segImages.map((it) => it.imageId);
64
64
  const { segmentIndices, annotationUIDsInSegmentMap } = _getAnnotationMapFromSegmentation(contourRepresentationData, options);
65
65
  const segmentationsInfo = new Map();
@@ -3,7 +3,7 @@ import { getUniqueSegmentIndices } from '../../../../utilities/segmentation/getU
3
3
  import { getSegmentation } from '../../getSegmentation';
4
4
  import { convertContourToStackLabelmap, convertContourToVolumeLabelmap, } from './convertContourToLabelmap';
5
5
  import { convertSurfaceToVolumeLabelmap } from './convertSurfaceToLabelmap';
6
- import { computeStackSegmentationFromVolume } from '../../convertVolumeToStackSegmentation';
6
+ import { computeStackLabelmapFromVolume } from '../../helpers/computeStackLabelmapFromVolume';
7
7
  export async function computeLabelmapData(segmentationId, options = {}) {
8
8
  const segmentIndices = options.segmentIndices?.length
9
9
  ? options.segmentIndices
@@ -49,7 +49,6 @@ async function computeLabelmapFromContourSegmentation(segmentationId, options =
49
49
  : convertContourToStackLabelmap;
50
50
  const result = await convertFunction(representationData, {
51
51
  segmentIndices,
52
- segmentationRepresentationUID: options.segmentationRepresentationUID,
53
52
  viewport: options.viewport,
54
53
  });
55
54
  return result;
@@ -74,12 +73,11 @@ async function computeLabelmapFromSurfaceSegmentation(segmentationId, options =
74
73
  let segmentationVolume;
75
74
  if (isVolume) {
76
75
  const volumeId = viewport.getVolumeId();
77
- segmentationVolume =
78
- await volumeLoader.createAndCacheDerivedSegmentationVolume(volumeId);
76
+ segmentationVolume = await volumeLoader.createAndCacheDerivedLabelmapVolume(volumeId);
79
77
  }
80
78
  else {
81
79
  const imageIds = options.viewport.getImageIds();
82
- const segImages = imageLoader.createAndCacheDerivedSegmentationImages(imageIds);
80
+ const segImages = imageLoader.createAndCacheDerivedLabelmapImages(imageIds);
83
81
  const segImageIds = segImages.map((image) => image.imageId);
84
82
  segmentationVolume = await volumeLoader.createAndCacheVolumeFromImages('generatedSegmentationVolumeId', segImageIds);
85
83
  }
@@ -87,7 +85,7 @@ async function computeLabelmapFromSurfaceSegmentation(segmentationId, options =
87
85
  if (isVolume) {
88
86
  return result;
89
87
  }
90
- const stackData = (await computeStackSegmentationFromVolume({
88
+ const stackData = (await computeStackLabelmapFromVolume({
91
89
  volumeId: segmentationVolume.volumeId,
92
90
  }));
93
91
  return stackData;
@@ -1,3 +1,3 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
  import type { LabelmapSegmentationData } from '../../../../types/LabelmapTypes';
3
- export declare function convertLabelmapToSurface(labelmapRepresentationData: LabelmapSegmentationData, segmentIndex: number, isVolume?: boolean): Promise<Types.SurfaceData>;
3
+ export declare function convertLabelmapToSurface(labelmapRepresentationData: LabelmapSegmentationData, segmentIndex: number): Promise<Types.SurfaceData>;
@@ -1,5 +1,5 @@
1
1
  import { cache, eventTarget, getWebWorkerManager, triggerEvent, Enums, } from '@cornerstonejs/core';
2
- import { computeVolumeSegmentationFromStack } from '../../SegmentationStateManager';
2
+ import { computeVolumeLabelmapFromStack } from '../../helpers/computeVolumeLabelmapFromStack';
3
3
  import { WorkerTypes } from '../../../../enums';
4
4
  const workerManager = getWebWorkerManager();
5
5
  const triggerWorkerProgress = (eventTarget, progress) => {
@@ -8,15 +8,15 @@ const triggerWorkerProgress = (eventTarget, progress) => {
8
8
  type: WorkerTypes.POLYSEG_LABELMAP_TO_SURFACE,
9
9
  });
10
10
  };
11
- export async function convertLabelmapToSurface(labelmapRepresentationData, segmentIndex, isVolume = true) {
11
+ export async function convertLabelmapToSurface(labelmapRepresentationData, segmentIndex) {
12
12
  let volumeId;
13
- if (isVolume) {
13
+ if (labelmapRepresentationData.volumeId) {
14
14
  volumeId = labelmapRepresentationData
15
15
  .volumeId;
16
16
  }
17
17
  else {
18
18
  const { imageIds } = labelmapRepresentationData;
19
- ({ volumeId } = await computeVolumeSegmentationFromStack({
19
+ ({ volumeId } = await computeVolumeLabelmapFromStack({
20
20
  imageIds,
21
21
  }));
22
22
  }
@@ -1,19 +1,13 @@
1
1
  import { Enums, geometryLoader } from '@cornerstonejs/core';
2
2
  import { getSegmentIndexColor } from '../../config/segmentationColor';
3
- import { getSegmentationRepresentation } from '../../getSegmentationRepresentation';
4
3
  import { getSegmentation } from '../../getSegmentation';
5
4
  export async function createAndCacheSurfacesFromRaw(segmentationId, rawSurfacesData, options = {}) {
6
- let segmentationRepresentation;
7
- if (options.segmentationRepresentationUID) {
8
- segmentationRepresentation = getSegmentationRepresentation(options.segmentationRepresentationUID);
9
- }
10
5
  const segmentation = getSegmentation(segmentationId);
11
6
  const geometryIds = new Map();
12
7
  const promises = Object.keys(rawSurfacesData).map(async (index) => {
13
8
  const rawSurfaceData = rawSurfacesData[index];
14
9
  const segmentIndex = rawSurfaceData.segmentIndex;
15
- const color = segmentationRepresentation;
16
- getSegmentIndexColor(segmentationRepresentation.segmentationRepresentationUID, segmentIndex).slice(0, 3);
10
+ const color = getSegmentIndexColor(options.viewport.id, segmentation.segmentationId, segmentIndex).slice(0, 3);
17
11
  if (!color) {
18
12
  throw new Error('No color found for segment index, unable to create surface');
19
13
  }
@@ -2,7 +2,6 @@ import { getUniqueSegmentIndices } from '../../../../utilities/segmentation/getU
2
2
  import { getSegmentation } from '../../getSegmentation';
3
3
  import { convertContourToSurface } from './convertContourToSurface';
4
4
  import { createAndCacheSurfacesFromRaw } from './createAndCacheSurfacesFromRaw';
5
- import { isVolumeSegmentation } from '../../../../tools/segmentation/strategies/utils/stackVolumeCheck';
6
5
  import { convertLabelmapToSurface } from './convertLabelmapToSurface';
7
6
  export async function computeSurfaceData(segmentationId, options = {}) {
8
7
  const segmentIndices = options.segmentIndices?.length
@@ -41,11 +40,10 @@ async function computeSurfaceFromLabelmapSegmentation(segmentationId, options =
41
40
  console.warn('Only support surface update from labelmaps');
42
41
  return;
43
42
  }
44
- const isVolume = isVolumeSegmentation(segmentation.representationData.Labelmap);
45
43
  const labelmapRepresentationData = segmentation.representationData.Labelmap;
46
44
  const segmentIndices = options.segmentIndices || getUniqueSegmentIndices(segmentationId);
47
45
  const promises = segmentIndices.map((index) => {
48
- const surface = convertLabelmapToSurface(labelmapRepresentationData, index, isVolume);
46
+ const surface = convertLabelmapToSurface(labelmapRepresentationData, index);
49
47
  return surface;
50
48
  });
51
49
  const surfaces = await Promise.allSettled(promises);
@@ -1,7 +1,9 @@
1
1
  import { cache } from '@cornerstonejs/core';
2
2
  import { getUniqueSegmentIndices } from '../../../../utilities/segmentation/getUniqueSegmentIndices';
3
- import { getSegmentation, getSegmentationRepresentations, getViewportIdsWithSegmentation, } from '../../segmentationState';
3
+ import { getViewportIdsWithSegmentation } from '../../getViewportIdsWithSegmentation';
4
+ import { getSegmentation } from '../../getSegmentation';
4
5
  import { triggerSegmentationModified } from '../../triggerSegmentationEvents';
6
+ import { getSegmentationRepresentation } from '../../getSegmentationRepresentation';
5
7
  import { SegmentationRepresentations } from '../../../../enums';
6
8
  import { computeSurfaceFromLabelmapSegmentation } from './surfaceComputationStrategies';
7
9
  import { createAndCacheSurfacesFromRaw } from './createAndCacheSurfacesFromRaw';
@@ -29,15 +31,14 @@ export async function updateSurfaceData(segmentationId) {
29
31
  if (!geometry) {
30
32
  const viewportIds = getViewportIdsWithSegmentation(segmentationId);
31
33
  return viewportIds.map((viewportId) => {
32
- const segmentationRepresentations = getSegmentationRepresentations(viewportId);
33
- return segmentationRepresentations.map((segmentationRepresentation) => {
34
- if (segmentationRepresentation.type !==
35
- SegmentationRepresentations.Surface) {
36
- return;
37
- }
34
+ const surfaceRepresentation = getSegmentationRepresentation(viewportId, {
35
+ segmentationId,
36
+ type: SegmentationRepresentations.Surface,
37
+ });
38
+ return [surfaceRepresentation].map((surfaceRepresentation) => {
38
39
  segmentation.representationData.Surface.geometryIds.set(segmentIndex, geometryId);
39
40
  return createAndCacheSurfacesFromRaw(segmentationId, [{ segmentIndex, data }], {
40
- segmentationRepresentationUID: segmentationRepresentation.segmentationRepresentationUID,
41
+ segmentationId: surfaceRepresentation.segmentationId,
41
42
  });
42
43
  });
43
44
  });
@@ -1,2 +1,3 @@
1
- declare function canComputeRequestedRepresentation(segmentationRepresentationUID: string): boolean;
1
+ import { SegmentationRepresentations } from '../../../enums';
2
+ declare function canComputeRequestedRepresentation(segmentationId: string, type: SegmentationRepresentations): boolean;
2
3
  export { canComputeRequestedRepresentation };
@@ -1,6 +1,5 @@
1
1
  import { SegmentationRepresentations } from '../../../enums';
2
2
  import { getSegmentation } from '../getSegmentation';
3
- import { getSegmentationRepresentation } from '../getSegmentationRepresentation';
4
3
  import { validate as validateLabelmap } from '../../../tools/displayTools/Labelmap/validateLabelmap';
5
4
  const conversionPaths = new Map([
6
5
  [
@@ -22,15 +21,10 @@ const conversionPaths = new Map([
22
21
  new Set([SegmentationRepresentations.Labelmap]),
23
22
  ],
24
23
  ]);
25
- function canComputeRequestedRepresentation(segmentationRepresentationUID) {
26
- const segmentationRepresentation = getSegmentationRepresentation(segmentationRepresentationUID);
27
- const { type: representationType, polySeg } = segmentationRepresentation;
28
- if (!polySeg || !polySeg.enabled) {
29
- return false;
30
- }
31
- const { representationData } = getSegmentation(segmentationRepresentation.segmentationId);
24
+ function canComputeRequestedRepresentation(segmentationId, type) {
25
+ const { representationData } = getSegmentation(segmentationId);
32
26
  const existingRepresentationTypes = getExistingRepresentationTypes(representationData);
33
- return existingRepresentationTypes.some((existingRepresentationType) => canConvertFromTo(existingRepresentationType, representationType));
27
+ return existingRepresentationTypes.some((existingRepresentationType) => canConvertFromTo(existingRepresentationType, type));
34
28
  }
35
29
  function getExistingRepresentationTypes(representationData) {
36
30
  const supportedTypes = [];
@@ -1,3 +1,3 @@
1
1
  import type { SegmentationRepresentations } from '../../../enums';
2
- declare function computeAndAddRepresentation<T>(segmentationId: string, representationType: SegmentationRepresentations, computeFunction: () => Promise<T>, updateFunction?: () => void): Promise<T>;
2
+ declare function computeAndAddRepresentation<T>(segmentationId: string, type: SegmentationRepresentations, computeFunction: () => Promise<T>, updateFunction?: () => void, onComputationComplete?: () => void): Promise<T>;
3
3
  export { computeAndAddRepresentation };
@@ -1,24 +1,26 @@
1
1
  import { eventTarget } from '@cornerstonejs/core';
2
2
  import { Events } from '../../../enums';
3
- import addRepresentationData from '../addRepresentationData';
3
+ import addRepresentationData from '../internalAddRepresentationData';
4
4
  import { triggerSegmentationModified } from '../triggerSegmentationEvents';
5
5
  import debounce from '../../../utilities/debounce';
6
6
  import { registerPolySegWorker } from './registerPolySegWorker';
7
+ import { defaultSegmentationStateManager } from '../SegmentationStateManager';
7
8
  const computedRepresentations = new Map();
8
- async function computeAndAddRepresentation(segmentationId, representationType, computeFunction, updateFunction) {
9
+ async function computeAndAddRepresentation(segmentationId, type, computeFunction, updateFunction, onComputationComplete) {
9
10
  registerPolySegWorker();
10
11
  const data = await computeFunction();
11
12
  addRepresentationData({
12
13
  segmentationId,
13
- type: representationType,
14
+ type,
14
15
  data,
15
16
  });
17
+ onComputationComplete?.();
16
18
  if (!computedRepresentations.has(segmentationId)) {
17
19
  computedRepresentations.set(segmentationId, []);
18
20
  }
19
21
  const representations = computedRepresentations.get(segmentationId);
20
- if (!representations.includes(representationType)) {
21
- representations.push(representationType);
22
+ if (!representations.includes(type)) {
23
+ representations.push(type);
22
24
  }
23
25
  subscribeToSegmentationChanges(updateFunction);
24
26
  triggerSegmentationModified(segmentationId);
@@ -1,2 +1,14 @@
1
- declare function removeSegmentationRepresentations(viewportId: string, segmentationRepresentationUIDs?: string[] | undefined, immediate?: boolean): void;
2
- export default removeSegmentationRepresentations;
1
+ import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
2
+ declare function removeSegmentationRepresentation(viewportId: string, specifier: {
3
+ segmentationId: string;
4
+ type: SegmentationRepresentations;
5
+ }, immediate?: boolean): void;
6
+ declare function removeSegmentationRepresentations(viewportId: string, specifier: {
7
+ segmentationId: string;
8
+ type?: SegmentationRepresentations;
9
+ }, immediate?: boolean): void;
10
+ declare function removeAllSegmentationRepresentations(): void;
11
+ declare function removeLabelmapRepresentation(viewportId: string, segmentationId: string, immediate?: boolean): void;
12
+ declare function removeContourRepresentation(viewportId: string, segmentationId: string, immediate?: boolean): void;
13
+ declare function removeSurfaceRepresentation(viewportId: string, segmentationId: string, immediate?: boolean): void;
14
+ export { removeSegmentationRepresentation, removeSegmentationRepresentations, removeAllSegmentationRepresentations, removeLabelmapRepresentation, removeContourRepresentation, removeSurfaceRepresentation, };
@@ -1,26 +1,76 @@
1
1
  import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
2
2
  import labelmapDisplay from '../../tools/displayTools/Labelmap/labelmapDisplay';
3
3
  import contourDisplay from '../../tools/displayTools/Contour/contourDisplay';
4
- import { getSegmentationRepresentation } from './segmentationState';
5
- function removeSegmentationRepresentations(viewportId, segmentationRepresentationUIDs, immediate) {
6
- if (!segmentationRepresentationUIDs) {
7
- return;
8
- }
9
- segmentationRepresentationUIDs.forEach((segmentationDataUID) => {
10
- _removeRepresentation(viewportId, segmentationDataUID, immediate);
4
+ import { getSegmentationRepresentations } from './getSegmentationRepresentation';
5
+ import { getEnabledElementByViewportId } from '@cornerstonejs/core';
6
+ import { defaultSegmentationStateManager } from './SegmentationStateManager';
7
+ function removeSegmentationRepresentation(viewportId, specifier, immediate) {
8
+ const { segmentationId, type } = specifier;
9
+ _removeRepresentation(viewportId, segmentationId, type, immediate);
10
+ defaultSegmentationStateManager.removeSegmentationRepresentation(viewportId, {
11
+ segmentationId,
12
+ type,
11
13
  });
12
14
  }
13
- function _removeRepresentation(viewportId, segmentationRepresentationUID, immediate) {
14
- const segmentationRepresentation = getSegmentationRepresentation(segmentationRepresentationUID);
15
- const { type } = segmentationRepresentation;
16
- if (type === SegmentationRepresentations.Labelmap) {
17
- labelmapDisplay.removeRepresentation(viewportId, segmentationRepresentationUID, immediate);
18
- }
19
- else if (type === SegmentationRepresentations.Contour) {
20
- contourDisplay.removeRepresentation(viewportId, segmentationRepresentationUID, immediate);
21
- }
22
- else {
23
- throw new Error(`The representation ${type} is not supported yet`);
15
+ function removeSegmentationRepresentations(viewportId, specifier, immediate) {
16
+ const { segmentationId, type } = specifier;
17
+ defaultSegmentationStateManager.removeSegmentationRepresentations(viewportId, {
18
+ segmentationId,
19
+ type,
20
+ });
21
+ _removeRepresentation(viewportId, segmentationId, type, immediate);
22
+ }
23
+ function removeAllSegmentationRepresentations() {
24
+ const state = defaultSegmentationStateManager.getAllViewportSegmentationRepresentations();
25
+ state.forEach(({ viewportId, representations }) => {
26
+ representations.forEach(({ segmentationId, type }) => {
27
+ removeSegmentationRepresentation(viewportId, {
28
+ segmentationId,
29
+ type,
30
+ });
31
+ });
32
+ });
33
+ defaultSegmentationStateManager.resetState();
34
+ }
35
+ function removeLabelmapRepresentation(viewportId, segmentationId, immediate) {
36
+ removeSegmentationRepresentation(viewportId, {
37
+ segmentationId,
38
+ type: SegmentationRepresentations.Labelmap,
39
+ }, immediate);
40
+ }
41
+ function removeContourRepresentation(viewportId, segmentationId, immediate) {
42
+ removeSegmentationRepresentation(viewportId, {
43
+ segmentationId,
44
+ type: SegmentationRepresentations.Contour,
45
+ }, immediate);
46
+ }
47
+ function removeSurfaceRepresentation(viewportId, segmentationId, immediate) {
48
+ removeSegmentationRepresentation(viewportId, {
49
+ segmentationId,
50
+ type: SegmentationRepresentations.Surface,
51
+ }, immediate);
52
+ }
53
+ function _removeRepresentation(viewportId, segmentationId, type, immediate) {
54
+ const representations = getSegmentationRepresentations(viewportId, {
55
+ segmentationId,
56
+ type,
57
+ });
58
+ representations.forEach((representation) => {
59
+ if (representation.type === type) {
60
+ if (type === SegmentationRepresentations.Labelmap) {
61
+ labelmapDisplay.removeRepresentation(viewportId, segmentationId, immediate);
62
+ }
63
+ else if (type === SegmentationRepresentations.Contour) {
64
+ contourDisplay.removeRepresentation(viewportId, segmentationId, immediate);
65
+ }
66
+ else {
67
+ throw new Error(`The representation ${type} is not supported yet`);
68
+ }
69
+ }
70
+ });
71
+ const { viewport } = getEnabledElementByViewportId(viewportId);
72
+ if (viewport) {
73
+ viewport.render();
24
74
  }
25
75
  }
26
- export default removeSegmentationRepresentations;
76
+ export { removeSegmentationRepresentation, removeSegmentationRepresentations, removeAllSegmentationRepresentations, removeLabelmapRepresentation, removeContourRepresentation, removeSurfaceRepresentation, };
@@ -1,29 +1,17 @@
1
1
  import { getSegmentation } from './getSegmentation';
2
2
  import { getSegmentations } from './getSegmentations';
3
- import { addSegmentation } from './addSegmentation';
3
+ import { addSegmentations } from './addSegmentations';
4
4
  import { removeSegmentation } from './removeSegmentation';
5
- import { getAllSegmentationRepresentations } from './getAllSegmentationRepresentations';
6
- import { getSegmentationRepresentation } from './getSegmentationRepresentation';
7
- import { removeRepresentation } from './removeRepresentation';
8
- import { getGlobalConfig } from './getGlobalConfig';
9
- import { setGlobalConfig } from './setGlobalConfig';
10
- import { getSegmentationRepresentationConfig } from './getSegmentationRepresentationConfig';
11
- import { setSegmentationRepresentationConfig } from './setSegmentationRepresentationConfig';
12
- import { getPerSegmentConfig } from './getPerSegmentConfig';
13
- import { setPerSegmentConfig } from './setPerSegmentConfig';
14
- import { getSegmentationRepresentations } from './getSegmentationRepresentations';
15
- import { getSegmentationRepresentationViewportStates } from './getSegmentationRepresentationViewportStates';
5
+ import { removeLabelmapRepresentation, removeContourRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentation, removeAllSegmentationRepresentations } from './removeSegmentationRepresentations';
16
6
  import { addColorLUT } from './addColorLUT';
17
7
  import { getColorLUT } from './getColorLUT';
18
8
  import { getNextColorLUTIndex } from './getNextColorLUTIndex';
19
9
  import { removeColorLUT } from './removeColorLUT';
20
- import { getSegmentationRepresentationsForSegmentation } from './getSegmentationRepresentationsForSegmentation';
21
- import { getSegmentationRepresentationVisibility } from './getSegmentationRepresentationVisibility';
22
- import { setSegmentationRepresentationVisibility } from './setSegmentationRepresentationVisibility';
10
+ import { getViewportSegmentations } from './getViewportSegmentations';
23
11
  import { getViewportIdsWithSegmentation } from './getViewportIdsWithSegmentation';
24
- import { getActiveSegmentationRepresentation } from './getActiveSegmentationRepresentation';
25
- import { setActiveSegmentationRepresentation } from './setActiveSegmentationRepresentation';
26
12
  import { getCurrentLabelmapImageIdForViewport } from './getCurrentLabelmapImageIdForViewport';
27
13
  import { updateLabelmapSegmentationImageReferences } from './updateLabelmapSegmentationImageReferences';
28
14
  import { getStackSegmentationImageIdsForViewport } from './getStackSegmentationImageIdsForViewport';
29
- export { getSegmentation, getSegmentations, addSegmentation, removeSegmentation, getAllSegmentationRepresentations, getSegmentationRepresentation, removeRepresentation, getGlobalConfig, setGlobalConfig, getSegmentationRepresentationConfig, setSegmentationRepresentationConfig, getPerSegmentConfig, setPerSegmentConfig, getSegmentationRepresentations, getSegmentationRepresentationViewportStates, addColorLUT, getColorLUT, getNextColorLUTIndex, removeColorLUT, getSegmentationRepresentationsForSegmentation, getSegmentationRepresentationVisibility, setSegmentationRepresentationVisibility, getViewportIdsWithSegmentation, getActiveSegmentationRepresentation, setActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, updateLabelmapSegmentationImageReferences, getStackSegmentationImageIdsForViewport, };
15
+ import { getSegmentationRepresentation, getSegmentationRepresentations } from './getSegmentationRepresentation';
16
+ declare function destroy(): void;
17
+ export { getColorLUT, getCurrentLabelmapImageIdForViewport, getNextColorLUTIndex, getSegmentation, getSegmentations, getStackSegmentationImageIdsForViewport, getViewportIdsWithSegmentation, getSegmentationRepresentation, getSegmentationRepresentations, removeColorLUT, getViewportSegmentations, removeSegmentation, removeLabelmapRepresentation, removeContourRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentation, removeAllSegmentationRepresentations, addColorLUT, addSegmentations, updateLabelmapSegmentationImageReferences, destroy, };
@@ -1,29 +1,20 @@
1
1
  import { getSegmentation } from './getSegmentation';
2
2
  import { getSegmentations } from './getSegmentations';
3
- import { addSegmentation } from './addSegmentation';
3
+ import { addSegmentations } from './addSegmentations';
4
4
  import { removeSegmentation } from './removeSegmentation';
5
- import { getAllSegmentationRepresentations } from './getAllSegmentationRepresentations';
6
- import { getSegmentationRepresentation } from './getSegmentationRepresentation';
7
- import { removeRepresentation } from './removeRepresentation';
8
- import { getGlobalConfig } from './getGlobalConfig';
9
- import { setGlobalConfig } from './setGlobalConfig';
10
- import { getSegmentationRepresentationConfig } from './getSegmentationRepresentationConfig';
11
- import { setSegmentationRepresentationConfig } from './setSegmentationRepresentationConfig';
12
- import { getPerSegmentConfig } from './getPerSegmentConfig';
13
- import { setPerSegmentConfig } from './setPerSegmentConfig';
14
- import { getSegmentationRepresentations } from './getSegmentationRepresentations';
15
- import { getSegmentationRepresentationViewportStates } from './getSegmentationRepresentationViewportStates';
5
+ import { removeLabelmapRepresentation, removeContourRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentation, removeAllSegmentationRepresentations, } from './removeSegmentationRepresentations';
16
6
  import { addColorLUT } from './addColorLUT';
17
7
  import { getColorLUT } from './getColorLUT';
18
8
  import { getNextColorLUTIndex } from './getNextColorLUTIndex';
19
9
  import { removeColorLUT } from './removeColorLUT';
20
- import { getSegmentationRepresentationsForSegmentation } from './getSegmentationRepresentationsForSegmentation';
21
- import { getSegmentationRepresentationVisibility } from './getSegmentationRepresentationVisibility';
22
- import { setSegmentationRepresentationVisibility } from './setSegmentationRepresentationVisibility';
10
+ import { getViewportSegmentations } from './getViewportSegmentations';
23
11
  import { getViewportIdsWithSegmentation } from './getViewportIdsWithSegmentation';
24
- import { getActiveSegmentationRepresentation } from './getActiveSegmentationRepresentation';
25
- import { setActiveSegmentationRepresentation } from './setActiveSegmentationRepresentation';
26
12
  import { getCurrentLabelmapImageIdForViewport } from './getCurrentLabelmapImageIdForViewport';
27
13
  import { updateLabelmapSegmentationImageReferences } from './updateLabelmapSegmentationImageReferences';
28
14
  import { getStackSegmentationImageIdsForViewport } from './getStackSegmentationImageIdsForViewport';
29
- export { getSegmentation, getSegmentations, addSegmentation, removeSegmentation, getAllSegmentationRepresentations, getSegmentationRepresentation, removeRepresentation, getGlobalConfig, setGlobalConfig, getSegmentationRepresentationConfig, setSegmentationRepresentationConfig, getPerSegmentConfig, setPerSegmentConfig, getSegmentationRepresentations, getSegmentationRepresentationViewportStates, addColorLUT, getColorLUT, getNextColorLUTIndex, removeColorLUT, getSegmentationRepresentationsForSegmentation, getSegmentationRepresentationVisibility, setSegmentationRepresentationVisibility, getViewportIdsWithSegmentation, getActiveSegmentationRepresentation, setActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, updateLabelmapSegmentationImageReferences, getStackSegmentationImageIdsForViewport, };
15
+ import { getSegmentationRepresentation, getSegmentationRepresentations, } from './getSegmentationRepresentation';
16
+ import { defaultSegmentationStateManager } from './SegmentationStateManager';
17
+ function destroy() {
18
+ defaultSegmentationStateManager.resetState();
19
+ }
20
+ export { getColorLUT, getCurrentLabelmapImageIdForViewport, getNextColorLUTIndex, getSegmentation, getSegmentations, getStackSegmentationImageIdsForViewport, getViewportIdsWithSegmentation, getSegmentationRepresentation, getSegmentationRepresentations, removeColorLUT, getViewportSegmentations, removeSegmentation, removeLabelmapRepresentation, removeContourRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentation, removeAllSegmentationRepresentations, addColorLUT, addSegmentations, updateLabelmapSegmentationImageReferences, destroy, };
@@ -0,0 +1 @@
1
+ export declare function setActiveSegmentation(viewportId: string, segmentationId: string): void;
@@ -0,0 +1,5 @@
1
+ import { defaultSegmentationStateManager } from './SegmentationStateManager';
2
+ export function setActiveSegmentation(viewportId, segmentationId) {
3
+ const segmentationStateManager = defaultSegmentationStateManager;
4
+ segmentationStateManager.setActiveSegmentation(viewportId, segmentationId);
5
+ }
@@ -0,0 +1,3 @@
1
+ import type { SegmentationRepresentations } from '../../enums';
2
+ import type { RepresentationStyle } from './SegmentationStyle';
3
+ export declare function setGlobalStyle(type: SegmentationRepresentations, styles: RepresentationStyle, suppressEvents?: boolean): void;
@@ -0,0 +1,8 @@
1
+ import { segmentationStyle } from './SegmentationStyle';
2
+ import { triggerSegmentationModified } from './triggerSegmentationEvents';
3
+ export function setGlobalStyle(type, styles, suppressEvents) {
4
+ segmentationStyle.setGlobalStyle(type, styles);
5
+ if (!suppressEvents) {
6
+ triggerSegmentationModified();
7
+ }
8
+ }
@@ -1 +1,5 @@
1
- export declare function setSegmentationRepresentationVisibility(viewportId: string, segmentationRepresentationUID: string, visible: boolean): void;
1
+ import type { SegmentationRepresentations } from '../../enums';
2
+ export declare function setSegmentationRepresentationVisibility(viewportId: string, specifier: {
3
+ segmentationId: string;
4
+ type: SegmentationRepresentations;
5
+ }, visible: boolean): void;
@@ -1,5 +1,5 @@
1
1
  import { defaultSegmentationStateManager } from './SegmentationStateManager';
2
- export function setSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID, visible) {
2
+ export function setSegmentationRepresentationVisibility(viewportId, specifier, visible) {
3
3
  const segmentationStateManager = defaultSegmentationStateManager;
4
- segmentationStateManager.setSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID, visible);
4
+ segmentationStateManager.setSegmentationRepresentationVisibility(viewportId, specifier, visible);
5
5
  }
@@ -1,6 +1,4 @@
1
- import { triggerSegmentationRepresentationModified } from './events/triggerSegmentationRepresentationModified';
2
- import { triggerSegmentationRepresentationRemoved } from './events/triggerSegmentationRepresentationRemoved';
3
1
  import { triggerSegmentationDataModified } from './events/triggerSegmentationDataModified';
4
2
  import { triggerSegmentationModified } from './events/triggerSegmentationModified';
5
3
  import { triggerSegmentationRemoved } from './events/triggerSegmentationRemoved';
6
- export { triggerSegmentationRepresentationModified, triggerSegmentationRepresentationRemoved, triggerSegmentationDataModified, triggerSegmentationModified, triggerSegmentationRemoved, };
4
+ export { triggerSegmentationDataModified, triggerSegmentationModified, triggerSegmentationRemoved, };
@@ -1,6 +1,4 @@
1
- import { triggerSegmentationRepresentationModified } from './events/triggerSegmentationRepresentationModified';
2
- import { triggerSegmentationRepresentationRemoved } from './events/triggerSegmentationRepresentationRemoved';
3
1
  import { triggerSegmentationDataModified } from './events/triggerSegmentationDataModified';
4
2
  import { triggerSegmentationModified } from './events/triggerSegmentationModified';
5
3
  import { triggerSegmentationRemoved } from './events/triggerSegmentationRemoved';
6
- export { triggerSegmentationRepresentationModified, triggerSegmentationRepresentationRemoved, triggerSegmentationDataModified, triggerSegmentationModified, triggerSegmentationRemoved, };
4
+ export { triggerSegmentationDataModified, triggerSegmentationModified, triggerSegmentationRemoved, };
@@ -1,5 +1,5 @@
1
1
  import { MouseBindings, ToolModes } from '../../enums';
2
- import type { Types } from '@cornerstonejs/core';
2
+ import { type Types } from '@cornerstonejs/core';
3
3
  import type { IToolBinding, IToolGroup, SetToolBindingsType, ToolOptionsType, ToolConfiguration } from '../../types';
4
4
  import { MouseCursor } from '../../cursors';
5
5
  export default class ToolGroup {
@@ -44,4 +44,5 @@ export default class ToolGroup {
44
44
  private _hasMousePrimaryButtonBinding;
45
45
  private _renderViewports;
46
46
  private _triggerToolModeChangedEvent;
47
+ private _findRenderingEngine;
47
48
  }
@@ -1,6 +1,7 @@
1
1
  import { MouseBindings, ToolModes, Events } from '../../enums';
2
2
  import get from 'lodash.get';
3
3
  import { triggerEvent, eventTarget, getRenderingEngine, getRenderingEngines, getEnabledElementByIds, Settings, } from '@cornerstonejs/core';
4
+ import { utilities } from '@cornerstonejs/core';
4
5
  import { state } from '../state';
5
6
  import { MouseCursor, SVGMouseCursor } from '../../cursors';
6
7
  import { initElementCursor } from '../../cursors/elementCursor';
@@ -82,14 +83,7 @@ export default class ToolGroup {
82
83
  if (typeof viewportId !== 'string') {
83
84
  throw new Error('viewportId must be defined and be a string');
84
85
  }
85
- const renderingEngines = getRenderingEngines();
86
- if (renderingEngines?.length === 0) {
87
- throw new Error('No rendering engines found.');
88
- }
89
- if (renderingEngines.length > 1) {
90
- throw new Error('Multiple rendering engines found. You must specify a renderingEngineId.');
91
- }
92
- const renderingEngineUIDToUse = renderingEngineId || renderingEngines[0].id;
86
+ const renderingEngineUIDToUse = this._findRenderingEngine(viewportId, renderingEngineId);
93
87
  if (!this.viewportsInfo.some(({ viewportId: vpId }) => vpId === viewportId)) {
94
88
  this.viewportsInfo.push({
95
89
  viewportId,
@@ -379,7 +373,7 @@ export default class ToolGroup {
379
373
  }
380
374
  const _configuration = get(this._toolInstances[toolName].configuration, configurationPath) ||
381
375
  this._toolInstances[toolName].configuration;
382
- return structuredClone(_configuration);
376
+ return utilities.deepClone(_configuration);
383
377
  }
384
378
  getPrevActivePrimaryToolName() {
385
379
  return this.prevActivePrimaryToolName;
@@ -434,6 +428,26 @@ export default class ToolGroup {
434
428
  };
435
429
  triggerEvent(eventTarget, Events.TOOL_MODE_CHANGED, eventDetail);
436
430
  }
431
+ _findRenderingEngine(viewportId, renderingEngineId) {
432
+ const renderingEngines = getRenderingEngines();
433
+ if (renderingEngines?.length === 0) {
434
+ throw new Error('No rendering engines found.');
435
+ }
436
+ if (renderingEngineId) {
437
+ return renderingEngineId;
438
+ }
439
+ const matchingEngines = renderingEngines.filter((engine) => engine.getViewport(viewportId));
440
+ if (matchingEngines.length === 0) {
441
+ if (renderingEngines.length === 1) {
442
+ return renderingEngines[0].id;
443
+ }
444
+ throw new Error('No rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.');
445
+ }
446
+ if (matchingEngines.length > 1) {
447
+ throw new Error('Multiple rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.');
448
+ }
449
+ return matchingEngines[0].id;
450
+ }
437
451
  }
438
452
  function hasSameBinding(binding1, binding2) {
439
453
  if (binding1.mouseButton !== binding2.mouseButton) {
@@ -1,3 +1,3 @@
1
1
  import type { IToolGroup } from '../../types';
2
- declare function createToolGroup(toolGroupId: string): IToolGroup | undefined;
2
+ declare function createToolGroup(toolGroupId: string): IToolGroup;
3
3
  export default createToolGroup;
@@ -1,10 +1,10 @@
1
1
  import { state } from '../state';
2
2
  import ToolGroup from './ToolGroup';
3
3
  function createToolGroup(toolGroupId) {
4
- const toolGroupWithIdExists = state.toolGroups.some((tg) => tg.id === toolGroupId);
5
- if (toolGroupWithIdExists) {
4
+ const toolGroupWithSameId = state.toolGroups.find((tg) => tg.id === toolGroupId);
5
+ if (toolGroupWithSameId) {
6
6
  console.warn(`'${toolGroupId}' already exists.`);
7
- return;
7
+ return toolGroupWithSameId;
8
8
  }
9
9
  const toolGroup = new ToolGroup(toolGroupId);
10
10
  state.toolGroups.push(toolGroup);