@cornerstonejs/tools 2.0.0-beta.21 → 2.0.0-beta.23

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 (258) hide show
  1. package/dist/esm/cursors/elementCursor.d.ts +1 -1
  2. package/dist/esm/cursors/elementCursor.js +1 -1
  3. package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
  4. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +2 -2
  5. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyUp.js +2 -2
  6. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +1 -1
  7. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownActivate.js +1 -1
  8. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +1 -1
  9. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDrag.js +1 -1
  10. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseMove.js +1 -1
  11. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseWheel.js +1 -1
  12. package/dist/esm/eventDispatchers/shared/customCallbackHandler.js +3 -2
  13. package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +2 -2
  14. package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js +2 -2
  15. package/dist/esm/eventDispatchers/shared/getActiveToolForTouchEvent.js +3 -3
  16. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +2 -2
  17. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +2 -2
  18. package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.js +2 -2
  19. package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.js +2 -2
  20. package/dist/esm/eventDispatchers/touchEventHandlers/touchDrag.js +1 -1
  21. package/dist/esm/eventDispatchers/touchEventHandlers/touchStart.js +1 -1
  22. package/dist/esm/eventDispatchers/touchEventHandlers/touchStartActivate.js +1 -1
  23. package/dist/esm/eventListeners/annotations/annotationSelectionListener.js +1 -1
  24. package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +21 -20
  25. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +8 -6
  26. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +1 -1
  27. package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +1 -1
  28. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
  29. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
  30. package/dist/esm/index.d.ts +4 -3
  31. package/dist/esm/index.js +4 -3
  32. package/dist/esm/init.js +2 -2
  33. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +0 -2
  34. package/dist/esm/stateManagement/annotation/annotationSelection.js +1 -1
  35. package/dist/esm/stateManagement/annotation/annotationState.d.ts +2 -2
  36. package/dist/esm/stateManagement/annotation/annotationState.js +4 -6
  37. package/dist/esm/stateManagement/annotation/annotationVisibility.js +1 -1
  38. package/dist/esm/stateManagement/annotation/getAnnotation.d.ts +2 -0
  39. package/dist/esm/stateManagement/annotation/getAnnotation.js +6 -0
  40. package/dist/esm/stateManagement/index.d.ts +2 -2
  41. package/dist/esm/stateManagement/index.js +2 -1
  42. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.d.ts +3 -1
  43. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +13 -6
  44. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +17 -1
  45. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +46 -4
  46. package/dist/esm/stateManagement/segmentation/activeSegmentation.js +6 -4
  47. package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -0
  48. package/dist/esm/stateManagement/segmentation/addColorLUT.js +5 -0
  49. package/dist/esm/stateManagement/segmentation/addRepresentationData.js +1 -1
  50. package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +2 -0
  51. package/dist/esm/stateManagement/segmentation/addSegmentation.js +11 -0
  52. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js +29 -8
  53. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +2 -0
  54. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +10 -0
  55. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -6
  56. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +14 -9
  57. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +8 -5
  58. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +0 -8
  59. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +3 -33
  60. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationDataModified.d.ts +1 -0
  61. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationDataModified.js +11 -0
  62. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.d.ts +1 -0
  63. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.js +18 -0
  64. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRemoved.d.ts +1 -0
  65. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRemoved.js +8 -0
  66. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +1 -0
  67. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +8 -0
  68. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +1 -0
  69. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +8 -0
  70. package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.d.ts +1 -0
  71. package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.js +7 -0
  72. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +2 -0
  73. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +5 -0
  74. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +2 -0
  75. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +6 -0
  76. package/dist/esm/stateManagement/segmentation/getColorLUT.d.ts +2 -0
  77. package/dist/esm/stateManagement/segmentation/getColorLUT.js +5 -0
  78. package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -0
  79. package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.js +5 -0
  80. package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +2 -0
  81. package/dist/esm/stateManagement/segmentation/getGlobalConfig.js +5 -0
  82. package/dist/esm/stateManagement/segmentation/getNextColorLUTIndex.d.ts +1 -0
  83. package/dist/esm/stateManagement/segmentation/getNextColorLUTIndex.js +5 -0
  84. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +2 -0
  85. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +5 -0
  86. package/dist/esm/stateManagement/segmentation/getSegmentation.d.ts +2 -0
  87. package/dist/esm/stateManagement/segmentation/getSegmentation.js +5 -0
  88. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +2 -0
  89. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +5 -0
  90. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +2 -0
  91. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +5 -0
  92. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +7 -0
  93. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +6 -0
  94. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +1 -0
  95. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +5 -0
  96. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +2 -0
  97. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +12 -0
  98. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +2 -0
  99. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +5 -0
  100. package/dist/esm/stateManagement/segmentation/getSegmentations.d.ts +2 -0
  101. package/dist/esm/stateManagement/segmentation/getSegmentations.js +6 -0
  102. package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.d.ts +1 -0
  103. package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +10 -0
  104. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +1 -1
  105. package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.d.ts +8 -0
  106. package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +31 -0
  107. package/dist/esm/stateManagement/segmentation/index.d.ts +1 -1
  108. package/dist/esm/stateManagement/segmentation/index.js +1 -1
  109. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +3 -2
  110. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/createAndAddContourSegmentationsFromClippedSurfaces.js +1 -1
  111. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +1 -1
  112. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +3 -3
  113. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +2 -3
  114. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +2 -1
  115. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +2 -2
  116. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +2 -3
  117. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -2
  118. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +1 -1
  119. package/dist/esm/stateManagement/segmentation/removeColorLUT.d.ts +1 -0
  120. package/dist/esm/stateManagement/segmentation/removeColorLUT.js +5 -0
  121. package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +1 -0
  122. package/dist/esm/stateManagement/segmentation/removeRepresentation.js +9 -0
  123. package/dist/esm/stateManagement/segmentation/removeSegmentation.d.ts +1 -0
  124. package/dist/esm/stateManagement/segmentation/removeSegmentation.js +7 -0
  125. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +2 -2
  126. package/dist/esm/stateManagement/segmentation/segmentIndex.d.ts +2 -2
  127. package/dist/esm/stateManagement/segmentation/segmentIndex.js +5 -9
  128. package/dist/esm/stateManagement/segmentation/segmentLocking.js +1 -1
  129. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +29 -38
  130. package/dist/esm/stateManagement/segmentation/segmentationState.js +29 -157
  131. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +1 -0
  132. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +9 -0
  133. package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +2 -0
  134. package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +9 -0
  135. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +2 -0
  136. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +9 -0
  137. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +2 -0
  138. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +9 -0
  139. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +1 -0
  140. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +5 -0
  141. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +5 -5
  142. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +5 -45
  143. package/dist/esm/stateManagement/segmentation/updateLabelmapSegmentationImageReferences.d.ts +1 -0
  144. package/dist/esm/stateManagement/segmentation/updateLabelmapSegmentationImageReferences.js +5 -0
  145. package/dist/esm/store/SynchronizerManager/createSynchronizer.js +1 -1
  146. package/dist/esm/store/SynchronizerManager/destroy.js +1 -1
  147. package/dist/esm/store/SynchronizerManager/destroySynchronizer.js +1 -1
  148. package/dist/esm/store/SynchronizerManager/getAllSynchronizers.js +1 -1
  149. package/dist/esm/store/SynchronizerManager/getSynchronizer.js +1 -1
  150. package/dist/esm/store/SynchronizerManager/getSynchronizersForViewport.js +1 -1
  151. package/dist/esm/store/ToolGroupManager/ToolGroup.js +7 -6
  152. package/dist/esm/store/ToolGroupManager/createToolGroup.js +1 -1
  153. package/dist/esm/store/ToolGroupManager/destroy.js +3 -3
  154. package/dist/esm/store/ToolGroupManager/destroyToolGroup.js +1 -2
  155. package/dist/esm/store/ToolGroupManager/getAllToolGroups.js +1 -1
  156. package/dist/esm/store/ToolGroupManager/getToolGroup.js +1 -1
  157. package/dist/esm/store/ToolGroupManager/getToolGroupForViewport.js +1 -1
  158. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +1 -1
  159. package/dist/esm/store/addTool.d.ts +1 -0
  160. package/dist/esm/store/addTool.js +3 -0
  161. package/dist/esm/store/index.d.ts +1 -2
  162. package/dist/esm/store/index.js +1 -2
  163. package/dist/esm/tools/AdvancedMagnifyTool.d.ts +93 -2
  164. package/dist/esm/tools/AdvancedMagnifyTool.js +506 -4
  165. package/dist/esm/tools/AnnotationEraserTool.js +2 -2
  166. package/dist/esm/tools/CrosshairsTool.js +1 -1
  167. package/dist/esm/tools/MagnifyTool.js +1 -1
  168. package/dist/esm/tools/SculptorTool.js +3 -3
  169. package/dist/esm/tools/WindowLevelRegionTool.js +1 -1
  170. package/dist/esm/tools/annotation/AngleTool.js +4 -3
  171. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +1 -1
  172. package/dist/esm/tools/annotation/BidirectionalTool.js +7 -8
  173. package/dist/esm/tools/annotation/CircleROITool.js +15 -16
  174. package/dist/esm/tools/annotation/CobbAngleTool.js +1 -1
  175. package/dist/esm/tools/annotation/DragProbeTool.js +2 -2
  176. package/dist/esm/tools/annotation/EllipticalROITool.js +12 -13
  177. package/dist/esm/tools/annotation/HeightTool.js +5 -6
  178. package/dist/esm/tools/annotation/KeyImageTool.js +1 -1
  179. package/dist/esm/tools/annotation/LengthTool.js +5 -6
  180. package/dist/esm/tools/annotation/LivewireContourTool.js +3 -2
  181. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
  182. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +4 -4
  183. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +20 -20
  184. package/dist/esm/tools/annotation/ProbeTool.js +9 -10
  185. package/dist/esm/tools/annotation/RectangleROITool.js +12 -13
  186. package/dist/esm/tools/annotation/SplineROITool.js +12 -9
  187. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +6 -7
  188. package/dist/esm/tools/annotation/VideoRedactionTool.js +1 -1
  189. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +1 -1
  190. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +1 -1
  191. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -2
  192. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
  193. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +1 -1
  194. package/dist/esm/tools/base/ContourBaseTool.js +2 -2
  195. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +24 -15
  196. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +9 -8
  197. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +3 -3
  198. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +2 -1
  199. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -8
  200. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +19 -25
  201. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +10 -7
  202. package/dist/esm/tools/index.d.ts +1 -3
  203. package/dist/esm/tools/index.js +1 -3
  204. package/dist/esm/tools/segmentation/BrushTool.js +10 -8
  205. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +8 -9
  206. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +11 -13
  207. package/dist/esm/tools/segmentation/SegmentSelectTool.js +1 -1
  208. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +4 -4
  209. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +2 -2
  210. package/dist/esm/utilities/annotationHydration.js +1 -1
  211. package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +1 -1
  212. package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +2 -2
  213. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +1 -1
  214. package/dist/esm/utilities/contours/getContourHolesDataWorld.js +1 -1
  215. package/dist/esm/utilities/contours/index.d.ts +1 -2
  216. package/dist/esm/utilities/contours/index.js +1 -2
  217. package/dist/esm/utilities/contours/updateContourPolyline.js +1 -1
  218. package/dist/esm/utilities/getCalibratedUnits.d.ts +2 -2
  219. package/dist/esm/utilities/getCalibratedUnits.js +13 -13
  220. package/dist/esm/utilities/getToolsWithModesForElement.js +2 -2
  221. package/dist/esm/utilities/index.d.ts +1 -2
  222. package/dist/esm/utilities/index.js +1 -2
  223. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +3 -3
  224. package/dist/esm/utilities/math/polyline/isClosed.js +2 -2
  225. package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.js +3 -3
  226. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +1 -1
  227. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +1 -1
  228. package/dist/esm/utilities/segmentation/getBrushToolInstances.d.ts +1 -0
  229. package/dist/esm/utilities/segmentation/getBrushToolInstances.js +17 -0
  230. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.d.ts +0 -2
  231. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +3 -22
  232. package/dist/esm/utilities/segmentation/index.d.ts +2 -2
  233. package/dist/esm/utilities/segmentation/index.js +2 -2
  234. package/dist/esm/utilities/segmentation/invalidateBrushCursor.js +1 -4
  235. package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.js +2 -1
  236. package/dist/esm/utilities/segmentation/segmentContourAction.js +5 -5
  237. package/dist/esm/utilities/segmentation/utilities.d.ts +4 -1
  238. package/dist/esm/utilities/segmentation/utilities.js +23 -17
  239. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +2 -2
  240. package/dist/umd/985.index.js.map +1 -1
  241. package/dist/umd/index.js +2 -1
  242. package/dist/umd/index.js.LICENSE.txt +6 -0
  243. package/dist/umd/index.js.map +1 -1
  244. package/package.json +5 -4
  245. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +0 -17
  246. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +0 -50
  247. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.d.ts +0 -2
  248. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.js +0 -11
  249. package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +0 -76
  250. package/dist/esm/tools/AdvancedMagnifyViewport.js +0 -351
  251. package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +0 -38
  252. package/dist/esm/tools/AdvancedMagnifyViewportManager.js +0 -161
  253. package/dist/esm/tools/StackScrollToolMouseWheelTool.d.ts +0 -16
  254. package/dist/esm/tools/StackScrollToolMouseWheelTool.js +0 -33
  255. package/dist/esm/utilities/contours/interpolation/index.d.ts +0 -2
  256. package/dist/esm/utilities/contours/interpolation/index.js +0 -2
  257. package/dist/esm/utilities/segmentation/triggerSegmentationRender.d.ts +0 -3
  258. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js +0 -8
