@cornerstonejs/tools 2.0.0-beta.26 → 2.0.0-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/dist/esm/eventListeners/index.d.ts +2 -2
  2. package/dist/esm/eventListeners/index.js +2 -2
  3. package/dist/esm/eventListeners/mouse/mouseDownListener.js +8 -0
  4. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +18 -12
  5. package/dist/esm/eventListeners/segmentation/index.d.ts +1 -3
  6. package/dist/esm/eventListeners/segmentation/index.js +1 -3
  7. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +13 -10
  8. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -3
  9. package/dist/esm/index.d.ts +2 -2
  10. package/dist/esm/index.js +2 -2
  11. package/dist/esm/init.js +1 -5
  12. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +2 -0
  13. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +6 -5
  14. package/dist/esm/stateManagement/annotation/annotationState.js +11 -2
  15. package/dist/esm/stateManagement/index.d.ts +1 -4
  16. package/dist/esm/stateManagement/index.js +1 -3
  17. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +9 -6
  18. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +43 -25
  19. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +207 -162
  20. package/dist/esm/stateManagement/segmentation/SegmentationStyle.d.ts +42 -0
  21. package/dist/esm/stateManagement/segmentation/SegmentationStyle.js +162 -0
  22. package/dist/esm/stateManagement/segmentation/activeSegmentation.d.ts +4 -5
  23. package/dist/esm/stateManagement/segmentation/activeSegmentation.js +10 -14
  24. package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -2
  25. package/dist/esm/stateManagement/segmentation/addColorLUT.js +15 -1
  26. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.d.ts +15 -0
  27. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.js +49 -0
  28. package/dist/esm/stateManagement/segmentation/addSegmentations.d.ts +1 -1
  29. package/dist/esm/stateManagement/segmentation/addSegmentations.js +11 -7
  30. package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
  31. package/dist/esm/stateManagement/segmentation/config/index.js +2 -2
  32. package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +4 -4
  33. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +24 -24
  34. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +22 -7
  35. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +29 -29
  36. package/dist/esm/stateManagement/segmentation/config/styleHelpers.d.ts +39 -0
  37. package/dist/esm/stateManagement/segmentation/config/styleHelpers.js +48 -0
  38. package/dist/esm/stateManagement/segmentation/getActiveSegmentation.d.ts +2 -0
  39. package/dist/esm/stateManagement/segmentation/{getGlobalConfig.js → getActiveSegmentation.js} +2 -2
  40. package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -1
  41. package/dist/esm/stateManagement/segmentation/getGlobalStyle.d.ts +3 -0
  42. package/dist/esm/stateManagement/segmentation/getGlobalStyle.js +4 -0
  43. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +9 -1
  44. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +10 -2
  45. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +5 -1
  46. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +2 -2
  47. package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +5 -5
  48. package/dist/esm/stateManagement/segmentation/getViewportSegmentations.d.ts +3 -0
  49. package/dist/esm/stateManagement/segmentation/getViewportSegmentations.js +15 -0
  50. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.d.ts +1 -0
  51. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.js +31 -0
  52. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.d.ts +1 -2
  53. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +4 -6
  54. package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.d.ts → helpers/computeStackLabelmapFromVolume.d.ts} +2 -2
  55. package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.js → helpers/computeStackLabelmapFromVolume.js} +8 -5
  56. package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.d.ts +3 -0
  57. package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.js +4 -0
  58. package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.d.ts +1 -0
  59. package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.js +7 -0
  60. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.d.ts +8 -0
  61. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.js +27 -0
  62. package/dist/esm/stateManagement/segmentation/helpers/index.d.ts +2 -1
  63. package/dist/esm/stateManagement/segmentation/helpers/index.js +2 -1
  64. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +4 -6
  65. package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +1 -1
  66. package/dist/esm/stateManagement/segmentation/index.d.ts +14 -7
  67. package/dist/esm/stateManagement/segmentation/index.js +14 -7
  68. package/dist/esm/stateManagement/segmentation/{addRepresentationData.d.ts → internalAddRepresentationData.d.ts} +2 -2
  69. package/dist/esm/stateManagement/segmentation/{addRepresentationData.js → internalAddRepresentationData.js} +5 -2
  70. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.d.ts +1 -1
  71. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.js +18 -58
  72. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +9 -10
  73. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/extractContourData.js +8 -5
  74. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +9 -2
  75. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +2 -2
  76. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +4 -6
  77. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +1 -1
  78. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +4 -4
  79. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +1 -7
  80. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +1 -3
  81. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +9 -8
  82. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -1
  83. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -9
  84. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +1 -1
  85. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +7 -5
  86. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.d.ts +14 -2
  87. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +69 -19
  88. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +6 -18
  89. package/dist/esm/stateManagement/segmentation/segmentationState.js +9 -18
  90. package/dist/esm/stateManagement/segmentation/setActiveSegmentation.d.ts +1 -0
  91. package/dist/esm/stateManagement/segmentation/setActiveSegmentation.js +5 -0
  92. package/dist/esm/stateManagement/segmentation/setGlobalStyle.d.ts +3 -0
  93. package/dist/esm/stateManagement/segmentation/setGlobalStyle.js +8 -0
  94. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +5 -1
  95. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +2 -2
  96. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +1 -3
  97. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +1 -3
  98. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -1
  99. package/dist/esm/store/ToolGroupManager/ToolGroup.js +23 -9
  100. package/dist/esm/store/ToolGroupManager/createToolGroup.d.ts +1 -1
  101. package/dist/esm/store/ToolGroupManager/createToolGroup.js +3 -3
  102. package/dist/esm/tools/AdvancedMagnifyTool.js +1 -1
  103. package/dist/esm/tools/CrosshairsTool.js +1 -2
  104. package/dist/esm/tools/MIPJumpToClickTool.js +1 -1
  105. package/dist/esm/tools/ReferenceLinesTool.js +5 -2
  106. package/dist/esm/tools/StackScrollTool.d.ts +4 -0
  107. package/dist/esm/tools/StackScrollTool.js +104 -15
  108. package/dist/esm/tools/WindowLevelTool.js +3 -2
  109. package/dist/esm/tools/annotation/AngleTool.js +1 -1
  110. package/dist/esm/tools/annotation/BidirectionalTool.js +1 -1
  111. package/dist/esm/tools/annotation/CircleROITool.js +1 -1
  112. package/dist/esm/tools/annotation/EllipticalROITool.js +1 -1
  113. package/dist/esm/tools/annotation/HeightTool.js +1 -1
  114. package/dist/esm/tools/annotation/LengthTool.js +1 -1
  115. package/dist/esm/tools/annotation/LivewireContourTool.js +3 -3
  116. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +1 -1
  117. package/dist/esm/tools/annotation/ProbeTool.js +2 -2
  118. package/dist/esm/tools/annotation/RectangleROITool.js +1 -1
  119. package/dist/esm/tools/annotation/SplineROITool.js +2 -3
  120. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +1 -1
  121. package/dist/esm/tools/base/BaseTool.d.ts +1 -2
  122. package/dist/esm/tools/base/BaseTool.js +5 -18
  123. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +28 -25
  124. package/dist/esm/tools/displayTools/Contour/contourConfig.d.ts +3 -3
  125. package/dist/esm/tools/displayTools/Contour/contourConfig.js +2 -2
  126. package/dist/esm/tools/displayTools/Contour/contourDisplay.d.ts +1 -1
  127. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -7
  128. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +26 -57
  129. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.d.ts +1 -1
  130. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js +2 -4
  131. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +1 -1
  132. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +39 -10
  133. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.d.ts +3 -5
  134. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +3 -16
  135. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -1
  136. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +86 -90
  137. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.d.ts +1 -1
  138. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -2
  139. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +1 -1
  140. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +3 -3
  141. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.d.ts +2 -2
  142. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.js +5 -3
  143. package/dist/esm/tools/displayTools/Surface/surfaceConfig.d.ts +3 -3
  144. package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +2 -2
  145. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.d.ts +1 -1
  146. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +7 -8
  147. package/dist/esm/tools/index.d.ts +1 -2
  148. package/dist/esm/tools/index.js +1 -2
  149. package/dist/esm/tools/segmentation/BrushTool.d.ts +0 -4
  150. package/dist/esm/tools/segmentation/BrushTool.js +23 -22
  151. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +2 -2
  152. package/dist/esm/tools/segmentation/CircleScissorsTool.d.ts +1 -1
  153. package/dist/esm/tools/segmentation/CircleScissorsTool.js +11 -10
  154. package/dist/esm/tools/segmentation/PaintFillTool.js +5 -7
  155. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +2 -2
  156. package/dist/esm/tools/segmentation/RectangleScissorsTool.d.ts +0 -1
  157. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +9 -10
  158. package/dist/esm/tools/segmentation/SegmentSelectTool.d.ts +2 -2
  159. package/dist/esm/tools/segmentation/SegmentSelectTool.js +17 -26
  160. package/dist/esm/tools/segmentation/SphereScissorsTool.d.ts +0 -1
  161. package/dist/esm/tools/segmentation/SphereScissorsTool.js +6 -9
  162. package/dist/esm/tools/segmentation/strategies/BrushStrategy.d.ts +2 -0
  163. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +2 -0
  164. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +1 -2
  165. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +1 -1
  166. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +3 -3
  167. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +4 -4
  168. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +1 -1
  169. package/dist/esm/tools/segmentation/strategies/fillCircle.js +3 -3
  170. package/dist/esm/tools/segmentation/strategies/fillSphere.js +3 -3
  171. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +21 -6
  172. package/dist/esm/types/AnnotationGroupSelector.js +0 -1
  173. package/dist/esm/types/AnnotationRenderContext.js +0 -1
  174. package/dist/esm/types/AnnotationStyle.js +0 -1
  175. package/dist/esm/types/AnnotationTypes.js +0 -1
  176. package/dist/esm/types/BoundsIJK.js +0 -1
  177. package/dist/esm/types/CINETypes.js +0 -1
  178. package/dist/esm/types/CalculatorTypes.js +0 -1
  179. package/dist/esm/types/CardinalSplineProps.js +0 -1
  180. package/dist/esm/types/ClosestControlPoint.js +0 -1
  181. package/dist/esm/types/ClosestPoint.js +0 -1
  182. package/dist/esm/types/ClosestSplinePoint.js +0 -1
  183. package/dist/esm/types/ContourSegmentationAnnotation.js +0 -1
  184. package/dist/esm/types/ContourTypes.d.ts +1 -2
  185. package/dist/esm/types/ContourTypes.js +0 -1
  186. package/dist/esm/types/ControlPointInfo.js +0 -1
  187. package/dist/esm/types/CursorTypes.js +0 -1
  188. package/dist/esm/types/EventTypes.d.ts +2 -2
  189. package/dist/esm/types/EventTypes.js +0 -1
  190. package/dist/esm/types/FloodFillTypes.js +0 -1
  191. package/dist/esm/types/IAnnotationManager.js +0 -1
  192. package/dist/esm/types/IBaseTool.js +0 -1
  193. package/dist/esm/types/IDistance.js +0 -1
  194. package/dist/esm/types/IPoints.js +0 -1
  195. package/dist/esm/types/ISculptToolShape.js +0 -1
  196. package/dist/esm/types/ISetToolModeOptions.js +0 -1
  197. package/dist/esm/types/ISpline.js +0 -1
  198. package/dist/esm/types/ISynchronizerEventHandler.js +0 -1
  199. package/dist/esm/types/IToolClassReference.js +0 -1
  200. package/dist/esm/types/IToolGroup.js +0 -1
  201. package/dist/esm/types/ITouchPoints.js +0 -1
  202. package/dist/esm/types/InteractionTypes.js +0 -1
  203. package/dist/esm/types/InternalToolTypes.js +0 -1
  204. package/dist/esm/types/InterpolationTypes.js +0 -1
  205. package/dist/esm/types/JumpToSliceOptions.js +0 -1
  206. package/dist/esm/types/LabelmapToolOperationData.d.ts +0 -1
  207. package/dist/esm/types/LabelmapToolOperationData.js +0 -1
  208. package/dist/esm/types/LabelmapTypes.d.ts +3 -7
  209. package/dist/esm/types/LabelmapTypes.js +0 -1
  210. package/dist/esm/types/PlanarBoundingBox.js +0 -1
  211. package/dist/esm/types/PolySeg.d.ts +1 -1
  212. package/dist/esm/types/PolySeg.js +0 -1
  213. package/dist/esm/types/SVGDrawingHelper.js +0 -1
  214. package/dist/esm/types/ScrollOptions.js +0 -1
  215. package/dist/esm/types/SegmentationStateTypes.d.ts +35 -56
  216. package/dist/esm/types/SegmentationStateTypes.js +0 -1
  217. package/dist/esm/types/SplineCurveSegment.js +0 -1
  218. package/dist/esm/types/SplineLineSegment.js +0 -1
  219. package/dist/esm/types/SplineProps.js +0 -1
  220. package/dist/esm/types/SurfaceTypes.d.ts +1 -1
  221. package/dist/esm/types/SurfaceTypes.js +0 -1
  222. package/dist/esm/types/ToolAction.js +0 -1
  223. package/dist/esm/types/ToolHandle.js +0 -1
  224. package/dist/esm/types/ToolProps.js +0 -1
  225. package/dist/esm/types/ToolSpecificAnnotationTypes.js +0 -1
  226. package/dist/esm/types/index.d.ts +2 -2
  227. package/dist/esm/types/index.js +0 -1
  228. package/dist/esm/utilities/cine/playClip.js +1 -1
  229. package/dist/esm/utilities/contours/updateContourPolyline.js +3 -0
  230. package/dist/esm/utilities/index.d.ts +2 -1
  231. package/dist/esm/utilities/index.js +2 -1
  232. package/dist/esm/utilities/math/circle/_types.js +0 -1
  233. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.js +0 -1
  234. package/dist/esm/utilities/pointInSurroundingSphereCallback.d.ts +8 -0
  235. package/dist/esm/utilities/pointInSurroundingSphereCallback.js +71 -0
  236. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +2 -2
  237. package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.js +10 -9
  238. package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.js +9 -8
  239. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +14 -16
  240. package/dist/esm/utilities/segmentation/index.d.ts +1 -3
  241. package/dist/esm/utilities/segmentation/index.js +1 -3
  242. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +3 -0
  243. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +1 -1
  244. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +0 -1
  245. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +0 -1
  246. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +0 -1
  247. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +0 -1
  248. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +0 -1
  249. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +0 -1
  250. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +0 -1
  251. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +0 -1
  252. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +0 -1
  253. package/dist/esm/utilities/voi/colorbar/types/index.js +0 -1
  254. package/dist/esm/widgets/types/WidgetProps.js +0 -1
  255. package/dist/esm/widgets/types/WidgetSize.js +0 -1
  256. package/dist/esm/widgets/types/index.js +0 -1
  257. package/dist/esm/workers/polySegConverters.js +4 -3
  258. package/package.json +73 -20
  259. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.d.ts +0 -3
  260. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +0 -14
  261. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.d.ts +0 -3
  262. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +0 -8
  263. package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +0 -2
  264. package/dist/esm/stateManagement/segmentation/addSegmentation.js +0 -11
  265. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +0 -2
  266. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +0 -10
  267. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.d.ts +0 -8
  268. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js +0 -19
  269. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +0 -14
  270. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +0 -54
  271. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +0 -1
  272. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +0 -8
  273. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +0 -1
  274. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +0 -8
  275. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +0 -2
  276. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +0 -5
  277. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +0 -2
  278. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +0 -6
  279. package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +0 -2
  280. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +0 -2
  281. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +0 -5
  282. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +0 -2
  283. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +0 -5
  284. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +0 -7
  285. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +0 -6
  286. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +0 -2
  287. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +0 -12
  288. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +0 -2
  289. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +0 -5
  290. package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +0 -1
  291. package/dist/esm/stateManagement/segmentation/removeRepresentation.js +0 -9
  292. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +0 -1
  293. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +0 -9
  294. package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +0 -2
  295. package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +0 -9
  296. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +0 -2
  297. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +0 -9
  298. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +0 -2
  299. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +0 -9
  300. package/dist/esm/tools/VolumeRotateMouseWheelTool.d.ts +0 -9
  301. package/dist/esm/tools/VolumeRotateMouseWheelTool.js +0 -52
  302. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.d.ts +0 -9
  303. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.js +0 -10
  304. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +0 -5
  305. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +0 -13
  306. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.d.ts +0 -2
  307. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.js +0 -11
  308. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.d.ts +0 -2
  309. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.js +0 -10
  310. package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
  311. package/dist/umd/78.index.js +0 -3
  312. package/dist/umd/78.index.js.LICENSE.txt +0 -5
  313. package/dist/umd/78.index.js.map +0 -1
  314. package/dist/umd/985.index.js +0 -2
  315. package/dist/umd/985.index.js.map +0 -1
  316. package/dist/umd/index.js +0 -3
  317. package/dist/umd/index.js.LICENSE.txt +0 -6
  318. package/dist/umd/index.js.map +0 -1
