@cornerstonejs/tools 1.41.0 → 1.42.1

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 (280) hide show
  1. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js +2 -1
  2. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
  3. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js +18 -5
  4. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js.map +1 -1
  5. package/dist/cjs/stateManagement/annotation/annotationState.js +3 -0
  6. package/dist/cjs/stateManagement/annotation/annotationState.js.map +1 -1
  7. package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +10 -0
  8. package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.js +65 -0
  9. package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.js.map +1 -0
  10. package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +8 -0
  11. package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.js +92 -0
  12. package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.js.map +1 -0
  13. package/dist/cjs/stateManagement/segmentation/index.d.ts +3 -1
  14. package/dist/cjs/stateManagement/segmentation/index.js +5 -1
  15. package/dist/cjs/stateManagement/segmentation/index.js.map +1 -1
  16. package/dist/cjs/stateManagement/segmentation/segmentationState.d.ts +2 -1
  17. package/dist/cjs/stateManagement/segmentation/segmentationState.js +8 -1
  18. package/dist/cjs/stateManagement/segmentation/segmentationState.js.map +1 -1
  19. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +3 -0
  20. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  21. package/dist/cjs/tools/annotation/AngleTool.js +2 -2
  22. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
  23. package/dist/cjs/tools/annotation/BidirectionalTool.js +8 -7
  24. package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
  25. package/dist/cjs/tools/annotation/CircleROITool.js +8 -8
  26. package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
  27. package/dist/cjs/tools/annotation/EllipticalROITool.js +7 -7
  28. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  29. package/dist/cjs/tools/annotation/LengthTool.js +2 -2
  30. package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
  31. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +5 -5
  32. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  33. package/dist/cjs/tools/annotation/ProbeTool.js +3 -3
  34. package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
  35. package/dist/cjs/tools/annotation/RectangleROITool.js +7 -7
  36. package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
  37. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +10 -0
  38. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  39. package/dist/cjs/tools/segmentation/BrushTool.js +8 -4
  40. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  41. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +4 -6
  42. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
  43. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +1 -1
  44. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
  45. package/dist/cjs/types/index.d.ts +2 -1
  46. package/dist/cjs/utilities/contours/AnnotationToPointData.d.ts +11 -0
  47. package/dist/cjs/utilities/contours/AnnotationToPointData.js +44 -0
  48. package/dist/cjs/utilities/contours/AnnotationToPointData.js.map +1 -0
  49. package/dist/cjs/utilities/contours/RectangleROIStartEndThreshold.d.ts +6 -0
  50. package/dist/cjs/utilities/contours/RectangleROIStartEndThreshold.js +43 -0
  51. package/dist/cjs/utilities/contours/RectangleROIStartEndThreshold.js.map +1 -0
  52. package/dist/cjs/utilities/contours/contourFinder.d.ts +7 -0
  53. package/dist/cjs/utilities/contours/contourFinder.js +68 -0
  54. package/dist/cjs/utilities/contours/contourFinder.js.map +1 -0
  55. package/dist/cjs/utilities/contours/detectContourHoles.d.ts +5 -0
  56. package/dist/cjs/utilities/contours/detectContourHoles.js +78 -0
  57. package/dist/cjs/utilities/contours/detectContourHoles.js.map +1 -0
  58. package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.d.ts +4 -0
  59. package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.js +124 -0
  60. package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.js.map +1 -0
  61. package/dist/cjs/utilities/contours/index.d.ts +6 -0
  62. package/dist/cjs/utilities/contours/index.js +17 -0
  63. package/dist/cjs/utilities/contours/index.js.map +1 -0
  64. package/dist/cjs/utilities/contours/mergePoints.d.ts +8 -0
  65. package/dist/cjs/utilities/contours/mergePoints.js +77 -0
  66. package/dist/cjs/utilities/contours/mergePoints.js.map +1 -0
  67. package/dist/cjs/utilities/index.d.ts +4 -2
  68. package/dist/cjs/utilities/index.js +8 -5
  69. package/dist/cjs/utilities/index.js.map +1 -1
  70. package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.d.ts +1 -0
  71. package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.js +31 -0
  72. package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.js.map +1 -0
  73. package/dist/cjs/utilities/segmentation/createBidirectionalToolData.d.ts +14 -0
  74. package/dist/cjs/utilities/segmentation/createBidirectionalToolData.js +43 -0
  75. package/dist/cjs/utilities/segmentation/createBidirectionalToolData.js.map +1 -0
  76. package/dist/cjs/utilities/segmentation/createImageIdReferenceMap.d.ts +2 -0
  77. package/dist/cjs/utilities/segmentation/createImageIdReferenceMap.js +11 -0
  78. package/dist/cjs/utilities/segmentation/createImageIdReferenceMap.js.map +1 -0
  79. package/dist/cjs/utilities/segmentation/findLargestBidirectional.d.ts +1 -0
  80. package/dist/cjs/utilities/segmentation/findLargestBidirectional.js +94 -0
  81. package/dist/cjs/utilities/segmentation/findLargestBidirectional.js.map +1 -0
  82. package/dist/cjs/utilities/segmentation/index.d.ts +5 -1
  83. package/dist/cjs/utilities/segmentation/index.js +9 -1
  84. package/dist/cjs/utilities/segmentation/index.js.map +1 -1
  85. package/dist/cjs/utilities/segmentation/isLineInSegment.d.ts +9 -0
  86. package/dist/cjs/utilities/segmentation/isLineInSegment.js +55 -0
  87. package/dist/cjs/utilities/segmentation/isLineInSegment.js.map +1 -0
  88. package/dist/cjs/utilities/segmentation/segmentContourAction.d.ts +17 -0
  89. package/dist/cjs/utilities/segmentation/segmentContourAction.js +122 -0
  90. package/dist/cjs/utilities/segmentation/segmentContourAction.js.map +1 -0
  91. package/dist/cjs/utilities/segmentation/thresholdSegmentationByRange.js.map +1 -1
  92. package/dist/cjs/utilities/segmentation/triggerSegmentationRender.js +8 -4
  93. package/dist/cjs/utilities/segmentation/triggerSegmentationRender.js.map +1 -1
  94. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js +2 -5
  95. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -1
  96. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js +2 -1
  97. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -1
  98. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +2 -1
  99. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
  100. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +18 -5
  101. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js.map +1 -1
  102. package/dist/esm/stateManagement/annotation/annotationState.js +3 -0
  103. package/dist/esm/stateManagement/annotation/annotationState.js.map +1 -1
  104. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +47 -0
  105. package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js.map +1 -0
  106. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +72 -0
  107. package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js.map +1 -0
  108. package/dist/esm/stateManagement/segmentation/index.js +3 -1
  109. package/dist/esm/stateManagement/segmentation/index.js.map +1 -1
  110. package/dist/esm/stateManagement/segmentation/segmentationState.js +7 -1
  111. package/dist/esm/stateManagement/segmentation/segmentationState.js.map +1 -1
  112. package/dist/esm/store/ToolGroupManager/ToolGroup.js +3 -0
  113. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  114. package/dist/esm/tools/annotation/AngleTool.js +1 -1
  115. package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
  116. package/dist/esm/tools/annotation/BidirectionalTool.js +8 -7
  117. package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
  118. package/dist/esm/tools/annotation/CircleROITool.js +1 -1
  119. package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
  120. package/dist/esm/tools/annotation/EllipticalROITool.js +1 -1
  121. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  122. package/dist/esm/tools/annotation/LengthTool.js +1 -1
  123. package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
  124. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +1 -1
  125. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  126. package/dist/esm/tools/annotation/ProbeTool.js +1 -1
  127. package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
  128. package/dist/esm/tools/annotation/RectangleROITool.js +1 -1
  129. package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
  130. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +11 -1
  131. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  132. package/dist/esm/tools/segmentation/BrushTool.js +8 -4
  133. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  134. package/dist/esm/tools/segmentation/strategies/fillCircle.js +4 -6
  135. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
  136. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
  137. package/dist/esm/utilities/contours/AnnotationToPointData.js +39 -0
  138. package/dist/esm/utilities/contours/AnnotationToPointData.js.map +1 -0
  139. package/dist/esm/utilities/contours/RectangleROIStartEndThreshold.js +41 -0
  140. package/dist/esm/utilities/contours/RectangleROIStartEndThreshold.js.map +1 -0
  141. package/dist/esm/utilities/contours/contourFinder.js +63 -0
  142. package/dist/esm/utilities/contours/contourFinder.js.map +1 -0
  143. package/dist/esm/utilities/contours/detectContourHoles.js +74 -0
  144. package/dist/esm/utilities/contours/detectContourHoles.js.map +1 -0
  145. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +117 -0
  146. package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js.map +1 -0
  147. package/dist/esm/utilities/contours/index.js +7 -0
  148. package/dist/esm/utilities/contours/index.js.map +1 -0
  149. package/dist/esm/utilities/contours/mergePoints.js +73 -0
  150. package/dist/esm/utilities/contours/mergePoints.js.map +1 -0
  151. package/dist/esm/utilities/index.js +4 -2
  152. package/dist/esm/utilities/index.js.map +1 -1
  153. package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js +25 -0
  154. package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js.map +1 -0
  155. package/dist/esm/utilities/segmentation/createBidirectionalToolData.js +40 -0
  156. package/dist/esm/utilities/segmentation/createBidirectionalToolData.js.map +1 -0
  157. package/dist/esm/utilities/segmentation/createImageIdReferenceMap.js +8 -0
  158. package/dist/esm/utilities/segmentation/createImageIdReferenceMap.js.map +1 -0
  159. package/dist/esm/utilities/segmentation/findLargestBidirectional.js +96 -0
  160. package/dist/esm/utilities/segmentation/findLargestBidirectional.js.map +1 -0
  161. package/dist/esm/utilities/segmentation/index.js +5 -1
  162. package/dist/esm/utilities/segmentation/index.js.map +1 -1
  163. package/dist/esm/utilities/segmentation/isLineInSegment.js +50 -0
  164. package/dist/esm/utilities/segmentation/isLineInSegment.js.map +1 -0
  165. package/dist/esm/utilities/segmentation/segmentContourAction.js +98 -0
  166. package/dist/esm/utilities/segmentation/segmentContourAction.js.map +1 -0
  167. package/dist/esm/utilities/segmentation/thresholdSegmentationByRange.js.map +1 -1
  168. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js +8 -4
  169. package/dist/esm/utilities/segmentation/triggerSegmentationRender.js.map +1 -1
  170. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +1 -1
  171. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -1
  172. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +2 -1
  173. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -1
  174. package/dist/types/eventDispatchers/keyboardEventHandlers/keyDown.d.ts.map +1 -1
  175. package/dist/types/eventListeners/segmentation/imageChangeEventListener.d.ts.map +1 -1
  176. package/dist/types/stateManagement/annotation/annotationState.d.ts.map +1 -1
  177. package/dist/types/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +11 -0
  178. package/dist/types/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts.map +1 -0
  179. package/dist/types/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +9 -0
  180. package/dist/types/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts.map +1 -0
  181. package/dist/types/stateManagement/segmentation/index.d.ts +3 -1
  182. package/dist/types/stateManagement/segmentation/index.d.ts.map +1 -1
  183. package/dist/types/stateManagement/segmentation/segmentationState.d.ts +2 -1
  184. package/dist/types/stateManagement/segmentation/segmentationState.d.ts.map +1 -1
  185. package/dist/types/store/ToolGroupManager/ToolGroup.d.ts.map +1 -1
  186. package/dist/types/tools/annotation/AngleTool.d.ts.map +1 -1
  187. package/dist/types/tools/annotation/BidirectionalTool.d.ts.map +1 -1
  188. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
  189. package/dist/types/tools/displayTools/Labelmap/labelmapDisplay.d.ts.map +1 -1
  190. package/dist/types/tools/segmentation/BrushTool.d.ts.map +1 -1
  191. package/dist/types/tools/segmentation/strategies/fillCircle.d.ts.map +1 -1
  192. package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +1 -1
  193. package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts.map +1 -1
  194. package/dist/types/types/LabelmapTypes.d.ts.map +1 -1
  195. package/dist/types/types/index.d.ts +2 -1
  196. package/dist/types/types/index.d.ts.map +1 -1
  197. package/dist/types/utilities/contours/AnnotationToPointData.d.ts +12 -0
  198. package/dist/types/utilities/contours/AnnotationToPointData.d.ts.map +1 -0
  199. package/dist/types/utilities/contours/RectangleROIStartEndThreshold.d.ts +7 -0
  200. package/dist/types/utilities/contours/RectangleROIStartEndThreshold.d.ts.map +1 -0
  201. package/dist/types/utilities/contours/contourFinder.d.ts +8 -0
  202. package/dist/types/utilities/contours/contourFinder.d.ts.map +1 -0
  203. package/dist/types/utilities/contours/detectContourHoles.d.ts +6 -0
  204. package/dist/types/utilities/contours/detectContourHoles.d.ts.map +1 -0
  205. package/dist/types/utilities/contours/generateContourSetsFromLabelmap.d.ts +5 -0
  206. package/dist/types/utilities/contours/generateContourSetsFromLabelmap.d.ts.map +1 -0
  207. package/dist/types/utilities/contours/index.d.ts +7 -0
  208. package/dist/types/utilities/contours/index.d.ts.map +1 -0
  209. package/dist/types/utilities/contours/mergePoints.d.ts +9 -0
  210. package/dist/types/utilities/contours/mergePoints.d.ts.map +1 -0
  211. package/dist/types/utilities/index.d.ts +4 -2
  212. package/dist/types/utilities/index.d.ts.map +1 -1
  213. package/dist/types/utilities/segmentation/contourAndFindLargestBidirectional.d.ts +2 -0
  214. package/dist/types/utilities/segmentation/contourAndFindLargestBidirectional.d.ts.map +1 -0
  215. package/dist/types/utilities/segmentation/createBidirectionalToolData.d.ts +15 -0
  216. package/dist/types/utilities/segmentation/createBidirectionalToolData.d.ts.map +1 -0
  217. package/dist/types/utilities/segmentation/createImageIdReferenceMap.d.ts +3 -0
  218. package/dist/types/utilities/segmentation/createImageIdReferenceMap.d.ts.map +1 -0
  219. package/dist/types/utilities/segmentation/findLargestBidirectional.d.ts +2 -0
  220. package/dist/types/utilities/segmentation/findLargestBidirectional.d.ts.map +1 -0
  221. package/dist/types/utilities/segmentation/index.d.ts +5 -1
  222. package/dist/types/utilities/segmentation/index.d.ts.map +1 -1
  223. package/dist/types/utilities/segmentation/isLineInSegment.d.ts +10 -0
  224. package/dist/types/utilities/segmentation/isLineInSegment.d.ts.map +1 -0
  225. package/dist/types/utilities/segmentation/segmentContourAction.d.ts +18 -0
  226. package/dist/types/utilities/segmentation/segmentContourAction.d.ts.map +1 -0
  227. package/dist/types/utilities/segmentation/triggerSegmentationRender.d.ts.map +1 -1
  228. package/dist/types/utilities/stackPrefetch/stackPrefetchUtils.d.ts.map +1 -1
  229. package/dist/umd/index.js +1 -1
  230. package/dist/umd/index.js.map +1 -1
  231. package/package.json +3 -3
  232. package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +7 -1
  233. package/src/eventListeners/segmentation/imageChangeEventListener.ts +42 -6
  234. package/src/stateManagement/annotation/annotationState.ts +3 -0
  235. package/src/stateManagement/segmentation/convertStackToVolumeSegmentation.ts +98 -0
  236. package/src/stateManagement/segmentation/convertVolumeToStackSegmentation.ts +153 -0
  237. package/src/stateManagement/segmentation/index.ts +4 -0
  238. package/src/stateManagement/segmentation/segmentationState.ts +17 -0
  239. package/src/store/ToolGroupManager/ToolGroup.ts +4 -0
  240. package/src/tools/annotation/AngleTool.ts +1 -2
  241. package/src/tools/annotation/BidirectionalTool.ts +10 -6
  242. package/src/tools/annotation/CircleROITool.ts +1 -1
  243. package/src/tools/annotation/EllipticalROITool.ts +1 -1
  244. package/src/tools/annotation/LengthTool.ts +1 -1
  245. package/src/tools/annotation/PlanarFreehandROITool.ts +1 -2
  246. package/src/tools/annotation/ProbeTool.ts +1 -1
  247. package/src/tools/annotation/RectangleROITool.ts +1 -1
  248. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +16 -2
  249. package/src/tools/segmentation/BrushTool.ts +11 -7
  250. package/src/tools/segmentation/strategies/fillCircle.ts +4 -7
  251. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +1 -1
  252. package/src/types/LabelmapTypes.ts +2 -5
  253. package/src/types/index.ts +2 -0
  254. package/src/utilities/contours/AnnotationToPointData.ts +61 -0
  255. package/src/utilities/contours/RectangleROIStartEndThreshold.ts +60 -0
  256. package/src/utilities/contours/contourFinder.ts +78 -0
  257. package/src/utilities/contours/detectContourHoles.ts +147 -0
  258. package/src/utilities/contours/generateContourSetsFromLabelmap.ts +160 -0
  259. package/src/utilities/contours/index.ts +14 -0
  260. package/src/utilities/contours/mergePoints.ts +108 -0
  261. package/src/utilities/index.ts +6 -1
  262. package/src/utilities/segmentation/contourAndFindLargestBidirectional.ts +46 -0
  263. package/src/utilities/segmentation/createBidirectionalToolData.ts +68 -0
  264. package/src/utilities/segmentation/createImageIdReferenceMap.ts +23 -0
  265. package/src/utilities/segmentation/findLargestBidirectional.ts +159 -0
  266. package/src/utilities/segmentation/index.ts +8 -0
  267. package/src/utilities/segmentation/isLineInSegment.ts +84 -0
  268. package/src/utilities/segmentation/segmentContourAction.ts +169 -0
  269. package/src/utilities/segmentation/thresholdSegmentationByRange.ts +2 -2
  270. package/src/utilities/segmentation/triggerSegmentationRender.ts +15 -10
  271. package/src/utilities/stackPrefetch/stackContextPrefetch.ts +1 -1
  272. package/src/utilities/stackPrefetch/stackPrefetchUtils.ts +5 -1
  273. package/dist/cjs/utilities/roundNumber.d.ts +0 -2
  274. package/dist/cjs/utilities/roundNumber.js +0 -30
  275. package/dist/cjs/utilities/roundNumber.js.map +0 -1
  276. package/dist/esm/utilities/roundNumber.js +0 -28
  277. package/dist/esm/utilities/roundNumber.js.map +0 -1
  278. package/dist/types/utilities/roundNumber.d.ts +0 -3
  279. package/dist/types/utilities/roundNumber.d.ts.map +0 -1
  280. package/src/utilities/roundNumber.ts +0 -44