@@ -1,14 +1,13 @@
1
1
  import { AnnotationTool } from '../base';
2
2
  import { getEnabledElement, VolumeViewport, utilities as csUtils, } from '@cornerstonejs/core';
3
3
  import { getCalibratedLengthUnitsAndScale } from '../../utilities/getCalibratedUnits';
4
- import { roundNumber } from '../../utilities';
5
4
  import throttle from '../../utilities/throttle';
6
5
  import { addAnnotation, getAnnotations, removeAnnotation, } from '../../stateManagement';
7
6
  import { isAnnotationLocked } from '../../stateManagement/annotation/annotationLocking';
8
7
  import { isAnnotationVisible } from '../../stateManagement/annotation/annotationVisibility';
9
8
  import { triggerAnnotationCompleted, triggerAnnotationModified, } from '../../stateManagement/annotation/helpers/state';
10
9
  import { drawHandles as drawHandlesSvg, drawLinkedTextBox as drawLinkedTextBoxSvg, drawRectByCoordinates as drawRectSvg, } from '../../drawingSvg';
11
- import { state } from '../../store';
10
+ import { state } from '../../store/state';
12
11
  import { Events } from '../../enums';
13
12
  import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
14
13
  import * as rectangle from '../../utilities/math/rectangle';
@@ -347,14 +346,14 @@ class RectangleROITool extends AnnotationTool {
347
346
  });
