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

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 (249) 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 +2 -1
  31. package/dist/esm/index.js +2 -1
  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 +0 -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 +2 -3
  173. package/dist/esm/tools/annotation/CircleROITool.js +7 -8
  174. package/dist/esm/tools/annotation/CobbAngleTool.js +1 -1
  175. package/dist/esm/tools/annotation/EllipticalROITool.js +5 -6
  176. package/dist/esm/tools/annotation/HeightTool.js +2 -3
  177. package/dist/esm/tools/annotation/KeyImageTool.js +1 -1
  178. package/dist/esm/tools/annotation/LengthTool.js +2 -3
  179. package/dist/esm/tools/annotation/LivewireContourTool.js +3 -2
  180. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
  181. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +7 -7
  182. package/dist/esm/tools/annotation/ProbeTool.js +3 -4
  183. package/dist/esm/tools/annotation/RectangleROITool.js +5 -6
  184. package/dist/esm/tools/annotation/SplineROITool.js +7 -4
  185. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +6 -7
  186. package/dist/esm/tools/annotation/VideoRedactionTool.js +1 -1
  187. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +1 -1
  188. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +1 -1
  189. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -2
  190. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
  191. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +1 -1
  192. package/dist/esm/tools/base/ContourBaseTool.js +2 -2
  193. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +24 -15
  194. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +9 -8
  195. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +3 -3
  196. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +2 -1
  197. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -8
  198. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +19 -25
  199. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +10 -7
  200. package/dist/esm/tools/segmentation/BrushTool.js +10 -8
  201. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +4 -5
  202. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +7 -9
  203. package/dist/esm/tools/segmentation/SegmentSelectTool.js +1 -1
  204. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +4 -4
  205. package/dist/esm/utilities/annotationHydration.js +1 -1
  206. package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +1 -1
  207. package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +2 -2
  208. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +1 -1
  209. package/dist/esm/utilities/contours/getContourHolesDataWorld.js +1 -1
  210. package/dist/esm/utilities/contours/index.d.ts +1 -2
  211. package/dist/esm/utilities/contours/index.js +1 -2
  212. package/dist/esm/utilities/contours/updateContourPolyline.js +1 -1
  213. package/dist/esm/utilities/getToolsWithModesForElement.js +2 -2
  214. package/dist/esm/utilities/index.d.ts +1 -2
  215. package/dist/esm/utilities/index.js +1 -2
  216. package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +3 -3
  217. package/dist/esm/utilities/math/polyline/isClosed.js +2 -2
  218. package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.js +3 -3
  219. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +1 -1
  220. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +1 -1
  221. package/dist/esm/utilities/segmentation/getBrushToolInstances.d.ts +1 -0
  222. package/dist/esm/utilities/segmentation/getBrushToolInstances.js +17 -0
  223. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.d.ts +0 -2
  224. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +3 -22
  225. package/dist/esm/utilities/segmentation/index.d.ts +2 -2
  226. package/dist/esm/utilities/segmentation/index.js +2 -2
  227. package/dist/esm/utilities/segmentation/invalidateBrushCursor.js +1 -4
  228. package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.js +2 -1
  229. package/dist/esm/utilities/segmentation/segmentContourAction.js +5 -5
  230. package/dist/esm/utilities/segmentation/utilities.d.ts +4 -1
  231. package/dist/esm/utilities/segmentation/utilities.js +23 -17
  232. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +2 -2
  233. package/dist/umd/985.index.js.map +1 -1
  234. package/dist/umd/index.js +2 -1
  235. package/dist/umd/index.js.LICENSE.txt +6 -0
  236. package/dist/umd/index.js.map +1 -1
  237. package/package.json +5 -4
  238. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +0 -17
  239. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +0 -50
  240. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.d.ts +0 -2
  241. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.js +0 -11
  242. package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +0 -76
  243. package/dist/esm/tools/AdvancedMagnifyViewport.js +0 -351
  244. package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +0 -38
  245. package/dist/esm/tools/AdvancedMagnifyViewportManager.js +0 -161
  246. package/dist/esm/utilities/contours/interpolation/index.d.ts +0 -2
  247. package/dist/esm/utilities/contours/interpolation/index.js +0 -2
  248. package/dist/esm/utilities/segmentation/triggerSegmentationRender.d.ts +0 -3
  249. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js +0 -8