@@ -0,0 +1,169 @@
1
+ import { getEnabledElement, type Types } from '@cornerstonejs/core';
2
+
3
+ import type { Annotation } from '../../types/AnnotationTypes';
4
+ import * as segmentation from '../../stateManagement/segmentation';
5
+ import {
6
+ state as annotationState,
7
+ config as annotationConfig,
8
+ } from '../../stateManagement/annotation';
9
+ import { jumpToSlice } from '../viewport';
10
+ import contourAndFindLargestBidirectional from './contourAndFindLargestBidirectional';
11
+ import createBidirectionalToolData from './createBidirectionalToolData';
12
+ import BidirectionalTool from '../../tools/annotation/BidirectionalTool';
13
+
14
+ export type Segment = {
15
+ segmentationId: string;
16
+ segmentIndex: number;
17
+ label: string;
18
+
19
+ style?: any;
20
+ containedSegmentIndices?: (number) => boolean;
21
+ };
22
+
23
+ export type SegmentContourActionConfiguration = {
24
+ getSegment?: (
25
+ enabledElement: Types.IEnabledElement,
26
+ configuration: SegmentContourActionConfiguration
27
+ ) => Segment;
28
+
29
+ /**
30
+ * Optional map for data about each segment
31
+ */
32
+ segmentationId?: string;
33
+ segmentIndex?: number;
34
+ segmentData?: Map<number, Segment>;
35
+ toolGroupId?: string;
36
+ };
37
+
38
+ export default function segmentContourAction(
39
+ element: HTMLDivElement,
40
+ configuration
41
+ ) {
42
+ const { data: configurationData } = configuration;
43
+ const enabledElement = getEnabledElement(element);
44
+ const segment = (configurationData.getSegment || defaultGetSegment)(
45
+ enabledElement,
46
+ configurationData
47
+ );
48
+ if (!segment) {
49
+ return;
50
+ }
51
+ const FrameOfReferenceUID = enabledElement.viewport.getFrameOfReferenceUID();
52
+ const segmentationsList = segmentation.state.getSegmentations();
53
+ const { segmentIndex, segmentationId } = segment;
54
+ const bidirectionals = annotationState.getAnnotations(
55
+ this.toolName || BidirectionalTool.toolName,
56
+ FrameOfReferenceUID
57
+ );
58
+ let hasExistingActiveSegment = false;
59
+ const existingLargestBidirectionals = bidirectionals.filter(
60
+ (existingBidirectionalItem) => {
61
+ const { segment } = existingBidirectionalItem.data;
62
+ if (!segment) {
63
+ return;
64
+ }
65
+ if (
66
+ segment.segmentationId === segmentationId &&
67
+ segment.segmentIndex === segmentIndex
68
+ ) {
69
+ hasExistingActiveSegment = true;
70
+ existingBidirectionalItem.data.segment = segment;
71
+ }
72
+ return !!segment;
73
+ }
74
+ );
75
+ if (!hasExistingActiveSegment) {
76
+ // Just create a dummy annotation object containing just enough information
77
+ // to create a real one.
78
+ existingLargestBidirectionals.push({
79
+ data: { segment },
80
+ } as unknown as Annotation);
81
+ }
82
+
83
+ let newBidirectional;
84
+ existingLargestBidirectionals.forEach((existingLargestBidirectional) => {
85
+ const segments = [];
86
+ const { segment: updateSegment } = existingLargestBidirectional.data;
87
+ const { segmentIndex, segmentationId } = updateSegment;
88
+ segments[segmentIndex] = updateSegment;
89
+ annotationState.removeAnnotation(
90
+ existingLargestBidirectional.annotationUID
91
+ );
92
+ const bidirectionalData = contourAndFindLargestBidirectional({
93
+ ...segmentationsList.find(
94
+ (segmentation) => segmentation.segmentationId === segmentationId
95
+ ),
96
+ segments,
97
+ });
98
+
99
+ if (!bidirectionalData) {
100
+ return;
101
+ }
102
+ const bidirectionalToolData = createBidirectionalToolData(
103
+ bidirectionalData,
104
+ enabledElement.viewport
105
+ );
106
+ bidirectionalToolData.annotationUID =
107
+ existingLargestBidirectional.annotationUID;
108
+ bidirectionalToolData.data.segment = updateSegment;
109
+
110
+ const annotationUID = annotationState.addAnnotation(
111
+ bidirectionalToolData,
112
+ FrameOfReferenceUID
113
+ );
114
+
115
+ if (
116
+ updateSegment.segmentIndex === segment.segmentIndex &&
117
+ updateSegment.segmentationId === segment.segmentationId
118
+ ) {
119
+ newBidirectional = bidirectionalData;
120
+ const { style } = segment;
121
+ if (style) {
122
+ annotationConfig.style.setAnnotationStyles(annotationUID, style);
123
+ }
124
+ }
125
+ });
126
+
127
+ if (newBidirectional) {
128
+ const { referencedImageId } = newBidirectional;
129
+ const imageIds = enabledElement.viewport.getImageIds();
130
+ const imageIndex = imageIds.findIndex(
131
+ (imageId) => imageId === referencedImageId
132
+ );
133
+
134
+ // TODO - figure out why this is reversed
135
+ jumpToSlice(element, {
136
+ imageIndex: imageIds.length - 1 - imageIndex,
137
+ });
138
+ enabledElement.viewport.render();
139
+ } else {
140
+ console.warn('No bidirectional found');
141
+ }
142
+
143
+ return newBidirectional;
144
+ }
145
+
146
+ export function defaultGetSegment(
147
+ enabledElement: Types.IEnabledElement,
148
+ configuration: SegmentContourActionConfiguration
149
+ ): Segment {
150
+ const segmentationsList = segmentation.state.getSegmentations();
151
+ if (!segmentationsList.length) {
152
+ return;
153
+ }
154
+ const segmentationId =
155
+ configuration.segmentationId || segmentationsList[0].segmentationId;
156
+ const segmentIndex =
157
+ configuration.segmentIndex ??
158
+ segmentation.segmentIndex.getActiveSegmentIndex(segmentationId);
159
+ if (!segmentIndex) {
160
+ return;
161
+ }
162
+ const segmentData = configuration.segmentData?.get(segmentIndex);
163
+ return {
164
+ label: `Segment ${segmentIndex}`,
165
+ segmentIndex,
166
+ segmentationId,
167
+ ...segmentData,
168
+ };
169
+ }
@@ -64,7 +64,7 @@ function thresholdSegmentationByRange(
64
64
  }
