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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/dist/esm/eventListeners/index.d.ts +2 -2
  2. package/dist/esm/eventListeners/index.js +2 -2
  3. package/dist/esm/eventListeners/mouse/mouseDownListener.js +8 -0
  4. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +18 -12
  5. package/dist/esm/eventListeners/segmentation/index.d.ts +1 -3
  6. package/dist/esm/eventListeners/segmentation/index.js +1 -3
  7. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +13 -10
  8. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -3
  9. package/dist/esm/index.d.ts +2 -2
  10. package/dist/esm/index.js +2 -2
  11. package/dist/esm/init.js +1 -5
  12. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +2 -0
  13. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +6 -5
  14. package/dist/esm/stateManagement/annotation/annotationState.js +11 -2
  15. package/dist/esm/stateManagement/index.d.ts +1 -4
  16. package/dist/esm/stateManagement/index.js +1 -3
  17. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +9 -6
  18. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +43 -25
  19. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +207 -162
  20. package/dist/esm/stateManagement/segmentation/SegmentationStyle.d.ts +42 -0
  21. package/dist/esm/stateManagement/segmentation/SegmentationStyle.js +162 -0
  22. package/dist/esm/stateManagement/segmentation/activeSegmentation.d.ts +4 -5
  23. package/dist/esm/stateManagement/segmentation/activeSegmentation.js +10 -14
  24. package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -2
  25. package/dist/esm/stateManagement/segmentation/addColorLUT.js +15 -1
  26. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.d.ts +15 -0
  27. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.js +49 -0
  28. package/dist/esm/stateManagement/segmentation/addSegmentations.d.ts +1 -1
  29. package/dist/esm/stateManagement/segmentation/addSegmentations.js +11 -7
  30. package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
  31. package/dist/esm/stateManagement/segmentation/config/index.js +2 -2
  32. package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +4 -4
  33. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +24 -24
  34. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +22 -7
  35. package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +29 -29
  36. package/dist/esm/stateManagement/segmentation/config/styleHelpers.d.ts +39 -0
  37. package/dist/esm/stateManagement/segmentation/config/styleHelpers.js +48 -0
  38. package/dist/esm/stateManagement/segmentation/getActiveSegmentation.d.ts +2 -0
  39. package/dist/esm/stateManagement/segmentation/{getGlobalConfig.js → getActiveSegmentation.js} +2 -2
  40. package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -1
  41. package/dist/esm/stateManagement/segmentation/getGlobalStyle.d.ts +3 -0
  42. package/dist/esm/stateManagement/segmentation/getGlobalStyle.js +4 -0
  43. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +9 -1
  44. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +10 -2
  45. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +5 -1
  46. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +2 -2
  47. package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +5 -5
  48. package/dist/esm/stateManagement/segmentation/getViewportSegmentations.d.ts +3 -0
  49. package/dist/esm/stateManagement/segmentation/getViewportSegmentations.js +15 -0
  50. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.d.ts +1 -0
  51. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.js +31 -0
  52. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.d.ts +1 -2
  53. package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +4 -6
  54. package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.d.ts → helpers/computeStackLabelmapFromVolume.d.ts} +2 -2
  55. package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.js → helpers/computeStackLabelmapFromVolume.js} +8 -5
  56. package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.d.ts +3 -0
  57. package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.js +4 -0
  58. package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.d.ts +1 -0
  59. package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.js +7 -0
  60. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.d.ts +8 -0
  61. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.js +27 -0
  62. package/dist/esm/stateManagement/segmentation/helpers/index.d.ts +2 -1
  63. package/dist/esm/stateManagement/segmentation/helpers/index.js +2 -1
  64. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +4 -6
  65. package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +1 -1
  66. package/dist/esm/stateManagement/segmentation/index.d.ts +14 -7
  67. package/dist/esm/stateManagement/segmentation/index.js +14 -7
  68. package/dist/esm/stateManagement/segmentation/{addRepresentationData.d.ts → internalAddRepresentationData.d.ts} +2 -2
  69. package/dist/esm/stateManagement/segmentation/{addRepresentationData.js → internalAddRepresentationData.js} +5 -2
  70. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.d.ts +1 -1
  71. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.js +18 -58
  72. package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +9 -10
  73. package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/extractContourData.js +8 -5
  74. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +9 -2
  75. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +2 -2
  76. package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +4 -6
  77. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +1 -1
  78. package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +4 -4
  79. package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +1 -7
  80. package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +1 -3
  81. package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +9 -8
  82. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -1
  83. package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -9
  84. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +1 -1
  85. package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +7 -5
  86. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.d.ts +14 -2
  87. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +69 -19
  88. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +6 -18
  89. package/dist/esm/stateManagement/segmentation/segmentationState.js +9 -18
  90. package/dist/esm/stateManagement/segmentation/setActiveSegmentation.d.ts +1 -0
  91. package/dist/esm/stateManagement/segmentation/setActiveSegmentation.js +5 -0
  92. package/dist/esm/stateManagement/segmentation/setGlobalStyle.d.ts +3 -0
  93. package/dist/esm/stateManagement/segmentation/setGlobalStyle.js +8 -0
  94. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +5 -1
  95. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +2 -2
  96. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +1 -3
  97. package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +1 -3
  98. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -1
  99. package/dist/esm/store/ToolGroupManager/ToolGroup.js +23 -9
  100. package/dist/esm/store/ToolGroupManager/createToolGroup.d.ts +1 -1
  101. package/dist/esm/store/ToolGroupManager/createToolGroup.js +3 -3
  102. package/dist/esm/tools/AdvancedMagnifyTool.js +1 -1
  103. package/dist/esm/tools/CrosshairsTool.js +1 -2
  104. package/dist/esm/tools/MIPJumpToClickTool.js +1 -1
  105. package/dist/esm/tools/ReferenceLinesTool.js +5 -2
  106. package/dist/esm/tools/StackScrollTool.d.ts +4 -0
  107. package/dist/esm/tools/StackScrollTool.js +104 -15
  108. package/dist/esm/tools/WindowLevelTool.js +3 -2
  109. package/dist/esm/tools/annotation/AngleTool.js +1 -1
  110. package/dist/esm/tools/annotation/BidirectionalTool.js +1 -1
  111. package/dist/esm/tools/annotation/CircleROITool.js +1 -1
  112. package/dist/esm/tools/annotation/EllipticalROITool.js +1 -1
  113. package/dist/esm/tools/annotation/HeightTool.js +1 -1
  114. package/dist/esm/tools/annotation/LengthTool.js +1 -1
  115. package/dist/esm/tools/annotation/LivewireContourTool.js +3 -3
  116. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +1 -1
  117. package/dist/esm/tools/annotation/ProbeTool.js +2 -2
  118. package/dist/esm/tools/annotation/RectangleROITool.js +1 -1
  119. package/dist/esm/tools/annotation/SplineROITool.js +2 -3
  120. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +1 -1
  121. package/dist/esm/tools/base/BaseTool.d.ts +1 -2
  122. package/dist/esm/tools/base/BaseTool.js +5 -18
  123. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +28 -25
  124. package/dist/esm/tools/displayTools/Contour/contourConfig.d.ts +3 -3
  125. package/dist/esm/tools/displayTools/Contour/contourConfig.js +2 -2
  126. package/dist/esm/tools/displayTools/Contour/contourDisplay.d.ts +1 -1
  127. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -7
  128. package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +26 -57
  129. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.d.ts +1 -1
  130. package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js +2 -4
  131. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +1 -1
  132. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +39 -10
  133. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.d.ts +3 -5
  134. package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +3 -16
  135. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -1
  136. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +86 -90
  137. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.d.ts +1 -1
  138. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -2
  139. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +1 -1
  140. package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +3 -3
  141. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.d.ts +2 -2
  142. package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.js +5 -3
  143. package/dist/esm/tools/displayTools/Surface/surfaceConfig.d.ts +3 -3
  144. package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +2 -2
  145. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.d.ts +1 -1
  146. package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +7 -8
  147. package/dist/esm/tools/index.d.ts +1 -2
  148. package/dist/esm/tools/index.js +1 -2
  149. package/dist/esm/tools/segmentation/BrushTool.d.ts +0 -4
  150. package/dist/esm/tools/segmentation/BrushTool.js +23 -22
  151. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +2 -2
  152. package/dist/esm/tools/segmentation/CircleScissorsTool.d.ts +1 -1
  153. package/dist/esm/tools/segmentation/CircleScissorsTool.js +11 -10
  154. package/dist/esm/tools/segmentation/PaintFillTool.js +5 -7
  155. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +2 -2
  156. package/dist/esm/tools/segmentation/RectangleScissorsTool.d.ts +0 -1
  157. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +9 -10
  158. package/dist/esm/tools/segmentation/SegmentSelectTool.d.ts +2 -2
  159. package/dist/esm/tools/segmentation/SegmentSelectTool.js +17 -26
  160. package/dist/esm/tools/segmentation/SphereScissorsTool.d.ts +0 -1
  161. package/dist/esm/tools/segmentation/SphereScissorsTool.js +6 -9
  162. package/dist/esm/tools/segmentation/strategies/BrushStrategy.d.ts +2 -0
  163. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +2 -0
  164. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +1 -2
  165. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +1 -1
  166. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +3 -3
  167. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +4 -4
  168. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +1 -1
  169. package/dist/esm/tools/segmentation/strategies/fillCircle.js +3 -3
  170. package/dist/esm/tools/segmentation/strategies/fillSphere.js +3 -3
  171. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +21 -6
  172. package/dist/esm/types/AnnotationGroupSelector.js +0 -1
  173. package/dist/esm/types/AnnotationRenderContext.js +0 -1
  174. package/dist/esm/types/AnnotationStyle.js +0 -1
  175. package/dist/esm/types/AnnotationTypes.js +0 -1
  176. package/dist/esm/types/BoundsIJK.js +0 -1
  177. package/dist/esm/types/CINETypes.js +0 -1
  178. package/dist/esm/types/CalculatorTypes.js +0 -1
  179. package/dist/esm/types/CardinalSplineProps.js +0 -1
  180. package/dist/esm/types/ClosestControlPoint.js +0 -1
  181. package/dist/esm/types/ClosestPoint.js +0 -1
  182. package/dist/esm/types/ClosestSplinePoint.js +0 -1
  183. package/dist/esm/types/ContourSegmentationAnnotation.js +0 -1
  184. package/dist/esm/types/ContourTypes.d.ts +1 -2
  185. package/dist/esm/types/ContourTypes.js +0 -1
  186. package/dist/esm/types/ControlPointInfo.js +0 -1
  187. package/dist/esm/types/CursorTypes.js +0 -1
  188. package/dist/esm/types/EventTypes.d.ts +2 -2
  189. package/dist/esm/types/EventTypes.js +0 -1
  190. package/dist/esm/types/FloodFillTypes.js +0 -1
  191. package/dist/esm/types/IAnnotationManager.js +0 -1
  192. package/dist/esm/types/IBaseTool.js +0 -1
  193. package/dist/esm/types/IDistance.js +0 -1
  194. package/dist/esm/types/IPoints.js +0 -1
  195. package/dist/esm/types/ISculptToolShape.js +0 -1
  196. package/dist/esm/types/ISetToolModeOptions.js +0 -1
  197. package/dist/esm/types/ISpline.js +0 -1
  198. package/dist/esm/types/ISynchronizerEventHandler.js +0 -1
  199. package/dist/esm/types/IToolClassReference.js +0 -1
  200. package/dist/esm/types/IToolGroup.js +0 -1
  201. package/dist/esm/types/ITouchPoints.js +0 -1
  202. package/dist/esm/types/InteractionTypes.js +0 -1
  203. package/dist/esm/types/InternalToolTypes.js +0 -1
  204. package/dist/esm/types/InterpolationTypes.js +0 -1
  205. package/dist/esm/types/JumpToSliceOptions.js +0 -1
  206. package/dist/esm/types/LabelmapToolOperationData.d.ts +0 -1
  207. package/dist/esm/types/LabelmapToolOperationData.js +0 -1
  208. package/dist/esm/types/LabelmapTypes.d.ts +3 -7
  209. package/dist/esm/types/LabelmapTypes.js +0 -1
  210. package/dist/esm/types/PlanarBoundingBox.js +0 -1
  211. package/dist/esm/types/PolySeg.d.ts +1 -1
  212. package/dist/esm/types/PolySeg.js +0 -1
  213. package/dist/esm/types/SVGDrawingHelper.js +0 -1
  214. package/dist/esm/types/ScrollOptions.js +0 -1
  215. package/dist/esm/types/SegmentationStateTypes.d.ts +35 -56
  216. package/dist/esm/types/SegmentationStateTypes.js +0 -1
  217. package/dist/esm/types/SplineCurveSegment.js +0 -1
  218. package/dist/esm/types/SplineLineSegment.js +0 -1
  219. package/dist/esm/types/SplineProps.js +0 -1
  220. package/dist/esm/types/SurfaceTypes.d.ts +1 -1
  221. package/dist/esm/types/SurfaceTypes.js +0 -1
  222. package/dist/esm/types/ToolAction.js +0 -1
  223. package/dist/esm/types/ToolHandle.js +0 -1
  224. package/dist/esm/types/ToolProps.js +0 -1
  225. package/dist/esm/types/ToolSpecificAnnotationTypes.js +0 -1
  226. package/dist/esm/types/index.d.ts +2 -2
  227. package/dist/esm/types/index.js +0 -1
  228. package/dist/esm/utilities/cine/playClip.js +1 -1
  229. package/dist/esm/utilities/contours/updateContourPolyline.js +3 -0
  230. package/dist/esm/utilities/index.d.ts +2 -1
  231. package/dist/esm/utilities/index.js +2 -1
  232. package/dist/esm/utilities/math/circle/_types.js +0 -1
  233. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.js +0 -1
  234. package/dist/esm/utilities/pointInSurroundingSphereCallback.d.ts +8 -0
  235. package/dist/esm/utilities/pointInSurroundingSphereCallback.js +71 -0
  236. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +2 -2
  237. package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.js +10 -9
  238. package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.js +9 -8
  239. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +14 -16
  240. package/dist/esm/utilities/segmentation/index.d.ts +1 -3
  241. package/dist/esm/utilities/segmentation/index.js +1 -3
  242. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +3 -0
  243. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +1 -1
  244. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +0 -1
  245. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +0 -1
  246. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +0 -1
  247. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +0 -1
  248. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +0 -1
  249. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +0 -1
  250. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +0 -1
  251. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +0 -1
  252. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +0 -1
  253. package/dist/esm/utilities/voi/colorbar/types/index.js +0 -1
  254. package/dist/esm/widgets/types/WidgetProps.js +0 -1
  255. package/dist/esm/widgets/types/WidgetSize.js +0 -1
  256. package/dist/esm/widgets/types/index.js +0 -1
  257. package/dist/esm/workers/polySegConverters.js +4 -3
  258. package/package.json +73 -20
  259. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.d.ts +0 -3
  260. package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +0 -14
  261. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.d.ts +0 -3
  262. package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +0 -8
  263. package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +0 -2
  264. package/dist/esm/stateManagement/segmentation/addSegmentation.js +0 -11
  265. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +0 -2
  266. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +0 -10
  267. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.d.ts +0 -8
  268. package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js +0 -19
  269. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +0 -14
  270. package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +0 -54
  271. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +0 -1
  272. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +0 -8
  273. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +0 -1
  274. package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +0 -8
  275. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +0 -2
  276. package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +0 -5
  277. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +0 -2
  278. package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +0 -6
  279. package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +0 -2
  280. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +0 -2
  281. package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +0 -5
  282. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +0 -2
  283. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +0 -5
  284. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +0 -7
  285. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +0 -6
  286. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +0 -2
  287. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +0 -12
  288. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +0 -2
  289. package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +0 -5
  290. package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +0 -1
  291. package/dist/esm/stateManagement/segmentation/removeRepresentation.js +0 -9
  292. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +0 -1
  293. package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +0 -9
  294. package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +0 -2
  295. package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +0 -9
  296. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +0 -2
  297. package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +0 -9
  298. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +0 -2
  299. package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +0 -9
  300. package/dist/esm/tools/VolumeRotateMouseWheelTool.d.ts +0 -9
  301. package/dist/esm/tools/VolumeRotateMouseWheelTool.js +0 -52
  302. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.d.ts +0 -9
  303. package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.js +0 -10
  304. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +0 -5
  305. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +0 -13
  306. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.d.ts +0 -2
  307. package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.js +0 -11
  308. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.d.ts +0 -2
  309. package/dist/esm/utilities/segmentation/isValidRepresentationConfig.js +0 -10
  310. package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
  311. package/dist/umd/78.index.js +0 -3
  312. package/dist/umd/78.index.js.LICENSE.txt +0 -5
  313. package/dist/umd/78.index.js.map +0 -1
  314. package/dist/umd/985.index.js +0 -2
  315. package/dist/umd/985.index.js.map +0 -1
  316. package/dist/umd/index.js +0 -3
  317. package/dist/umd/index.js.LICENSE.txt +0 -6
  318. package/dist/umd/index.js.map +0 -1
