@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 +1 @@
1
- export declare function getCurrentLabelmapImageIdForViewport(viewportId: string, segmentationId?: string): string;
1
+ export declare function getCurrentLabelmapImageIdForViewport(viewportId: string, segmentationId: string): string;
@@ -0,0 +1,3 @@
1
+ import type { SegmentationRepresentations } from '../../enums';
2
+ import type { RepresentationStyle } from './SegmentationStyle';
3
+ export declare function getGlobalStyle(type: SegmentationRepresentations): RepresentationStyle;
@@ -0,0 +1,4 @@
1
+ import { segmentationStyle } from './SegmentationStyle';
2
+ export function getGlobalStyle(type) {
3
+ return segmentationStyle.getGlobalStyle(type);
4
+ }
@@ -1,2 +1,10 @@
1
+ import type { SegmentationRepresentations } from '../../enums';
1
2
  import type { SegmentationRepresentation } from '../../types/SegmentationStateTypes';
2
- export declare function getSegmentationRepresentation(segmentationRepresentationUID: string): SegmentationRepresentation | undefined;
3
+ export declare function getSegmentationRepresentations(viewportId: string, specifier?: {
4
+ segmentationId?: string;
5
+ type?: SegmentationRepresentations;
6
+ }): SegmentationRepresentation[] | [];
7
+ export declare function getSegmentationRepresentation(viewportId: string, specifier: {
8
+ segmentationId: string;
9
+ type: SegmentationRepresentations;
10
+ }): SegmentationRepresentation | undefined;
@@ -1,5 +1,13 @@
1
1
  import { defaultSegmentationStateManager } from './SegmentationStateManager';
2
- export function getSegmentationRepresentation(segmentationRepresentationUID) {
2
+ export function getSegmentationRepresentations(viewportId, specifier = {}) {
3
3
  const segmentationStateManager = defaultSegmentationStateManager;
4
- return segmentationStateManager.getSegmentationRepresentation(segmentationRepresentationUID);
4
+ return segmentationStateManager.getSegmentationRepresentations(viewportId, specifier);
5
+ }
6
+ export function getSegmentationRepresentation(viewportId, specifier) {
7
+ const segmentationStateManager = defaultSegmentationStateManager;
8
+ if (!specifier.segmentationId || !specifier.type) {
9
+ throw new Error('getSegmentationRepresentation: No segmentationId or type provided, you need to provide at least one of them');
10
+ }
11
+ const representations = segmentationStateManager.getSegmentationRepresentations(viewportId, specifier);
12
+ return representations?.[0];
5
13
  }
@@ -1 +1,5 @@
1
- export declare function getSegmentationRepresentationVisibility(viewportId: string, segmentationRepresentationUID: string): boolean;
1
+ import type { SegmentationRepresentations } from '../../enums';
2
+ export declare function getSegmentationRepresentationVisibility(viewportId: string, specifier: {
3
+ segmentationId: string;
4
+ type: SegmentationRepresentations;
5
+ }): boolean;
@@ -1,5 +1,5 @@
1
1
  import { defaultSegmentationStateManager } from './SegmentationStateManager';
2
- export function getSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID) {
2
+ export function getSegmentationRepresentationVisibility(viewportId, specifier) {
3
3
  const segmentationStateManager = defaultSegmentationStateManager;
4
- return segmentationStateManager.getSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID);
4
+ return segmentationStateManager.getSegmentationRepresentationVisibility(viewportId, specifier);
5
5
  }
@@ -2,9 +2,9 @@ import { defaultSegmentationStateManager } from './SegmentationStateManager';
2
2
  export function getViewportIdsWithSegmentation(segmentationId) {
3
3
  const segmentationStateManager = defaultSegmentationStateManager;
4
4
  const state = segmentationStateManager.getState();
5
- const viewports = state.viewports;
6
- return Object.keys(viewports).filter((viewportId) => {
7
- const viewport = viewports[viewportId];
8
- return Object.keys(viewport).some((segRepUID) => state.representations[segRepUID].segmentationId === segmentationId);
9
- });
5
+ const viewportSegRepresentations = state.viewportSegRepresentations;
6
+ const viewportIdsWithSegmentation = Object.entries(viewportSegRepresentations)
7
+ .filter(([, viewportSegmentations]) => viewportSegmentations.some((segRep) => segRep.segmentationId === segmentationId))
8
+ .map(([viewportId]) => viewportId);
9
+ return viewportIdsWithSegmentation;
10
10
  }