348
347
  const { viewPlaneNormal, viewUp } = viewport.getCamera();
349
348
  if (!data.cachedStats[targetId] ||
350
- data.cachedStats[targetId].areaUnits == null) {
349
+ data.cachedStats[targetId].areaUnit == null) {
351
350
  data.cachedStats[targetId] = {
352
351
  Modality: null,
353
352
  area: null,
354
353
  max: null,
355
354
  mean: null,
356
355
  stdDev: null,
357
- areaUnits: null,
356
+ areaUnit: null,
358
357
  };
359
358
  this._calculateCachedStats(annotation, viewPlaneNormal, viewUp, renderingEngine, enabledElement);
360
359
  }
@@ -488,13 +487,13 @@ class RectangleROITool extends AnnotationTool {
488
487
  ];
489
488
  const { worldWidth, worldHeight } = getWorldWidthAndHeightFromCorners(viewPlaneNormal, viewUp, worldPos1, worldPos2);
490
489
  const handles = [pos1Index, pos2Index];
491
- const { scale, areaUnits } = getCalibratedLengthUnitsAndScale(image, handles);
490
+ const { scale, areaUnit } = getCalibratedLengthUnitsAndScale(image, handles);
492
491
  const area = Math.abs(worldWidth * worldHeight) / (scale * scale);
493
492
  const pixelUnitsOptions = {
494
493
  isPreScaled: isViewportPreScaled(viewport, targetId),
495
494
  isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
496
495
  };
