@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,36 +1,28 @@
1
- import { BaseVolumeViewport, cache, utilities as csUtils, getEnabledElementByViewportId, volumeLoader, eventTarget, } from '@cornerstonejs/core';
2
- import { SegmentationRepresentations, Events } from '../../enums';
3
- import getDefaultContourConfig from '../../tools/displayTools/Contour/contourConfig';
4
- import getDefaultLabelmapConfig from '../../tools/displayTools/Labelmap/labelmapConfig';
5
- import getDefaultSurfaceConfig from '../../tools/displayTools/Surface/surfaceConfig';
6
- import { triggerSegmentationDataModified } from './events/triggerSegmentationDataModified';
7
- const newGlobalConfig = {
8
- renderInactiveRepresentations: true,
9
- representations: {
10
- [SegmentationRepresentations.Labelmap]: getDefaultLabelmapConfig(),
11
- [SegmentationRepresentations.Contour]: getDefaultContourConfig(),
12
- [SegmentationRepresentations.Surface]: getDefaultSurfaceConfig(),
13
- },
14
- };
1
+ import { BaseVolumeViewport, cache, utilities as csUtils, getEnabledElementByViewportId, volumeLoader, } from '@cornerstonejs/core';
2
+ import { SegmentationRepresentations } from '../../enums';
3
+ import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
4
+ import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
5
+ import { segmentationStyle } from './SegmentationStyle';
15
6
  const initialDefaultState = {
16
7
  colorLUT: [],
17
8
  segmentations: [],
18
- globalConfig: newGlobalConfig,
19
- representations: {},
20
- viewports: {},
9
+ viewportSegRepresentations: {},
21
10
  };