@@ -15,7 +15,7 @@ import { vec2, vec3 } from 'gl-matrix';
15
15
  import { getToolGroupForViewport } from '../store/ToolGroupManager';
16
16
  import debounce from '../utilities/debounce';
17
17
  import { distanceToPoint } from '../utilities/math/point';
18
- import { addSegmentationRepresentations } from '../stateManagement';
18
+ import { addSegmentationRepresentations } from '../stateManagement/segmentation';
19
19
  const MAGNIFY_CLASSNAME = 'advancedMagnifyTool';
20
20
  const MAGNIFY_VIEWPORT_INITIAL_RADIUS = 125;
21
21
  const { Events: csEvents } = Enums;
@@ -2,7 +2,7 @@ import { vec2, vec3 } from 'gl-matrix';
2
2
  import vtkMath from '@kitware/vtk.js/Common/Core/Math';
3
3
  import vtkMatrixBuilder from '@kitware/vtk.js/Common/Core/MatrixBuilder';
4
4
  import { AnnotationTool } from './base';
5
- import { getEnabledElementByIds, getEnabledElement, utilities as csUtils, Enums, } from '@cornerstonejs/core';
5
+ import { getEnabledElementByIds, getEnabledElement, utilities as csUtils, Enums, CONSTANTS, } from '@cornerstonejs/core';
6
6
  import { getToolGroup, getToolGroupForViewport, } from '../store/ToolGroupManager';