@@ -1 +0,0 @@
1
- export {};
@@ -22,7 +22,7 @@ import type ScrollOptions from './ScrollOptions';
22
22
  import type BoundsIJK from './BoundsIJK';
23
23
  import type SVGDrawingHelper from './SVGDrawingHelper';
24
24
  import type * as CINETypes from './CINETypes';
25
- import type { RepresentationConfig, RepresentationData, RepresentationsData, GlobalConfig, Segmentation, SegmentationState, RepresentationPublicInput } from './SegmentationStateTypes';
25
+ import type { RepresentationData, RepresentationsData, Segmentation, SegmentationState } from './SegmentationStateTypes';
26
26
  import type { ISculptToolShape } from './ISculptToolShape';
27
27
  import type ISynchronizerEventHandler from './ISynchronizerEventHandler';
28
28
  import type { FloodFillGetter, FloodFillOptions, FloodFillResult } from './FloodFillTypes';
@@ -47,4 +47,4 @@ import type { SplineProps } from './SplineProps';
47
47
  import type { BidirectionalData } from '../utilities/segmentation/createBidirectionalToolData';
48
48
  import type { PolySegConversionOptions } from './PolySeg';
49
49
  import type { IBaseTool } from './IBaseTool';
50
- export type { Annotation, Annotations, ContourAnnotationData, ContourAnnotation, ContourSegmentationAnnotationData, ContourSegmentationAnnotation, BidirectionalData, CanvasCoordinates, IAnnotationManager, InterpolationViewportData, ImageInterpolationData, GroupSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, AnnotationGroupSelector, AnnotationRenderContext, PlanarBoundingBox, ToolProps, PublicToolProps, ToolConfiguration, EventTypes, IPoints, ITouchPoints, IDistance, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, ToolAction, IToolGroup, IToolClassReference, ISynchronizerEventHandler, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, RepresentationData, RepresentationsData, RepresentationConfig, RepresentationPublicInput, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, BoundsIJK, SVGDrawingHelper, FloodFillResult, FloodFillGetter, FloodFillOptions, ContourSegmentationData, ISculptToolShape, Statistics, NamedStatistics, LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, CardinalSplineProps, ClosestControlPoint, ClosestPoint, ClosestSplinePoint, ControlPointInfo, ISpline, SplineCurveSegment, SplineLineSegment, SplineProps, PolySegConversionOptions, IBaseTool, GlobalConfig, };
50
+ export type { Annotation, Annotations, ContourAnnotationData, ContourAnnotation, ContourSegmentationAnnotationData, ContourSegmentationAnnotation, BidirectionalData, CanvasCoordinates, IAnnotationManager, InterpolationViewportData, ImageInterpolationData, GroupSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, AnnotationGroupSelector, AnnotationRenderContext, PlanarBoundingBox, ToolProps, PublicToolProps, ToolConfiguration, EventTypes, IPoints, ITouchPoints, IDistance, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, ToolAction, IToolGroup, IToolClassReference, ISynchronizerEventHandler, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, RepresentationData, RepresentationsData, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, BoundsIJK, SVGDrawingHelper, FloodFillResult, FloodFillGetter, FloodFillOptions, ContourSegmentationData, ISculptToolShape, Statistics, NamedStatistics, LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, CardinalSplineProps, ClosestControlPoint, ClosestPoint, ClosestSplinePoint, ControlPointInfo, ISpline, SplineCurveSegment, SplineLineSegment, SplineProps, PolySegConversionOptions, IBaseTool, };
@@ -1 +0,0 @@
1
- export {};
@@ -213,7 +213,7 @@ function _stopClipWithData(playClipData) {
213
213
  function _getVolumesFromViewport(viewport) {
214
214
  return viewport
215
215
  .getActors()
216
- .map((actor) => cache.getVolume(actor.uid))
216
+ .map((actor) => cache.getVolume(viewport.getVolumeId()))
217
217
  .filter((volume) => !!volume);
218
218
  }
219
219
  function _getVolumeFromViewport(viewport) {
@@ -31,6 +31,9 @@ export default function updateContourPolyline(annotation, polylineData, transfor
31
31
  if (windingDirection !== currentPolylineWindingDirection) {
32
32
  polyline.reverse();
33
33
  }
34
+ if (!data.handles?.points?.length) {
35
+ return;
36
+ }
34
37
  const handlePoints = data.handles.points.map((p) => worldToCanvas(p));
35
38
  if (handlePoints.length > 2) {
36
39
  const currentHandlesWindingDirection = math.polyline.getWindingDirection(handlePoints);
@@ -34,5 +34,6 @@ import * as dynamicVolume from './dynamicVolume';
34
34
  import * as polyDataUtils from './polyData/utils';
35
35
  import * as voi from './voi';
36
36
  import * as contourSegmentation from './contourSegmentation';
37
+ import { pointInSurroundingSphereCallback } from './pointInSurroundingSphereCallback';
37
38
  declare const roundNumber: typeof utilities.roundNumber;
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, };
39
+ 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, pointInSurroundingSphereCallback, };
@@ -34,5 +34,6 @@ import * as dynamicVolume from './dynamicVolume';
34
34
  import * as polyDataUtils from './polyData/utils';
35
35
  import * as voi from './voi';
36
36
  import * as contourSegmentation from './contourSegmentation';
37
+ import { pointInSurroundingSphereCallback } from './pointInSurroundingSphereCallback';
37
38
  const roundNumber = utilities.roundNumber;
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, };
39
+ 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, pointInSurroundingSphereCallback, };
@@ -1 +0,0 @@
1
- export {};
@@ -0,0 +1,8 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import type { vtkImageData } from '@kitware/vtk.js/Common/DataModel/ImageData';
3
+ export declare function pointInSurroundingSphereCallback(imageData: vtkImageData, circlePoints: [Types.Point3, Types.Point3], callback: (args: {
4
+ value: unknown;
5
+ index: number;
6
+ pointIJK: Types.Point3;
7
+ pointLPS: Types.Point3;
8
+ }) => void, viewport?: Types.IVolumeViewport): void;
@@ -0,0 +1,71 @@
1
+ import { utilities as csUtils } from '@cornerstonejs/core';
2
+ import { vec3 } from 'gl-matrix';
3
+ import { pointInSphere } from './math/sphere';
4
+ import { getBoundingBoxAroundShape } from './boundingBox';
5
+ const { transformWorldToIndex } = csUtils;
6
+ export function pointInSurroundingSphereCallback(imageData, circlePoints, callback, viewport) {
7
+ const { boundsIJK, centerWorld, radiusWorld } = _getBounds(circlePoints, imageData, viewport);
8
+ const sphereObj = {
9
+ center: centerWorld,
10
+ radius: radiusWorld,
11
+ };
12
+ const dimensions = imageData.getDimensions();
13
+ const voxelManager = csUtils.VoxelManager.createScalarVolumeVoxelManager({
14
+ dimensions: dimensions,
15
+ scalarData: imageData.getPointData().getScalars().getData(),
16
+ });
17
+ voxelManager.forEach(callback, {
18
+ boundsIJK,
19
+ isInObject: (pointLPS) => pointInSphere(sphereObj, pointLPS),
20
+ imageData,
21
+ });
22
+ }
23
+ function _getBounds(circlePoints, imageData, viewport) {
24
+ const [bottom, top] = circlePoints;
25
+ const centerWorld = vec3.fromValues((bottom[0] + top[0]) / 2, (bottom[1] + top[1]) / 2, (bottom[2] + top[2]) / 2);
26
+ const radiusWorld = vec3.distance(bottom, top) / 2;
27
+ let boundsIJK;
28
+ if (!viewport) {
29
+ const centerIJK = transformWorldToIndex(imageData, centerWorld);
30
+ const spacings = imageData.getSpacing();
31
+ const minSpacing = Math.min(...spacings);
32
+ const maxRadiusIJK = Math.ceil(radiusWorld / minSpacing);
33
+ boundsIJK = [
34
+ [centerIJK[0] - maxRadiusIJK, centerIJK[0] + maxRadiusIJK],
35
+ [centerIJK[1] - maxRadiusIJK, centerIJK[1] + maxRadiusIJK],
36
+ [centerIJK[2] - maxRadiusIJK, centerIJK[2] + maxRadiusIJK],
37
+ ];
38
+ return {
39
+ boundsIJK,
40
+ centerWorld: centerWorld,
41
+ radiusWorld,
42
+ };
43
+ }
44
+ boundsIJK = _computeBoundsIJKWithCamera(imageData, viewport, circlePoints, centerWorld, radiusWorld);
45
+ return {
46
+ boundsIJK,
47
+ centerWorld: centerWorld,
48
+ radiusWorld,
49
+ };
50
+ }
51
+ function _computeBoundsIJKWithCamera(imageData, viewport, circlePoints, centerWorld, radiusWorld) {
52
+ const [bottom, top] = circlePoints;
53
+ const dimensions = imageData.getDimensions();
54
+ const camera = viewport.getCamera();
55
+ const viewUp = vec3.fromValues(camera.viewUp[0], camera.viewUp[1], camera.viewUp[2]);
56
+ const viewPlaneNormal = vec3.fromValues(camera.viewPlaneNormal[0], camera.viewPlaneNormal[1], camera.viewPlaneNormal[2]);
57
+ const viewRight = vec3.create();
58
+ vec3.cross(viewRight, viewUp, viewPlaneNormal);
59
+ const topLeftWorld = vec3.create();
60
+ const bottomRightWorld = vec3.create();
61
+ vec3.scaleAndAdd(topLeftWorld, top, viewPlaneNormal, radiusWorld);
62
+ vec3.scaleAndAdd(bottomRightWorld, bottom, viewPlaneNormal, -radiusWorld);
63
+ vec3.scaleAndAdd(topLeftWorld, topLeftWorld, viewRight, -radiusWorld);
64
+ vec3.scaleAndAdd(bottomRightWorld, bottomRightWorld, viewRight, radiusWorld);
65
+ const sphereCornersIJK = [
66
+ transformWorldToIndex(imageData, topLeftWorld),
67
+ (transformWorldToIndex(imageData, bottomRightWorld)),
68
+ ];
69
+ const boundsIJK = getBoundingBoxAroundShape(sphereCornersIJK, dimensions);
70
+ return boundsIJK;
71
+ }
@@ -19,8 +19,8 @@ export default async function createLabelmapVolumeForViewport(input) {
19
19
  await volumeLoader.createLocalVolume(segmentationId, properties);
20
20
  }
