@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
@@ -3,9 +3,9 @@ import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
3
3
  import vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
4
4
  import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
5
5
  import vtkCellArray from '@kitware/vtk.js/Common/Core/CellArray';
6
- import { getSurfaceActorUID } from '../../../stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport';
7
- function addOrUpdateSurfaceToElement(element, surface, segmentationRepresentationUID) {
8
- const actorUID = getSurfaceActorUID(segmentationRepresentationUID, surface.id);
6
+ import { getSurfaceActorUID } from '../../../stateManagement/segmentation/helpers/getSegmentationActor';
7
+ function addOrUpdateSurfaceToElement(element, surface, segmentationId) {
8
+ const actorUID = getSurfaceActorUID(segmentationId);
9
9
  const enabledElement = getEnabledElement(element);
10
10
  const { viewport } = enabledElement;
11
11
  const surfaceActor = viewport.getActor(actorUID)?.actor;
@@ -1,2 +1,2 @@
1
- declare function removeContourFromElement(element: HTMLDivElement, segmentationRepresentationUID: string, removeFromCache?: boolean): void;
2
- export default removeContourFromElement;
1
+ declare function removeSurfaceFromElement(element: HTMLDivElement, segmentationId: string): void;
2
+ export default removeSurfaceFromElement;
@@ -1,11 +1,13 @@
1
1
  import { getEnabledElement } from '@cornerstonejs/core';
2
- function removeContourFromElement(element, segmentationRepresentationUID, removeFromCache = false) {
2
+ import { getSurfaceActorUID } from '../../../stateManagement/segmentation/helpers/getSegmentationActor';
3
+ function removeSurfaceFromElement(element, segmentationId) {
3
4
  const enabledElement = getEnabledElement(element);
4
5
  const { viewport } = enabledElement;
5
6
  const actorEntries = viewport.getActors();
7
+ const actorUID = getSurfaceActorUID(segmentationId);
6
8
  const actorUIDsToRemove = actorEntries
7
- .map(({ uid }) => uid.startsWith(segmentationRepresentationUID) ? uid : undefined)
9
+ .map(({ uid }) => (uid.startsWith(actorUID) ? uid : undefined))
8
10
  .filter(Boolean);
9
11
  viewport.removeActors(actorUIDsToRemove);
10
12
  }
11
- export default removeContourFromElement;
13
+ export default removeSurfaceFromElement;
@@ -1,3 +1,3 @@
1
- import type { SurfaceRenderingConfig } from '../../../types/SurfaceTypes';
2
- declare function getDefaultSurfaceConfig(): SurfaceRenderingConfig;
3
- export default getDefaultSurfaceConfig;
1
+ import type { SurfaceStyle } from '../../../types/SurfaceTypes';
2
+ declare function getDefaultSurfaceStyle(): SurfaceStyle;
3
+ export default getDefaultSurfaceStyle;
@@ -2,7 +2,7 @@ const defaultSurfaceConfig = {
2
2
  renderFill: true,
3
3
  fillAlpha: 1,
4
4
  };
5
- function getDefaultSurfaceConfig() {
5
+ function getDefaultSurfaceStyle() {
6
6
  return defaultSurfaceConfig;
7
7
  }
8
- export default getDefaultSurfaceConfig;
8
+ export default getDefaultSurfaceStyle;
@@ -1,6 +1,6 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
  import type { SegmentationRepresentation } from '../../../types/SegmentationStateTypes';
3
- declare function removeRepresentation(viewportId: string, segmentationRepresentationUID: string, renderImmediate?: boolean): void;
3
+ declare function removeRepresentation(viewportId: string, segmentationId: string, renderImmediate?: boolean): void;
4
4
  declare function render(viewport: Types.IVolumeViewport | Types.IStackViewport, representation: SegmentationRepresentation): Promise<void>;
5
5
  declare const _default: {
6
6
  render: typeof render;
@@ -1,27 +1,25 @@
1
1
  import { cache, getEnabledElementByViewportId, VolumeViewport3D, } from '@cornerstonejs/core';
2
2
  import Representations from '../../../enums/SegmentationRepresentations';
3
- import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
4
3
  import removeSurfaceFromElement from './removeSurfaceFromElement';
5
4
  import addOrUpdateSurfaceToElement from './addOrUpdateSurfaceToElement';
6
5
  import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
7
6
  import { getColorLUT } from '../../../stateManagement/segmentation/getColorLUT';
8
7
  import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
9
8
  import { computeAndAddSurfaceRepresentation } from '../../../stateManagement/segmentation/polySeg';
10
- function removeRepresentation(viewportId, segmentationRepresentationUID, renderImmediate = false) {
9
+ function removeRepresentation(viewportId, segmentationId, renderImmediate = false) {
11
10
  const enabledElement = getEnabledElementByViewportId(viewportId);
12
11
  if (!enabledElement) {
13
12
  return;
14
13
  }
15
14
  const { viewport } = enabledElement;
16
- removeSurfaceFromElement(viewport.element, segmentationRepresentationUID);
17
- _removeRepresentation(segmentationRepresentationUID);
15
+ removeSurfaceFromElement(viewport.element, segmentationId);
18
16
  if (!renderImmediate) {
19
17
  return;
20
18
  }
21
19
  viewport.render();
22
20
  }
23
21
  async function render(viewport, representation) {
24
- const { colorLUTIndex, segmentationId, segmentationRepresentationUID } = representation;
22
+ const { segmentationId } = representation;
25
23
  const segmentation = getSegmentation(segmentationId);
26
24
  if (!segmentation) {
27
25
  return;
@@ -31,9 +29,9 @@ async function render(viewport, representation) {
31
29
  }
32
30
  let SurfaceData = segmentation.representationData[Representations.Surface];
33
31
  if (!SurfaceData &&
34
- canComputeRequestedRepresentation(segmentationRepresentationUID)) {
32
+ canComputeRequestedRepresentation(segmentationId, Representations.Surface)) {
35
33
  SurfaceData = await computeAndAddSurfaceRepresentation(segmentationId, {
36
- segmentationRepresentationUID,
34
+ viewport,
37
35
  });
38
36
  if (!SurfaceData) {
39
37
  throw new Error(`No Surface data found for segmentationId ${segmentationId}.`);
@@ -43,6 +41,7 @@ async function render(viewport, representation) {
43
41
  if (!geometryIds?.size) {
44
42
  console.warn(`No Surfaces found for segmentationId ${segmentationId}. Skipping render.`);
45
43
  }
44
+ const colorLUTIndex = representation.config?.colorLUTIndex;
46
45
  const colorLUT = getColorLUT(colorLUTIndex);
47
46
  const surfaces = [];
48
47
  geometryIds.forEach((geometryId, segmentIndex) => {
@@ -54,7 +53,7 @@ async function render(viewport, representation) {
54
53
  const surface = geometry.data;
55
54
  const color = colorLUT[segmentIndex];
56
55
  surface.setColor(color.slice(0, 3));
57
- addOrUpdateSurfaceToElement(viewport.element, surface, segmentationRepresentationUID);
56
+ addOrUpdateSurfaceToElement(viewport.element, surface, segmentationId);
58
57
  surfaces.push(surface);
59
58
  });
60
59
  viewport.render();
@@ -6,7 +6,6 @@ import WindowLevelRegionTool from './WindowLevelRegionTool';
6
6
  import StackScrollTool from './StackScrollTool';
7
7
  import PlanarRotateTool from './PlanarRotateTool';
8
8
  import ZoomTool from './ZoomTool';
9
- import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
10
9
  import MIPJumpToClickTool from './MIPJumpToClickTool';
11
10
  import CrosshairsTool from './CrosshairsTool';
12
11
  import MagnifyTool from './MagnifyTool';
@@ -47,4 +46,4 @@ import BrushTool from './segmentation/BrushTool';
47
46
  import PaintFillTool from './segmentation/PaintFillTool';
48
47
  import OrientationMarkerTool from './OrientationMarkerTool';
49
48
  import SegmentSelectTool from './segmentation/SegmentSelectTool';
50
- export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, HeightTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
49
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, HeightTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
@@ -6,7 +6,6 @@ import WindowLevelRegionTool from './WindowLevelRegionTool';
6
6
  import StackScrollTool from './StackScrollTool';
7
7
  import PlanarRotateTool from './PlanarRotateTool';
8
8
  import ZoomTool from './ZoomTool';
9
- import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
10
9
  import MIPJumpToClickTool from './MIPJumpToClickTool';
11
10
  import CrosshairsTool from './CrosshairsTool';
12
11
  import MagnifyTool from './MagnifyTool';
@@ -47,4 +46,4 @@ import BrushTool from './segmentation/BrushTool';
47
46
  import PaintFillTool from './segmentation/PaintFillTool';
48
47
  import OrientationMarkerTool from './OrientationMarkerTool';
49
48
  import SegmentSelectTool from './segmentation/SegmentSelectTool';
50
- export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, HeightTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
49
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, HeightTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
@@ -56,7 +56,6 @@ declare class BrushTool extends BaseTool {
56
56
  viewPlaneNormal: any;
57
57
  toolGroupId: string;
58
58
  segmentationId: string;
59
- segmentationRepresentationUID: string;
60
59
  viewUp: any;
61
60
  strategySpecificConfiguration: any;
62
61
  preview: unknown;
@@ -76,7 +75,6 @@ declare class BrushTool extends BaseTool {
76
75
  viewPlaneNormal: any;
77
76
  toolGroupId: string;
78
77
  segmentationId: string;
79
- segmentationRepresentationUID: string;
80
78
  viewUp: any;
81
79
  strategySpecificConfiguration: any;
82
80
  preview: unknown;
@@ -92,7 +90,6 @@ declare class BrushTool extends BaseTool {
92
90
  viewPlaneNormal: any;
93
91
  toolGroupId: string;
94
92
  segmentationId: string;
95
- segmentationRepresentationUID: string;
96
93
  viewUp: any;
97
94
  strategySpecificConfiguration: any;
98
95
  preview: unknown;
@@ -108,7 +105,6 @@ declare class BrushTool extends BaseTool {
108
105
  viewPlaneNormal: any;
109
106
  toolGroupId: string;
110
107
  segmentationId: string;
111
- segmentationRepresentationUID: string;
112
108
  viewUp: any;
113
109
  strategySpecificConfiguration: any;
114
110
  preview: unknown;
@@ -1,4 +1,4 @@
1
- import { utilities as csUtils, cache, getEnabledElement, StackViewport, eventTarget, Enums, } from '@cornerstonejs/core';
1
+ import { utilities as csUtils, cache, getEnabledElement, StackViewport, eventTarget, Enums, BaseVolumeViewport, } from '@cornerstonejs/core';
2
2
  import { vec3, vec2 } from 'gl-matrix';
3
3
  import { BaseTool } from '../base';
4
4
  import { fillInsideSphere, thresholdInsideSphere, } from './strategies/fillSphere';
@@ -9,12 +9,12 @@ import { Events, ToolModes, SegmentationRepresentations, StrategyCallbacks, } fr
9
9
  import { drawCircle as drawCircleSvg } from '../../drawingSvg';
10
10
  import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
11
11
  import triggerAnnotationRenderForViewportUIDs from '../../utilities/triggerAnnotationRenderForViewportIds';
12
- import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
13
- import { getActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, getSegmentation, getStackSegmentationImageIdsForViewport, } from '../../stateManagement/segmentation/segmentationState';
12
+ import { getCurrentLabelmapImageIdForViewport, getSegmentation, getStackSegmentationImageIdsForViewport, } from '../../stateManagement/segmentation/segmentationState';
14
13
  import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
15
14
  import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
16
15
  import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
17
16
  import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
17
+ import { getActiveSegmentation } from '../../stateManagement/segmentation/getActiveSegmentation';
18
18
  class BrushTool extends BaseTool {
19
19
  constructor(toolProps = {}, defaultToolProps = {
20
20
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -194,19 +194,23 @@ class BrushTool extends BaseTool {
194
194
  createEditData(element) {
195
195
  const enabledElement = getEnabledElement(element);
196
196
  const { viewport } = enabledElement;
197
- const activeRepresentation = getActiveSegmentationRepresentation(viewport.id);
198
- if (!activeRepresentation) {
199
- throw new Error('No active segmentation detected, create a segmentation representation before using the brush tool');
200
- }
201
- const { segmentationId, type } = activeRepresentation;
202
- if (type === SegmentationRepresentations.Contour) {
203
- throw new Error('Not implemented yet');
197
+ const activeSegmentation = getActiveSegmentation(viewport.id);
198
+ if (!activeSegmentation) {
199
+ const event = new CustomEvent(Enums.Events.ERROR_EVENT, {
200
+ detail: {
201
+ type: 'Segmentation',
202
+ message: 'No active segmentation detected, create a segmentation representation before using the brush tool',
203
+ },
204
+ cancelable: true,
205
+ });
206
+ eventTarget.dispatchEvent(event);
207
+ return null;
204
208
  }
209
+ const { segmentationId } = activeSegmentation;
205
210
  const segmentsLocked = getLockedSegmentIndices(segmentationId);
206
211
  const { representationData } = getSegmentation(segmentationId);
207
- const labelmapData = representationData[SegmentationRepresentations.Labelmap];
208
- if (isVolumeSegmentation(labelmapData, viewport)) {
209
- const { volumeId } = representationData[type];
212
+ if (viewport instanceof BaseVolumeViewport) {
213
+ const { volumeId } = representationData[SegmentationRepresentations.Labelmap];
210
214
  const actors = viewport.getActors();
211
215
  const isStackViewport = viewport instanceof StackViewport;
212
216
  if (isStackViewport) {
@@ -220,7 +224,7 @@ class BrushTool extends BaseTool {
220
224
  eventTarget.dispatchEvent(event);
221
225
  return null;
222
226
  }
223
- const volumes = actors.map((actorEntry) => cache.getVolume(actorEntry.referencedId));
227
+ const volumes = actors.map((actorEntry) => cache.getVolume(actorEntry.referencedId ?? actorEntry.uid));
224
228
  const segmentationVolume = cache.getVolume(volumeId);
225
229
  const referencedVolumeIdToThreshold = volumes.find((volume) => csUtils.isEqual(volume.dimensions, segmentationVolume.dimensions))?.volumeId || volumes[0]?.volumeId;
226
230
  return {
@@ -282,7 +286,7 @@ class BrushTool extends BaseTool {
282
286
  const camera = viewport.getCamera();
283
287
  const { viewPlaneNormal, viewUp } = camera;
284
288
  const viewportIdsToRender = [viewport.id];
285
- const { segmentIndex, segmentationId, segmentationRepresentationUID, segmentColor, } = this.getActiveSegmentationData(viewport) || {};
289
+ const { segmentIndex, segmentationId, segmentColor } = this.getActiveSegmentationData(viewport) || {};
286
290
  const brushCursor = {
287
291
  metadata: {
288
292
  viewPlaneNormal: [...viewPlaneNormal],
@@ -300,25 +304,23 @@ class BrushTool extends BaseTool {
300
304
  segmentIndex,
301
305
  viewport,
302
306
  segmentationId,
303
- segmentationRepresentationUID,
304
307
  segmentColor,
305
308
  viewportIdsToRender,
306
309
  };
307
310
  }
308
311
  getActiveSegmentationData(viewport) {
309
312
  const viewportId = viewport.id;
310
- const activeRepresentation = getActiveSegmentationRepresentation(viewportId);
313
+ const activeRepresentation = getActiveSegmentation(viewportId);
311
314
  if (!activeRepresentation) {
312
315
  console.warn('No active segmentation detected, create one before using the brush tool');
313
316
  return;
314
317
  }
315
- const { segmentationId, segmentationRepresentationUID } = activeRepresentation;
318
+ const { segmentationId } = activeRepresentation;
316
319
  const segmentIndex = getActiveSegmentIndex(segmentationId);
317
- const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
320
+ const segmentColor = getSegmentIndexColor(viewportId, segmentationId, segmentIndex);
318
321
  return {
319
322
  segmentIndex,
320
323
  segmentationId,
321
- segmentationRepresentationUID,
322
324
  segmentColor,
323
325
  };
324
326
  }
@@ -336,7 +338,7 @@ class BrushTool extends BaseTool {
336
338
  }
337
339
  getOperationData(element) {
338
340
  const editData = this._editData || this.createEditData(element);
339
- const { segmentIndex, segmentationId, segmentationRepresentationUID, brushCursor, } = this._hoverData || this.createHoverData(element);
341
+ const { segmentIndex, segmentationId, brushCursor } = this._hoverData || this.createHoverData(element);
340
342
  const { data, metadata = {} } = brushCursor || {};
341
343
  const { viewPlaneNormal, viewUp } = metadata;
342
344
  const operationData = {
@@ -349,7 +351,6 @@ class BrushTool extends BaseTool {
349
351
  viewPlaneNormal,
350
352
  toolGroupId: this.toolGroupId,
351
353
  segmentationId,
352
- segmentationRepresentationUID,
353
354
  viewUp,
354
355
  strategySpecificConfiguration: this.configuration.strategySpecificConfiguration,
355
356
  preview: this._previewData?.preview,
@@ -332,10 +332,10 @@ class CircleROIStartEndThresholdTool extends CircleROITool {
332
332
  _computePointsInsideVolume(annotation, imageVolume, targetId, enabledElement) {
333
333
  const { data, metadata } = annotation;
334
334
  const { viewPlaneNormal, viewUp } = metadata;
335
- const { viewport, renderingEngine } = enabledElement;
335
+ const { viewport } = enabledElement;
336
336
  const projectionPoints = data.cachedStats.projectionPoints;
337
337
  const pointsInsideVolume = [[]];
338
- const image = this.getTargetIdImage(targetId, renderingEngine);
338
+ const image = this.getTargetImageData(targetId);
339
339
  const canvasCoordinates = data.handles.points.map((p) => viewport.worldToCanvas(p));
340
340
  const [topLeftCanvas, bottomRightCanvas] = (getCanvasCircleCorners(canvasCoordinates));
341
341
  const pos1 = viewport.canvasToWorld(topLeftCanvas);
@@ -16,8 +16,8 @@ declare class CircleScissorsTool extends BaseTool {
16
16
  movingTextBox: boolean;
17
17
  newAnnotation?: boolean;
18
18
  hasMoved?: boolean;
19
+ imageId: string;
19
20
  centerCanvas?: Array<number>;
20
- segmentationRepresentationUID?: string;
21
21
  } | null;
22
22
  isDrawing: boolean;
23
23
  isHandleOutsideImage: boolean;
@@ -1,4 +1,4 @@
1
- import { cache, getEnabledElement } from '@cornerstonejs/core';
1
+ import { BaseVolumeViewport, cache, getEnabledElement, } from '@cornerstonejs/core';
2
2
  import { BaseTool } from '../base';
3
3
  import { fillInsideCircle } from './strategies/fillCircle';
4
4
  import { eraseInsideCircle } from './strategies/eraseCircle';
@@ -7,8 +7,7 @@ import { drawCircle as drawCircleSvg } from '../../drawingSvg';
7
7
  import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
8
8
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
9
9
  import { segmentLocking, activeSegmentation, segmentIndex as segmentIndexController, config as segmentationConfig, } from '../../stateManagement/segmentation';
10
- import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
11
- import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
10
+ import { getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
12
11
  class CircleScissorsTool extends BaseTool {
13
12
  constructor(toolProps = {}, defaultToolProps = {
14
13
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -35,16 +34,16 @@ class CircleScissorsTool extends BaseTool {
35
34
  this.isDrawing = true;
36
35
  const camera = viewport.getCamera();
37
36
  const { viewPlaneNormal, viewUp } = camera;
38
- const activeSegmentationRepresentation = activeSegmentation.getActiveSegmentationRepresentation(viewport.id);
39
- if (!activeSegmentationRepresentation) {
37
+ const activeLabelmapSegmentation = activeSegmentation.getActiveSegmentation(viewport.id);
38
+ if (!activeLabelmapSegmentation) {
40
39
  throw new Error('No active segmentation detected, create one before using scissors tool');
41
40
  }
42
- const { segmentationRepresentationUID, segmentationId, type } = activeSegmentationRepresentation;
41
+ const { segmentationId } = activeLabelmapSegmentation;
43
42
  const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
44
43
  const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
45
- const segmentColor = segmentationConfig.color.getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
44
+ const segmentColor = segmentationConfig.color.getSegmentIndexColor(viewport.id, segmentationId, segmentIndex);
46
45
  const { representationData } = getSegmentation(segmentationId);
47
- const labelmapData = representationData[type];
46
+ const labelmapData = representationData.Labelmap;
48
47
  if (!labelmapData) {
49
48
  throw new Error('No labelmap data found for the active segmentation, create one before using scissors tool');
50
49
  }
@@ -86,11 +85,11 @@ class CircleScissorsTool extends BaseTool {
86
85
  movingTextBox: false,
87
86
  newAnnotation: true,
88
87
  hasMoved: false,
89
- segmentationRepresentationUID,
90
88
  volumeId: null,
91
89
  referencedVolumeId: null,
90
+ imageId: null,
92
91
  };
93
- if (isVolumeSegmentation(labelmapData, viewport)) {
92
+ if (viewport instanceof BaseVolumeViewport) {
94
93
  const { volumeId } = labelmapData;
95
94
  const segmentation = cache.getVolume(volumeId);
96
95
  this.editData = {
@@ -100,8 +99,10 @@ class CircleScissorsTool extends BaseTool {
100
99
  };
101
100
  }
102
101
  else {
102
+ const segmentationImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
103
103
  this.editData = {
104
104
  ...this.editData,
105
+ imageId: segmentationImageId,
105
106
  };
106
107
  }
107
108
  this._activateDraw(element);
@@ -1,11 +1,10 @@
1
- import { cache, getEnabledElement, utilities as csUtils, } from '@cornerstonejs/core';
1
+ import { cache, getEnabledElement, utilities as csUtils, BaseVolumeViewport, } from '@cornerstonejs/core';
2
2
  import { BaseTool } from '../base';
3
3
  import { SegmentationRepresentations } from '../../enums';
4
4
  import { triggerSegmentationDataModified } from '../../stateManagement/segmentation/triggerSegmentationEvents';
5
5
  import { segmentLocking, activeSegmentation, segmentIndex as segmentIndexController, } from '../../stateManagement/segmentation';
6
6
  import floodFill from '../../utilities/segmentation/floodFill';
7
7
  import { getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
8
- import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
9
8
  const { transformWorldToIndex, isEqual } = csUtils;
10
9
  class PaintFillTool extends BaseTool {
11
10
  constructor(toolProps = {}, defaultToolProps = {
@@ -20,22 +19,21 @@ class PaintFillTool extends BaseTool {
20
19
  const { viewport } = enabledElement;
21
20
  const camera = viewport.getCamera();
22
21
  const { viewPlaneNormal } = camera;
23
- const activeSegmentationRepresentation = activeSegmentation.getActiveSegmentationRepresentation(viewport.id);
22
+ const activeSegmentationRepresentation = activeSegmentation.getActiveSegmentation(viewport.id);
24
23
  if (!activeSegmentationRepresentation) {
25
24
  throw new Error('No active segmentation detected, create one before using scissors tool');
26
25
  }
27
- const { segmentationId, type } = activeSegmentationRepresentation;
26
+ const { segmentationId } = activeSegmentationRepresentation;
28
27
  const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
29
28
  const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
30
29
  const { representationData } = getSegmentation(segmentationId);
31
- const labelmapData = representationData[SegmentationRepresentations.Labelmap];
32
30
  let dimensions;
33
31
  let direction;
34
32
  let scalarData;
35
33
  let index;
36
34
  let voxelManager;
37
- if (isVolumeSegmentation(labelmapData, viewport)) {
38
- const { volumeId } = representationData[type];
35
+ if (viewport instanceof BaseVolumeViewport) {
36
+ const { volumeId } = representationData[SegmentationRepresentations.Labelmap];
39
37
  const segmentation = cache.getVolume(volumeId);
40
38
  ({ dimensions, direction } = segmentation);
41
39
  voxelManager = segmentation.voxelManager;
@@ -308,10 +308,10 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
308
308
  _computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement) {
309
309
  const { data, metadata } = annotation;
310
310
  const { viewPlaneNormal, viewUp } = metadata;
311
- const { viewport, renderingEngine } = enabledElement;
311
+ const { viewport } = enabledElement;
312
312
  const projectionPoints = data.cachedStats.projectionPoints;
313
313
  const pointsInsideVolume = [[]];
314
- const image = this.getTargetIdImage(targetId, renderingEngine);
314
+ const image = this.getTargetImageData(targetId);
315
315
  const worldPos1 = data.handles.points[0];
316
316
  const worldPos2 = data.handles.points[3];
317
317
  const { worldWidth, worldHeight } = getWorldWidthAndHeightFromCorners(viewPlaneNormal, viewUp, worldPos1, worldPos2);
@@ -12,7 +12,6 @@ declare class RectangleScissorsTool extends BaseTool {
12
12
  segmentationId: string;
13
13
  segmentIndex: number;
14
14
  segmentsLocked: number[];
15
- segmentationRepresentationUID: string;
16
15
  segmentColor: [number, number, number, number];
17
16
  viewportIdsToRender: string[];
18
17
  handleIndex?: number;
@@ -1,4 +1,4 @@
1
- import { cache, getEnabledElement, StackViewport } from '@cornerstonejs/core';
1
+ import { BaseVolumeViewport, cache, getEnabledElement, } from '@cornerstonejs/core';
2
2
  import { BaseTool } from '../base';
3
3
  import { fillInsideRectangle } from './strategies/fillRectangle';
4
4
  import { eraseInsideRectangle } from './strategies/eraseRectangle';
@@ -8,8 +8,7 @@ import { drawRect as drawRectSvg } from '../../drawingSvg';
8
8
  import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
9
9
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
10
10
  import { config as segmentationConfig, segmentLocking, segmentIndex as segmentIndexController, activeSegmentation, } from '../../stateManagement/segmentation';
11
- import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
12
- import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
11
+ import { getCurrentLabelmapImageIdForViewport, getSegmentation, getStackSegmentationImageIdsForViewport, } from '../../stateManagement/segmentation/segmentationState';
13
12
  class RectangleScissorsTool extends BaseTool {
14
13
  constructor(toolProps = {}, defaultToolProps = {
15
14
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -35,14 +34,14 @@ class RectangleScissorsTool extends BaseTool {
35
34
  this.isDrawing = true;
36
35
  const camera = viewport.getCamera();
37
36
  const { viewPlaneNormal, viewUp } = camera;
38
- const activeSegmentationRepresentation = activeSegmentation.getActiveSegmentationRepresentation(viewport.id);
39
- if (!activeSegmentationRepresentation) {
37
+ const activeLabelmapSegmentation = activeSegmentation.getActiveSegmentation(viewport.id);
38
+ if (!activeLabelmapSegmentation) {
40
39
  throw new Error('No active segmentation detected, create one before using scissors tool');
41
40
  }
42
- const { segmentationRepresentationUID, segmentationId } = activeSegmentationRepresentation;
41
+ const { segmentationId } = activeLabelmapSegmentation;
43
42
  const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
44
43
  const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
45
- const segmentColor = segmentationConfig.color.getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
44
+ const segmentColor = segmentationConfig.color.getSegmentIndexColor(viewport.id, segmentationId, segmentIndex);
46
45
  const { representationData } = getSegmentation(segmentationId);
47
46
  const labelmapData = representationData[SegmentationRepresentations.Labelmap];
48
47
  const annotation = {
@@ -80,12 +79,11 @@ class RectangleScissorsTool extends BaseTool {
80
79
  movingTextBox: false,
81
80
  newAnnotation: true,
82
81
  hasMoved: false,
83
- segmentationRepresentationUID,
84
82
  volumeId: null,
85
83
  referencedVolumeId: null,
86
84
  imageId: null,
87
85
  };
88
- if (isVolumeSegmentation(labelmapData, viewport)) {
86
+ if (viewport instanceof BaseVolumeViewport) {
89
87
  const { volumeId } = labelmapData;
90
88
  const segmentation = cache.getVolume(volumeId);
91
89
  this.editData = {
@@ -95,8 +93,10 @@ class RectangleScissorsTool extends BaseTool {
95
93
  };
96
94
  }
97
95
  else {
96
+ const segmentationImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
98
97
  this.editData = {
99
98
  ...this.editData,
99
+ imageId: segmentationImageId,
100
100
  };
101
101
  }
102
102
  this._activateDraw(element);
@@ -154,7 +154,6 @@ class RectangleScissorsTool extends BaseTool {
154
154
  }
155
155
  annotation.invalidated = true;
156
156
  this.editData.hasMoved = true;
157
- const { renderingEngine } = enabledElement;
158
157
  triggerAnnotationRenderForViewportIds(viewportIdsToRender);
159
158
  };
160
159
  this._endCallback = (evt) => {
@@ -1,7 +1,7 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
  import { BaseTool } from '../base';
3
3
  import type { PublicToolProps, ToolProps, EventTypes } from '../../types';
4
- import type { SegmentationRepresentation } from '../../types/SegmentationStateTypes';
4
+ import type { Segmentation } from '../../types/SegmentationStateTypes';
5
5
  declare class SegmentSelectTool extends BaseTool {
6
6
  static toolName: any;
7
7
  private hoverTimer;
@@ -15,6 +15,6 @@ declare class SegmentSelectTool extends BaseTool {
15
15
  onSetToolActive: () => void;
16
16
  onSetToolDisabled: () => void;
17
17
  _setActiveSegment(evt?: EventTypes.InteractionEventType): void;
18
- _setActiveSegmentForType(activeSegmentationReps: SegmentationRepresentation, worldPoint: Types.Point3, viewport: Types.IStackViewport | Types.IVolumeViewport): void;
18
+ _setActiveSegmentForType(activeSegmentation: Segmentation, worldPoint: Types.Point3, viewport: Types.IStackViewport | Types.IVolumeViewport): void;
19
19
  }
20
20
  export default SegmentSelectTool;
@@ -2,7 +2,7 @@ import { getEnabledElement } from '@cornerstonejs/core';
2
2
  import { BaseTool } from '../base';
3
3
  import { triggerSegmentationModified } from '../../stateManagement/segmentation/triggerSegmentationEvents';
4
4
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
5
- import { getActiveSegmentationRepresentation } from '../../stateManagement/segmentation/activeSegmentation';
5
+ import { getActiveSegmentation } from '../../stateManagement/segmentation/activeSegmentation';
6
6
  import RepresentationTypes from '../../enums/SegmentationRepresentations';
7
7
  import { setActiveSegmentIndex } from '../../stateManagement/segmentation/segmentIndex';
8
8
  import { getHoveredContourSegmentationAnnotation, getSegmentIndexAtLabelmapBorder, getSegmentIndexAtWorldPoint, } from '../../utilities/segmentation';
@@ -54,27 +54,18 @@ class SegmentSelectTool extends BaseTool {
54
54
  return;
55
55
  }
56
56
  const { viewport } = enabledElement;
57
- const activeSegmentationReps = getActiveSegmentationRepresentation(viewport.id);
58
- if (!activeSegmentationReps) {
57
+ const activeSegmentation = getActiveSegmentation(viewport.id);
58
+ if (!activeSegmentation) {
59
59
  return;
60
60
  }
61
- const supportedTypes = [
62
- RepresentationTypes.Labelmap,
63
- RepresentationTypes.Contour,
64
- ];
65
- if (supportedTypes.includes(activeSegmentationReps.type)) {
66
- this._setActiveSegmentForType(activeSegmentationReps, worldPoint, viewport);
67
- }
68
- else {
69
- console.warn('SegmentSelectTool does not support the current segmentation type.');
70
- }
61
+ this._setActiveSegmentForType(activeSegmentation, worldPoint, viewport);
71
62
  }
72
- _setActiveSegmentForType(activeSegmentationReps, worldPoint, viewport) {
63
+ _setActiveSegmentForType(activeSegmentation, worldPoint, viewport) {
73
64
  const imageDataInfo = viewport.getImageData();
74
65
  if (!imageDataInfo) {
75
66
  return;
76
67
  }
77
- const { segmentationId, type } = activeSegmentationReps;
68
+ const { segmentationId, representationData } = activeSegmentation;
78
69
  let hoveredSegmentIndex;
79
70
  if (this.configuration.mode === SegmentSelectTool.SelectMode.Inside) {
80
71
  hoveredSegmentIndex = getSegmentIndexAtWorldPoint(segmentationId, worldPoint, {
@@ -82,17 +73,17 @@ class SegmentSelectTool extends BaseTool {
82
73
  });
83
74
  }
84
75
  else {
85
- switch (type) {
86
- case SegmentationRepresentations.Labelmap:
87
- hoveredSegmentIndex = getSegmentIndexAtLabelmapBorder(segmentationId, worldPoint, {
88
- viewport,
89
- searchRadius: this.configuration.searchRadius,
90
- });
91
- break;
92
- case SegmentationRepresentations.Contour:
93
- hoveredSegmentIndex =
94
- getHoveredContourSegmentationAnnotation(segmentationId);
95
- break;
76
+ if (representationData.Labelmap) {
77
+ hoveredSegmentIndex = getSegmentIndexAtLabelmapBorder(segmentationId, worldPoint, {
78
+ viewport,
79
+ searchRadius: this.configuration.searchRadius,
80
+ });
81
+ }
82
+ else if (representationData.Contour) {
83
+ hoveredSegmentIndex =
84
+ getHoveredContourSegmentationAnnotation(segmentationId);
85
+ }
86
+ else if (representationData.Surface) {
96
87
  }
97
88
  }
98
89
  if (!hoveredSegmentIndex || hoveredSegmentIndex === 0) {
@@ -7,7 +7,6 @@ declare class SphereScissorsTool extends BaseTool {
7
7
  annotation: Annotation;
8
8
  segmentIndex: number;
9
9
  segmentsLocked: number[];
10
- segmentationRepresentationUID: string;
11
10
  segmentationId: string;
12
11
  volumeId: string;
13
12
  referencedVolumeId: string;