22
11
  export default class SegmentationStateManager {
23
12
  constructor(uid) {
24
13
  this._stackLabelmapImageIdReferenceMap = new Map();
25
- if (!uid) {
26
- uid = csUtils.uuidv4();
27
- }
28
- this.state = structuredClone(initialDefaultState);
14
+ uid ||= csUtils.uuidv4();
15
+ this.state = Object.freeze(csUtils.deepClone(initialDefaultState));
29
16
  this.uid = uid;
30
17
  }
31
18
  getState() {
32
19
  return this.state;
33
20
  }
21
+ updateState(updater) {
22
+ const newState = csUtils.deepClone(this.state);
23
+ updater(newState);
24
+ this.state = Object.freeze(newState);
25
+ }
34
26
  getColorLUT(lutIndex) {
35
27
  return this.state.colorLUT[lutIndex];
36
28
  }
@@ -38,7 +30,7 @@ export default class SegmentationStateManager {
38
30
  return this.state.colorLUT.length;
39
31
  }
40
32
  resetState() {
41
- this.state = structuredClone(initialDefaultState);
33
+ this.state = Object.freeze(csUtils.deepClone(initialDefaultState));
42
34
  }
43
35
  getSegmentation(segmentationId) {
44
36
  return this.state.segmentations.find((segmentation) => segmentation.segmentationId === segmentationId);
@@ -47,47 +39,85 @@ export default class SegmentationStateManager {
47
39
  if (this.getSegmentation(segmentation.segmentationId)) {
48
40
  throw new Error(`Segmentation with id ${segmentation.segmentationId} already exists`);
49
41
  }
50
- if (segmentation.representationData.Labelmap &&
51
- 'volumeId' in segmentation.representationData.Labelmap &&
52
- !('imageIds' in segmentation.representationData.Labelmap)) {
53
- const imageIds = this.getLabelmapImageIds(segmentation.representationData);
54
- segmentation.representationData
55
- .Labelmap.imageIds = imageIds;
56
- }
57
- this.state.segmentations.push(segmentation);
42
+ this.updateState((state) => {
43
+ const newSegmentation = csUtils.deepClone(segmentation);
44
+ if (newSegmentation.representationData.Labelmap &&
45
+ 'volumeId' in newSegmentation.representationData.Labelmap &&
46
+ !('imageIds' in newSegmentation.representationData.Labelmap)) {
47
+ const imageIds = this.getLabelmapImageIds(newSegmentation.representationData);
48
+ newSegmentation.representationData
49
+ .Labelmap.imageIds = imageIds;
50
+ }
51
+ state.segmentations.push(newSegmentation);
52
+ });
58
53
  }
59
54
  removeSegmentation(segmentationId) {
60
- this.state.segmentations = this.state.segmentations.filter((segmentation) => segmentation.segmentationId !== segmentationId);
55
+ this.updateState((state) => {
56
+ state.segmentations = state.segmentations.filter((segmentation) => segmentation.segmentationId !== segmentationId);
57
+ Object.values(state.viewportSegRepresentations).forEach((representations) => {
58
+ representations = representations.filter((representation) => representation.segmentationId !== segmentationId);
59
+ });
60
+ });
61
61
  }
62
- getSegmentationRepresentation(segmentationRepresentationUID) {
63
- return this.state.representations[segmentationRepresentationUID];
62
+ addSegmentationRepresentation(viewportId, segmentationId, type, renderingConfig) {
63
+ const enabledElement = getEnabledElementByViewportId(viewportId);
64
+ if (!enabledElement) {
65
+ return;
66
+ }
67
+ this.updateState((state) => {
68
+ if (!state.viewportSegRepresentations[viewportId]) {
69
+ state.viewportSegRepresentations[viewportId] = [];
70
+ segmentationStyle.setViewportRenderInactiveSegmentations(viewportId, true);
71
+ }
72
+ if (type !== SegmentationRepresentations.Labelmap) {
73
+ this.addDefaultSegmentationRepresentation(state, viewportId, segmentationId, type, renderingConfig);
74
+ }
75
+ else {
76
+ this.addLabelmapRepresentation(state, viewportId, segmentationId, renderingConfig);
77
+ }
78
+ });
64
79
  }
65
- addSegmentationRepresentationState(segmentationRepresentation) {
66
- const { segmentationRepresentationUID } = segmentationRepresentation;
67
- this.state.representations[segmentationRepresentationUID] =
68
- segmentationRepresentation;
80
+ addDefaultSegmentationRepresentation(state, viewportId, segmentationId, type, renderingConfig) {
81
+ state.viewportSegRepresentations[viewportId].push({
82
+ segmentationId,
83
+ type,
84
+ active: true,
85
+ visible: true,
86
+ segmentsHidden: new Set(),
87
+ config: {
88
+ ...getDefaultRenderingConfig(type),
89
+ ...renderingConfig,
90
+ },
91
+ });
92
+ this._setActiveSegmentation(state, viewportId, segmentationId);
69
93
  }
70
- addSegmentationRepresentationToViewport(viewportId, segmentationRepresentationUID) {
94
+ addLabelmapRepresentation(state, viewportId, segmentationId, renderingConfig = getDefaultRenderingConfig(SegmentationRepresentations.Labelmap)) {
71
95
  const enabledElement = getEnabledElementByViewportId(viewportId);
72
96
  if (!enabledElement) {
73
97
  return;
74
98
  }
75
- if (!this.state.viewports[viewportId]) {
76
- this.state.viewports[viewportId] = {};
77
- }
78
- const representation = this.getSegmentationRepresentation(segmentationRepresentationUID);
79
- if (representation.type !== SegmentationRepresentations.Labelmap) {
80
- this.setActiveSegmentationRepresentation(viewportId, segmentationRepresentationUID);
99
+ const segmentation = this.getSegmentation(segmentationId);
100
+ if (!segmentation) {
81
101
  return;
82
102
  }
83
- const volumeViewport = enabledElement.viewport instanceof BaseVolumeViewport;
84
- const segmentation = this.getSegmentation(representation.segmentationId);
85
103
  const { representationData } = segmentation;
86
- const isLabelmap = representationData.Labelmap;
87
- if (!isLabelmap) {
88
- this.setActiveSegmentationRepresentation(viewportId, segmentationRepresentationUID);
104
+ if (!representationData.Labelmap) {
105
+ return this.addDefaultSegmentationRepresentation(state, viewportId, segmentationId, SegmentationRepresentations.Labelmap, renderingConfig);
106
+ }
107
+ this.processLabelmapRepresentationAddition(viewportId, segmentationId);
108
+ this.addDefaultSegmentationRepresentation(state, viewportId, segmentationId, SegmentationRepresentations.Labelmap, renderingConfig);
109
+ }
110
+ processLabelmapRepresentationAddition(viewportId, segmentationId) {
111
+ const enabledElement = getEnabledElementByViewportId(viewportId);
112
+ if (!enabledElement) {
113
+ return;
114
+ }
115
+ const segmentation = this.getSegmentation(segmentationId);
116
+ if (!segmentation) {
89
117
  return;
90
118
  }
119
+ const volumeViewport = enabledElement.viewport instanceof BaseVolumeViewport;
120
+ const { representationData } = segmentation;
91
121
  const isBaseVolumeSegmentation = 'volumeId' in representationData.Labelmap;
92
122
  if (!volumeViewport) {
93
123
  if (isBaseVolumeSegmentation) {
@@ -103,18 +133,17 @@ export default class SegmentationStateManager {
103
133
  const imageIds = this.getLabelmapImageIds(segmentation.representationData);
104
134
  const segImage = cache.getImage(imageIds[0]);
105
135
  if (segImage?.FrameOfReferenceUID === frameOfReferenceUID) {
106
- convertStackToVolumeSegmentation(segmentation);
136
+ internalConvertStackToVolumeLabelmap(segmentation);
107
137
  }
108
138
  }
109
139
  else {
110
140
  }
111
141
  }
112
- this.setActiveSegmentationRepresentation(viewportId, segmentationRepresentationUID);
113
142
  }
114
- _updateLabelmapSegmentationReferences(segmentationId, stackViewport, labelmapImageIds, updateCallback) {
115
- const currentImageId = stackViewport.getCurrentImageId();
143
+ _updateLabelmapSegmentationReferences(segmentationId, viewport, labelmapImageIds, updateCallback) {
144
+ const currentImageId = viewport.getCurrentImageId();
116
145
  for (const labelmapImageId of labelmapImageIds) {
117
- const viewableImageId = stackViewport.isReferenceViewable({ referencedImageId: labelmapImageId }, { asOverlay: true });
146
+ const viewableImageId = viewport.isReferenceViewable({ referencedImageId: labelmapImageId }, { asOverlay: true });
118
147
  if (viewableImageId) {
119
148
  this._stackLabelmapImageIdReferenceMap
120
149
  .get(segmentationId)
@@ -122,7 +151,7 @@ export default class SegmentationStateManager {
122
151
  }
123
152
  }
124
153
  if (updateCallback) {
125
- updateCallback(stackViewport, segmentationId, labelmapImageIds);
154
+ updateCallback(viewport, segmentationId, labelmapImageIds);
126
155
  }
127
156
  return this._stackLabelmapImageIdReferenceMap
128
157
  .get(segmentationId)
@@ -216,156 +245,172 @@ export default class SegmentationStateManager {
216
245
  return associatedReferenceImageAndLabelmapImageIds.get(imageId);
217
246
  });
218
247
  }
219
- getSegmentationRepresentations(viewportId) {
220
- const viewport = this.state.viewports[viewportId];
221
- if (!viewport) {
222
- return [];
223
- }
224
- return Object.keys(viewport).map((segRepUID) => {
225
- return this.getSegmentationRepresentation(segRepUID);
226
- });
227
- }
228
- removeRepresentation(segmentationRepresentationUID) {
229
- delete this.state.representations[segmentationRepresentationUID];
230
- Object.keys(this.state.viewports).forEach((viewportId) => {
231
- delete this.state.viewports[viewportId][segmentationRepresentationUID];
248
+ removeSegmentationRepresentations(viewportId, specifier) {
249
+ this.updateState((state) => {
250
+ if (!state.viewportSegRepresentations[viewportId]) {
251
+ return;
252
+ }
253
+ if (!specifier) {
254
+ delete state.viewportSegRepresentations[viewportId];
255
+ return;
256
+ }
257
+ const { segmentationId, type } = specifier;
258
+ state.viewportSegRepresentations[viewportId] =
259
+ state.viewportSegRepresentations[viewportId].filter((representation) => {
260
+ if (segmentationId && type) {
261
+ return !(representation.segmentationId === segmentationId &&
262
+ representation.type === type);
263
+ }
264
+ else if (segmentationId) {
265
+ return representation.segmentationId !== segmentationId;
266
+ }
267
+ else if (type) {
268
+ return representation.type !== type;
269
+ }
270
+ return true;
271
+ });
272
+ if (state.viewportSegRepresentations[viewportId].length === 0) {
273
+ delete state.viewportSegRepresentations[viewportId];
274
+ }
232
275
  });
233
276
  }
234
- setActiveSegmentationRepresentation(viewportId, segmentationRepresentationUID) {
235
- Object.keys(this.state.viewports[viewportId]).forEach((segRepUID) => {
236
- this.state.viewports[viewportId][segRepUID].active = false;
277
+ removeSegmentationRepresentation(viewportId, specifier) {
278
+ this.updateState((state) => {
279
+ const viewport = state.viewportSegRepresentations[viewportId];
280
+ if (!viewport) {
281
+ return;
282
+ }
283
+ const viewportRendering = viewport.find((segRep) => segRep.segmentationId === specifier.segmentationId &&
284
+ segRep.type === specifier.type);
285
+ if (!viewportRendering) {
286
+ return;
287
+ }
288
+ viewport.splice(viewport.indexOf(viewportRendering), 1);
237
289
  });
238
- if (!this.state.viewports[viewportId]) {
239
- this.state.viewports[viewportId] = {};
240
- }
241
- if (!this.state.viewports[viewportId][segmentationRepresentationUID]) {
242
- this.state.viewports[viewportId][segmentationRepresentationUID] = {
243
- active: false,
244
- visible: true,
245
- segmentsHidden: new Set(),
246
- };
247
- }
248
- this.state.viewports[viewportId][segmentationRepresentationUID].active =
249
- true;
250
290
  }
251
- getActiveSegmentationRepresentation(viewportId) {
252
- if (!this.state.viewports?.[viewportId]) {
253
- return;
254
- }
255
- const activeSegRep = Object.entries(this.state.viewports[viewportId]).find(([, value]) => value.active);
256
- if (!activeSegRep) {
291
+ _setActiveSegmentation(state, viewportId, segmentationId) {
292
+ const viewport = state.viewportSegRepresentations[viewportId];
293
+ if (!viewport) {
257
294
  return;
258
295
  }
259
- return this.getSegmentationRepresentation(activeSegRep[0]);
260
- }
261
- getGlobalConfig() {
262
- return this.state.globalConfig;
263
- }
264
- setGlobalConfig(config) {
265
- this.state.globalConfig = config;
296
+ viewport.forEach((value) => {
297
+ value.active = value.segmentationId === segmentationId;
298
+ });
266
299
  }
267
- _getRepresentationConfig(segmentationRepresentationUID) {
268
- const segmentationRepresentation = this.getSegmentationRepresentation(segmentationRepresentationUID);
269
- if (!segmentationRepresentation) {
270
- return;
271
- }
272
- return segmentationRepresentation.config;
300
+ setActiveSegmentation(viewportId, segmentationId) {
301
+ this.updateState((state) => {
302
+ const viewport = state.viewportSegRepresentations[viewportId];
303
+ if (!viewport) {
304
+ return;
305
+ }
306
+ viewport.forEach((value) => {
307
+ value.active = value.segmentationId === segmentationId;
308
+ });
309
+ });
273
310
  }
274
- getSegmentationRepresentationConfig(segmentationRepresentationUID) {
275
- const config = this._getRepresentationConfig(segmentationRepresentationUID);
276
- if (!config) {
311
+ getActiveSegmentation(viewportId) {
312
+ if (!this.state.viewportSegRepresentations[viewportId]) {
277
313
  return;
278
314
  }
279
- return config.allSegments;
280
- }
281
- getPerSegmentConfig(segmentationRepresentationUID) {
282
- const config = this._getRepresentationConfig(segmentationRepresentationUID);
283
- if (!config) {
315
+ const activeSegRep = this.state.viewportSegRepresentations[viewportId].find((segRep) => segRep.active);
316
+ if (!activeSegRep) {
284
317
  return;
285
318
  }
286
- return config.perSegment;
319
+ return this.getSegmentation(activeSegRep.segmentationId);
287
320
  }
288
- setSegmentationRepresentationConfig(segmentationRepresentationUID, config) {
289
- const _config = this._getRepresentationConfig(segmentationRepresentationUID);
290
- if (!_config) {
291
- return;
321
+ getSegmentationRepresentations(viewportId, specifier = {}) {
322
+ const viewportRepresentations = this.state.viewportSegRepresentations[viewportId];
323
+ if (!viewportRepresentations) {
324
+ return [];
292
325
  }
293
- _config.allSegments = config;
326
+ if (!specifier.type && !specifier.segmentationId) {
327
+ return viewportRepresentations;
328
+ }
329
+ return viewportRepresentations.filter((representation) => {
330
+ const typeMatch = specifier.type
331
+ ? representation.type === specifier.type
332
+ : true;
333
+ const idMatch = specifier.segmentationId
334
+ ? representation.segmentationId === specifier.segmentationId
335
+ : true;
336
+ return typeMatch && idMatch;
337
+ });
294
338
  }
295
- setPerSegmentConfig(segmentationRepresentationUID, config) {
296
- const _config = this._getRepresentationConfig(segmentationRepresentationUID);
297
- if (!_config) {
298
- return;
299
- }
300
- _config.perSegment = config;
339
+ getSegmentationRepresentation(viewportId, specifier) {
340
+ return this.getSegmentationRepresentations(viewportId, specifier)[0];
301
341
  }
302
- getSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID) {
303
- const viewport = this.state.viewports[viewportId];
304
- return viewport && viewport[segmentationRepresentationUID]?.visible;
342
+ getSegmentationRepresentationVisibility(viewportId, specifier) {
343
+ const viewportRepresentation = this.getSegmentationRepresentation(viewportId, specifier);
344
+ return viewportRepresentation?.visible;
305
345
  }
306
- setSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID, visible) {
307
- if (!this.state.viewports[viewportId]) {
308
- this.state.viewports[viewportId] = {};
309
- }
310
- this.state.viewports[viewportId][segmentationRepresentationUID].visible =
311
- visible;
346
+ setSegmentationRepresentationVisibility(viewportId, specifier, visible) {
347
+ this.updateState((state) => {
348
+ const viewportRepresentations = this.getSegmentationRepresentations(viewportId, specifier);
349
+ if (!viewportRepresentations) {
350
+ return;
351
+ }
352
+ viewportRepresentations.forEach((representation) => {
353
+ representation.visible = visible;
354
+ });
355
+ });
312
356
  }
313
357
  addColorLUT(colorLUT, lutIndex) {
314
- if (this.state.colorLUT[lutIndex]) {
315
- console.warn('Color LUT table already exists, overwriting');
316
- }
317
- this.state.colorLUT[lutIndex] = structuredClone(colorLUT);
358
+ this.updateState((state) => {
359
+ if (state.colorLUT[lutIndex]) {
360
+ console.warn('Color LUT table already exists, overwriting');
361
+ }
362
+ state.colorLUT[lutIndex] = csUtils.deepClone(colorLUT);
363
+ });
318
364
  }
319
365
  removeColorLUT(colorLUTIndex) {
320
- delete this.state.colorLUT[colorLUTIndex];
366
+ this.updateState((state) => {
367
+ delete state.colorLUT[colorLUTIndex];
368
+ });
321
369
  }
322
370
  _getStackIdForImageIds(imageIds) {
323
371
  return imageIds
324
372
  .map((imageId) => imageId.slice(-Math.round(imageId.length * 0.15)))
325
373
  .join('_');
326
374
  }
375
+ getAllViewportSegmentationRepresentations() {
376
+ return Object.entries(this.state.viewportSegRepresentations).map(([viewportId, representations]) => ({
377
+ viewportId,
378
+ representations,
379
+ }));
380
+ }
327
381
  }
328
- async function computeVolumeSegmentationFromStack({ imageIds, options, }) {
382
+ async function internalComputeVolumeLabelmapFromStack({ imageIds, options, }) {
329
383
  const segmentationImageIds = imageIds;
330
- const volumeId = options?.volumeId ?? csUtils.uuidv4();
384
+ const volumeId = options?.volumeId || csUtils.uuidv4();
331
385
  await volumeLoader.createAndCacheVolumeFromImages(volumeId, segmentationImageIds);
332
386
  return { volumeId };
333
387
  }
334
- async function convertStackToVolumeSegmentation({ segmentationId, options, }) {
388
+ async function internalConvertStackToVolumeLabelmap({ segmentationId, options, }) {
335
389
  const segmentation = defaultSegmentationStateManager.getSegmentation(segmentationId);
336
390
  const data = segmentation.representationData
337
391
  .Labelmap;
338
- const { volumeId } = await computeVolumeSegmentationFromStack({
392
+ const { volumeId } = await internalComputeVolumeLabelmapFromStack({
339
393
  imageIds: data.imageIds,
340
394
  options,
341
395
  });
342
- await updateSegmentationState({
343
- segmentationId,
344
- viewportId: options.viewportId,
345
- options,
346
- volumeId,
347
- });
396
+ segmentation.representationData.Labelmap.volumeId = volumeId;
348
397
  }
349
- async function updateSegmentationState({ segmentationId, viewportId, volumeId, options, }) {
350
- const segmentation = defaultSegmentationStateManager.getSegmentation(segmentationId);
351
- if (options?.removeOriginal) {
352
- const data = segmentation.representationData
353
- .Labelmap;
354
- const { imageIds } = data;
355
- imageIds.forEach((imageId) => {
356
- cache.removeImageLoadObject(imageId);
357
- });
358
- segmentation.representationData.Labelmap = {
359
- volumeId,
398
+ function getDefaultRenderingConfig(type) {
399
+ const cfun = vtkColorTransferFunction.newInstance();
400
+ const ofun = vtkPiecewiseFunction.newInstance();
401
+ ofun.addPoint(0, 0);
402
+ if (type === SegmentationRepresentations.Labelmap) {
403
+ return {
404
+ cfun,
405
+ ofun,
406
+ colorLUTIndex: 0,
360
407
  };
361
408
  }
362
409
  else {
363
- segmentation.representationData.Labelmap = {
364
- ...segmentation.representationData.Labelmap,
365
- volumeId,
410
+ return {
411
+ colorLUTIndex: 0,
366
412
  };
367
413
  }
368
- eventTarget.addEventListenerOnce(Events.SEGMENTATION_RENDERED, () => triggerSegmentationDataModified(segmentationId));
369
414
  }
370
415
  const defaultSegmentationStateManager = new SegmentationStateManager('DEFAULT');
371
- export { convertStackToVolumeSegmentation, computeVolumeSegmentationFromStack, defaultSegmentationStateManager, };
416
+ export { internalConvertStackToVolumeLabelmap, internalComputeVolumeLabelmapFromStack, defaultSegmentationStateManager, };
@@ -0,0 +1,42 @@
1
+ import { SegmentationRepresentations } from '../../enums';
2
+ import type { ContourStyle } from '../../types/ContourTypes';
3
+ import type { LabelmapStyle } from '../../types/LabelmapTypes';
4
+ import type { SurfaceStyle } from '../../types/SurfaceTypes';
5
+ export type RepresentationStyle = LabelmapStyle | ContourStyle | SurfaceStyle;
6
+ declare class SegmentationStyle {
7
+ private config;
8
+ constructor();
9
+ setGlobalStyle(type: SegmentationRepresentations, styles: RepresentationStyle): void;
10
+ getGlobalStyle(type: SegmentationRepresentations): RepresentationStyle;
11
+ setGlobalLabelmapStyle(styles: LabelmapStyle): void;
12
+ setGlobalContourStyle(styles: ContourStyle): void;
13
+ setGlobalSurfaceStyle(styles: SurfaceStyle): void;
14
+ setSegmentationSpecificStyle(specifier: {
15
+ segmentationId: string;
16
+ type: SegmentationRepresentations;
17
+ segmentIndex?: number;
18
+ }, styles: RepresentationStyle): void;
19
+ setViewportSpecificStyleForType(specifier: {
20
+ viewportId: string;
21
+ type: SegmentationRepresentations;
22
+ }, styles: RepresentationStyle): void;
23
+ setViewportSpecificStyleForSegmentation(specifier: {
24
+ viewportId: string;
25
+ segmentationId: string;
26
+ type: SegmentationRepresentations;
27
+ segmentIndex?: number;
28
+ }, styles: RepresentationStyle): void;
29
+ setViewportRenderInactiveSegmentations(viewportId: string, renderInactiveSegmentations: boolean): void;
30
+ getStyle(specifier: {
31
+ viewportId?: string;
32
+ segmentationId?: string;
33
+ type?: SegmentationRepresentations;
34
+ segmentIndex?: number;
35
+ }): {
36
+ style: RepresentationStyle;
37
+ renderInactiveSegmentations: boolean;
38
+ };
39
+ private getDefaultStyle;
40
+ }
41
+ declare const segmentationStyle: SegmentationStyle;
42
+ export { segmentationStyle };