@@ -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);
@@ -9,9 +9,11 @@ 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 { config as segmentationConfig, segmentLocking, segmentIndex as segmentIndexController, state as segmentationState, activeSegmentation, } from '../../stateManagement/segmentation';
13
12
  import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
14
- import { getCurrentLabelmapImageIdForViewport } from '../../stateManagement/segmentation/segmentationState';
13
+ import { getActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
14
+ import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
15
+ import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
16
+ import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
15
17
  class BrushTool extends BaseTool {
16
18
  constructor(toolProps = {}, defaultToolProps = {
17
19
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -192,7 +194,7 @@ class BrushTool extends BaseTool {
192
194
  createEditData(element) {
193
195
  const enabledElement = getEnabledElement(element);
194
196
  const { viewport } = enabledElement;
195
- const activeRepresentation = activeSegmentation.getActiveSegmentationRepresentation(viewport.id);
197
+ const activeRepresentation = getActiveSegmentationRepresentation(viewport.id);
196
198
  if (!activeRepresentation) {
197
199
  throw new Error('No active segmentation detected, create a segmentation representation before using the brush tool');
198
200
  }
@@ -200,8 +202,8 @@ class BrushTool extends BaseTool {
200
202
  if (type === SegmentationRepresentations.Contour) {
201
203
  throw new Error('Not implemented yet');
202
204
  }
203
- const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
204
- const { representationData } = segmentationState.getSegmentation(segmentationId);
205
+ const segmentsLocked = getLockedSegmentIndices(segmentationId);
206
+ const { representationData } = getSegmentation(segmentationId);
205
207
  const labelmapData = representationData[SegmentationRepresentations.Labelmap];
206
208
  if (isVolumeSegmentation(labelmapData, viewport)) {
207
209
  const { volumeId } = representationData[type];
@@ -272,14 +274,14 @@ class BrushTool extends BaseTool {
272
274
  }
273
275
  getActiveSegmentationData(viewport) {
274
276
  const viewportId = viewport.id;
275
- const activeRepresentation = activeSegmentation.getActiveSegmentationRepresentation(viewportId);
277
+ const activeRepresentation = getActiveSegmentationRepresentation(viewportId);
276
278
  if (!activeRepresentation) {
277
279
  console.warn('No active segmentation detected, create one before using the brush tool');
278
280
  return;
279
281
  }
280
282
  const { segmentationId, segmentationRepresentationUID } = activeRepresentation;
281
- const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
282
- const segmentColor = segmentationConfig.color.getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
283
+ const segmentIndex = getActiveSegmentIndex(segmentationId);
284
+ const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
283
285
  return {
284
286
  segmentIndex,
285
287
  segmentationId,
@@ -16,7 +16,6 @@ import { getCanvasCircleCorners, getCanvasCircleRadius, } from '../../utilities/
16
16
  import { getCalibratedLengthUnitsAndScale, getCalibratedAspect, } from '../../utilities/getCalibratedUnits';
17
17
  import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
18
18
  import { pointInEllipse } from '../../utilities/math/ellipse';
19
- import { roundNumber } from '../../utilities';
20
19
  import { BasicStatsCalculator } from '../../utilities/math/basic';
21
20
  import cloneDeep from 'lodash.clonedeep';
22
21
  import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
@@ -462,10 +461,10 @@ function defaultGetTextLines(data) {
462
461
  return;
463
462
  }
464
463
  const textLines = [];
465
- textLines.push(`Area: ${roundNumber(area)} ${areaUnits}`);
466
- textLines.push(`Mean: ${roundNumber(mean)} ${pixelValueUnits}`);
467
- textLines.push(`Max: ${roundNumber(max)} ${pixelValueUnits}`);
468
- textLines.push(`Std Dev: ${roundNumber(stdDev)} ${pixelValueUnits}`);
464
+ textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnits}`);
465
+ textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${pixelValueUnits}`);
466
+ textLines.push(`Max: ${csUtils.roundNumber(max)} ${pixelValueUnits}`);
467
+ textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${pixelValueUnits}`);
469
468
  return textLines;
470
469
  }
471
470
  CircleROIStartEndThresholdTool.toolName = 'CircleROIStartEndThreshold';
@@ -1,5 +1,4 @@
1
1
  import { getEnabledElement, cache, StackViewport, utilities as csUtils, } from '@cornerstonejs/core';
2
- import { utilities as coreUtils } from '@cornerstonejs/core';
3
2
  import { getCalibratedLengthUnitsAndScale } from '../../utilities/getCalibratedUnits';
4
3
  import { vec3 } from 'gl-matrix';
5
4
  import { addAnnotation, getAnnotations, removeAnnotation, } from '../../stateManagement';
@@ -14,7 +13,6 @@ import { hideElementCursor, resetElementCursor, } from '../../cursors/elementCur
14
13
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
15
14
  import { triggerAnnotationCompleted, triggerAnnotationModified, } from '../../stateManagement/annotation/helpers/state';
16
15
  import RectangleROITool from '../annotation/RectangleROITool';
17
- import { roundNumber } from '../../utilities/';
18
16
  import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
19
17
  import { BasicStatsCalculator } from '../../utilities/math/basic';
20
18
  import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
@@ -178,10 +176,10 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
178
176
  if (Array.isArray(endCoordinate)) {
179
177
  endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
180
178
  }
181
- const roundedStartCoord = coreUtils.roundToPrecision(startCoord);
182
- const roundedEndCoord = coreUtils.roundToPrecision(endCoord);
179
+ const roundedStartCoord = csUtils.roundToPrecision(startCoord);
180
+ const roundedEndCoord = csUtils.roundToPrecision(endCoord);
183
181
  const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
184
- const roundedCoord = coreUtils.roundToPrecision(coord);
182
+ const roundedCoord = csUtils.roundToPrecision(coord);
185
183
  if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
186
184
  roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
187
185
  continue;
@@ -417,10 +415,10 @@ function defaultGetTextLines(data) {
417
415
  return;
418
416
  }
419
417
  const textLines = [];
420
- textLines.push(`Area: ${roundNumber(area)} ${areaUnits}`);
421
- textLines.push(`Mean: ${roundNumber(mean)} ${pixelValueUnits}`);
422
- textLines.push(`Max: ${roundNumber(max)} ${pixelValueUnits}`);
423
- textLines.push(`Std Dev: ${roundNumber(stdDev)} ${pixelValueUnits}`);
418
+ textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnits}`);
419
+ textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${pixelValueUnits}`);
420
+ textLines.push(`Max: ${csUtils.roundNumber(max)} ${pixelValueUnits}`);
421
+ textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${pixelValueUnits}`);
424
422
  return textLines;
425
423
  }
426
424
  RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
@@ -6,7 +6,7 @@ import { getActiveSegmentationRepresentation } from '../../stateManagement/segme
6
6
  import RepresentationTypes from '../../enums/SegmentationRepresentations';
7
7
  import { setActiveSegmentIndex } from '../../stateManagement/segmentation/segmentIndex';
8
8
  import { getHoveredContourSegmentationAnnotation, getSegmentIndexAtLabelmapBorder, getSegmentIndexAtWorldPoint, } from '../../utilities/segmentation';
9
- import { state } from '../../store';
9
+ import { state } from '../../store/state';
10
10
  import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
11
11
  class SegmentSelectTool extends BaseTool {
12
12
  static { this.SelectMode = {
@@ -1,6 +1,6 @@
1
- import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/triggerSegmentationEvents';
2
- import { config as segmentationConfig } from '../../../../stateManagement/segmentation';
1
+ import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/events/triggerSegmentationDataModified';
3
2
  import StrategyCallbacks from '../../../../enums/StrategyCallbacks';
3
+ import { getSegmentIndexColor, setSegmentIndexColor, } from '../../../../stateManagement/segmentation/config/segmentationColor';
4
4
  function lightenColor(r, g, b, a, factor = 0.4) {
5
5
  return [
6
6
  Math.round(r + (255 - r) * factor),
@@ -42,12 +42,12 @@ export default {
42
42
  return;
43
43
  }
44
44
  const configColor = previewColors?.[segmentIndex];
45
- const segmentColor = segmentationConfig.color.getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
45
+ const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
46
46
  if (!configColor && !segmentColor) {
47
47
  return;
48
48
  }
49
49
  const previewColor = configColor || lightenColor(...segmentColor);
50
- segmentationConfig.color.setSegmentIndexColor(segmentationRepresentationUID, previewSegmentIndex, previewColor);
50
+ setSegmentIndexColor(segmentationRepresentationUID, previewSegmentIndex, previewColor);
51
51
  },
52
52
  [StrategyCallbacks.AcceptPreview]: (operationData) => {
53
53
  const { segmentationVoxelManager, previewVoxelManager: previewVoxelManager, previewSegmentIndex, preview, } = operationData || {};
@@ -1,5 +1,5 @@
1
1
  import { utilities, BaseVolumeViewport, StackViewport, cache, metaData, } from '@cornerstonejs/core';
2
- import { addAnnotation } from '../stateManagement';
2
+ import { addAnnotation } from '../stateManagement/annotation/annotationState';
3
3
  import { vec3 } from 'gl-matrix';
4
4
  function annotationHydration(viewport, toolName, worldPoints, options) {
5
5
  const viewReference = viewport.getViewReference();
@@ -1,4 +1,4 @@
1
- import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
1
+ import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
2
2
  export function addContourSegmentationAnnotation(annotation) {
3
3
  if (annotation.parentAnnotationUID) {
4
4
  return;
@@ -1,10 +1,10 @@
1
- import { state } from '../../stateManagement/segmentation';
1
+ import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
2
2
  export function removeContourSegmentationAnnotation(annotation) {
3
3
  if (!annotation.data.segmentation) {
4
4
  throw new Error('removeContourSegmentationAnnotation: annotation does not have a segmentation data');
5
5
  }
6
6
  const { segmentationId, segmentIndex } = annotation.data.segmentation;
7
- const segmentation = state.getSegmentation(segmentationId);
7
+ const segmentation = getSegmentation(segmentationId);
8
8
  const { annotationUIDsMap } = segmentation?.representationData.CONTOUR || {};
9
9
  const annotationsUIDsSet = annotationUIDsMap?.get(segmentIndex);
10
10
  if (!annotationsUIDsSet) {
@@ -2,7 +2,7 @@ import { cache as cornerstoneCache } from '@cornerstonejs/core';
2
2
  import vtkImageMarchingSquares from '@kitware/vtk.js/Filters/General/ImageMarchingSquares';
3
3
  import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
4
4
  import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
5
- import { getDeduplicatedVTKPolyDataPoints } from '../contours';
5
+ import { getDeduplicatedVTKPolyDataPoints } from './getDeduplicatedVTKPolyDataPoints';
6
6
  import { findContoursFromReducedSet } from './contourFinder';
7
7
  import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
8
8
  const { Labelmap } = SegmentationRepresentations;
@@ -1,4 +1,4 @@
1
- import { getAnnotation } from '../../stateManagement';
1
+ import { getAnnotation } from '../../stateManagement/annotation/annotationState';
2
2
  export default function getContourHolesDataWorld(annotation) {
3
3
  const childAnnotationUIDs = annotation.childAnnotationUIDs ?? [];
4
4
  return childAnnotationUIDs.map((uid) => getAnnotation(uid).data.contour.polyline);
@@ -8,7 +8,6 @@ import getContourHolesDataWorld from './getContourHolesDataWorld';
8
8
  import getContourHolesDataCanvas from './getContourHolesDataCanvas';
9
9
  import updateContourPolyline from './updateContourPolyline';
10
10
  import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
11
- import * as interpolation from './interpolation';
12
11
  import findHandlePolylineIndex from './findHandlePolylineIndex';
13
12
  import calculatePerimeter from './calculatePerimeter';
14
- export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, interpolation, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
13
+ export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
@@ -8,7 +8,6 @@ import getContourHolesDataWorld from './getContourHolesDataWorld';
8
8
  import getContourHolesDataCanvas from './getContourHolesDataCanvas';
9
9
  import updateContourPolyline from './updateContourPolyline';
10
10
  import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
11
- import * as interpolation from './interpolation';
12
11
  import findHandlePolylineIndex from './findHandlePolylineIndex';
13
12
  import calculatePerimeter from './calculatePerimeter';
14
- export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, interpolation, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
13
+ export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
@@ -1,6 +1,6 @@
1
1
  import { utilities as csUtils } from '@cornerstonejs/core';
2
2
  import * as math from '../math';
3
- import { getParentAnnotation, invalidateAnnotation, } from '../../stateManagement';
3
+ import { getParentAnnotation, invalidateAnnotation, } from '../../stateManagement/annotation/annotationState';
4
4
  export default function updateContourPolyline(annotation, polylineData, transforms, options) {
5
5
  const { canvasToWorld, worldToCanvas } = transforms;
6
6
  const { data } = annotation;
@@ -1,9 +1,9 @@
1
- import { ToolGroupManager } from '../store';
2
1
  import { getEnabledElement } from '@cornerstonejs/core';
2
+ import { getToolGroupForViewport } from '../store/ToolGroupManager';
3
3
  export default function getToolsWithModesForElement(element, modesFilter) {
4
4
  const enabledElement = getEnabledElement(element);
5
5
  const { renderingEngineId, viewportId } = enabledElement;
6
- const toolGroup = ToolGroupManager.getToolGroupForViewport(viewportId, renderingEngineId);
6
+ const toolGroup = getToolGroupForViewport(viewportId, renderingEngineId);
7
7
  if (!toolGroup) {
8
8
  return [];
9
9
  }
@@ -1,4 +1,4 @@
1
- import { utilities } from '@cornerstonejs/core';
1
+ import { utilities, triggerEvent } from '@cornerstonejs/core';
2
2
  import { getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement } from './getAnnotationNearPoint';
3
3
  import debounce from './debounce';
4
4
  import throttle from './throttle';
@@ -35,5 +35,4 @@ import * as polyDataUtils from './polyData/utils';
35
35
  import * as voi from './voi';
36
36
  import * as contourSegmentation from './contourSegmentation';
37
37
  declare const roundNumber: typeof utilities.roundNumber;
38
- import { triggerEvent } from '@cornerstonejs/core';
39
38
  export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnitsAndScale, getCalibratedProbeUnitsAndValue, getCalibratedAspect, segmentation, contours, triggerAnnotationRenderForViewportIds, triggerAnnotationRenderForToolGroupIds, triggerAnnotationRender, getSphereBoundsInfo, getAnnotationNearPoint, getViewportForAnnotation, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, contourSegmentation, annotationHydration, getClosestImageIdForStackViewport, };
@@ -1,4 +1,4 @@
1
- import { utilities } from '@cornerstonejs/core';
1
+ import { utilities, triggerEvent } from '@cornerstonejs/core';
2
2
  import { getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, } from './getAnnotationNearPoint';
3
3
  import debounce from './debounce';
4
4
  import throttle from './throttle';
@@ -35,5 +35,4 @@ import * as polyDataUtils from './polyData/utils';
35
35
  import * as voi from './voi';
36
36
  import * as contourSegmentation from './contourSegmentation';
37
37
  const roundNumber = utilities.roundNumber;
38
- import { triggerEvent } from '@cornerstonejs/core';
39
38
  export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnitsAndScale, getCalibratedProbeUnitsAndValue, getCalibratedAspect, segmentation, contours, triggerAnnotationRenderForViewportIds, triggerAnnotationRenderForToolGroupIds, triggerAnnotationRender, getSphereBoundsInfo, getAnnotationNearPoint, getViewportForAnnotation, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, contourSegmentation, annotationHydration, getClosestImageIdForStackViewport, };
@@ -1,7 +1,7 @@
1
- import * as math from '../';
1
+ import { distanceToPointSquared } from '../point';
2
2
  export default function distanceToPointSquaredInfo(lineStart, lineEnd, point) {
3
3
  let closestPoint;
4
- const distanceSquared = math.point.distanceToPointSquared(lineStart, lineEnd);
4
+ const distanceSquared = distanceToPointSquared(lineStart, lineEnd);
5
5
  if (lineStart[0] === lineEnd[0] && lineStart[1] === lineEnd[1]) {
6
6
  closestPoint = lineStart;
7
7
  }
@@ -24,6 +24,6 @@ export default function distanceToPointSquaredInfo(lineStart, lineEnd, point) {
24
24
  }
25
25
  return {
26
26
  point: [...closestPoint],
27
- distanceSquared: math.point.distanceToPointSquared(point, closestPoint),
27
+ distanceSquared: distanceToPointSquared(point, closestPoint),
28
28
  };
29
29
  }
@@ -1,5 +1,5 @@
1
1
  import { glMatrix } from 'gl-matrix';
2
- import * as math from '..';
2
+ import { distanceToPointSquared } from '../point';
3
3
  export default function isClosed(polyline) {
4
4
  if (polyline.length < 3) {
5
5
  return false;
@@ -7,6 +7,6 @@ export default function isClosed(polyline) {
7
7
  const numPolylinePoints = polyline.length;
8
8
  const firstPoint = polyline[0];
9
9
  const lastPoint = polyline[numPolylinePoints - 1];
10
- const distFirstToLastPoints = math.point.distanceToPointSquared(firstPoint, lastPoint);
10
+ const distFirstToLastPoints = distanceToPointSquared(firstPoint, lastPoint);
11
11
  return glMatrix.equals(0, distFirstToLastPoints);
12
12
  }
@@ -1,6 +1,6 @@
1
- import { PlanarFreehandROITool } from '../../tools';
2
- import { ToolGroupManager } from '../../store';
1
+ import PlanarFreehandROITool from '../../tools/annotation/PlanarFreehandROITool';
3
2
  import interpolateSegmentPoints from './interpolation/interpolateSegmentPoints';
3
+ import { getToolGroupForViewport } from '../../store/ToolGroupManager';
4
4
  function shouldPreventInterpolation(enabledElement, annotation, knotsRatioPercentage) {
5
5
  if (!annotation?.data?.polyline || knotsRatioPercentage <= 0) {
6
6
  return true;
@@ -9,7 +9,7 @@ function shouldPreventInterpolation(enabledElement, annotation, knotsRatioPercen
9
9
  return true;
10
10
  }
11
11
  const { renderingEngineId, viewportId, FrameOfReferenceUID } = enabledElement;
12
- const toolGroup = ToolGroupManager.getToolGroupForViewport(viewportId, renderingEngineId);
12
+ const toolGroup = getToolGroupForViewport(viewportId, renderingEngineId);
13
13
  if (annotation.metadata.FrameOfReferenceUID !== FrameOfReferenceUID) {
14
14
  return true;
15
15
  }
@@ -1,7 +1,7 @@
1
1
  import { getToolGroup } from '../../store/ToolGroupManager';
2
2
  import triggerAnnotationRenderForViewportIds from '../triggerAnnotationRenderForViewportIds';
3
3
  import { getRenderingEngine } from '@cornerstonejs/core';
4
- import { getBrushToolInstances } from './utilities';
4
+ import { getBrushToolInstances } from './getBrushToolInstances';
5
5
  export function setBrushSizeForToolGroup(toolGroupId, brushSize, toolName) {
6
6
  const toolGroup = getToolGroup(toolGroupId);
7
7
  if (toolGroup === undefined) {
@@ -1,7 +1,7 @@
1
1
  import { getToolGroup } from '../../store/ToolGroupManager';
2
2
  import triggerAnnotationRenderForViewportIds from '../triggerAnnotationRenderForViewportIds';
3
3
  import { getRenderingEngine } from '@cornerstonejs/core';
4
- import { getBrushToolInstances } from './utilities';
4
+ import { getBrushToolInstances } from './getBrushToolInstances';
5
5
  export function setBrushThresholdForToolGroup(toolGroupId, threshold, otherArgs = { isDynamic: false }) {
6
6
  const toolGroup = getToolGroup(toolGroupId);
7
7
  if (toolGroup === undefined) {
@@ -0,0 +1 @@
1
+ export declare function getBrushToolInstances(toolGroupId: string, toolName?: string): any[];
@@ -0,0 +1,17 @@
1
+ import { getToolGroup } from '../../store/ToolGroupManager';
2
+ import BrushTool from '../../tools/segmentation/BrushTool';
3
+ export function getBrushToolInstances(toolGroupId, toolName) {
4
+ const toolGroup = getToolGroup(toolGroupId);
5
+ if (toolGroup === undefined) {
6
+ return;
7
+ }
8
+ const toolInstances = toolGroup._toolInstances;
9
+ if (!Object.keys(toolInstances).length) {
10
+ return;
11
+ }
12
+ if (toolName && toolInstances[toolName]) {
13
+ return [toolInstances[toolName]];
14
+ }
15
+ const brushBasedToolInstances = Object.values(toolInstances).filter((toolInstance) => toolInstance instanceof BrushTool);
16
+ return brushBasedToolInstances;
17
+ }
@@ -1,4 +1,2 @@
1
- export declare const setSegmentationDirty: (segmentationId: string) => void;
2
- export declare const setSegmentationClean: (segmentationId: string) => void;
3
1
  declare function getUniqueSegmentIndices(segmentationId: any): any;
4
2
  export { getUniqueSegmentIndices };
@@ -1,27 +1,8 @@
1
1
  import { cache } from '@cornerstonejs/core';
2
- import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
3
2
  import { isVolumeSegmentation } from '../../tools/segmentation/strategies/utils/stackVolumeCheck';
4
3
  import { SegmentationRepresentations } from '../../enums';
5
- const segmentIndicesCache = new Map();
6
- export const setSegmentationDirty = (segmentationId) => {
7
- const cached = segmentIndicesCache.get(segmentationId);
8
- if (cached) {
9
- cached.isDirty = true;
10
- }
11
- };
12
- export const setSegmentationClean = (segmentationId) => {
13
- const cached = segmentIndicesCache.get(segmentationId);
14
- if (cached) {
15
- cached.isDirty = false;
16
- }
17
- };
18
- function getCachedSegmentIndices(segmentationId) {
19
- const cached = segmentIndicesCache.get(segmentationId);
20
- if (cached && !cached.isDirty) {
21
- return cached.indices;
22
- }
23
- return null;
24
- }
4
+ import { getCachedSegmentIndices, setCachedSegmentIndices } from './utilities';
5
+ import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
25
6
  function getUniqueSegmentIndices(segmentationId) {
26
7
  const cachedResult = getCachedSegmentIndices(segmentationId);
27
8
  if (cachedResult) {
@@ -45,7 +26,7 @@ function getUniqueSegmentIndices(segmentationId) {
45
26
  default:
46
27
  throw new Error(`Unsupported segmentation type: ${segmentation.type}`);
47
28
  }
48
- segmentIndicesCache.set(segmentationId, { indices, isDirty: false });
29
+ setCachedSegmentIndices(segmentationId, indices);
49
30
  return indices;
50
31
  }
51
32
  function handleLabelmapSegmentation(segmentation, segmentationId) {