7
7
  import { addAnnotation, getAnnotations, removeAnnotation, } from '../stateManagement/annotation/annotationState';
8
8
  import { drawCircle as drawCircleSvg, drawHandles as drawHandlesSvg, drawLine as drawLineSvg, } from '../drawingSvg';
@@ -14,7 +14,6 @@ import liangBarksyClip from '../utilities/math/vec2/liangBarksyClip';
14
14
  import * as lineSegment from '../utilities/math/line';
15
15
  import { isAnnotationLocked } from '../stateManagement/annotation/annotationLocking';
16
16
  import triggerAnnotationRenderForViewportIds from '../utilities/triggerAnnotationRenderForViewportIds';
17
- import { CONSTANTS } from '@cornerstonejs/core';
18
17
  const { RENDERING_DEFAULTS } = CONSTANTS;
19
18
  function defaultReferenceLineColor() {
20
19
  return 'rgb(0, 200, 0)';
@@ -17,7 +17,7 @@ class MIPJumpToClickTool extends BaseTool {
17
17
  const { element, currentPoints } = evt.detail;
18
18
  const enabledElement = getEnabledElement(element);
19
19
  const { viewport, renderingEngine } = enabledElement;
20
- const volumeId = this.getTargetVolumeId(viewport);
20
+ const volumeId = viewport.getVolumeId();
21
21
  if (!volumeId) {
22
22
  throw new Error(`MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId`);
23
23
  }
@@ -32,7 +32,7 @@ class ReferenceLines extends AnnotationDisplayTool {
32
32
  const { element } = sourceViewport;
33
33
  const { viewUp, viewPlaneNormal } = sourceViewport.getCamera();
34
34
  const sourceViewportCanvasCornersInWorld = csUtils.getViewportImageCornersInWorld(sourceViewport);
35
- let annotation = this.editData.annotation;
35
+ let annotation = this.editData?.annotation;
36
36
  const FrameOfReferenceUID = sourceViewport.getFrameOfReferenceUID();
37
37
  if (!annotation) {
38
38
  const newAnnotation = {
@@ -78,6 +78,9 @@ class ReferenceLines extends AnnotationDisplayTool {
78
78
  };
79
79
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
80
80
  const { viewport: targetViewport } = enabledElement;
81
+ if (!this.editData) {
82
+ return false;
83
+ }
81
84
  const { annotation, sourceViewportId } = this.editData;
82
85
  let renderStatus = false;
83
86
  const { viewport: sourceViewport } = getEnabledElementByViewportId(sourceViewportId) || {};
@@ -153,7 +156,7 @@ class ReferenceLines extends AnnotationDisplayTool {
153
156
  handleFullDimension(targetViewport, lineStartWorld, viewPlaneNormal, viewUp, lineEndWorld, canvasCoordinates) {
154
157
  const renderingEngine = targetViewport.getRenderingEngine();
155
158
  const targetId = this.getTargetId(targetViewport);
156
- const targetImage = this.getTargetIdImage(targetId, renderingEngine);
159
+ const targetImage = this.getTargetImageData(targetId);
157
160
  const referencedImageId = this.getReferencedImageId(targetViewport, lineStartWorld, viewPlaneNormal, viewUp);
158
161
  if (referencedImageId && targetImage) {
159
162
  try {
@@ -8,6 +8,10 @@ declare class StackScrollTool extends BaseTool {
8
8
  mouseDragCallback(evt: EventTypes.InteractionEventType): void;
9
9
  touchDragCallback(evt: EventTypes.InteractionEventType): void;
10
10
  _dragCallback(evt: EventTypes.InteractionEventType): void;
11
+ _rotateDrag(evt: EventTypes.InteractionEventType): void;
12
+ _scrollDrag(evt: EventTypes.InteractionEventType): void;
13
+ _rotate(evt: any): void;
14
+ _scroll(evt: EventTypes.MouseWheelEventType): void;
11
15
  _getPixelPerImage(viewport: any): number;
12
16
  }
13
17
  export default StackScrollTool;
@@ -1,6 +1,13 @@
1
- import { getEnabledElementByIds, getEnabledElement, VolumeViewport, } from '@cornerstonejs/core';
1
+ import { getEnabledElementByIds, getEnabledElement, VolumeViewport, BaseVolumeViewport, } from '@cornerstonejs/core';
2
2
  import { BaseTool } from './base';
3
3
  import { scroll } from '../utilities';
4
+ import { mat4, vec3 } from 'gl-matrix';
5
+ const DIRECTIONS = {
6
+ X: [1, 0, 0],
7
+ Y: [0, 1, 0],
8
+ Z: [0, 0, 1],
9
+ CUSTOM: [],
10
+ };
4
11
  class StackScrollTool extends BaseTool {
5
12
  constructor(toolProps = {}, defaultToolProps = {
6
13
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -8,25 +15,23 @@ class StackScrollTool extends BaseTool {
8
15
  invert: false,
9
16
  debounceIfNotLoaded: true,
10
17
  loop: false,
18
+ rotate: {
19
+ enabled: false,
20
+ direction: DIRECTIONS.Z,
21
+ rotateIncrementDegrees: 30,
22
+ },
11
23
  },
12
24
  }) {
13
25
  super(toolProps, defaultToolProps);
14
26
  this.deltaY = 1;
15
27
  }
16
28
  mouseWheelCallback(evt) {
17
- const { wheel, element } = evt.detail;
18
- const { direction } = wheel;
19
- const { invert } = this.configuration;
20
- const { viewport } = getEnabledElement(element);
21
- const delta = direction * (invert ? -1 : 1);
22
- const volumeId = this.getTargetVolumeId(viewport);
23
- scroll(viewport, {
24
- delta,
25
- debounceLoading: this.configuration.debounceIfNotLoaded,
26
- loop: this.configuration.loop,
27
- volumeId,
28
- scrollSlabs: this.configuration.scrollSlabs,
29
- });
29
+ if (this.configuration.rotate.enabled) {
30
+ this._rotate(evt);
31
+ }
32
+ else {
33
+ this._scroll(evt);
34
+ }
30
35
  }
31
36
  mouseDragCallback(evt) {
32
37
  this._dragCallback(evt);
@@ -35,13 +40,51 @@ class StackScrollTool extends BaseTool {
35
40
  this._dragCallback(evt);
36
41
  }
37
42
  _dragCallback(evt) {
43
+ if (this.configuration.rotate.enabled) {
44
+ this._rotateDrag(evt);
45
+ }
46
+ else {
47
+ this._scrollDrag(evt);
48
+ }
49
+ }
50
+ _rotateDrag(evt) {
51
+ const { deltaPoints, element } = evt.detail;
52
+ const enabledElement = getEnabledElement(element);
53
+ const { viewport } = enabledElement;
54
+ const { direction, rotateIncrementDegrees } = this.configuration.rotate;
55
+ const camera = viewport.getCamera();
56
+ const { viewUp, position, focalPoint } = camera;
57
+ const deltaY = deltaPoints.canvas[1];
58
+ const [cx, cy, cz] = focalPoint;
59
+ const [ax, ay, az] = direction;
60
+ const angle = (deltaY * (rotateIncrementDegrees * Math.PI)) / 180;
61
+ const newPosition = [0, 0, 0];
62
+ const newFocalPoint = [0, 0, 0];
63
+ const newViewUp = [0, 0, 0];
64
+ const transform = mat4.identity(new Float32Array(16));
65
+ mat4.translate(transform, transform, [cx, cy, cz]);
66
+ mat4.rotate(transform, transform, angle, [ax, ay, az]);
67
+ mat4.translate(transform, transform, [-cx, -cy, -cz]);
68
+ vec3.transformMat4(newPosition, position, transform);
69
+ vec3.transformMat4(newFocalPoint, focalPoint, transform);
70
+ mat4.identity(transform);
71
+ mat4.rotate(transform, transform, angle, [ax, ay, az]);
72
+ vec3.transformMat4(newViewUp, viewUp, transform);
73
+ viewport.setCamera({
74
+ position: newPosition,
75
+ viewUp: newViewUp,
76
+ focalPoint: newFocalPoint,
77
+ });
78
+ viewport.render();
79
+ }
80
+ _scrollDrag(evt) {
38
81
  const { deltaPoints, viewportId, renderingEngineId } = evt.detail;
39
82
  const { viewport } = getEnabledElementByIds(viewportId, renderingEngineId);
40
83
  const { debounceIfNotLoaded, invert, loop } = this.configuration;
41
84
  const deltaPointY = deltaPoints.canvas[1];
42
85
  let volumeId;
43
86
  if (viewport instanceof VolumeViewport) {
44
- volumeId = this.getTargetVolumeId(viewport);
87
+ volumeId = viewport.getVolumeId();
45
88
  }
46
89
  const pixelsPerImage = this._getPixelPerImage(viewport);
47
90
  const deltaY = deltaPointY + this.deltaY;
@@ -62,6 +105,52 @@ class StackScrollTool extends BaseTool {
62
105
  this.deltaY = deltaY;
63
106
  }
64
107
  }
108
+ _rotate(evt) {
109
+ const { element, wheel } = evt.detail;
110
+ const enabledElement = getEnabledElement(element);
111
+ const { viewport } = enabledElement;
112
+ const { direction, rotateIncrementDegrees } = this.configuration.rotate;
113
+ const camera = viewport.getCamera();
114
+ const { viewUp, position, focalPoint } = camera;
115
+ const { direction: deltaY } = wheel;
116
+ const [cx, cy, cz] = focalPoint;
117
+ const [ax, ay, az] = direction;
118
+ const angle = (deltaY * (rotateIncrementDegrees * Math.PI)) / 180;
119
+ const newPosition = [0, 0, 0];
120
+ const newFocalPoint = [0, 0, 0];
121
+ const newViewUp = [0, 0, 0];
122
+ const transform = mat4.identity(new Float32Array(16));
123
+ mat4.translate(transform, transform, [cx, cy, cz]);
124
+ mat4.rotate(transform, transform, angle, [ax, ay, az]);
125
+ mat4.translate(transform, transform, [-cx, -cy, -cz]);
126
+ vec3.transformMat4(newPosition, position, transform);
127
+ vec3.transformMat4(newFocalPoint, focalPoint, transform);
128
+ mat4.identity(transform);
129
+ mat4.rotate(transform, transform, angle, [ax, ay, az]);
130
+ vec3.transformMat4(newViewUp, viewUp, transform);
131
+ viewport.setCamera({
132
+ position: newPosition,
133
+ viewUp: newViewUp,
134
+ focalPoint: newFocalPoint,
135
+ });
136
+ viewport.render();
137
+ }
138
+ _scroll(evt) {
139
+ const { wheel, element } = evt.detail;
140
+ const { direction } = wheel;
141
+ const { invert } = this.configuration;
142
+ const { viewport } = getEnabledElement(element);
143
+ const delta = direction * (invert ? -1 : 1);
144
+ scroll(viewport, {
145
+ delta,
146
+ debounceLoading: this.configuration.debounceIfNotLoaded,
147
+ loop: this.configuration.loop,
148
+ volumeId: viewport instanceof BaseVolumeViewport
149
+ ? viewport.getVolumeId()
150
+ : undefined,
151
+ scrollSlabs: this.configuration.scrollSlabs,
152
+ });
153
+ }
65
154
  _getPixelPerImage(viewport) {
66
155
  const { element } = viewport;
67
156
  const numberOfSlices = viewport.getNumberOfSlices();
@@ -47,8 +47,9 @@ class WindowLevelTool extends BaseTool {
47
47
  let isPreScaled = false;
48
48
  const properties = viewport.getProperties();
49
49
  if (viewport instanceof VolumeViewport) {
50
- volumeId = this.getTargetVolumeId(viewport);
51
- viewportsContainingVolumeUID = utilities.getViewportsWithVolumeId(volumeId, renderingEngine.id);
50
+ volumeId = viewport.getVolumeId();
51
+ viewportsContainingVolumeUID =
52
+ utilities.getViewportsWithVolumeId(volumeId);
52
53
  ({ lower, upper } = properties.voiRange);
53
54
  const volume = cache.getVolume(volumeId);
54
55
  if (!volume) {
@@ -418,7 +418,7 @@ class AngleTool extends AnnotationTool {
418
418
  for (let i = 0; i < targetIds.length; i++) {
419
419
  const targetId = targetIds[i];
420
420
  const angle = angleBetweenLines([worldPos1, worldPos2], [worldPos2, worldPos3]);
421
- const { dimensions, imageData } = this.getTargetIdImage(targetId, renderingEngine);
421
+ const { dimensions, imageData } = this.getTargetImageData(targetId);
422
422
  this.isHandleOutsideImage = [worldPos1, worldPos2, worldPos3]
423
423
  .map((worldPos) => csUtils.transformWorldToIndex(imageData, worldPos))
424
424
  .some((index) => !csUtils.indexWithinDimensions(index, dimensions));
@@ -597,7 +597,7 @@ class BidirectionalTool extends AnnotationTool {
597
597
  const targetIds = Object.keys(cachedStats);
598
598
  for (let i = 0; i < targetIds.length; i++) {
599
599
  const targetId = targetIds[i];
600
- const image = this.getTargetIdImage(targetId, renderingEngine);
600
+ const image = this.getTargetImageData(targetId);
601
601
  if (!image) {
602
602
  continue;
603
603
  }
@@ -468,7 +468,7 @@ class CircleROITool extends AnnotationTool {
468
468
  const worldPos2 = bottomRightWorld;
469
469
  for (let i = 0; i < targetIds.length; i++) {
470
470
  const targetId = targetIds[i];
471
- const image = this.getTargetIdImage(targetId, renderingEngine);
471
+ const image = this.getTargetImageData(targetId);
472
472
  if (!image) {
473
473
  continue;
474
474
  }
@@ -548,7 +548,7 @@ class EllipticalROITool extends AnnotationTool {
548
548
  const worldPos2 = bottomRightWorld;
549
549
  for (let i = 0; i < targetIds.length; i++) {
550
550
  const targetId = targetIds[i];
551
- const image = this.getTargetIdImage(targetId, renderingEngine);
551
+ const image = this.getTargetImageData(targetId);
552
552
  if (!image) {
553
553
  continue;
554
554
  }
@@ -395,7 +395,7 @@ class HeightTool extends AnnotationTool {
395
395
  const targetIds = Object.keys(cachedStats);
396
396
  for (let i = 0; i < targetIds.length; i++) {
397
397
  const targetId = targetIds[i];
398
- const image = this.getTargetIdImage(targetId, renderingEngine);
398
+ const image = this.getTargetImageData(targetId);
399
399
  if (!image) {
400
400
  continue;
401
401
  }
@@ -386,7 +386,7 @@ class LengthTool extends AnnotationTool {
386
386
  const targetIds = Object.keys(cachedStats);
387
387
  for (let i = 0; i < targetIds.length; i++) {
388
388
  const targetId = targetIds[i];
389
- const image = this.getTargetIdImage(targetId, renderingEngine);
389
+ const image = this.getTargetImageData(targetId);
390
390
  if (!image) {
391
391
  continue;
392
392
  }
@@ -319,7 +319,7 @@ class LivewireContourTool extends ContourSegmentationBaseTool {
319
319
  const targetIds = Object.keys(cachedStats);
320
320
  for (let i = 0; i < targetIds.length; i++) {
321
321
  const targetId = targetIds[i];
322
- const image = this.getTargetIdImage(targetId, renderingEngine);
322
+ const image = this.getTargetImageData(targetId);
323
323
  if (!image) {
324
324
  continue;
325
325
  }
@@ -414,8 +414,7 @@ class LivewireContourTool extends ContourSegmentationBaseTool {
414
414
  let width;
415
415
  let height;
416
416
  let scalarData;
417
- if (!(viewport instanceof VolumeViewport) && scalarData) {
418
- ({ scalarData } = viewportImageData);
417
+ if (!(viewport instanceof VolumeViewport)) {
419
418
  width = viewportImageData.dimensions[0];
420
419
  height = viewportImageData.dimensions[1];
421
420
  worldToSlice = (point) => {
@@ -423,6 +422,7 @@ class LivewireContourTool extends ContourSegmentationBaseTool {
423
422
  return [ijkPoint[0], ijkPoint[1]];
424
423
  };
425
424
  sliceToWorld = (point) => csUtils.transformIndexToWorld(vtkImageData, [point[0], point[1], 0]);
425
+ scalarData = viewportImageData.scalarData;
426
426
  }
427
427
  else if (viewport instanceof VolumeViewport) {
428
428
  const sliceImageData = csUtils.getCurrentVolumeViewportSlice(viewport);
@@ -138,7 +138,7 @@ class PlanarFreehandROITool extends ContourSegmentationBaseTool {
138
138
  const targetIds = Object.keys(cachedStats);
139
139
  for (let i = 0; i < targetIds.length; i++) {
140
140
  const targetId = targetIds[i];
141
- const image = this.getTargetIdImage(targetId, renderingEngine);
141
+ const image = this.getTargetImageData(targetId);
142
142
  if (!image) {
143
143
  continue;
144
144
  }
@@ -260,7 +260,7 @@ class ProbeTool extends AnnotationTool {
260
260
  isPreScaled: isViewportPreScaled(viewport, targetId),
261
261
  isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
262
262
  };
263
- const image = this.getTargetIdImage(targetId, renderingEngine);
263
+ const image = this.getTargetImageData(targetId);
264
264
  if (!image) {
265
265
  continue;
266
266
  }
@@ -274,7 +274,7 @@ class ProbeTool extends AnnotationTool {
274
274
  if (targetId.startsWith('imageId:')) {
275
275
  const imageId = targetId.split('imageId:')[1];
276
276
  const imageURI = csUtils.imageIdToURI(imageId);
277
- const viewports = csUtils.getViewportsWithImageURI(imageURI, renderingEngineId);
277
+ const viewports = csUtils.getViewportsWithImageURI(imageURI);
278
278
  const viewport = viewports[0];
279
279
  ijk[2] = viewport.getCurrentImageIdIndex();
280
280
  }
@@ -459,7 +459,7 @@ class RectangleROITool extends AnnotationTool {
459
459
  const targetIds = Object.keys(cachedStats);
460
460
  for (let i = 0; i < targetIds.length; i++) {
461
461
  const targetId = targetIds[i];
462
- const image = this.getTargetIdImage(targetId, renderingEngine);
462
+ const image = this.getTargetImageData(targetId);
463
463
  if (!image) {
464
464
  continue;
465
465
  }
@@ -160,8 +160,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
160
160
  this._deactivateDraw(element);
161
161
  resetElementCursor(element);
162
162
  const enabledElement = getEnabledElement(element);
163
- const { renderingEngine } = enabledElement;
164
- const image = this.getTargetIdImage(this.getTargetId(enabledElement.viewport), enabledElement.renderingEngine);
163
+ const image = this.getTargetImageData(this.getTargetId(enabledElement.viewport));
165
164
  const { imageData, dimensions } = image;
166
165
  this.isHandleOutsideImage = data.handles.points
167
166
  .map((p) => utilities.transformWorldToIndex(imageData, p))
@@ -433,7 +432,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
433
432
  const targetIds = Object.keys(cachedStats);
434
433
  for (let i = 0; i < targetIds.length; i++) {
435
434
  const targetId = targetIds[i];
436
- const image = this.getTargetIdImage(targetId, renderingEngine);
435
+ const image = this.getTargetImageData(targetId);
437
436
  if (!image) {
438
437
  continue;
439
438
  }
@@ -389,7 +389,7 @@ class UltrasoundDirectionalTool extends AnnotationTool {
389
389
  const targetIds = Object.keys(cachedStats);
390
390
  for (let i = 0; i < targetIds.length; i++) {
391
391
  const targetId = targetIds[i];
392
- const image = this.getTargetIdImage(targetId, renderingEngine);
392
+ const image = this.getTargetImageData(targetId);
393
393
  if (!image) {
394
394
  continue;
395
395
  }
@@ -14,8 +14,7 @@ declare abstract class BaseTool {
14
14
  applyActiveStrategyCallback(enabledElement: Types.IEnabledElement, operationData: unknown, callbackType: StrategyCallbacks | string): any;
15
15
  setConfiguration(newConfiguration: Record<string, any>): void;
16
16
  setActiveStrategy(strategyName: string): void;
17
- protected getTargetVolumeId(viewport: Types.IViewport): string | undefined;
18
- protected getTargetIdImage(targetId: string, renderingEngine: Types.IRenderingEngine): Types.IImageData | Types.CPUIImageData | Types.IImageVolume;
17
+ protected getTargetImageData(targetId: string): Types.IImageData | Types.CPUIImageData;
19
18
  protected getTargetId(viewport: Types.IViewport): string | undefined;
20
19
  }
21
20
  export default BaseTool;
@@ -35,21 +35,11 @@ class BaseTool {
35
35
  setActiveStrategy(strategyName) {
36
36
  this.setConfiguration({ activeStrategy: strategyName });
37
37
  }
38
- getTargetVolumeId(viewport) {
39
- if (this.configuration.volumeId) {
40
- return this.configuration.volumeId;
41
- }
42
- const actorEntries = viewport.getActors();
43
- if (!actorEntries) {
44
- return;
45
- }
46
- return actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')?.uid;
47
- }
48
- getTargetIdImage(targetId, renderingEngine) {
38
+ getTargetImageData(targetId) {
49
39
  if (targetId.startsWith('imageId:')) {
50
40
  const imageId = targetId.split('imageId:')[1];
51
41
  const imageURI = utilities.imageIdToURI(imageId);
52
- let viewports = utilities.getViewportsWithImageURI(imageURI, renderingEngine.id);
42
+ let viewports = utilities.getViewportsWithImageURI(imageURI);
53
43
  if (!viewports || !viewports.length) {
54
44
  return;
55
45
  }
@@ -63,7 +53,7 @@ class BaseTool {
63
53
  }
64
54
  else if (targetId.startsWith('volumeId:')) {
65
55
  const volumeId = utilities.getVolumeId(targetId);
66
- const viewports = utilities.getViewportsWithVolumeId(volumeId, renderingEngine.id);
56
+ const viewports = utilities.getViewportsWithVolumeId(volumeId);
67
57
  if (!viewports || !viewports.length) {
68
58
  return;
69
59
  }
@@ -71,7 +61,7 @@ class BaseTool {
71
61
  }
72
62
  else if (targetId.startsWith('videoId:')) {
73
63
  const imageURI = utilities.imageIdToURI(targetId);
74
- const viewports = utilities.getViewportsWithImageURI(imageURI, renderingEngine.id);
64
+ const viewports = utilities.getViewportsWithImageURI(imageURI);
75
65
  if (!viewports || !viewports.length) {
76
66
  return;
77
67
  }
@@ -86,10 +76,7 @@ class BaseTool {
86
76
  if (targetId) {
87
77
  return targetId;
88
78
  }
89
- if (viewport instanceof BaseVolumeViewport) {
90
- return `volumeId:${this.getTargetVolumeId(viewport)}`;
91
- }
92
- throw new Error('getTargetId: viewport must have a getReferenceId method');
79
+ throw new Error('getTargetId: viewport must have a getViewReferenceId method');
93
80
  }
94
81
  }
95
82
  BaseTool.toolName = 'BaseTool';
@@ -1,5 +1,4 @@
1
1
  import { getEnabledElement, utilities } from '@cornerstonejs/core';
2
- import { getGlobalConfig, getSegmentationRepresentationConfig, getSegmentIndexConfig, } from '../../stateManagement/segmentation/config/segmentationConfig';
3
2
  import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
4
3
  import { SegmentationRepresentations } from '../../enums';
5
4
  import ContourBaseTool from './ContourBaseTool';
@@ -9,14 +8,14 @@ import { addContourSegmentationAnnotation, removeContourSegmentationAnnotation,
9
8
  import { triggerAnnotationRenderForToolGroupIds } from '../../utilities/triggerAnnotationRenderForToolGroupIds';
10
9
  import { getToolGroupForViewport } from '../../store/ToolGroupManager';
11
10
  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';
11
+ import { getSegmentationRepresentations } from '../../stateManagement/segmentation/getSegmentationRepresentation';
12
+ import { getActiveSegmentation } from '../../stateManagement/segmentation/getActiveSegmentation';
15
13
  import { getSegmentationRepresentationVisibility } from '../../stateManagement/segmentation/getSegmentationRepresentationVisibility';
16
14
  import { getViewportIdsWithSegmentation } from '../../stateManagement/segmentation/getViewportIdsWithSegmentation';
17
15
  import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
18
16
  import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
19
17
  import { getSegmentIndexVisibility } from '../../stateManagement/segmentation/config/segmentationVisibility';
18
+ import { segmentationStyle } from '../../stateManagement/segmentation/SegmentationStyle';
20
19
  class ContourSegmentationBaseTool extends ContourBaseTool {
21
20
  constructor(toolProps, defaultToolProps) {
22
21
  super(toolProps, defaultToolProps);
@@ -39,12 +38,11 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
39
38
  if (!this.isContourSegmentationTool()) {
40
39
  return contourAnnotation;
41
40
  }
42
- const activeSeg = getActiveSegmentationRepresentation(viewport.id);
41
+ const activeSeg = getActiveSegmentation(viewport.id);
43
42
  if (!activeSeg) {
44
43
  throw new Error('No active segmentation detected, create one before using scissors tool');
45
44
  }
46
- const { type: segmentationType } = activeSeg;
47
- if (segmentationType !== SegmentationRepresentations.Contour) {
45
+ if (!activeSeg.representationData.Contour) {
48
46
  throw new Error(`A contour segmentation must be active`);
49
47
  }
50
48
  const { segmentationId } = activeSeg;
@@ -100,35 +98,36 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
100
98
  const annotation = context.annotation;
101
99
  const { segmentationId, segmentIndex } = annotation.data.segmentation;
102
100
  const segmentation = getSegmentation(segmentationId);
103
- const segmentationRepresentations = getSegmentationRepresentationsForSegmentation(segmentationId);
101
+ const { viewportId } = context.styleSpecifier;
102
+ const segmentationRepresentations = getSegmentationRepresentations(viewportId, { segmentationId });
104
103
  if (!segmentationRepresentations?.length) {
105
104
  return {};
106
105
  }
107
- const allUIDs = segmentationRepresentations.map((rep) => rep.segmentationRepresentationUID);
108
106
  let segmentationRepresentation;
109
107
  if (segmentationRepresentations.length > 1) {
110
- const viewportReps = getSegmentationRepresentations(context.styleSpecifier.viewportId);
111
- segmentationRepresentation = viewportReps.find((rep) => rep.segmentationId === segmentationId &&
112
- allUIDs.includes(rep.segmentationRepresentationUID));
108
+ segmentationRepresentation = segmentationRepresentations.find((rep) => rep.segmentationId === segmentationId &&
109
+ rep.type === SegmentationRepresentations.Contour);
113
110
  }
114
111
  else {
115
112
  segmentationRepresentation = segmentationRepresentations[0];
116
113
  }
117
- const { segmentationRepresentationUID } = segmentationRepresentation;
118
114
  const { autoGenerated } = annotation;
119
115
  const segmentsLocked = getLockedSegmentIndices(segmentationId);
120
116
  const annotationLocked = segmentsLocked.includes(segmentIndex);
121
- const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
122
- const viewportId = context.styleSpecifier.viewportId;
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);
128
- const activeSegRep = getActiveSegmentationRepresentation(viewportId);
129
- const isActive = activeSegRep.segmentationRepresentationUID ===
130
- segmentationRepresentationUID;
131
- const mergedConfig = Object.assign({}, globalConfig?.representations?.Contour ?? {}, segmentationRepresentationConfig ?? {}, segmentConfig ?? {});
117
+ const segmentColor = getSegmentIndexColor(context.styleSpecifier.viewportId, segmentationId, segmentIndex);
118
+ const segmentationVisible = getSegmentationRepresentationVisibility(viewportId, {
119
+ segmentationId,
120
+ type: SegmentationRepresentations.Contour,
121
+ });
122
+ const activeSegmentation = getActiveSegmentation(viewportId);
123
+ const isActive = activeSegmentation?.segmentationId === segmentationId;
124
+ const { style } = segmentationStyle.getStyle({
125
+ viewportId,
126
+ segmentationId,
127
+ type: SegmentationRepresentations.Contour,
128
+ segmentIndex,
129
+ });
130
+ const mergedConfig = style;
132
131
  let lineWidth = 1;
133
132
  let lineDash = undefined;
134
133
  let lineOpacity = 1;
@@ -167,7 +166,11 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
167
166
  textbox: {
168
167
  color,
169
168
  },
170
- visibility: segmentationVisible && segmentVisible,
169
+ visibility: segmentationVisible &&
170
+ getSegmentIndexVisibility(viewportId, {
171
+ segmentationId,
172
+ type: SegmentationRepresentations.Contour,
173
+ }, segmentIndex),
171
174
  locked: annotationLocked,
172
175
  };
173
176
  }
@@ -1,3 +1,3 @@
1
- import type { ContourConfig } from '../../../types/ContourTypes';
2
- declare function getDefaultContourConfig(): ContourConfig;
3
- export default getDefaultContourConfig;
1
+ import type { ContourStyle } from '../../../types/ContourTypes';
2
+ declare function getDefaultContourStyle(): ContourStyle;
3
+ export default getDefaultContourStyle;
@@ -14,7 +14,7 @@ const defaultContourConfig = {
14
14
  fillAlphaInactive: 0.3,
15
15
  fillAlphaAutoGenerated: 0.3,
16
16
  };
17
- function getDefaultContourConfig() {
17
+ function getDefaultContourStyle() {
18
18
  return defaultContourConfig;
19
19
  }
20
- export default getDefaultContourConfig;
20
+ export default getDefaultContourStyle;
@@ -1,6 +1,6 @@
1
1
  import type { StackViewport, Types } from '@cornerstonejs/core';
2
2
  import type { ContourRepresentation } from '../../../types/SegmentationStateTypes';
3
- declare function removeRepresentation(viewportId: string, segmentationRepresentationUID: string, renderImmediate?: boolean): void;
3
+ declare function removeRepresentation(viewportId: string, segmentationId: string, renderImmediate?: boolean): void;
4
4
  declare function render(viewport: StackViewport | Types.IVolumeViewport, contourRepresentation: ContourRepresentation): Promise<void>;
5
5
  declare const _default: {
6
6
  render: typeof render;