65
65
 
66
66
  function _handleDifferentSizeVolume(
67
- scalarData: Types.VolumeScalarData,
67
+ scalarData: Types.PixelDataTypedArray,
68
68
  segmentationIndex: number,
69
69
  volumeInfo: any,
70
70
  volumeInfoList: any,
@@ -112,7 +112,7 @@ function _handleDifferentSizeVolume(
112
112
  }
113
113
 
114
114
  function _handleSameSizeVolume(
115
- scalarData: Types.VolumeScalarData,
115
+ scalarData: Types.PixelDataTypedArray,
116
116
  segmentationIndex: number,
117
117
  volumeInfo: any
118
118
  ) {
@@ -113,18 +113,23 @@ class SegmentationRenderingEngine {
113
113
  }
114
114
 
115
115
  const { viewportsInfo } = toolGroup;
116
- const viewports = [];
117
116
 
118
- viewportsInfo.forEach(({ viewportId, renderingEngineId }) => {
119
- const renderingEngine = getRenderingEngine(renderingEngineId);
117
+ const viewports = viewportsInfo
118
+ .map(({ viewportId, renderingEngineId }) => {
119
+ const renderingEngine = getRenderingEngine(renderingEngineId);
120
120
 
121
- if (!renderingEngine) {
122
- console.warn('rendering Engine has been destroyed');
123
- return;
124
- }
121
+ if (!renderingEngine) {
122
+ console.warn('rendering Engine has been destroyed');
123
+ return;
124
+ }
125
125
 
126
- viewports.push(renderingEngine.getViewport(viewportId));
127
- });
126
+ const viewport = renderingEngine.getViewport(viewportId);
127
+
128
+ if (viewport) {
129
+ return viewport;
130
+ }
131
+ })
132
+ .filter(Boolean);
128
133
 
129
134
  const segmentationDisplayToolInstance = toolGroup.getToolInstance(
130
135
  SegmentationDisplayTool.toolName
@@ -173,7 +178,7 @@ class SegmentationRenderingEngine {
173
178
  viewports.forEach(({ element }) => {
174
179
  element.addEventListener(
175
180
  Enums.Events.IMAGE_RENDERED,
176
- onSegmentationRender
181
+ onSegmentationRender as EventListener
177
182
  );
178
183
  });
179
184
 
@@ -14,7 +14,7 @@ import {
14
14
  clearFromImageIds,
15
15
  getPromiseRemovedHandler,
16
16
  } from './stackPrefetchUtils';
17
- import roundNumber from '../roundNumber';
17
+ import { roundNumber } from '../../utilities';
18
18
 
19
19
  let configuration = {
20
20
  maxImagesToPrefetch: Infinity,
@@ -52,9 +52,13 @@ export function getStackData(element) {
52
52
  const { viewport } = enabledElement;
53
53
 
54
54
  if (!(viewport instanceof StackViewport)) {
55
- throw new Error(
55
+ // we shouldn't throw error here, since the viewport might have
56
+ // changed from stack to volume during prefetch
57
+ console.warn(
56
58
  'stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented'
57
59
  );
60
+
61
+ return null;
58
62
  }
59
63
 
60
64
  return {
@@ -1,2 +0,0 @@
1
- declare function roundNumber(value: string | number | (string | number)[], precision?: number): string;
2
- export default roundNumber;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function roundNumber(value, precision = 2) {
4
- if (Array.isArray(value)) {
5
- return value.map((v) => roundNumber(v, precision)).join(', ');
6
- }
7
- if (value === undefined || value === null || value === '') {
8
- return 'NaN';
9
- }
10
- value = Number(value);
11
- if (value < 0.0001) {
12
- return `${value}`;
13
- }
14
- const fixedPrecision = value >= 100
15
- ? precision - 2
16
- : value >= 10
17
- ? precision - 1
18
- : value >= 1
19
- ? precision
20
- : value >= 0.1
21
- ? precision + 1
22
- : value >= 0.01
23
- ? precision + 2
24
- : value >= 0.001
25
- ? precision + 3
26
- : precision + 4;
27
- return value.toFixed(fixedPrecision);
28
- }
29
- exports.default = roundNumber;
30
- //# sourceMappingURL=roundNumber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roundNumber.js","sourceRoot":"","sources":["../../../src/utilities/roundNumber.ts"],"names":[],"mappings":";;AAYA,SAAS,WAAW,CAClB,KAA4C,EAC5C,SAAS,GAAG,CAAC;IAEb,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/D;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;QACzD,OAAO,KAAK,CAAC;KACd;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,MAAM,EAAE;QAClB,OAAO,GAAG,KAAK,EAAE,CAAC;KACnB;IACD,MAAM,cAAc,GAClB,KAAK,IAAI,GAAG;QACV,CAAC,CAAC,SAAS,GAAG,CAAC;QACf,CAAC,CAAC,KAAK,IAAI,EAAE;YACb,CAAC,CAAC,SAAS,GAAG,CAAC;YACf,CAAC,CAAC,KAAK,IAAI,CAAC;gBACZ,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,IAAI,GAAG;oBACd,CAAC,CAAC,SAAS,GAAG,CAAC;oBACf,CAAC,CAAC,KAAK,IAAI,IAAI;wBACf,CAAC,CAAC,SAAS,GAAG,CAAC;wBACf,CAAC,CAAC,KAAK,IAAI,KAAK;4BAChB,CAAC,CAAC,SAAS,GAAG,CAAC;4BACf,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED,kBAAe,WAAW,CAAC"}
@@ -1,28 +0,0 @@
1
- function roundNumber(value, precision = 2) {
2
- if (Array.isArray(value)) {
3
- return value.map((v) => roundNumber(v, precision)).join(', ');
4
- }
5
- if (value === undefined || value === null || value === '') {
6
- return 'NaN';
7
- }
8
- value = Number(value);
9
- if (value < 0.0001) {
10
- return `${value}`;
11
- }
12
- const fixedPrecision = value >= 100
13
- ? precision - 2
14
- : value >= 10
15
- ? precision - 1
16
- : value >= 1
17
- ? precision
18
- : value >= 0.1
19
- ? precision + 1
20
- : value >= 0.01
21
- ? precision + 2
22
- : value >= 0.001
23
- ? precision + 3
24
- : precision + 4;
25
- return value.toFixed(fixedPrecision);
26
- }
27
- export default roundNumber;
28
- //# sourceMappingURL=roundNumber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roundNumber.js","sourceRoot":"","sources":["../../../src/utilities/roundNumber.ts"],"names":[],"mappings":"AAYA,SAAS,WAAW,CAClB,KAA4C,EAC5C,SAAS,GAAG,CAAC;IAEb,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/D;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;QACzD,OAAO,KAAK,CAAC;KACd;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,MAAM,EAAE;QAClB,OAAO,GAAG,KAAK,EAAE,CAAC;KACnB;IACD,MAAM,cAAc,GAClB,KAAK,IAAI,GAAG;QACV,CAAC,CAAC,SAAS,GAAG,CAAC;QACf,CAAC,CAAC,KAAK,IAAI,EAAE;YACb,CAAC,CAAC,SAAS,GAAG,CAAC;YACf,CAAC,CAAC,KAAK,IAAI,CAAC;gBACZ,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,IAAI,GAAG;oBACd,CAAC,CAAC,SAAS,GAAG,CAAC;oBACf,CAAC,CAAC,KAAK,IAAI,IAAI;wBACf,CAAC,CAAC,SAAS,GAAG,CAAC;wBACf,CAAC,CAAC,KAAK,IAAI,KAAK;4BAChB,CAAC,CAAC,SAAS,GAAG,CAAC;4BACf,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -1,3 +0,0 @@
1
- declare function roundNumber(value: string | number | (string | number)[], precision?: number): string;
2
- export default roundNumber;
3
- //# sourceMappingURL=roundNumber.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roundNumber.d.ts","sourceRoot":"","sources":["../../../src/utilities/roundNumber.ts"],"names":[],"mappings":"AAYA,iBAAS,WAAW,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC5C,SAAS,SAAI,GACZ,MAAM,CA0BR;AAED,eAAe,WAAW,CAAC"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Truncates decimal points to that there is at least 1+precision significant
3
- * digits.
4
- *
5
- * For example, with the default precision 2 (3 significant digits)
6
- * * Values larger than 100 show no information after the decimal point
7
- * * Values between 10 and 99 show 1 decimal point
8
- * * Values between 1 and 9 show 2 decimal points
9
- *
10
- * @param value - to return a fixed measurement value from
11
- * @param precision - defining how many digits after 1..9 are desired
12
- */
13
- function roundNumber(
14
- value: string | number | (string | number)[],
15
- precision = 2
16
- ): string {
17
- if (Array.isArray(value)) {
18
- return value.map((v) => roundNumber(v, precision)).join(', ');
19
- }
20
- if (value === undefined || value === null || value === '') {
21
- return 'NaN';
22
- }
23
- value = Number(value);
24
- if (value < 0.0001) {
25
- return `${value}`;
26
- }
27
- const fixedPrecision =
28
- value >= 100
29
- ? precision - 2
30
- : value >= 10
31
- ? precision - 1
32
- : value >= 1
33
- ? precision
34
- : value >= 0.1
35
- ? precision + 1
36
- : value >= 0.01
37
- ? precision + 2
38
- : value >= 0.001
39
- ? precision + 3
40
- : precision + 4;
41
- return value.toFixed(fixedPrecision);
42
- }
43
-
44
- export default roundNumber;