@@ -0,0 +1,3 @@
1
+ import type { SegmentationRepresentations } from '../../enums';
2
+ import type { Segmentation } from '../../types';
3
+ export declare function getViewportSegmentations(viewportId: string, type?: SegmentationRepresentations): Segmentation[];
@@ -0,0 +1,15 @@
1
+ import { getSegmentation } from './getSegmentation';
2
+ import { defaultSegmentationStateManager } from './SegmentationStateManager';
3
+ export function getViewportSegmentations(viewportId, type) {
4
+ const segmentationStateManager = defaultSegmentationStateManager;
5
+ const state = segmentationStateManager.getState();
6
+ const viewportRepresentations = state.viewportSegRepresentations[viewportId];
7
+ const segmentations = viewportRepresentations.map((representation) => {
8
+ if (type && representation.type === type) {
9
+ return getSegmentation(representation.segmentationId);
10
+ }
11
+ return getSegmentation(representation.segmentationId);
12
+ });
13
+ const filteredSegmentations = segmentations.filter((segmentation) => segmentation !== undefined);
14
+ return filteredSegmentations;
15
+ }
@@ -0,0 +1 @@
1
+ export declare function clearSegmentValue(segmentationId: string, segmentIndex: number): void;
@@ -0,0 +1,31 @@
1
+ import { cache } from '@cornerstonejs/core';
2
+ import { SegmentationRepresentations } from '../../../enums';
3
+ import { getSegmentation } from '../getSegmentation';
4
+ import { triggerSegmentationDataModified } from '../triggerSegmentationEvents';
5
+ export function clearSegmentValue(segmentationId, segmentIndex) {
6
+ const segmentation = getSegmentation(segmentationId);
7
+ if (segmentation.representationData.Labelmap) {
8
+ const { representationData } = segmentation;
9
+ const labelmapData = representationData.Labelmap;
10
+ if ('imageIds' in labelmapData || 'volumeId' in labelmapData) {
11
+ const items = 'imageIds' in labelmapData
12
+ ? labelmapData.imageIds.map((imageId) => cache.getImage(imageId))
13
+ : [cache.getVolume(labelmapData.volumeId)];
14
+ items.forEach((item) => {
15
+ if (!item) {
16
+ return;
17
+ }
18
+ const { voxelManager } = item;
19
+ voxelManager.forEach(({ value, index }) => {
20
+ if (value === segmentIndex) {
21
+ voxelManager.setAtIndex(index, 0);
22
+ }
23
+ });
24
+ });
25
+ }
26
+ triggerSegmentationDataModified(segmentationId);
27
+ }
28
+ else {
29
+ throw new Error('Invalid segmentation type, only labelmap is supported right now');
30
+ }
31
+ }
@@ -11,7 +11,6 @@ export type SurfaceClipResult = {
11
11
  numberOfCells: number;
12
12
  };
13
13
  export type PolyDataClipCacheType = Map<string, Map<string, SurfaceClipResult>>;
14
- export declare function clipAndCacheSurfacesForViewport(surfacesInfo: SurfacesInfo[], viewport: Types.IVolumeViewport, segmentationRepresentationUID: string): Promise<PolyDataClipCacheType>;
15
- export declare function getSurfaceActorUID(segmentationRepresentationUID: string, surfaceId: string): string;
14
+ export declare function clipAndCacheSurfacesForViewport(surfacesInfo: SurfacesInfo[], viewport: Types.IVolumeViewport, segmentationId: string): Promise<PolyDataClipCacheType>;
16
15
  export declare function generateCacheId(viewport: any, viewPlaneNormal: any, sliceIndex: any): string;
17
16
  export declare function updatePolyDataCache(actorUID: string, cacheId: string, polyDataResult: SurfaceClipResult): void;
@@ -2,6 +2,7 @@ import { Enums, getWebWorkerManager, eventTarget, triggerEvent, } from '@corners
2
2
  import { WorkerTypes } from '../../../enums';
3
3
  import { pointToString } from '../../../utilities/pointToString';
4
4
  import { registerPolySegWorker } from '../polySeg/registerPolySegWorker';
5
+ import { getSurfaceActorUID } from './getSegmentationActor';
5
6
  const workerManager = getWebWorkerManager();
6
7
  const polyDataCache = new Map();
7
8
  const surfacesAABBCache = new Map();