497
- const pixelValueUnits = getPixelValueUnits(metadata.Modality, annotation.metadata.referencedImageId, pixelUnitsOptions);
496
+ const modalityUnit = getPixelValueUnits(metadata.Modality, annotation.metadata.referencedImageId, pixelUnitsOptions);
498
497
  const pointsInShape = voxelManager.forEach(this.configuration.statsCalculator.statsCallback, {
499
498
  boundsIJK,
500
499
  imageData,
@@ -509,8 +508,8 @@ class RectangleROITool extends AnnotationTool {
509
508
  max: stats.max?.value,
510
509
  statsArray: stats.array,
511
510
  pointsInShape: pointsInShape,
512
- areaUnits,
513
- pixelValueUnits,
511
+ areaUnit,
512
+ modalityUnit,
514
513
  };
515
514
  }
516
515
  else {
@@ -533,15 +532,15 @@ class RectangleROITool extends AnnotationTool {
533
532
  }
534
533
  function defaultGetTextLines(data, targetId) {
535
534
  const cachedVolumeStats = data.cachedStats[targetId];
536
- const { area, mean, max, stdDev, areaUnits, pixelValueUnits } = cachedVolumeStats;
535
+ const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
537
536
  if (mean === undefined) {
538
537
  return;
539
538
  }
540
539
  const textLines = [];
541
- textLines.push(`Area: ${roundNumber(area)} ${areaUnits}`);
542
- textLines.push(`Mean: ${roundNumber(mean)} ${pixelValueUnits}`);
543
- textLines.push(`Max: ${roundNumber(max)} ${pixelValueUnits}`);
544
- textLines.push(`Std Dev: ${roundNumber(stdDev)} ${pixelValueUnits}`);
540
+ textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnit}`);
541
+ textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${modalityUnit}`);
542
+ textLines.push(`Max: ${csUtils.roundNumber(max)} ${modalityUnit}`);
543
+ textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${modalityUnit}`);
545
544
  return textLines;
546
545
  }
547
546
  RectangleROITool.toolName = 'RectangleROI';
@@ -2,19 +2,22 @@ import { getEnabledElement, eventTarget, triggerEvent, utilities, } from '@corne
2
2
  import { vec3 } from 'gl-matrix';
3
3
  import { getChildAnnotations, removeAnnotation, } from '../../stateManagement/annotation/annotationState';
4
4
  import { drawHandles as drawHandlesSvg, drawPolyline as drawPolylineSvg, drawLinkedTextBox as drawLinkedTextBoxSvg, } from '../../drawingSvg';
5
- import { state } from '../../store';
5
+ import { state } from '../../store/state';
6
6
  import { Events, MouseBindings, KeyboardBindings, ChangeTypes, } from '../../enums';
7
7
  import { resetElementCursor } from '../../cursors/elementCursor';
8
- import { math, throttle, roundNumber, triggerAnnotationRenderForViewportIds, getCalibratedLengthUnitsAndScale, } from '../../utilities';
9
- import getMouseModifierKey from '../../eventDispatchers/shared/getMouseModifier';
8
+ import * as math from '../../utilities/math';
9
+ import throttle from '../../utilities/throttle';
10
10
  import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
11
11
  import { getTextBoxCoordsCanvas } from '../../utilities/drawing';
12
+ import { getCalibratedLengthUnitsAndScale } from '../../utilities/getCalibratedUnits';
13
+ import getMouseModifierKey from '../../eventDispatchers/shared/getMouseModifier';
12
14
  import { ContourWindingDirection } from '../../types/ContourAnnotation';
13
15
  import { CardinalSpline } from './splines/CardinalSpline';
14
16
  import { LinearSpline } from './splines/LinearSpline';
15
17
  import { CatmullRomSpline } from './splines/CatmullRomSpline';
16
18
  import { BSpline } from './splines/BSpline';
17
19
  import ContourSegmentationBaseTool from '../base/ContourSegmentationBaseTool';
20
+ import { triggerAnnotationRenderForViewportIds } from '../../utilities';
18
21
  const SPLINE_MIN_POINTS = 3;
19
22
  const SPLINE_CLICK_CLOSE_CURVE_DIST = 10;
20
23
  const DEFAULT_SPLINE_CONFIG = {
@@ -449,7 +452,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
449
452
  const deltaInX = vec3.distance(originalWorldPoint, deltaXPoint);
450
453
  const deltaInY = vec3.distance(originalWorldPoint, deltaYPoint);
451
454
  const { imageData } = image;
452
- const { scale, areaUnits } = getCalibratedLengthUnitsAndScale(image, () => {
455
+ const { scale, areaUnit } = getCalibratedLengthUnitsAndScale(image, () => {
453
456
  const { maxX: canvasMaxX, maxY: canvasMaxY, minX: canvasMinX, minY: canvasMinY, } = math.polyline.getAABB(canvasCoordinates);
454
457
  const topLeftBBWorld = viewport.canvasToWorld([
455
458
  canvasMinX,
@@ -468,7 +471,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
468
471
  cachedStats[targetId] = {
469
472
  Modality: metadata.Modality,
470
473
  area,
471
- areaUnits,
474
+ areaUnit,
472
475
  };
473
476
  }
474
477
  this.triggerAnnotationModified(annotation, enabledElement, ChangeTypes.StatsUpdated);
@@ -557,11 +560,11 @@ class SplineROITool extends ContourSegmentationBaseTool {
557
560
  });
558
561
  super.renderAnnotationInstance(renderContext);
559
562
  if (!data.cachedStats[targetId] ||
560
- data.cachedStats[targetId].areaUnits == null) {
563
+ data.cachedStats[targetId].areaUnit == null) {
561
564
  data.cachedStats[targetId] = {
562
565
  Modality: null,
563
566
  area: null,
564
- areaUnits: null,
567
+ areaUnit: null,
565
568
  };
566
569
  this._calculateCachedStats(annotation, element);
567
570
  }
@@ -712,12 +715,12 @@ class SplineROITool extends ContourSegmentationBaseTool {
712
715
  }
713
716
  function defaultGetTextLines(data, targetId) {
714
717
  const cachedVolumeStats = data.cachedStats[targetId];
715
- const { area, isEmptyArea, areaUnits } = cachedVolumeStats;
718
+ const { area, isEmptyArea, areaUnit } = cachedVolumeStats;
716
719
  const textLines = [];
717
720
  if (area) {
718
721
  const areaLine = isEmptyArea
719
722
  ? `Area: Oblique not supported`
720
- : `Area: ${roundNumber(area)} ${areaUnits}`;
723
+ : `Area: ${utilities.roundNumber(area)} ${areaUnit}`;
721
724
  textLines.push(areaLine);
722
725
  }
723
726
  return textLines;
@@ -5,9 +5,8 @@ import throttle from '../../utilities/throttle';
5
5
  import { addAnnotation, getAnnotations, removeAnnotation, } from '../../stateManagement/annotation/annotationState';
6
6
  import { triggerAnnotationCompleted, triggerAnnotationModified, } from '../../stateManagement/annotation/helpers/state';
7
7
  import { drawHandle as drawHandleSvg, drawLine as drawLineSvg, drawLinkedTextBox as drawLinkedTextBoxSvg, } from '../../drawingSvg';
8
- import { state } from '../../store';
8
+ import { state } from '../../store/state';
9
9
  import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
10
- import { roundNumber } from '../../utilities';
11
10
  import { distanceToPoint } from '../../utilities/math/point';
12
11
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
13
12
  import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
@@ -439,23 +438,23 @@ function defaultGetTextLines(data, targetId, configuration) {
439
438
  const cachedStats = data.cachedStats[targetId];
440
439
  const { xValues, yValues, units, isUnitless, isHorizontal } = cachedStats;
441
440
  if (isUnitless) {
442
- return [`${roundNumber(xValues[0])} px`];
441
+ return [`${csUtils.roundNumber(xValues[0])} px`];
443
442
  }
444
443
  if (configuration.displayBothAxesDistances) {
445
444
  const dist1 = Math.abs(xValues[1] - xValues[0]);
446
445
  const dist2 = Math.abs(yValues[1] - yValues[0]);
447
446
  return [
448
- `${roundNumber(dist1)} ${units[0]}`,
449
- `${roundNumber(dist2)} ${units[1]}`,
447
+ `${csUtils.roundNumber(dist1)} ${units[0]}`,
448
+ `${csUtils.roundNumber(dist2)} ${units[1]}`,
450
449
  ];
451
450
  }
452
451
  if (isHorizontal) {
453
452
  const dist = Math.abs(xValues[1] - xValues[0]);
454
- return [`${roundNumber(dist)} ${units[0]}`];
453
+ return [`${csUtils.roundNumber(dist)} ${units[0]}`];
455
454
  }
456
455
  else {
457
456
  const dist = Math.abs(yValues[1] - yValues[0]);
458
- return [`${roundNumber(dist)} ${units[1]}`];
457
+ return [`${csUtils.roundNumber(dist)} ${units[1]}`];
459
458
  }
460
459
  }
461
460
  UltrasoundDirectionalTool.toolName = 'UltrasoundDirectionalTool';
@@ -4,7 +4,7 @@ import { AnnotationTool } from '../base';
4
4
  import throttle from '../../utilities/throttle';
5
5
  import { addAnnotation, getAnnotations, removeAnnotation, } from '../../stateManagement';
6
6
  import { drawHandles as drawHandlesSvg, drawRedactionRect as drawRedactionRectSvg, } from '../../drawingSvg';
7
- import { state } from '../../store';
7
+ import { state } from '../../store/state';
8
8
  import { Events } from '../../enums';
9
9
  import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
10
10
  import * as rectangle from '../../utilities/math/rectangle';
@@ -1,6 +1,6 @@
1
1
  import { vec3, vec2 } from 'gl-matrix';
2
2
  import { getEnabledElement } from '@cornerstonejs/core';
3
- import { state } from '../../../store';
3
+ import { state } from '../../../store/state';
4
4
  import { Events } from '../../../enums';
5
5
  import { resetElementCursor, hideElementCursor, } from '../../../cursors/elementCursor';
6
6
  import { polyline } from '../../../utilities/math';
@@ -1,7 +1,7 @@
1
1
  import { getEnabledElement, utilities } from '@cornerstonejs/core';
2
2
  import { resetElementCursor, hideElementCursor, } from '../../../cursors/elementCursor';
3
3
  import { Events } from '../../../enums';
4
- import { state } from '../../../store';
4
+ import { state } from '../../../store/state';
5
5
  import { vec3 } from 'gl-matrix';
6
6
  import { shouldSmooth, getInterpolatedPoints, } from '../../../utilities/planarFreehandROITool/smoothPoints';
7
7
  import getMouseModifierKey from '../../../eventDispatchers/shared/getMouseModifier';
@@ -1,12 +1,12 @@
1
1
  import { vec3, vec2 } from 'gl-matrix';
2
2
  import { getEnabledElement } from '@cornerstonejs/core';
3
- import { state } from '../../../store';
3
+ import { state } from '../../../store/state';
4
4
  import { Events } from '../../../enums';
5
5
  import { resetElementCursor, hideElementCursor, } from '../../../cursors/elementCursor';
6
6
  import { polyline } from '../../../utilities/math';
7
7
  import { shouldSmooth, getInterpolatedPoints, } from '../../../utilities/planarFreehandROITool/smoothPoints';
8
8
  import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
9
- import { updateContourPolyline } from '../../../utilities/contours';
9
+ import updateContourPolyline from '../../../utilities/contours/updateContourPolyline';
10
10
  import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
11
11
  import { triggerAnnotationModified } from '../../../stateManagement/annotation/helpers/state';
12
12
  const { addCanvasPointsToArray, getSubPixelSpacingAndXYDirections } = polyline;
@@ -1,5 +1,5 @@
1
1
  import { getEnabledElement } from '@cornerstonejs/core';
2
- import { state } from '../../../store';
2
+ import { state } from '../../../store/state';
3
3
  import { Events } from '../../../enums';
4
4
  import { hideElementCursor } from '../../../cursors/elementCursor';
5
5
  import { polyline } from '../../../utilities/math';
@@ -1,7 +1,7 @@
1
1
  import { drawHandles as drawHandlesSvg, drawPolyline as drawPolylineSvg, drawPath as drawPathSvg, } from '../../../drawingSvg';
2
2
  import { polyline } from '../../../utilities/math';
3
3
  import { findOpenUShapedContourVectorToPeakOnRender } from './findOpenUShapedContourVectorToPeak';
4
- import { getContourHolesDataCanvas } from '../../../utilities/contours';
4
+ import getContourHolesDataCanvas from '../../../utilities/contours/getContourHolesDataCanvas';
5
5
  const { pointsAreWithinCloseContourProximity } = polyline;
6
6
  function _getRenderingOptions(enabledElement, annotation) {
7
7
  const styleSpecifier = {
@@ -2,8 +2,8 @@ import { getEnabledElement } from '@cornerstonejs/core';
2
2
  import { addAnnotation, getAnnotations, getChildAnnotations, } from '../../stateManagement/annotation/annotationState';
3
3
  import { drawPath as drawPathSvg } from '../../drawingSvg';
4
4
  import AnnotationTool from './AnnotationTool';
5
- import { updateContourPolyline } from '../../utilities/contours/';
6
- import { getContourHolesDataCanvas } from '../../utilities/contours';
5
+ import updateContourPolyline from '../../utilities/contours/updateContourPolyline';
6
+ import getContourHolesDataCanvas from '../../utilities/contours/getContourHolesDataCanvas';
7
7
  class ContourBaseTool extends AnnotationTool {
8
8
  constructor(toolProps, defaultToolProps) {
9
9
  super(toolProps, defaultToolProps);
@@ -1,13 +1,22 @@
1
1
  import { getEnabledElement, utilities } from '@cornerstonejs/core';
2
- import { config as segmentationConfig, state as segmentationState, segmentLocking, segmentIndex as segmentIndexController, activeSegmentation, } from '../../stateManagement/segmentation';
2
+ import { getGlobalConfig, getSegmentationRepresentationConfig, getSegmentIndexConfig, } from '../../stateManagement/segmentation/config/segmentationConfig';
3
+ import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
3
4
  import { SegmentationRepresentations } from '../../enums';
4
5
  import ContourBaseTool from './ContourBaseTool';
5
6
  import { triggerSegmentationDataModified } from '../../stateManagement/segmentation/triggerSegmentationEvents';
6
- import { InterpolationManager } from '../../utilities/contours/interpolation';
7
+ import InterpolationManager from '../../utilities/segmentation/InterpolationManager/InterpolationManager';
7
8
  import { addContourSegmentationAnnotation, removeContourSegmentationAnnotation, } from '../../utilities/contourSegmentation';
8
- import { triggerAnnotationRenderForToolGroupIds } from '../../utilities';
9
- import { getActiveSegmentationRepresentation, getSegmentationRepresentationsForSegmentation, getSegmentationRepresentations, getViewportIdsWithSegmentation, } from '../../stateManagement/segmentation/segmentationState';
9
+ import { triggerAnnotationRenderForToolGroupIds } from '../../utilities/triggerAnnotationRenderForToolGroupIds';
10
10
  import { getToolGroupForViewport } from '../../store/ToolGroupManager';
11
+ import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
12
+ import { getSegmentationRepresentations } from '../../stateManagement/segmentation/getSegmentationRepresentations';
13
+ import { getSegmentationRepresentationsForSegmentation } from '../../stateManagement/segmentation/getSegmentationRepresentationsForSegmentation';
14
+ import { getActiveSegmentationRepresentation } from '../../stateManagement/segmentation/getActiveSegmentationRepresentation';
15
+ import { getSegmentationRepresentationVisibility } from '../../stateManagement/segmentation/getSegmentationRepresentationVisibility';
16
+ import { getViewportIdsWithSegmentation } from '../../stateManagement/segmentation/getViewportIdsWithSegmentation';
17
+ import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
18
+ import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
19
+ import { getSegmentIndexVisibility } from '../../stateManagement/segmentation/config/segmentationVisibility';
11
20
  class ContourSegmentationBaseTool extends ContourBaseTool {
12
21
  constructor(toolProps, defaultToolProps) {
13
22
  super(toolProps, defaultToolProps);
@@ -30,7 +39,7 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
30
39
  if (!this.isContourSegmentationTool()) {
31
40
  return contourAnnotation;
32
41
  }
33
- const activeSeg = activeSegmentation.getActiveSegmentationRepresentation(viewport.id);
42
+ const activeSeg = getActiveSegmentationRepresentation(viewport.id);
34
43
  if (!activeSeg) {
35
44
  throw new Error('No active segmentation detected, create one before using scissors tool');
36
45
  }
@@ -39,7 +48,7 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
39
48
  throw new Error(`A contour segmentation must be active`);
40
49
  }
41
50
  const { segmentationId } = activeSeg;
42
- const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
51
+ const segmentIndex = getActiveSegmentIndex(segmentationId);
43
52
  return utilities.deepMerge(contourAnnotation, {
44
53
  data: {
45
54
  segmentation: {
@@ -90,7 +99,7 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
90
99
  _getContourSegmentationStyle(context) {
91
100
  const annotation = context.annotation;
92
101
  const { segmentationId, segmentIndex } = annotation.data.segmentation;
93
- const segmentation = segmentationState.getSegmentation(segmentationId);
102
+ const segmentation = getSegmentation(segmentationId);
94
103
  const segmentationRepresentations = getSegmentationRepresentationsForSegmentation(segmentationId);
95
104
  if (!segmentationRepresentations?.length) {
96
105
  return {};
@@ -107,19 +116,19 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
107
116
  }
108
117
  const { segmentationRepresentationUID } = segmentationRepresentation;
109
118
  const { autoGenerated } = annotation;
110
- const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
119
+ const segmentsLocked = getLockedSegmentIndices(segmentationId);
111
120
  const annotationLocked = segmentsLocked.includes(segmentIndex);
112
- const segmentColor = segmentationConfig.color.getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
121
+ const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
113
122
  const viewportId = context.styleSpecifier.viewportId;
114
- const segmentationVisible = segmentationConfig.visibility.getSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID);
115
- const globalConfig = segmentationConfig.getGlobalConfig();
116
- const getSegmentationRepresentationConfig = segmentationConfig.getSegmentationRepresentationConfig(segmentationRepresentationUID);
117
- const segmentConfig = segmentationConfig.getSegmentIndexConfig(segmentationRepresentationUID, segmentIndex);
118
- const segmentVisible = segmentationConfig.visibility.getSegmentIndexVisibility(viewportId, segmentationRepresentationUID, segmentIndex);
123
+ const segmentationVisible = getSegmentationRepresentationVisibility(viewportId, segmentationRepresentationUID);
124
+ const globalConfig = getGlobalConfig();
125
+ const segmentationRepresentationConfig = getSegmentationRepresentationConfig(segmentationRepresentationUID);
126
+ const segmentConfig = getSegmentIndexConfig(segmentationRepresentationUID, segmentIndex);
127
+ const segmentVisible = getSegmentIndexVisibility(viewportId, segmentationRepresentationUID, segmentIndex);
119
128
  const activeSegRep = getActiveSegmentationRepresentation(viewportId);
120
129
  const isActive = activeSegRep.segmentationRepresentationUID ===
121
130
  segmentationRepresentationUID;
122
- const mergedConfig = Object.assign({}, globalConfig?.representations?.CONTOUR ?? {}, getSegmentationRepresentationConfig?.CONTOUR ?? {}, segmentConfig?.CONTOUR ?? {});
131
+ const mergedConfig = Object.assign({}, globalConfig?.representations?.CONTOUR ?? {}, segmentationRepresentationConfig?.CONTOUR ?? {}, segmentConfig?.CONTOUR ?? {});
123
132
  let lineWidth = 1;
124
133
  let lineDash = undefined;
125
134
  let lineOpacity = 1;
@@ -1,10 +1,11 @@
1
- import { getEnabledElementByIds, getEnabledElementByViewportId, } from '@cornerstonejs/core';
1
+ import { getEnabledElementByViewportId } from '@cornerstonejs/core';
2
2
  import Representations from '../../../enums/SegmentationRepresentations';
3
- import * as SegmentationState from '../../../stateManagement/segmentation/segmentationState';
4
- import removeContourFromElement from './removeContourFromElement';
5
3
  import { deleteConfigCache } from './contourHandler/contourConfigCache';
6
- import { polySeg } from '../../../stateManagement/segmentation';
7
4
  import { handleContourSegmentation } from './contourHandler/handleContourSegmentation';
5
+ import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
6
+ import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
7
+ import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
8
+ import { computeAndAddContourRepresentation } from '../../../stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation';
8
9
  let polySegConversionInProgress = false;
9
10
  function removeRepresentation(viewportId, segmentationRepresentationUID, renderImmediate = false) {
10
11
  const enabledElement = getEnabledElementByViewportId(viewportId);
@@ -12,7 +13,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
12
13
  return;
13
14
  }
14
15
  const { viewport } = enabledElement;
15
- SegmentationState.removeRepresentation(segmentationRepresentationUID);
16
+ _removeRepresentation(segmentationRepresentationUID);
16
17
  deleteConfigCache(segmentationRepresentationUID);
17
18
  if (!renderImmediate) {
18
19
  return;
@@ -21,16 +22,16 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
21
22
  }
22
23
  async function render(viewport, contourRepresentation) {
23
24
  const { segmentationId } = contourRepresentation;
24
- const segmentation = SegmentationState.getSegmentation(segmentationId);
25
+ const segmentation = getSegmentation(segmentationId);
25
26
  if (!segmentation) {
26
27
  return;
27
28
  }
28
29
  let contourData = segmentation.representationData[Representations.Contour];
29
30
  if (!contourData &&
30
- polySeg.canComputeRequestedRepresentation(contourRepresentation.segmentationRepresentationUID) &&
31
+ canComputeRequestedRepresentation(contourRepresentation.segmentationRepresentationUID) &&
31
32
  !polySegConversionInProgress) {
32
33
  polySegConversionInProgress = true;
33
- contourData = await polySeg.computeAndAddContourRepresentation(segmentationId, {
34
+ contourData = await computeAndAddContourRepresentation(segmentationId, {
34
35
  segmentationRepresentationUID: contourRepresentation.segmentationRepresentationUID,
35
36
  viewport,
36
37
  });
@@ -1,12 +1,12 @@
1
- import { addAnnotation } from '../../../../stateManagement';
1
+ import { addAnnotation } from '../../../../stateManagement/annotation/annotationState';
2
2
  import { cache, utilities } from '@cornerstonejs/core';
3
3
  import { getClosestImageIdForStackViewport } from '../../../../utilities/annotationHydration';
4
4
  import { getConfigCache, setConfigCache } from './contourConfigCache';
5
5
  import { addContourSegmentationAnnotation } from '../../../../utilities/contourSegmentation';
6
6
  import { validateGeometry } from './utils';
7
- import { getGlobalConfig, getPerSegmentConfig, } from '../../../../stateManagement/segmentation/segmentationState';
7
+ import { getGlobalConfig } from '../../../../stateManagement/segmentation/getGlobalConfig';
8
8
  import { getHiddenSegmentIndices } from '../../../../stateManagement/segmentation/config/segmentationVisibility';
9
- import { getSegmentIndexConfig } from '../../../../stateManagement/segmentation/config';
9
+ import { getSegmentIndexConfig } from '../../../../stateManagement/segmentation/config/segmentationConfig';
10
10
  function handleContourSegmentation(viewport, geometryIds, annotationUIDsMap, contourRepresentation) {
11
11
  const addOrUpdateFn = annotationUIDsMap.size
12
12
  ? updateContourSets
@@ -1,6 +1,7 @@
1
1
  import { getEnabledElement, addVolumesToViewports, addImageSlicesToViewports, Enums, } from '@cornerstonejs/core';
2
2
  import { isVolumeSegmentation } from '../../segmentation/strategies/utils/stackVolumeCheck';
3
- import { getCurrentLabelmapImageIdForViewport, getSegmentationRepresentation, } from '../../../stateManagement/segmentation/segmentationState';
3
+ import { getSegmentationRepresentation } from '../../../stateManagement/segmentation/getSegmentationRepresentation';
4
+ import { getCurrentLabelmapImageIdForViewport } from '../../../stateManagement/segmentation/getCurrentLabelmapImageIdForViewport';
4
5
  async function addLabelmapToElement(element, labelMapData, segmentationRepresentationUID) {
5
6
  const enabledElement = getEnabledElement(element);
6
7
  const { renderingEngine, viewport } = enabledElement;
@@ -1,17 +1,10 @@
1
- import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
2
- import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
3
1
  import type { Types } from '@cornerstonejs/core';
4
2
  import type { LabelmapRepresentation } from '../../../types/SegmentationStateTypes';
5
- declare function getSegmentationRepresentationRenderingConfig(): {
6
- ofun: vtkPiecewiseFunction;
7
- cfun: vtkColorTransferFunction;
8
- };
9
3
  declare function removeRepresentation(viewportId: string, segmentationRepresentationUID: string, renderImmediate?: boolean): void;
10
4
  declare function render(viewport: Types.IStackViewport | Types.IVolumeViewport, representation: LabelmapRepresentation): Promise<void>;
11
5
  declare const _default: {
12
- getSegmentationRepresentationRenderingConfig: typeof getSegmentationRepresentationRenderingConfig;
13
6
  render: typeof render;
14
7
  removeRepresentation: typeof removeRepresentation;
15
8
  };
16
9
  export default _default;
17
- export { getSegmentationRepresentationRenderingConfig, render, removeRepresentation, };
10
+ export { render, removeRepresentation };
@@ -1,24 +1,19 @@
1
- import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
2
- import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
3
1
  import { cache, getEnabledElementByViewportId, StackViewport, VolumeViewport, } from '@cornerstonejs/core';
4
2
  import Representations from '../../../enums/SegmentationRepresentations';
5
- import * as SegmentationState from '../../../stateManagement/segmentation/segmentationState';
6
3
  import addLabelmapToElement from './addLabelmapToElement';
7
4
  import removeLabelmapFromElement from './removeLabelmapFromElement';
8
5
  import { isVolumeSegmentation } from '../../segmentation/strategies/utils/stackVolumeCheck';
9
- import { polySeg } from '../../../stateManagement/segmentation';
10
6
  import { getHiddenSegmentIndices } from '../../../stateManagement/segmentation/config/segmentationVisibility';
7
+ import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
8
+ import { getActiveSegmentationRepresentation } from '../../../stateManagement/segmentation/getActiveSegmentationRepresentation';
9
+ import { getColorLUT } from '../../../stateManagement/segmentation/getColorLUT';
10
+ import { getCurrentLabelmapImageIdForViewport } from '../../../stateManagement/segmentation/getCurrentLabelmapImageIdForViewport';
11
+ import { getGlobalConfig } from '../../../stateManagement/segmentation/getGlobalConfig';
12
+ import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
13
+ import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
14
+ import { computeAndAddLabelmapRepresentation } from '../../../stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation';
11
15
  const MAX_NUMBER_COLORS = 255;
12
16
  const labelMapConfigCache = new Map();
13
- function getSegmentationRepresentationRenderingConfig() {
14
- const cfun = vtkColorTransferFunction.newInstance();
15
- const ofun = vtkPiecewiseFunction.newInstance();
16
- ofun.addPoint(0, 0);
17
- return {
18
- ofun,
19
- cfun,
20
- };
21
- }
22
17
  let polySegConversionInProgress = false;
23
18
  function removeRepresentation(viewportId, segmentationRepresentationUID, renderImmediate = false) {
24
19
  const enabledElement = getEnabledElementByViewportId(viewportId);
@@ -27,7 +22,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
27
22
  }
28
23
  const { viewport } = enabledElement;
29
24
  removeLabelmapFromElement(viewport.element, segmentationRepresentationUID);
30
- SegmentationState.removeRepresentation(segmentationRepresentationUID);
25
+ _removeRepresentation(segmentationRepresentationUID);
31
26
  if (!renderImmediate) {
32
27
  return;
33
28
  }
@@ -55,7 +50,7 @@ function isSameFrameOfReference(viewport, referencedVolumeId) {
55
50
  }
56
51
  async function render(viewport, representation) {
57
52
  const { segmentationId, segmentationRepresentationUID } = representation;
58
- const segmentation = SegmentationState.getSegmentation(segmentationId);
53
+ const segmentation = getSegmentation(segmentationId);
59
54
  if (!segmentation) {
60
55
  console.warn('No segmentation found for segmentationId: ', segmentationId);
61
56
  return;
@@ -63,10 +58,10 @@ async function render(viewport, representation) {
63
58
  let labelmapData = segmentation.representationData[Representations.Labelmap];
64
59
  let actorEntry = viewport.getActor(segmentationRepresentationUID);
65
60
  if (!labelmapData &&
66
- polySeg.canComputeRequestedRepresentation(segmentationRepresentationUID) &&
61
+ canComputeRequestedRepresentation(segmentationRepresentationUID) &&
67
62
  !polySegConversionInProgress) {
68
63
  polySegConversionInProgress = true;
69
- labelmapData = await polySeg.computeAndAddLabelmapRepresentation(segmentationId, {
64
+ labelmapData = await computeAndAddLabelmapRepresentation(segmentationId, {
70
65
  segmentationRepresentationUID,
71
66
  viewport,
72
67
  });
@@ -99,7 +94,7 @@ async function render(viewport, representation) {
99
94
  if (viewport instanceof VolumeViewport) {
100
95
  return;
101
96
  }
102
- const labelmapImageId = SegmentationState.getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
97
+ const labelmapImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
103
98
  if (!labelmapImageId) {
104
99
  return;
105
100
  }
@@ -115,19 +110,19 @@ async function render(viewport, representation) {
115
110
  }
116
111
  function _setLabelmapColorAndOpacity(viewportId, actorEntry, segmentationRepresentation) {
117
112
  const { rendering, config, colorLUTIndex } = segmentationRepresentation;
118
- const activeSegRep = SegmentationState.getActiveSegmentationRepresentation(viewportId);
113
+ const activeSegRep = getActiveSegmentationRepresentation(viewportId);
119
114
  const isActiveLabelmap = activeSegRep === segmentationRepresentation;
120
115
  const { cfun, ofun } = rendering;
121
116
  const { allSegments, perSegment } = config;
122
- const globalLabelmapConfig = SegmentationState.getGlobalConfig().representations[Representations.Labelmap];
123
- const globalConfig = SegmentationState.getGlobalConfig();
117
+ const globalLabelmapConfig = getGlobalConfig().representations[Representations.Labelmap];
118
+ const globalConfig = getGlobalConfig();
124
119
  const renderInactiveRepresentations = globalConfig.renderInactiveRepresentations;
125
120
  const configToUse = {
126
121
  ...globalLabelmapConfig,
127
122
  ...allSegments[Representations.Labelmap],
128
123
  };
129
124
  const labelmapConfig = configToUse;
130
- const colorLUT = SegmentationState.getColorLUT(colorLUTIndex);
125
+ const colorLUT = getColorLUT(colorLUTIndex);
131
126
  const numColors = Math.min(256, colorLUT.length);
132
127
  const { uid: actorUID } = actorEntry;
133
128
  const { outlineWidth, renderOutline, outlineOpacity, activeSegmentOutlineWidthDelta, } = _getLabelmapConfig(labelmapConfig, isActiveLabelmap);
@@ -167,7 +162,7 @@ function _setLabelmapColorAndOpacity(viewportId, actorEntry, segmentationReprese
167
162
  actor.getProperty().setInterpolationTypeToNearest();
168
163
  actor.getProperty().setUseLabelOutline(renderOutline);
169
164
  actor.getProperty().setLabelOutlineOpacity(outlineOpacity);
170
- const { activeSegmentIndex } = SegmentationState.getSegmentation(segmentationRepresentation.segmentationId);
165
+ const { activeSegmentIndex } = getSegmentation(segmentationRepresentation.segmentationId);
171
166
  const outlineWidths = new Array(numColors - 1);
172
167
  for (let i = 1; i < numColors; i++) {
173
168
  const isHidden = segmentsHidden.has(i);
@@ -256,8 +251,7 @@ async function _addLabelmapToViewport(viewport, labelmapData, segmentationRepres
256
251
  await addLabelmapToElement(viewport.element, labelmapData, segmentationRepresentationUID);
257
252
  }
258
253
  export default {
259
- getSegmentationRepresentationRenderingConfig,
260
254
  render,
261
255
  removeRepresentation,
262
256
  };
263
- export { getSegmentationRepresentationRenderingConfig, render, removeRepresentation, };
257
+ export { render, removeRepresentation };
@@ -1,9 +1,12 @@
1
1
  import { cache, getEnabledElementByViewportId, VolumeViewport3D, } from '@cornerstonejs/core';
2
- import * as SegmentationState from '../../../stateManagement/segmentation/segmentationState';
3
2
  import Representations from '../../../enums/SegmentationRepresentations';
3
+ import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
4
4
  import removeSurfaceFromElement from './removeSurfaceFromElement';
5
5
  import addOrUpdateSurfaceToElement from './addOrUpdateSurfaceToElement';
6
- import { polySeg } from '../../../stateManagement/segmentation';
6
+ import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
7
+ import { getColorLUT } from '../../../stateManagement/segmentation/getColorLUT';
8
+ import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
9
+ import { computeAndAddSurfaceRepresentation } from '../../../stateManagement/segmentation/polySeg';
7
10
  function removeRepresentation(viewportId, segmentationRepresentationUID, renderImmediate = false) {
8
11
  const enabledElement = getEnabledElementByViewportId(viewportId);
9
12
  if (!enabledElement) {
@@ -11,7 +14,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
11
14
  }
12
15
  const { viewport } = enabledElement;
13
16
  removeSurfaceFromElement(viewport.element, segmentationRepresentationUID);
14
- SegmentationState.removeRepresentation(segmentationRepresentationUID);
17
+ _removeRepresentation(segmentationRepresentationUID);
15
18
  if (!renderImmediate) {
16
19
  return;
17
20
  }
@@ -19,7 +22,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
19
22
  }
20
23
  async function render(viewport, representation) {
21
24
  const { colorLUTIndex, segmentationId, segmentationRepresentationUID } = representation;
22
- const segmentation = SegmentationState.getSegmentation(segmentationId);
25
+ const segmentation = getSegmentation(segmentationId);
23
26
  if (!segmentation) {
24
27
  return;
25
28
  }
@@ -28,8 +31,8 @@ async function render(viewport, representation) {
28
31
  }
29
32
  let SurfaceData = segmentation.representationData[Representations.Surface];
30
33
  if (!SurfaceData &&
31
- polySeg.canComputeRequestedRepresentation(segmentationRepresentationUID)) {
32
- SurfaceData = await polySeg.computeAndAddSurfaceRepresentation(segmentationId, {
34
+ canComputeRequestedRepresentation(segmentationRepresentationUID)) {
35
+ SurfaceData = await computeAndAddSurfaceRepresentation(segmentationId, {
33
36
  segmentationRepresentationUID,
34
37
  });
35
38
  if (!SurfaceData) {
@@ -40,7 +43,7 @@ async function render(viewport, representation) {
40
43
  if (!geometryIds?.size) {
41
44
  console.warn(`No Surfaces found for segmentationId ${segmentationId}. Skipping render.`);
42
45
  }
43
- const colorLUT = SegmentationState.getColorLUT(colorLUTIndex);
46
+ const colorLUT = getColorLUT(colorLUTIndex);
44
47
  const surfaces = [];
45
48
  geometryIds.forEach((geometryId, segmentIndex) => {
46
49
  const geometry = cache.getGeometry(geometryId);