21
21
  else {
22
- const { uid: volumeId } = viewport.getDefaultActor();
23
- await volumeLoader.createAndCacheDerivedSegmentationVolume(volumeId, {
22
+ const volumeId = viewport.getVolumeId();
23
+ await volumeLoader.createAndCacheDerivedLabelmapVolume(volumeId, {
24
24
  volumeId: segmentationId,
25
25
  });
26
26
  }
@@ -1,10 +1,11 @@
1
- import { cache, utilities } from '@cornerstonejs/core';
2
- import { getSegmentation, getSegmentationRepresentationsForSegmentation, getCurrentLabelmapImageIdForViewport, } from '../../stateManagement/segmentation/segmentationState';
3
- import { isVolumeSegmentation } from '../../tools/segmentation/strategies/utils/stackVolumeCheck';
1
+ import { BaseVolumeViewport, cache, utilities } from '@cornerstonejs/core';
2
+ import { getSegmentation, getCurrentLabelmapImageIdForViewport, } from '../../stateManagement/segmentation/segmentationState';
3
+ import { getSegmentationActor } from '../../stateManagement/segmentation/helpers';
4
+ import { SegmentationRepresentations } from '../../enums';
4
5
  export function getSegmentIndexAtLabelmapBorder(segmentationId, worldPoint, { viewport, searchRadius }) {
5
6
  const segmentation = getSegmentation(segmentationId);
6
7
  const labelmapData = segmentation.representationData.Labelmap;
7
- if (isVolumeSegmentation(labelmapData, viewport)) {
8
+ if (viewport instanceof BaseVolumeViewport) {
8
9
  const { volumeId } = labelmapData;
9
10
  const segmentationVolume = cache.getVolume(volumeId);
10
11
  if (!segmentationVolume) {
@@ -19,15 +20,15 @@ export function getSegmentIndexAtLabelmapBorder(segmentationId, worldPoint, { vi
19
20
  return onEdge ? segmentIndex : undefined;
20
21
  }
21
22
  const segmentationImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
22
- const currentImageId = viewport.getCurrentImageId();
23
23
  const image = cache.getImage(segmentationImageId);
24
24
  if (!image) {
25
25
  return;
26
26
  }
27
- const segmentationRepresentations = getSegmentationRepresentationsForSegmentation(segmentation.segmentationId);
28
- const { segmentationRepresentationUID } = segmentationRepresentations[0];
29
- const segmentationActor = viewport.getActor(segmentationRepresentationUID);
30
- const imageData = segmentationActor?.actor.getMapper().getInputData();
27
+ const segmentationActor = getSegmentationActor(viewport.id, {
28
+ segmentationId,
29
+ type: SegmentationRepresentations.Labelmap,
30
+ });
31
+ const imageData = segmentationActor?.getMapper().getInputData();
31
32
  const indexIJK = utilities.transformWorldToIndex(imageData, worldPoint);
32
33
  const dimensions = imageData.getDimensions();
33
34
  const voxelManager = (imageData.voxelManager ||
@@ -1,9 +1,9 @@
1
- import { cache, utilities } from '@cornerstonejs/core';
1
+ import { BaseVolumeViewport, cache, utilities } from '@cornerstonejs/core';
2
2
  import { SegmentationRepresentations } from '../../enums';
3
- import { getSegmentation, getSegmentationRepresentationsForSegmentation, getCurrentLabelmapImageIdForViewport, } from '../../stateManagement/segmentation/segmentationState';
4
- import { isVolumeSegmentation } from '../../tools/segmentation/strategies/utils/stackVolumeCheck';
3
+ import { getSegmentation, getCurrentLabelmapImageIdForViewport, } from '../../stateManagement/segmentation/segmentationState';
5
4
  import { getAnnotation } from '../../stateManagement';
6
5
  import { isPointInsidePolyline3D } from '../math/polyline';
6
+ import { getSegmentationActor } from '../../stateManagement/segmentation/helpers';
7
7
  export function getSegmentIndexAtWorldPoint(segmentationId, worldPoint, options = {}) {
8
8
  const segmentation = getSegmentation(segmentationId);
9
9
  const representationData = segmentation.representationData;
@@ -22,7 +22,7 @@ export function getSegmentIndexAtWorldPoint(segmentationId, worldPoint, options
22
22
  }
23
23
  export function getSegmentIndexAtWorldForLabelmap(segmentation, worldPoint, { viewport }) {
24
24
  const labelmapData = segmentation.representationData.Labelmap;
25
- if (isVolumeSegmentation(labelmapData)) {
25
+ if (viewport instanceof BaseVolumeViewport) {
26
26
  const { volumeId } = labelmapData;
27
27
  const segmentationVolume = cache.getVolume(volumeId);
28
28
  if (!segmentationVolume) {
@@ -36,10 +36,11 @@ export function getSegmentIndexAtWorldForLabelmap(segmentation, worldPoint, { vi
36
36
  if (!image) {
37
37
  return;
38
38
  }
39
- const segmentationRepresentations = getSegmentationRepresentationsForSegmentation(segmentation.segmentationId);
40
- const { segmentationRepresentationUID } = segmentationRepresentations[0];
41
- const segmentationActor = viewport.getActor(segmentationRepresentationUID);
42
- const imageData = segmentationActor?.actor.getMapper().getInputData();
39
+ const segmentationActor = getSegmentationActor(viewport.id, {
40
+ segmentationId: segmentation.segmentationId,
41
+ type: SegmentationRepresentations.Labelmap,
42
+ });
43
+ const imageData = segmentationActor?.getMapper().getInputData();
43
44
  const indexIJK = utilities.transformWorldToIndex(imageData, worldPoint);
44
45
  const dimensions = imageData.getDimensions();
45
46
  const voxelManager = (imageData.voxelManager ||
@@ -1,5 +1,4 @@
1
1
  import { cache } from '@cornerstonejs/core';
2
- import { isVolumeSegmentation } from '../../tools/segmentation/strategies/utils/stackVolumeCheck';
3
2
  import { SegmentationRepresentations } from '../../enums';
4
3
  import { getCachedSegmentIndices, setCachedSegmentIndices } from './utilities';
5
4
  import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
@@ -13,18 +12,17 @@ function getUniqueSegmentIndices(segmentationId) {
13
12
  throw new Error(`No segmentation found for segmentationId ${segmentationId}`);
14
13
  }
15
14
  let indices;
16
- switch (segmentation.type) {
17
- case SegmentationRepresentations.Labelmap:
18
- indices = handleLabelmapSegmentation(segmentation, segmentationId);
19
- break;
20
- case SegmentationRepresentations.Contour:
21
- indices = handleContourSegmentation(segmentation);
22
- break;
23
- case SegmentationRepresentations.Surface:
24
- indices = handleSurfaceSegmentation(segmentation);
25
- break;
26
- default:
27
- throw new Error(`Unsupported segmentation type: ${segmentation.type}`);
15
+ if (segmentation.representationData.Labelmap) {
16
+ indices = handleLabelmapSegmentation(segmentation, segmentationId);
17
+ }
18
+ else if (segmentation.representationData.Contour) {
19
+ indices = handleContourSegmentation(segmentation);
20
+ }
21
+ else if (segmentation.representationData.Surface) {
22
+ indices = handleSurfaceSegmentation(segmentation);
23
+ }
24
+ else {
25
+ throw new Error(`Unsupported segmentation type: ${segmentation.representationData}`);
28
26
  }
29
27
  setCachedSegmentIndices(segmentationId, indices);
30
28
  return indices;
@@ -32,11 +30,11 @@ function getUniqueSegmentIndices(segmentationId) {
32
30
  function handleLabelmapSegmentation(segmentation, segmentationId) {
33
31
  const labelmapData = segmentation.representationData[SegmentationRepresentations.Labelmap];
34
32
  const keySet = new Set();
35
- if (isVolumeSegmentation(labelmapData)) {
36
- addVolumeSegmentIndices(keySet, segmentationId);
33
+ if (labelmapData.imageIds) {
34
+ addImageSegmentIndices(keySet, labelmapData.imageIds);
37
35
  }
38
36
  else {
39
- addImageSegmentIndices(keySet, labelmapData.imageIds);
37
+ addVolumeSegmentIndices(keySet, segmentationId);
40
38
  }
41
39
  return Array.from(keySet)
42
40
  .map(Number)
@@ -1,8 +1,6 @@
1
1
  import thresholdVolumeByRange from './thresholdVolumeByRange';
2
2
  import rectangleROIThresholdVolumeByRange from './rectangleROIThresholdVolumeByRange';
3
3
  import createMergedLabelmapForIndex from './createMergedLabelmapForIndex';
4
- import isValidRepresentationConfig from './isValidRepresentationConfig';
5
- import getDefaultRepresentationConfig from './getDefaultRepresentationConfig';
6
4
  import createLabelmapVolumeForViewport from './createLabelmapVolumeForViewport';
7
5
  import { triggerSegmentationRender, triggerSegmentationRenderBySegmentationId } from '../../stateManagement/segmentation/SegmentationRenderingEngine';
8
6
  import floodFill from './floodFill';
@@ -18,4 +16,4 @@ import { getSegmentIndexAtWorldPoint } from './getSegmentIndexAtWorldPoint';
18
16
  import { getSegmentIndexAtLabelmapBorder } from './getSegmentIndexAtLabelmapBorder';
19
17
  import { getHoveredContourSegmentationAnnotation } from './getHoveredContourSegmentationAnnotation';
20
18
  import { getBrushToolInstances } from './getBrushToolInstances';
21
- export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, triggerSegmentationRenderBySegmentationId, floodFill, getBrushSizeForToolGroup, setBrushSizeForToolGroup, getBrushThresholdForToolGroup, setBrushThresholdForToolGroup, thresholdSegmentationByRange, contourAndFindLargestBidirectional, createBidirectionalToolData, segmentContourAction, invalidateBrushCursor, getUniqueSegmentIndices, getSegmentIndexAtWorldPoint, getSegmentIndexAtLabelmapBorder, getHoveredContourSegmentationAnnotation, getBrushToolInstances, };
19
+ export { thresholdVolumeByRange, createMergedLabelmapForIndex, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, triggerSegmentationRenderBySegmentationId, floodFill, getBrushSizeForToolGroup, setBrushSizeForToolGroup, getBrushThresholdForToolGroup, setBrushThresholdForToolGroup, thresholdSegmentationByRange, contourAndFindLargestBidirectional, createBidirectionalToolData, segmentContourAction, invalidateBrushCursor, getUniqueSegmentIndices, getSegmentIndexAtWorldPoint, getSegmentIndexAtLabelmapBorder, getHoveredContourSegmentationAnnotation, getBrushToolInstances, };
@@ -1,8 +1,6 @@
1
1
  import thresholdVolumeByRange from './thresholdVolumeByRange';
2
2
  import rectangleROIThresholdVolumeByRange from './rectangleROIThresholdVolumeByRange';
3
3
  import createMergedLabelmapForIndex from './createMergedLabelmapForIndex';
4
- import isValidRepresentationConfig from './isValidRepresentationConfig';
5
- import getDefaultRepresentationConfig from './getDefaultRepresentationConfig';
6
4
  import createLabelmapVolumeForViewport from './createLabelmapVolumeForViewport';
7
5
  import { triggerSegmentationRender, triggerSegmentationRenderBySegmentationId, } from '../../stateManagement/segmentation/SegmentationRenderingEngine';
8
6
  import floodFill from './floodFill';
@@ -18,4 +16,4 @@ import { getSegmentIndexAtWorldPoint } from './getSegmentIndexAtWorldPoint';
18
16
  import { getSegmentIndexAtLabelmapBorder } from './getSegmentIndexAtLabelmapBorder';
19
17
  import { getHoveredContourSegmentationAnnotation } from './getHoveredContourSegmentationAnnotation';
20
18
  import { getBrushToolInstances } from './getBrushToolInstances';
21
- export { thresholdVolumeByRange, createMergedLabelmapForIndex, isValidRepresentationConfig, getDefaultRepresentationConfig, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, triggerSegmentationRenderBySegmentationId, floodFill, getBrushSizeForToolGroup, setBrushSizeForToolGroup, getBrushThresholdForToolGroup, setBrushThresholdForToolGroup, thresholdSegmentationByRange, contourAndFindLargestBidirectional, createBidirectionalToolData, segmentContourAction, invalidateBrushCursor, getUniqueSegmentIndices, getSegmentIndexAtWorldPoint, getSegmentIndexAtLabelmapBorder, getHoveredContourSegmentationAnnotation, getBrushToolInstances, };
19
+ export { thresholdVolumeByRange, createMergedLabelmapForIndex, createLabelmapVolumeForViewport, rectangleROIThresholdVolumeByRange, triggerSegmentationRender, triggerSegmentationRenderBySegmentationId, floodFill, getBrushSizeForToolGroup, setBrushSizeForToolGroup, getBrushThresholdForToolGroup, setBrushThresholdForToolGroup, thresholdSegmentationByRange, contourAndFindLargestBidirectional, createBidirectionalToolData, segmentContourAction, invalidateBrushCursor, getUniqueSegmentIndices, getSegmentIndexAtWorldPoint, getSegmentIndexAtLabelmapBorder, getHoveredContourSegmentationAnnotation, getBrushToolInstances, };
@@ -132,6 +132,9 @@ class ColorbarCanvas {
132
132
  };
133
133
  const { width, height } = this._canvas;
134
134
  const canvasContext = this._canvas.getContext('2d');
135
+ if (!canvasContext) {
136
+ return;
137
+ }
135
138
  const isHorizontal = width > height;
136
139
  const maxValue = isHorizontal ? width : height;
137
140
  const { _voiRange: voiRange } = this;
@@ -80,7 +80,7 @@ class ViewportColorbar extends Colorbar {
80
80
  }
81
81
  else if (viewport instanceof VolumeViewport) {
82
82
  const { _volumeId: volumeId } = this;
83
- const viewportsContainingVolumeUID = utilities.getViewportsWithVolumeId(volumeId, viewport.renderingEngineId);
83
+ const viewportsContainingVolumeUID = utilities.getViewportsWithVolumeId(volumeId);
84
84
  viewport.setProperties({ voiRange }, volumeId);
85
85
  viewportsContainingVolumeUID.forEach((vp) => vp.render());
86
86
  }
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -176,8 +176,9 @@ const polySegConverters = {
176
176
  });
177
177
  const firstDim = (sharedDimensionIndex + 1) % 3;
178
178
  const secondDim = (sharedDimensionIndex + 2) % 3;
179
- const voxels = utilities.VoxelManager.createScalarVolumeVoxelManager({
180
- dimensions: imageData.getDimensions(),
179
+ const voxels = utilities.VoxelManager.createImageVoxelManager({
180
+ width: imageData.getDimensions()[0],
181
+ height: imageData.getDimensions()[1],
181
182
  scalarData: imageData.getPointData().getScalars().getData(),
182
183
  });
183
184
  voxels.forEach(({ pointIJK }) => {
@@ -319,7 +320,7 @@ const polySegConverters = {
319
320
  const { sliceIndex, planes } = planeInfo;
320
321
  const polyDataResults = new Map();
321
322
  for (const polyDataInfo of surfacesInfo) {
322
- const { points, polys, id } = polyDataInfo;
323
+ const { points, polys, id, segmentIndex } = polyDataInfo;
323
324
  const aabb3 = surfacesAABB.get(id) || getAABB(points, { numDimensions: 3 });
324
325
  if (!surfacesAABB.has(id)) {
325
326
  surfacesAABB.set(id, aabb3);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/tools",
3
- "version": "2.0.0-beta.26",
3
+ "version": "2.0.0-beta.28",
4
4
  "description": "Cornerstone3D Tools",
5
5
  "main": "dist/umd/index.js",
6
6
  "types": "dist/esm/index.d.ts",
@@ -14,29 +14,82 @@
14
14
  },
15
15
  "sideEffects": false,
16
16
  "exports": {
17
- ".": "./dist/esm/index.js",
18
- "./utilities/*": "./dist/esm/utilities/*.js",
19
- "./utilities": "./dist/esm/utilities/index.js",
20
- "./constants/*": "./dist/esm/constants/*.js",
21
- "./constants": "./dist/esm/constants/index.js",
22
- "./enums/*": "./dist/esm/enums/*.js",
23
- "./enums": "./dist/esm/enums/index.js",
24
- "./tools/*": "./dist/esm/tools/*.js",
25
- "./tools": "./dist/esm/tools/index.js",
26
- "./synchronizers/*": "./dist/esm/synchronizers/*.js",
27
- "./synchronizers": "./dist/esm/synchronizers/index.js",
28
- "./types/*": "./dist/esm/types/*.d.ts",
29
- "./types": "./dist/esm/types/index.d.ts"
17
+ ".": {
18
+ "import": "./dist/esm/index.js",
19
+ "types": "./dist/esm/index.d.ts"
20
+ },
21
+ "./utilities": {
22
+ "import": "./dist/esm/utilities/index.js",
23
+ "types": "./dist/esm/utilities/index.d.ts"
24
+ },
25
+ "./utilities/*": {
26
+ "import": "./dist/esm/utilities/*.js",
27
+ "types": "./dist/esm/utilities/*.d.ts"
28
+ },
29
+ "./constants": {
30
+ "import": "./dist/esm/constants/index.js",
31
+ "types": "./dist/esm/constants/index.d.ts"
32
+ },
33
+ "./constants/*": {
34
+ "import": "./dist/esm/constants/*.js",
35
+ "types": "./dist/esm/constants/*.d.ts"
36
+ },
37
+ "./enums": {
38
+ "import": "./dist/esm/enums/index.js",
39
+ "types": "./dist/esm/enums/index.d.ts"
40
+ },
41
+ "./enums/*": {
42
+ "import": "./dist/esm/enums/*.js",
43
+ "types": "./dist/esm/enums/*.d.ts"
44
+ },
45
+ "./tools": {
46
+ "import": "./dist/esm/tools/index.js",
47
+ "types": "./dist/esm/tools/index.d.ts"
48
+ },
49
+ "./tools/*": {
50
+ "import": "./dist/esm/tools/*.js",
51
+ "types": "./dist/esm/tools/*.d.ts"
52
+ },
53
+ "./segmentation": {
54
+ "import": "./dist/esm/stateManagement/segmentation/index.js",
55
+ "types": "./dist/esm/stateManagement/segmentation/index.d.ts"
56
+ },
57
+ "./segmentation/*": {
58
+ "import": "./dist/esm/stateManagement/segmentation/*.js",
59
+ "types": "./dist/esm/stateManagement/segmentation/*.d.ts"
60
+ },
61
+ "./annotation": {
62
+ "import": "./dist/esm/stateManagement/annotation/index.js",
63
+ "types": "./dist/esm/stateManagement/annotation/index.d.ts"
64
+ },
65
+ "./annotation/*": {
66
+ "import": "./dist/esm/stateManagement/annotation/*.js",
67
+ "types": "./dist/esm/stateManagement/annotation/*.d.ts"
68
+ },
69
+ "./synchronizers": {
70
+ "import": "./dist/esm/synchronizers/index.js",
71
+ "types": "./dist/esm/synchronizers/index.d.ts"
72
+ },
73
+ "./synchronizers/*": {
74
+ "import": "./dist/esm/synchronizers/*.js",
75
+ "types": "./dist/esm/synchronizers/*.d.ts"
76
+ },
77
+ "./types": {
78
+ "types": "./dist/esm/types/index.d.ts"
79
+ },
80
+ "./types/*": {
81
+ "types": "./dist/esm/types/*.d.ts"
82
+ }
30
83
  },
31
84
  "scripts": {
32
- "build:esm": "tsc --project ./tsconfig.esm.json",
33
- "build:esm:watch": "tsc --project ./tsconfig.esm.json --watch",
85
+ "build:esm": "tsc --project ./tsconfig.json",
86
+ "build:esm:watch": "tsc --project ./tsconfig.json --watch",
34
87
  "build:umd": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js",
35
88
  "build:all": "yarn run build:umd && yarn run build:esm",
36
- "build": "yarn run build:all",
89
+ "build": "yarn run build:esm",
37
90
  "clean": "rm -rf node_modules/.cache/storybook && shx rm -rf dist",
38
91
  "clean:deep": "yarn run clean && shx rm -rf node_modules",
39
- "dev": "tsc --project ./tsconfig.esm.json --watch",
92
+ "dev": "tsc --project ./tsconfig.json --watch",
40
93
  "build:update-api": "yarn run build:esm && api-extractor run --local",
41
94
  "format-check": "npx eslint ./src --quiet",
42
95
  "api-check": "api-extractor --debug run ",
@@ -44,7 +97,7 @@
44
97
  "webpack:watch": "webpack --mode development --progress --watch --config ./.webpack/webpack.dev.js"
45
98
  },
46
99
  "dependencies": {
47
- "@cornerstonejs/core": "^2.0.0-beta.26",
100
+ "@cornerstonejs/core": "^2.0.0-beta.28",
48
101
  "@types/offscreencanvas": "2019.7.3",
49
102
  "comlink": "^4.4.1",
50
103
  "lodash.get": "^4.4.2"
@@ -71,5 +124,5 @@
71
124
  "type": "individual",
72
125
  "url": "https://ohif.org/donate"
73
126
  },
74
- "gitHead": "0057ad13cf215a53e567dbdbab71404f234969e4"
127
+ "gitHead": "f07f340e5b63d3afdda66bfe35c9cef729a5b69d"
75
128
  }
@@ -1,3 +0,0 @@
1
- import type { SegmentationRepresentationModifiedEventType } from '../../types/EventTypes';
2
- declare const segmentationRepresentationModifiedListener: (evt: SegmentationRepresentationModifiedEventType) => void;
3
- export default segmentationRepresentationModifiedListener;
@@ -1,14 +0,0 @@
1
- import { getSegmentationRepresentation } from '../../stateManagement/segmentation/segmentationState';
2
- import { triggerSegmentationRenderBySegmentationId } from '../../stateManagement/segmentation/SegmentationRenderingEngine';
3
- const segmentationRepresentationModifiedListener = function (evt) {
4
- const { segmentationRepresentationUID } = evt.detail;
5
- const segmentationRepresentation = getSegmentationRepresentation
6
- ? getSegmentationRepresentation(segmentationRepresentationUID)
7
- : null;
8
- if (!segmentationRepresentation) {
9
- return;
10
- }
11
- const segmentationId = segmentationRepresentation?.segmentationId;
12
- triggerSegmentationRenderBySegmentationId(segmentationId);
13
- };
14
- export default segmentationRepresentationModifiedListener;
@@ -1,3 +0,0 @@
1
- import type { SegmentationRepresentationRemovedEventType } from '../../types/EventTypes';
2
- declare const segmentationRepresentationRemovedEventListener: (evt: SegmentationRepresentationRemovedEventType) => void;
3
- export default segmentationRepresentationRemovedEventListener;
@@ -1,8 +0,0 @@
1
- import { getSegmentationRepresentation } from '../../stateManagement/segmentation/segmentationState';
2
- import { triggerSegmentationRenderBySegmentationId } from '../../stateManagement/segmentation/SegmentationRenderingEngine';
3
- const segmentationRepresentationRemovedEventListener = function (evt) {
4
- const { segmentationRepresentationUID } = evt.detail;
5
- const segmentation = getSegmentationRepresentation(segmentationRepresentationUID);
6
- triggerSegmentationRenderBySegmentationId(segmentation.segmentationId);
7
- };
8
- export default segmentationRepresentationRemovedEventListener;
@@ -1,2 +0,0 @@
1
- import type { SegmentationPublicInput } from '../../types/SegmentationStateTypes';
2
- export declare function addSegmentation(segmentationInput: SegmentationPublicInput, suppressEvents?: boolean): void;
@@ -1,11 +0,0 @@
1
- import normalizeSegmentationInput from './helpers/normalizeSegmentationInput';
2
- import { defaultSegmentationStateManager } from './SegmentationStateManager';
3
- import { triggerSegmentationModified } from './triggerSegmentationEvents';
4
- export function addSegmentation(segmentationInput, suppressEvents) {
5
- const segmentationStateManager = defaultSegmentationStateManager;
6
- const segmentation = normalizeSegmentationInput(segmentationInput);
7
- segmentationStateManager.addSegmentation(segmentation);
8
- if (!suppressEvents) {
9
- triggerSegmentationModified(segmentation.segmentationId);
10
- }
11
- }
@@ -1,2 +0,0 @@
1
- import type { SegmentationRepresentation } from '../../types/SegmentationStateTypes';
2
- export declare function addSegmentationRepresentationState(viewportId: string, segmentationRepresentation: SegmentationRepresentation, suppressEvents?: boolean): void;
@@ -1,10 +0,0 @@
1
- import { defaultSegmentationStateManager } from './SegmentationStateManager';
2
- import { triggerSegmentationRepresentationModified } from './triggerSegmentationEvents';
3
- export function addSegmentationRepresentationState(viewportId, segmentationRepresentation, suppressEvents) {
4
- const segmentationStateManager = defaultSegmentationStateManager;
5
- segmentationStateManager.addSegmentationRepresentationState(segmentationRepresentation);
6
- segmentationStateManager.addSegmentationRepresentationToViewport(viewportId, segmentationRepresentation.segmentationRepresentationUID);
7
- if (!suppressEvents) {
8
- triggerSegmentationRepresentationModified(segmentationRepresentation.segmentationRepresentationUID);
9
- }
10
- }