@@ -11,7 +12,7 @@ const triggerWorkerProgress = (eventTarget, progress) => {
11
12
  type: WorkerTypes.SURFACE_CLIPPING,
12
13
  });
13
14
  };
14
- export async function clipAndCacheSurfacesForViewport(surfacesInfo, viewport, segmentationRepresentationUID) {
15
+ export async function clipAndCacheSurfacesForViewport(surfacesInfo, viewport, segmentationId) {
15
16
  registerPolySegWorker();
16
17
  const planesInfo = viewport.getSlicesClippingPlanes?.();
17
18
  if (!planesInfo) {
@@ -41,8 +42,8 @@ export async function clipAndCacheSurfacesForViewport(surfacesInfo, viewport, se
41
42
  triggerWorkerProgress(eventTarget, progress);
42
43
  },
43
44
  ({ sliceIndex, polyDataResults }) => {
44
- polyDataResults.forEach((polyDataResult, surfaceId) => {
45
- const actorUID = `${segmentationRepresentationUID}_${surfaceId}`;
45
+ polyDataResults.forEach((polyDataResult) => {
46
+ const actorUID = getSurfaceActorUID(segmentationId);
46
47
  const cacheId = generateCacheId(viewport, camera.viewPlaneNormal, sliceIndex);
47
48
  updatePolyDataCache(actorUID, cacheId, polyDataResult);
48
49
  });
@@ -73,9 +74,6 @@ async function updateSurfacesAABBCache(surfacesInfo) {
73
74
  surfacesAABBCache.set(id, aabb);
74
75
  });
75
76
  }
76
- export function getSurfaceActorUID(segmentationRepresentationUID, surfaceId) {
77
- return `${segmentationRepresentationUID}_${surfaceId}`;
78
- }
79
77
  export function generateCacheId(viewport, viewPlaneNormal, sliceIndex) {
80
78
  return `${viewport.id}-${pointToString(viewPlaneNormal)}-${sliceIndex}`;
81
79
  }
@@ -1,9 +1,9 @@
1
- export declare function computeStackSegmentationFromVolume({ volumeId, }: {
1
+ export declare function computeStackLabelmapFromVolume({ volumeId, }: {
2
2
  volumeId: string;
3
3
  }): Promise<{
4
4
  imageIds: string[];
5
5
  }>;
6
- export declare function convertVolumeToStackSegmentation({ segmentationId, options, }: {
6
+ export declare function convertVolumeToStackLabelmap({ segmentationId, options, }: {
7
7
  segmentationId: string;
8
8
  options?: {
9
9
  viewportId: string;
@@ -1,16 +1,19 @@
1
1
  import { cache } from '@cornerstonejs/core';
2
- import { getSegmentation } from './getSegmentation';
3
- import { updateStackSegmentationState } from './helpers/updateStackSegmentationState';
4
- export async function computeStackSegmentationFromVolume({ volumeId, }) {
2
+ import { getSegmentation } from '../getSegmentation';
3
+ import { updateStackSegmentationState } from '../helpers/updateStackSegmentationState';
4
+ export async function computeStackLabelmapFromVolume({ volumeId, }) {
5
5
  const segmentationVolume = cache.getVolume(volumeId);
6
6
  return { imageIds: segmentationVolume.imageIds };
7
7
  }
8
- export async function convertVolumeToStackSegmentation({ segmentationId, options, }) {
8
+ export function convertVolumeToStackLabelmap({ segmentationId, options, }) {
9
9
  const segmentation = getSegmentation(segmentationId);
10
+ if (!segmentation) {
11
+ return;
12
+ }
10
13
  const { volumeId } = segmentation.representationData
11
14
  .Labelmap;
12
15
  const segmentationVolume = cache.getVolume(volumeId);
13
- await updateStackSegmentationState({
16
+ return updateStackSegmentationState({
14
17
  segmentationId,
15
18
  viewportId: options.viewportId,
16
19
  imageIds: segmentationVolume.imageIds,
@@ -0,0 +1,3 @@
1
+ export declare function computeVolumeLabelmapFromStack(args: any): Promise<{
2
+ volumeId: string;
3
+ }>;
@@ -0,0 +1,4 @@
1
+ import { internalComputeVolumeLabelmapFromStack } from '../SegmentationStateManager';
2
+ export async function computeVolumeLabelmapFromStack(args) {
3
+ return internalComputeVolumeLabelmapFromStack(args);
4
+ }
@@ -0,0 +1 @@
1
+ export declare function convertStackToVolumeLabelmap(args: any): Promise<void>;
@@ -0,0 +1,7 @@
1
+ import { internalConvertStackToVolumeLabelmap } from '../SegmentationStateManager';
2
+ import { triggerSegmentationModified } from '../triggerSegmentationEvents';
3
+ export async function convertStackToVolumeLabelmap(args) {
4
+ const result = internalConvertStackToVolumeLabelmap(args);
5
+ triggerSegmentationModified(args.segmentationId);
6
+ return result;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { type Types } from '@cornerstonejs/core';
2
+ import { SegmentationRepresentations } from '../../../enums';
3
+ export declare function getSegmentationActor(viewportId: string, specifier: {
4
+ segmentationId: string;
5
+ type: SegmentationRepresentations;
6
+ }): Types.VolumeActor | Types.ImageActor | undefined;
7
+ export declare function getLabelmapActorUID(segmentationId: string): string;
8
+ export declare function getSurfaceActorUID(segmentationId: string): string;
@@ -0,0 +1,27 @@
1
+ import { getEnabledElementByViewportId } from '@cornerstonejs/core';
2
+ import { SegmentationRepresentations } from '../../../enums';
3
+ export function getSegmentationActor(viewportId, specifier) {
4
+ if (specifier.type === SegmentationRepresentations.Contour) {
5
+ throw new Error('Contours do not have actors');
6
+ }
7
+ const enabledElement = getEnabledElementByViewportId(viewportId);
8
+ const { renderingEngine, viewport } = enabledElement;
9
+ if (!renderingEngine || !viewport) {
10
+ return;
11
+ }
12
+ const actors = viewport.getActors();
13
+ const actorUID = specifier.type === SegmentationRepresentations.Labelmap
14
+ ? getLabelmapActorUID(specifier.segmentationId)
15
+ : getSurfaceActorUID(specifier.segmentationId);
16
+ const actor = actors.find((actor) => actor.uid === actorUID);
17
+ if (!actor) {
18
+ return;
19
+ }
20
+ return actor.actor;
21
+ }
22
+ export function getLabelmapActorUID(segmentationId) {
23
+ return `${segmentationId}-${SegmentationRepresentations.Labelmap}`;
24
+ }
25
+ export function getSurfaceActorUID(segmentationId) {
26
+ return `${segmentationId}-${SegmentationRepresentations.Surface}`;
27
+ }
@@ -1,2 +1,3 @@
1
1
  import validateSegmentationInput from './validateSegmentationInput';
2
- export { validateSegmentationInput };
2
+ import { getSegmentationActor } from './getSegmentationActor';
3
+ export { validateSegmentationInput, getSegmentationActor };
@@ -1,2 +1,3 @@
1
1
  import validateSegmentationInput from './validateSegmentationInput';
2
- export { validateSegmentationInput };
2
+ import { getSegmentationActor } from './getSegmentationActor';
3
+ export { validateSegmentationInput, getSegmentationActor };
@@ -1,13 +1,12 @@
1
1
  import { SegmentationRepresentations } from '../../../enums';
2
2
  function normalizeSegmentationInput(segmentationInput) {
3
3
  const { segmentationId, representation } = segmentationInput;
4
- const isContourRepresentation = representation.type === SegmentationRepresentations.Contour;
5
- let data = representation.data ? { ...representation.data } : null;
6
- data = !data && isContourRepresentation ? {} : data;
4
+ const { type, data: inputData } = representation;
5
+ const data = inputData ? { ...inputData } : {};
7
6
  if (!data) {
8
7
  throw new Error('Segmentation representation data may not be undefined');
9
8
  }
10
- if (isContourRepresentation) {
9
+ if (type === SegmentationRepresentations.Contour) {
11
10
  const contourData = data;
12
11
  contourData.geometryIds = contourData.geometryIds ?? [];
13
12
  contourData.annotationUIDsMap = contourData.annotationUIDsMap ?? new Map();
@@ -18,10 +17,9 @@ function normalizeSegmentationInput(segmentationInput) {
18
17
  segmentLabels: {},
19
18
  label: null,
20
19
  segmentsLocked: new Set(),
21
- type: representation.type,
22
20
  activeSegmentIndex: 1,
23
21
  representationData: {
24
- [representation.type]: {
22
+ [type]: {
25
23
  ...data,
26
24
  },
27
25
  },
@@ -2,7 +2,7 @@ import { cache, eventTarget } from '@cornerstonejs/core';
2
2
  import { Events, SegmentationRepresentations } from '../../../enums';
3
3
  import { getSegmentation } from '../getSegmentation';
4
4
  import { triggerSegmentationDataModified } from '../triggerSegmentationEvents';
5
- import { addSegmentationRepresentations } from '../addSegmentationRepresentations';
5
+ import { addSegmentationRepresentations } from '../addSegmentationRepresentationsToViewport';
6
6
  export async function updateStackSegmentationState({ segmentationId, viewportId, imageIds, options, }) {
7
7
  const segmentation = getSegmentation(segmentationId);
8
8
  if (options?.removeOriginal) {
@@ -1,14 +1,21 @@
1
- import removeSegmentationRepresentations from './removeSegmentationRepresentations';
2
- import addSegmentations from './addSegmentations';
3
- import { addSegmentationRepresentations, addMultiViewportSegmentationRepresentations } from './addSegmentationRepresentations';
4
- import addRepresentationData from './addRepresentationData';
5
- import { convertVolumeToStackSegmentation } from './convertVolumeToStackSegmentation';
1
+ import { removeContourRepresentation, removeLabelmapRepresentation, removeSegmentationRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, removeAllSegmentationRepresentations } from './removeSegmentationRepresentations';
2
+ import { addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations } from './addSegmentationRepresentationsToViewport';
3
+ import { addSegmentations } from './addSegmentations';
6
4
  import * as activeSegmentation from './activeSegmentation';
7
5
  import * as segmentLocking from './segmentLocking';
8
6
  import * as state from './segmentationState';
9
7
  import * as config from './config';
10
8
  import * as segmentIndex from './segmentIndex';
11
9
  import * as triggerSegmentationEvents from './triggerSegmentationEvents';
12
- import { convertStackToVolumeSegmentation } from './SegmentationStateManager';
10
+ import { convertStackToVolumeLabelmap } from './helpers/convertStackToVolumeLabelmap';
11
+ import { computeVolumeLabelmapFromStack } from './helpers/computeVolumeLabelmapFromStack';
13
12
  import * as polySegManager from './polySeg';
14
- export { addSegmentations, addSegmentationRepresentations, removeSegmentationRepresentations, addRepresentationData, addMultiViewportSegmentationRepresentations, state, activeSegmentation, segmentLocking, config, segmentIndex, triggerSegmentationEvents, convertStackToVolumeSegmentation, convertVolumeToStackSegmentation, polySegManager as polySeg, };
13
+ import { clearSegmentValue } from './helpers/clearSegmentValue';
14
+ import { convertVolumeToStackLabelmap } from './helpers/computeStackLabelmapFromVolume';
15
+ declare const helpers: {
16
+ clearSegmentValue: typeof clearSegmentValue;
17
+ convertStackToVolumeLabelmap: typeof convertStackToVolumeLabelmap;
18
+ computeVolumeLabelmapFromStack: typeof computeVolumeLabelmapFromStack;
19
+ convertVolumeToStackLabelmap: typeof convertVolumeToStackLabelmap;
20
+ };
21
+ export { removeSegmentationRepresentation, removeContourRepresentation, removeLabelmapRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations, removeAllSegmentationRepresentations, addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addSegmentations, state, activeSegmentation, segmentLocking, config, segmentIndex, triggerSegmentationEvents, helpers, polySegManager as polySeg, };
@@ -1,14 +1,21 @@
1
- import removeSegmentationRepresentations from './removeSegmentationRepresentations';
2
- import addSegmentations from './addSegmentations';
3
- import { addSegmentationRepresentations, addMultiViewportSegmentationRepresentations, } from './addSegmentationRepresentations';
4
- import addRepresentationData from './addRepresentationData';
5
- import { convertVolumeToStackSegmentation } from './convertVolumeToStackSegmentation';
1
+ import { removeContourRepresentation, removeLabelmapRepresentation, removeSegmentationRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, removeAllSegmentationRepresentations, } from './removeSegmentationRepresentations';
2
+ import { addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations, } from './addSegmentationRepresentationsToViewport';
3
+ import { addSegmentations } from './addSegmentations';
6
4
  import * as activeSegmentation from './activeSegmentation';
7
5
  import * as segmentLocking from './segmentLocking';
8
6
  import * as state from './segmentationState';
9
7
  import * as config from './config';
10
8
  import * as segmentIndex from './segmentIndex';
11
9
  import * as triggerSegmentationEvents from './triggerSegmentationEvents';
12
- import { convertStackToVolumeSegmentation } from './SegmentationStateManager';
10
+ import { convertStackToVolumeLabelmap } from './helpers/convertStackToVolumeLabelmap';
11
+ import { computeVolumeLabelmapFromStack } from './helpers/computeVolumeLabelmapFromStack';
13
12
  import * as polySegManager from './polySeg';
14
- export { addSegmentations, addSegmentationRepresentations, removeSegmentationRepresentations, addRepresentationData, addMultiViewportSegmentationRepresentations, state, activeSegmentation, segmentLocking, config, segmentIndex, triggerSegmentationEvents, convertStackToVolumeSegmentation, convertVolumeToStackSegmentation, polySegManager as polySeg, };
13
+ import { clearSegmentValue } from './helpers/clearSegmentValue';
14
+ import { convertVolumeToStackLabelmap } from './helpers/computeStackLabelmapFromVolume';
15
+ const helpers = {
16
+ clearSegmentValue,
17
+ convertStackToVolumeLabelmap,
18
+ computeVolumeLabelmapFromStack,
19
+ convertVolumeToStackLabelmap,
20
+ };
21
+ export { removeSegmentationRepresentation, removeContourRepresentation, removeLabelmapRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations, removeAllSegmentationRepresentations, addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addSegmentations, state, activeSegmentation, segmentLocking, config, segmentIndex, triggerSegmentationEvents, helpers, polySegManager as polySeg, };
@@ -8,5 +8,5 @@ type AddRepresentationData = {
8
8
  type: SegmentationRepresentations;
9
9
  data: SegmentationData;
10
10
  };
11
- declare function addRepresentationData({ segmentationId, type, data, }: AddRepresentationData): void;
12
- export default addRepresentationData;
11
+ declare function internalAddRepresentationData({ segmentationId, type, data, }: AddRepresentationData): void;
12
+ export default internalAddRepresentationData;
@@ -1,7 +1,10 @@
1
1
  import { getSegmentation } from './getSegmentation';
2
2
  import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
3
- function addRepresentationData({ segmentationId, type, data, }) {
3
+ function internalAddRepresentationData({ segmentationId, type, data, }) {
4
4
  const segmentation = getSegmentation(segmentationId);
5
+ if (!segmentation) {
6
+ throw new Error(`Segmentation ${segmentationId} not found`);
7
+ }
5
8
  if (segmentation.representationData[type]) {
6
9
  console.warn(`Representation data of type ${type} already exists for segmentation ${segmentationId}, overwriting it.`);
7
10
  }
@@ -26,4 +29,4 @@ function addRepresentationData({ segmentationId, type, data, }) {
26
29
  throw new Error(`Invalid representation type ${type}`);
27
30
  }
28
31
  }
29
- export default addRepresentationData;
32
+ export default internalAddRepresentationData;
@@ -1,3 +1,3 @@
1
1
  import type { RepresentationPublicInput } from '../../types/SegmentationStateTypes';
2
- declare function internalAddSegmentationRepresentation(viewportId: string, representationInput: RepresentationPublicInput): Promise<string>;
2
+ declare function internalAddSegmentationRepresentation(viewportId: string, representationInput: RepresentationPublicInput): void;
3
3
  export { internalAddSegmentationRepresentation };
@@ -1,73 +1,33 @@
1
- import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
2
- import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
3
- import { utilities } from '@cornerstonejs/core';
4
1
  import CORNERSTONE_COLOR_LUT from '../../constants/COLOR_LUT';
5
2
  import { triggerAnnotationRenderForViewportIds } from '../../utilities/triggerAnnotationRenderForViewportIds';
6
3
  import { SegmentationRepresentations } from '../../enums';
7
4
  import { triggerSegmentationModified } from './triggerSegmentationEvents';
8
5
  import { addColorLUT } from './addColorLUT';
9
6
  import { getNextColorLUTIndex } from './getNextColorLUTIndex';
10
- import { setSegmentationRepresentationConfig } from './setSegmentationRepresentationConfig';
11
- import { addSegmentationRepresentationState } from './addSegmentationRepresentationState';
12
- function getLabelmapSegmentationRepresentationRenderingConfig() {
13
- const cfun = vtkColorTransferFunction.newInstance();
14
- const ofun = vtkPiecewiseFunction.newInstance();
15
- ofun.addPoint(0, 0);
16
- return {
17
- ofun,
18
- cfun,
7
+ import { defaultSegmentationStateManager } from './SegmentationStateManager';
8
+ import { getColorLUT } from './getColorLUT';
9
+ function internalAddSegmentationRepresentation(viewportId, representationInput) {
10
+ const { segmentationId, config } = representationInput;
11
+ const renderingConfig = {
12
+ colorLUTIndex: getColorLUTIndex(config),
19
13
  };
20
- }
21
- async function internalAddSegmentationRepresentation(viewportId, representationInput) {
22
- const { segmentationId, options = {} } = representationInput;
23
- const segmentationRepresentationUID = representationInput.options?.segmentationRepresentationUID ||
24
- utilities.uuidv4();
25
- const colorLUTIndexToUse = getColorLUTIndex(options);
26
- const { type } = representationInput;
27
- let renderingConfig;
28
- if (type === SegmentationRepresentations.Labelmap) {
29
- renderingConfig = getLabelmapSegmentationRepresentationRenderingConfig();
30
- }
31
- else {
32
- renderingConfig = {};
33
- }
34
- const representation = {
35
- segmentationId,
36
- segmentationRepresentationUID,
37
- type: representationInput.type,
38
- colorLUTIndex: colorLUTIndexToUse,
39
- rendering: renderingConfig,
40
- polySeg: options.polySeg,
41
- config: {
42
- allSegments: {},
43
- perSegment: {},
44
- },
45
- };
46
- addSegmentationRepresentationState(viewportId, representation);
47
- const initialConfig = representationInput.config;
48
- if (initialConfig) {
49
- setSegmentationRepresentationConfig(segmentationRepresentationUID, initialConfig);
50
- }
14
+ defaultSegmentationStateManager.addSegmentationRepresentation(viewportId, segmentationId, representationInput.type, renderingConfig);
51
15
  if (representationInput.type === SegmentationRepresentations.Contour) {
52
16
  triggerAnnotationRenderForViewportIds([viewportId]);
53
17
  }
54
18
  triggerSegmentationModified(segmentationId);
55
- return segmentationRepresentationUID;
56
19
  }
57
- function getColorLUTIndex(options = {}) {
58
- const colorLUTOrIndexInput = options.colorLUTOrIndex;
59
- let colorLUTIndexToUse;
60
- if (typeof colorLUTOrIndexInput === 'number') {
61
- colorLUTIndexToUse = colorLUTOrIndexInput;
62
- }
63
- else {
64
- const nextIndex = getNextColorLUTIndex();
65
- const colorLUTToAdd = Array.isArray(colorLUTOrIndexInput)
66
- ? colorLUTOrIndexInput
67
- : CORNERSTONE_COLOR_LUT;
68
- addColorLUT(colorLUTToAdd, nextIndex);
69
- colorLUTIndexToUse = nextIndex;
20
+ function getColorLUTIndex(config) {
21
+ const colorLUT = config?.colorLUT;
22
+ const nextIndex = getNextColorLUTIndex();
23
+ const colorLUTToAdd = Array.isArray(colorLUT)
24
+ ? colorLUT
25
+ : CORNERSTONE_COLOR_LUT;
26
+ addColorLUT(colorLUTToAdd, nextIndex);
27
+ const colorLUTIndex = nextIndex;
28
+ if (!getColorLUT(colorLUTIndex)) {
29
+ throw new Error(`Color LUT with index ${colorLUTIndex} not found`);
70
30
  }
71
- return colorLUTIndexToUse;
31
+ return colorLUTIndex;
72
32
  }
73
33
  export { internalAddSegmentationRepresentation };
@@ -5,7 +5,8 @@ import { clipAndCacheSurfacesForViewport } from '../../helpers/clipAndCacheSurfa
5
5
  import { extractContourData } from './utils/extractContourData';
6
6
  import { createAndAddContourSegmentationsFromClippedSurfaces } from './utils/createAndAddContourSegmentationsFromClippedSurfaces';
7
7
  import { getSegmentation } from '../../getSegmentation';
8
- import { setSegmentationRepresentationConfig } from '../../setSegmentationRepresentationConfig';
8
+ import { segmentationStyle } from '../../SegmentationStyle';
9
+ import { SegmentationRepresentations } from '../../../../enums';
9
10
  export async function computeContourData(segmentationId, options = {}) {
10
11
  const segmentIndices = options.segmentIndices?.length
11
12
  ? options.segmentIndices
@@ -34,12 +35,10 @@ export async function computeContourData(segmentationId, options = {}) {
34
35
  if (!rawContourData) {
35
36
  throw new Error('Not enough data to convert to contour, currently only support converting volume labelmap to contour if available');
36
37
  }
37
- const { viewport, segmentationRepresentationUID } = options;
38
+ const { viewport } = options;
38
39
  const annotationUIDsMap = createAndAddContourSegmentationsFromClippedSurfaces(rawContourData, viewport, segmentationId);
39
- setSegmentationRepresentationConfig(segmentationRepresentationUID, {
40
- Contour: {
41
- fillAlpha: 0,
42
- },
40
+ segmentationStyle.setSegmentationSpecificStyle({ segmentationId, type: SegmentationRepresentations.Contour }, {
41
+ fillAlpha: 0,
43
42
  });
44
43
  return {
45
44
  annotationUIDsMap,
@@ -54,7 +53,7 @@ async function computeContourFromLabelmapSegmentation(segmentationId, options =
54
53
  console.error('Failed to convert labelmap to surface or labelmap is empty');
55
54
  return;
56
55
  }
57
- const { viewport, segmentationRepresentationUID } = options;
56
+ const { viewport } = options;
58
57
  const pointsAndPolys = results.map((surface) => {
59
58
  return {
60
59
  id: surface.segmentIndex.toString(),
@@ -63,7 +62,7 @@ async function computeContourFromLabelmapSegmentation(segmentationId, options =
63
62
  segmentIndex: surface.segmentIndex,
64
63
  };
65
64
  });
66
- const polyDataCache = await clipAndCacheSurfacesForViewport(pointsAndPolys, viewport, segmentationRepresentationUID);
65
+ const polyDataCache = await clipAndCacheSurfacesForViewport(pointsAndPolys, viewport, segmentationId);
67
66
  const rawResults = extractContourData(polyDataCache);
68
67
  return rawResults;
69
68
  }
@@ -71,7 +70,7 @@ async function computeContourFromSurfaceSegmentation(segmentationId, options = {
71
70
  if (!options.viewport) {
72
71
  throw new Error('Viewport is required to compute contour from surface');
73
72
  }
74
- const { viewport, segmentationRepresentationUID } = options;
73
+ const { viewport } = options;
75
74
  const segmentIndices = options.segmentIndices?.length
76
75
  ? options.segmentIndices
77
76
  : getUniqueSegmentIndices(segmentationId);
@@ -96,7 +95,7 @@ async function computeContourFromSurfaceSegmentation(segmentationId, options = {
96
95
  segmentIndexToSurfaceId.forEach((surfaceId, segmentIndex) => {
97
96
  surfaceIdToSegmentIndex.set(surfaceId, segmentIndex);
98
97
  });
99
- const polyDataCache = await clipAndCacheSurfacesForViewport(surfacesInfo, viewport, segmentationRepresentationUID);
98
+ const polyDataCache = await clipAndCacheSurfacesForViewport(surfacesInfo, viewport, segmentationId);
100
99
  const rawResults = extractContourData(polyDataCache, surfaceIdToSegmentIndex);
101
100
  return rawResults;
102
101
  }
@@ -1,15 +1,18 @@
1
1
  export function extractContourData(polyDataCache, segmentIndexMap) {
2
2
  const rawResults = new Map();
3
3
  for (const [cacheId, intersectionInfo] of polyDataCache) {
4
- const surfaceId = cacheId.split('_')[1];
4
+ let segmentIndex;
5
+ const surfaceId = cacheId.split('-')[1];
6
+ if (!segmentIndexMap) {
7
+ segmentIndex = Number(surfaceId.split('_')[1]);
8
+ }
9
+ else {
10
+ segmentIndex = segmentIndexMap.get(surfaceId.split('_')[1]);
11
+ }
5
12
  for (const [_, result] of intersectionInfo) {
6
13
  if (!result) {
7
14
  continue;
8
15
  }
9
- const segmentIndex = Number(surfaceId) || segmentIndexMap?.get(surfaceId);
10
- if (!segmentIndex) {
11
- continue;
12
- }
13
16
  if (!rawResults.has(segmentIndex)) {
14
17
  rawResults.set(segmentIndex, []);
15
18
  }