@cornerstonejs/tools 1.36.3 → 1.37.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 (283) hide show
  1. package/dist/cjs/drawingSvg/drawEllipse.js +1 -1
  2. package/dist/cjs/drawingSvg/drawEllipse.js.map +1 -1
  3. package/dist/cjs/drawingSvg/drawEllipseByCoordinates.js +2 -3
  4. package/dist/cjs/drawingSvg/drawEllipseByCoordinates.js.map +1 -1
  5. package/dist/cjs/enums/StrategyCallbacks.d.ts +13 -0
  6. package/dist/cjs/enums/StrategyCallbacks.js +17 -0
  7. package/dist/cjs/enums/StrategyCallbacks.js.map +1 -0
  8. package/dist/cjs/enums/index.d.ts +2 -1
  9. package/dist/cjs/enums/index.js +3 -1
  10. package/dist/cjs/enums/index.js.map +1 -1
  11. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js +17 -7
  12. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
  13. package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +4 -1
  14. package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.js.map +1 -1
  15. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts +3 -0
  16. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +33 -0
  17. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js.map +1 -0
  18. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
  19. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js +8 -1
  20. package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
  21. package/dist/cjs/tools/annotation/EllipticalROITool.js +1 -2
  22. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  23. package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
  24. package/dist/cjs/tools/base/BaseTool.d.ts +2 -0
  25. package/dist/cjs/tools/base/BaseTool.js +7 -1
  26. package/dist/cjs/tools/base/BaseTool.js.map +1 -1
  27. package/dist/cjs/tools/segmentation/BrushTool.d.ts +45 -3
  28. package/dist/cjs/tools/segmentation/BrushTool.js +197 -71
  29. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  30. package/dist/cjs/tools/segmentation/CircleScissorsTool.js +3 -1
  31. package/dist/cjs/tools/segmentation/CircleScissorsTool.js.map +1 -1
  32. package/dist/cjs/tools/segmentation/SphereScissorsTool.js +3 -0
  33. package/dist/cjs/tools/segmentation/SphereScissorsTool.js.map +1 -1
  34. package/dist/cjs/tools/segmentation/strategies/BrushStrategy.d.ts +87 -0
  35. package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js +137 -0
  36. package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js.map +1 -0
  37. package/dist/cjs/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts +6 -0
  38. package/dist/cjs/tools/segmentation/strategies/compositions/determineSegmentIndex.js +53 -0
  39. package/dist/cjs/tools/segmentation/strategies/compositions/determineSegmentIndex.js.map +1 -0
  40. package/dist/cjs/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts +6 -0
  41. package/dist/cjs/tools/segmentation/strategies/compositions/dynamicThreshold.js +41 -0
  42. package/dist/cjs/tools/segmentation/strategies/compositions/dynamicThreshold.js.map +1 -0
  43. package/dist/cjs/tools/segmentation/strategies/compositions/erase.d.ts +5 -0
  44. package/dist/cjs/tools/segmentation/strategies/compositions/erase.js +12 -0
  45. package/dist/cjs/tools/segmentation/strategies/compositions/erase.js.map +1 -0
  46. package/dist/cjs/tools/segmentation/strategies/compositions/index.d.ts +35 -0
  47. package/dist/cjs/tools/segmentation/strategies/compositions/index.js +24 -0
  48. package/dist/cjs/tools/segmentation/strategies/compositions/index.js.map +1 -0
  49. package/dist/cjs/tools/segmentation/strategies/compositions/islandRemoval.d.ts +5 -0
  50. package/dist/cjs/tools/segmentation/strategies/compositions/islandRemoval.js +129 -0
  51. package/dist/cjs/tools/segmentation/strategies/compositions/islandRemoval.js.map +1 -0
  52. package/dist/cjs/tools/segmentation/strategies/compositions/preview.d.ts +8 -0
  53. package/dist/cjs/tools/segmentation/strategies/compositions/preview.js +84 -0
  54. package/dist/cjs/tools/segmentation/strategies/compositions/preview.js.map +1 -0
  55. package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.d.ts +5 -0
  56. package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js +27 -0
  57. package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js.map +1 -0
  58. package/dist/cjs/tools/segmentation/strategies/compositions/setValue.d.ts +8 -0
  59. package/dist/cjs/tools/segmentation/strategies/compositions/setValue.js +33 -0
  60. package/dist/cjs/tools/segmentation/strategies/compositions/setValue.js.map +1 -0
  61. package/dist/cjs/tools/segmentation/strategies/compositions/threshold.d.ts +5 -0
  62. package/dist/cjs/tools/segmentation/strategies/compositions/threshold.js +24 -0
  63. package/dist/cjs/tools/segmentation/strategies/compositions/threshold.js.map +1 -0
  64. package/dist/cjs/tools/segmentation/strategies/eraseCircle.d.ts +2 -7
  65. package/dist/cjs/tools/segmentation/strategies/eraseCircle.js +7 -4
  66. package/dist/cjs/tools/segmentation/strategies/eraseCircle.js.map +1 -1
  67. package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -7
  68. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js +7 -6
  69. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  70. package/dist/cjs/tools/segmentation/strategies/fillCircle.d.ts +13 -8
  71. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +68 -90
  72. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
  73. package/dist/cjs/tools/segmentation/strategies/fillRectangle.js +3 -9
  74. package/dist/cjs/tools/segmentation/strategies/fillRectangle.js.map +1 -1
  75. package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +6 -9
  76. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +53 -64
  77. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
  78. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.d.ts +3 -0
  79. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js +6 -0
  80. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
  81. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +2 -2
  82. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +2 -2
  83. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
  84. package/dist/cjs/types/BoundsIJK.d.ts +1 -1
  85. package/dist/cjs/types/FloodFillTypes.d.ts +4 -4
  86. package/dist/cjs/types/LabelmapToolOperationData.d.ts +7 -2
  87. package/dist/cjs/types/index.d.ts +2 -1
  88. package/dist/cjs/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +2 -3
  89. package/dist/cjs/utilities/math/ellipse/index.d.ts +2 -2
  90. package/dist/cjs/utilities/math/ellipse/index.js +26 -2
  91. package/dist/cjs/utilities/math/ellipse/index.js.map +1 -1
  92. package/dist/cjs/utilities/math/ellipse/pointInEllipse.d.ts +4 -1
  93. package/dist/cjs/utilities/math/ellipse/pointInEllipse.js +30 -17
  94. package/dist/cjs/utilities/math/ellipse/pointInEllipse.js.map +1 -1
  95. package/dist/cjs/utilities/math/sphere/pointInSphere.d.ts +1 -0
  96. package/dist/cjs/utilities/math/sphere/pointInSphere.js +2 -1
  97. package/dist/cjs/utilities/math/sphere/pointInSphere.js.map +1 -1
  98. package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.d.ts +1 -1
  99. package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.js +5 -5
  100. package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.js.map +1 -1
  101. package/dist/esm/drawingSvg/drawEllipse.js +1 -1
  102. package/dist/esm/drawingSvg/drawEllipse.js.map +1 -1
  103. package/dist/esm/drawingSvg/drawEllipseByCoordinates.js +2 -3
  104. package/dist/esm/drawingSvg/drawEllipseByCoordinates.js.map +1 -1
  105. package/dist/esm/enums/StrategyCallbacks.js +15 -0
  106. package/dist/esm/enums/StrategyCallbacks.js.map +1 -0
  107. package/dist/esm/enums/index.js +2 -1
  108. package/dist/esm/enums/index.js.map +1 -1
  109. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +17 -7
  110. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
  111. package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +4 -1
  112. package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js.map +1 -1
  113. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +29 -0
  114. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js.map +1 -0
  115. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
  116. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -1
  117. package/dist/esm/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
  118. package/dist/esm/tools/annotation/EllipticalROITool.js +1 -2
  119. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  120. package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
  121. package/dist/esm/tools/base/BaseTool.js +5 -1
  122. package/dist/esm/tools/base/BaseTool.js.map +1 -1
  123. package/dist/esm/tools/segmentation/BrushTool.js +208 -87
  124. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  125. package/dist/esm/tools/segmentation/CircleScissorsTool.js +3 -0
  126. package/dist/esm/tools/segmentation/CircleScissorsTool.js.map +1 -1
  127. package/dist/esm/tools/segmentation/SphereScissorsTool.js +3 -0
  128. package/dist/esm/tools/segmentation/SphereScissorsTool.js.map +1 -1
  129. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +136 -0
  130. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js.map +1 -0
  131. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +48 -0
  132. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js.map +1 -0
  133. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +35 -0
  134. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js.map +1 -0
  135. package/dist/esm/tools/segmentation/strategies/compositions/erase.js +7 -0
  136. package/dist/esm/tools/segmentation/strategies/compositions/erase.js.map +1 -0
  137. package/dist/esm/tools/segmentation/strategies/compositions/index.js +19 -0
  138. package/dist/esm/tools/segmentation/strategies/compositions/index.js.map +1 -0
  139. package/dist/esm/tools/segmentation/strategies/compositions/islandRemoval.js +124 -0
  140. package/dist/esm/tools/segmentation/strategies/compositions/islandRemoval.js.map +1 -0
  141. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +77 -0
  142. package/dist/esm/tools/segmentation/strategies/compositions/preview.js.map +1 -0
  143. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +21 -0
  144. package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js.map +1 -0
  145. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +28 -0
  146. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js.map +1 -0
  147. package/dist/esm/tools/segmentation/strategies/compositions/threshold.js +19 -0
  148. package/dist/esm/tools/segmentation/strategies/compositions/threshold.js.map +1 -0
  149. package/dist/esm/tools/segmentation/strategies/eraseCircle.js +6 -8
  150. package/dist/esm/tools/segmentation/strategies/eraseCircle.js.map +1 -1
  151. package/dist/esm/tools/segmentation/strategies/eraseSphere.js +6 -7
  152. package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  153. package/dist/esm/tools/segmentation/strategies/fillCircle.js +64 -88
  154. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
  155. package/dist/esm/tools/segmentation/strategies/fillRectangle.js +3 -9
  156. package/dist/esm/tools/segmentation/strategies/fillRectangle.js.map +1 -1
  157. package/dist/esm/tools/segmentation/strategies/fillSphere.js +53 -64
  158. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
  159. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +7 -1
  160. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
  161. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +2 -2
  162. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
  163. package/dist/esm/utilities/math/ellipse/index.js +2 -2
  164. package/dist/esm/utilities/math/ellipse/index.js.map +1 -1
  165. package/dist/esm/utilities/math/ellipse/pointInEllipse.js +28 -16
  166. package/dist/esm/utilities/math/ellipse/pointInEllipse.js.map +1 -1
  167. package/dist/esm/utilities/math/sphere/pointInSphere.js +2 -1
  168. package/dist/esm/utilities/math/sphere/pointInSphere.js.map +1 -1
  169. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +11 -5
  170. package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js.map +1 -1
  171. package/dist/types/drawingSvg/drawEllipseByCoordinates.d.ts.map +1 -1
  172. package/dist/types/enums/StrategyCallbacks.d.ts +14 -0
  173. package/dist/types/enums/StrategyCallbacks.d.ts.map +1 -0
  174. package/dist/types/enums/index.d.ts +2 -1
  175. package/dist/types/eventDispatchers/keyboardEventHandlers/keyDown.d.ts.map +1 -1
  176. package/dist/types/eventDispatchers/shared/getActiveToolForKeyboardEvent.d.ts.map +1 -1
  177. package/dist/types/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts +4 -0
  178. package/dist/types/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts.map +1 -0
  179. package/dist/types/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts.map +1 -1
  180. package/dist/types/stateManagement/segmentation/config/segmentationColor.d.ts.map +1 -1
  181. package/dist/types/tools/annotation/EllipticalROITool.d.ts.map +1 -1
  182. package/dist/types/tools/base/AnnotationTool.d.ts.map +1 -1
  183. package/dist/types/tools/base/BaseTool.d.ts +2 -0
  184. package/dist/types/tools/base/BaseTool.d.ts.map +1 -1
  185. package/dist/types/tools/segmentation/BrushTool.d.ts +45 -3
  186. package/dist/types/tools/segmentation/BrushTool.d.ts.map +1 -1
  187. package/dist/types/tools/segmentation/CircleScissorsTool.d.ts.map +1 -1
  188. package/dist/types/tools/segmentation/SphereScissorsTool.d.ts.map +1 -1
  189. package/dist/types/tools/segmentation/strategies/BrushStrategy.d.ts +88 -0
  190. package/dist/types/tools/segmentation/strategies/BrushStrategy.d.ts.map +1 -0
  191. package/dist/types/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts +7 -0
  192. package/dist/types/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts.map +1 -0
  193. package/dist/types/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts +7 -0
  194. package/dist/types/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts.map +1 -0
  195. package/dist/types/tools/segmentation/strategies/compositions/erase.d.ts +6 -0
  196. package/dist/types/tools/segmentation/strategies/compositions/erase.d.ts.map +1 -0
  197. package/dist/types/tools/segmentation/strategies/compositions/index.d.ts +36 -0
  198. package/dist/types/tools/segmentation/strategies/compositions/index.d.ts.map +1 -0
  199. package/dist/types/tools/segmentation/strategies/compositions/islandRemoval.d.ts +6 -0
  200. package/dist/types/tools/segmentation/strategies/compositions/islandRemoval.d.ts.map +1 -0
  201. package/dist/types/tools/segmentation/strategies/compositions/preview.d.ts +9 -0
  202. package/dist/types/tools/segmentation/strategies/compositions/preview.d.ts.map +1 -0
  203. package/dist/types/tools/segmentation/strategies/compositions/regionFill.d.ts +6 -0
  204. package/dist/types/tools/segmentation/strategies/compositions/regionFill.d.ts.map +1 -0
  205. package/dist/types/tools/segmentation/strategies/compositions/setValue.d.ts +9 -0
  206. package/dist/types/tools/segmentation/strategies/compositions/setValue.d.ts.map +1 -0
  207. package/dist/types/tools/segmentation/strategies/compositions/threshold.d.ts +6 -0
  208. package/dist/types/tools/segmentation/strategies/compositions/threshold.d.ts.map +1 -0
  209. package/dist/types/tools/segmentation/strategies/eraseCircle.d.ts +2 -7
  210. package/dist/types/tools/segmentation/strategies/eraseCircle.d.ts.map +1 -1
  211. package/dist/types/tools/segmentation/strategies/eraseSphere.d.ts +2 -7
  212. package/dist/types/tools/segmentation/strategies/eraseSphere.d.ts.map +1 -1
  213. package/dist/types/tools/segmentation/strategies/fillCircle.d.ts +13 -8
  214. package/dist/types/tools/segmentation/strategies/fillCircle.d.ts.map +1 -1
  215. package/dist/types/tools/segmentation/strategies/fillRectangle.d.ts.map +1 -1
  216. package/dist/types/tools/segmentation/strategies/fillSphere.d.ts +6 -9
  217. package/dist/types/tools/segmentation/strategies/fillSphere.d.ts.map +1 -1
  218. package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts +3 -0
  219. package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts.map +1 -1
  220. package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +2 -2
  221. package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts.map +1 -1
  222. package/dist/types/types/BoundsIJK.d.ts +1 -1
  223. package/dist/types/types/BoundsIJK.d.ts.map +1 -1
  224. package/dist/types/types/FloodFillTypes.d.ts +4 -4
  225. package/dist/types/types/FloodFillTypes.d.ts.map +1 -1
  226. package/dist/types/types/LabelmapToolOperationData.d.ts +7 -2
  227. package/dist/types/types/LabelmapToolOperationData.d.ts.map +1 -1
  228. package/dist/types/types/index.d.ts +2 -1
  229. package/dist/types/types/index.d.ts.map +1 -1
  230. package/dist/types/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +2 -3
  231. package/dist/types/utilities/math/ellipse/getCanvasEllipseCorners.d.ts.map +1 -1
  232. package/dist/types/utilities/math/ellipse/index.d.ts +2 -2
  233. package/dist/types/utilities/math/ellipse/index.d.ts.map +1 -1
  234. package/dist/types/utilities/math/ellipse/pointInEllipse.d.ts +4 -1
  235. package/dist/types/utilities/math/ellipse/pointInEllipse.d.ts.map +1 -1
  236. package/dist/types/utilities/math/sphere/pointInSphere.d.ts +1 -0
  237. package/dist/types/utilities/math/sphere/pointInSphere.d.ts.map +1 -1
  238. package/dist/types/utilities/segmentation/brushThresholdForToolGroup.d.ts +1 -1
  239. package/dist/types/utilities/segmentation/brushThresholdForToolGroup.d.ts.map +1 -1
  240. package/dist/umd/index.js +1 -1
  241. package/dist/umd/index.js.map +1 -1
  242. package/package.json +3 -3
  243. package/src/drawingSvg/drawEllipse.ts +8 -8
  244. package/src/drawingSvg/drawEllipseByCoordinates.ts +4 -4
  245. package/src/enums/StrategyCallbacks.ts +52 -0
  246. package/src/enums/index.js +2 -0
  247. package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +22 -11
  248. package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +6 -2
  249. package/src/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.ts +53 -0
  250. package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +0 -2
  251. package/src/stateManagement/segmentation/config/segmentationColor.ts +8 -1
  252. package/src/tools/annotation/EllipticalROITool.ts +1 -3
  253. package/src/tools/base/AnnotationTool.ts +0 -1
  254. package/src/tools/base/BaseTool.ts +32 -2
  255. package/src/tools/segmentation/BrushTool.ts +298 -68
  256. package/src/tools/segmentation/CircleScissorsTool.ts +3 -1
  257. package/src/tools/segmentation/SphereScissorsTool.ts +3 -0
  258. package/src/tools/segmentation/strategies/BrushStrategy.ts +364 -0
  259. package/src/tools/segmentation/strategies/compositions/determineSegmentIndex.ts +86 -0
  260. package/src/tools/segmentation/strategies/compositions/dynamicThreshold.ts +58 -0
  261. package/src/tools/segmentation/strategies/compositions/erase.ts +11 -0
  262. package/src/tools/segmentation/strategies/compositions/index.ts +19 -0
  263. package/src/tools/segmentation/strategies/compositions/islandRemoval.ts +179 -0
  264. package/src/tools/segmentation/strategies/compositions/preview.ts +138 -0
  265. package/src/tools/segmentation/strategies/compositions/regionFill.ts +45 -0
  266. package/src/tools/segmentation/strategies/compositions/setValue.ts +50 -0
  267. package/src/tools/segmentation/strategies/compositions/threshold.ts +35 -0
  268. package/src/tools/segmentation/strategies/eraseCircle.ts +10 -19
  269. package/src/tools/segmentation/strategies/eraseSphere.ts +10 -18
  270. package/src/tools/segmentation/strategies/fillCircle.ts +141 -164
  271. package/src/tools/segmentation/strategies/fillRectangle.ts +3 -13
  272. package/src/tools/segmentation/strategies/fillSphere.ts +105 -120
  273. package/src/tools/segmentation/strategies/utils/getStrategyData.ts +15 -1
  274. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +5 -5
  275. package/src/types/BoundsIJK.ts +1 -1
  276. package/src/types/FloodFillTypes.ts +4 -4
  277. package/src/types/LabelmapToolOperationData.ts +20 -1
  278. package/src/types/index.ts +2 -0
  279. package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +2 -2
  280. package/src/utilities/math/ellipse/index.ts +2 -2
  281. package/src/utilities/math/ellipse/pointInEllipse.ts +52 -18
  282. package/src/utilities/math/sphere/pointInSphere.ts +10 -2
  283. package/src/utilities/segmentation/brushThresholdForToolGroup.ts +12 -5
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const pointInShapeCallback_1 = __importDefault(require("../../../../utilities/pointInShapeCallback"));
7
+ const StrategyCallbacks_1 = __importDefault(require("../../../../enums/StrategyCallbacks"));
8
+ exports.default = {
9
+ [StrategyCallbacks_1.default.Fill]: (operationData) => {
10
+ var _a;
11
+ const { segmentsLocked, segmentationImageData, segmentationVoxelManager: segmentationVoxelManager, previewVoxelManager: previewVoxelManager, imageVoxelManager: imageVoxelManager, brushStrategy, centerIJK, } = operationData;
12
+ const isWithinThreshold = (_a = brushStrategy.createIsInThreshold) === null || _a === void 0 ? void 0 : _a.call(brushStrategy, operationData);
13
+ const { setValue } = brushStrategy;
14
+ const callback = isWithinThreshold
15
+ ? (data) => {
16
+ const { value, index } = data;
17
+ if (segmentsLocked.includes(value) || !isWithinThreshold(index)) {
18
+ return;
19
+ }
20
+ setValue(operationData, data);
21
+ }
22
+ : (data) => setValue(operationData, data);
23
+ (0, pointInShapeCallback_1.default)(segmentationImageData, imageVoxelManager.isInObject, callback, segmentationVoxelManager.boundsIJK);
24
+ previewVoxelManager.addPoint(centerIJK);
25
+ },
26
+ };
27
+ //# sourceMappingURL=regionFill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regionFill.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/compositions/regionFill.ts"],"names":[],"mappings":";;;;;AACA,sGAA8E;AAC9E,4FAAoE;AAQpE,kBAAe;IACb,CAAC,2BAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAuC,EAAE,EAAE;;QACpE,MAAM,EACJ,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EAAE,wBAAwB,EAClD,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EACb,SAAS,GACV,GAAG,aAAa,CAAC;QAClB,MAAM,iBAAiB,GACrB,MAAA,aAAa,CAAC,mBAAmB,8DAAG,aAAa,CAAC,CAAC;QACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;QAEnC,MAAM,QAAQ,GAAG,iBAAiB;YAChC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;gBACP,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAC9B,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;oBAC/D,OAAO;iBACR;gBACD,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAChC,CAAC;YACH,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAE5C,IAAA,8BAAoB,EAClB,qBAAgC,EAChC,iBAAiB,CAAC,UAAU,EAC5B,QAAQ,EACR,wBAAwB,CAAC,SAAS,CACnC,CAAC;QAEF,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { InitializedOperationData } from '../BrushStrategy';
2
+ declare const _default: {
3
+ setValue: (operationData: InitializedOperationData, { value, index }: {
4
+ value: any;
5
+ index: any;
6
+ }) => void;
7
+ };
8
+ export default _default;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const StrategyCallbacks_1 = __importDefault(require("../../../../enums/StrategyCallbacks"));
7
+ exports.default = {
8
+ [StrategyCallbacks_1.default.INTERNAL_setValue]: (operationData, { value, index }) => {
9
+ const { segmentsLocked, segmentIndex, previewVoxelManager: previewVoxelManager, previewSegmentIndex, segmentationVoxelManager: segmentationVoxelManager, } = operationData;
10
+ const existingValue = segmentationVoxelManager.getAtIndex(index);
11
+ if (segmentIndex === null) {
12
+ const oldValue = previewVoxelManager.getAtIndex(index);
13
+ if (oldValue !== undefined) {
14
+ previewVoxelManager.setAtIndex(index, oldValue);
15
+ }
16
+ return;
17
+ }
18
+ if (existingValue === segmentIndex || segmentsLocked.includes(value)) {
19
+ return;
20
+ }
21
+ if (existingValue === previewSegmentIndex) {
22
+ if (previewVoxelManager.getAtIndex(index) === undefined) {
23
+ segmentationVoxelManager.setAtIndex(index, segmentIndex);
24
+ }
25
+ else {
26
+ return;
27
+ }
28
+ }
29
+ const useSegmentIndex = previewSegmentIndex !== null && previewSegmentIndex !== void 0 ? previewSegmentIndex : segmentIndex;
30
+ previewVoxelManager.setAtIndex(index, useSegmentIndex);
31
+ },
32
+ };
33
+ //# sourceMappingURL=setValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setValue.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/compositions/setValue.ts"],"names":[],"mappings":";;;;;AACA,4FAAoE;AASpE,kBAAe;IACb,CAAC,2BAAiB,CAAC,iBAAiB,CAAC,EAAE,CACrC,aAAuC,EACvC,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,EAAE;QACF,MAAM,EACJ,cAAc,EACd,YAAY,EACZ,mBAAmB,EAAE,mBAAmB,EACxC,mBAAmB,EACnB,wBAAwB,EAAE,wBAAwB,GACnD,GAAG,aAAa,CAAC;QAClB,MAAM,aAAa,GAAG,wBAAwB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,mBAAmB,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,OAAO;SACR;QAED,IAAI,aAAa,KAAK,YAAY,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACpE,OAAO;SACR;QAED,IAAI,aAAa,KAAK,mBAAmB,EAAE;YACzC,IAAI,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;gBAEvD,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;aAC1D;iBAAM;gBACL,OAAO;aACR;SACF;QAGD,MAAM,eAAe,GAAG,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,YAAY,CAAC;QAE5D,mBAAmB,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACzD,CAAC;CACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { InitializedOperationData } from '../BrushStrategy';
2
+ declare const _default: {
3
+ createIsInThreshold: (operationData: InitializedOperationData) => (index: any) => boolean;
4
+ };
5
+ export default _default;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const StrategyCallbacks_1 = __importDefault(require("../../../../enums/StrategyCallbacks"));
7
+ exports.default = {
8
+ [StrategyCallbacks_1.default.CreateIsInThreshold]: (operationData) => {
9
+ const { imageVoxelManager: imageVoxelManager, strategySpecificConfiguration, segmentIndex, } = operationData;
10
+ if (!strategySpecificConfiguration || !segmentIndex) {
11
+ return;
12
+ }
13
+ return (index) => {
14
+ const { THRESHOLD, THRESHOLD_INSIDE_CIRCLE } = strategySpecificConfiguration;
15
+ const voxelValue = imageVoxelManager.getAtIndex(index);
16
+ const { threshold } = THRESHOLD || THRESHOLD_INSIDE_CIRCLE || {};
17
+ if (!(threshold === null || threshold === void 0 ? void 0 : threshold.length)) {
18
+ return true;
19
+ }
20
+ return threshold[0] <= voxelValue && voxelValue <= threshold[1];
21
+ };
22
+ },
23
+ };
24
+ //# sourceMappingURL=threshold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/compositions/threshold.ts"],"names":[],"mappings":";;;;;AACA,4FAAoE;AAOpE,kBAAe;IACb,CAAC,2BAAiB,CAAC,mBAAmB,CAAC,EAAE,CACvC,aAAuC,EACvC,EAAE;QACF,MAAM,EACJ,iBAAiB,EAAE,iBAAiB,EACpC,6BAA6B,EAC7B,YAAY,GACb,GAAG,aAAa,CAAC;QAClB,IAAI,CAAC,6BAA6B,IAAI,CAAC,YAAY,EAAE;YACnD,OAAO;SACR;QACD,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAC1C,6BAA6B,CAAC;YAEhC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAGvD,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,IAAI,uBAAuB,IAAI,EAAE,CAAC;YACjE,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;YACD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,7 +1,2 @@
1
- import type { Types } from '@cornerstonejs/core';
2
- import { LabelmapToolOperationData } from '../../../types';
3
- declare type OperationData = LabelmapToolOperationData & {
4
- points: any;
5
- };
6
- export declare function eraseInsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
7
- export {};
1
+ declare const eraseInsideCircle: (enabledElement: any, operationData: any) => unknown;
2
+ export { eraseInsideCircle };
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.eraseInsideCircle = void 0;
7
+ const BrushStrategy_1 = __importDefault(require("./BrushStrategy"));
4
8
  const fillCircle_1 = require("./fillCircle");
5
- function eraseInsideCircle(enabledElement, operationData) {
6
- const eraseOperationData = Object.assign(Object.assign({}, operationData), { segmentIndex: 0 });
7
- (0, fillCircle_1.fillInsideCircle)(enabledElement, eraseOperationData);
8
- }
9
+ const compositions_1 = __importDefault(require("./compositions"));
10
+ const ERASE_CIRCLE_STRATEGY = new BrushStrategy_1.default('EraseCircle', compositions_1.default.erase, ...fillCircle_1.CIRCLE_STRATEGY.compositions);
11
+ const eraseInsideCircle = ERASE_CIRCLE_STRATEGY.strategyFunction;
9
12
  exports.eraseInsideCircle = eraseInsideCircle;
10
13
  //# sourceMappingURL=eraseCircle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eraseCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseCircle.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAOhD,SAAgB,iBAAiB,CAC/B,cAAqC,EACrC,aAA4B;IAI5B,MAAM,kBAAkB,mCACnB,aAAa,KAChB,YAAY,EAAE,CAAC,GAChB,CAAC;IAEF,IAAA,6BAAgB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAZD,8CAYC"}
1
+ {"version":3,"file":"eraseCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseCircle.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAC5C,6CAA+C;AAC/C,kEAA0C;AAE1C,MAAM,qBAAqB,GAAG,IAAI,uBAAa,CAC7C,aAAa,EACb,sBAAY,CAAC,KAAK,EAClB,GAAG,4BAAe,CAAC,YAAY,CAChC,CAAC;AAEF,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;AAExD,8CAAiB"}
@@ -1,7 +1,2 @@
1
- import type { Types } from '@cornerstonejs/core';
2
- import { LabelmapToolOperationData } from '../../../types';
3
- declare type OperationData = LabelmapToolOperationData & {
4
- points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
5
- };
6
- export declare function eraseInsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
7
- export {};
1
+ declare const eraseInsideSphere: (enabledElement: any, operationData: any) => unknown;
2
+ export { eraseInsideSphere };
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.eraseInsideSphere = void 0;
7
+ const BrushStrategy_1 = __importDefault(require("./BrushStrategy"));
4
8
  const fillSphere_1 = require("./fillSphere");
5
- function eraseInsideSphere(enabledElement, operationData) {
6
- const eraseOperationData = Object.assign({}, operationData, {
7
- segmentIndex: 0,
8
- });
9
- (0, fillSphere_1.fillInsideSphere)(enabledElement, eraseOperationData);
10
- }
9
+ const compositions_1 = __importDefault(require("./compositions"));
10
+ const ERASE_SPHERE_STRATEGY = new BrushStrategy_1.default('EraseSphere', compositions_1.default.erase, ...fillSphere_1.SPHERE_STRATEGY.compositions);
11
+ const eraseInsideSphere = ERASE_SPHERE_STRATEGY.strategyFunction;
11
12
  exports.eraseInsideSphere = eraseInsideSphere;
12
13
  //# sourceMappingURL=eraseSphere.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eraseSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseSphere.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAOhD,SAAgB,iBAAiB,CAC/B,cAAqC,EACrC,aAA4B;IAI5B,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1D,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAA,6BAAgB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAXD,8CAWC"}
1
+ {"version":3,"file":"eraseSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseSphere.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAC5C,6CAA+C;AAC/C,kEAA0C;AAE1C,MAAM,qBAAqB,GAAG,IAAI,uBAAa,CAC7C,aAAa,EACb,sBAAY,CAAC,KAAK,EAClB,GAAG,4BAAe,CAAC,YAAY,CAChC,CAAC;AAEF,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;AAExD,8CAAiB"}
@@ -1,9 +1,14 @@
1
+ import { vec3 } from 'gl-matrix';
1
2
  import type { Types } from '@cornerstonejs/core';
2
- import { LabelmapToolOperationData } from '../../../types';
3
- declare type OperationData = LabelmapToolOperationData & {
4
- points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
5
- };
6
- export declare function fillInsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
7
- export declare function thresholdInsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
8
- export declare function fillOutsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
9
- export {};
3
+ import BrushStrategy from './BrushStrategy';
4
+ declare function createPointInEllipse(worldInfo: {
5
+ topLeftWorld: Types.Point3;
6
+ bottomRightWorld: Types.Point3;
7
+ center: Types.Point3 | vec3;
8
+ }): (pointLPS: Types.Point3) => boolean;
9
+ declare const CIRCLE_STRATEGY: BrushStrategy;
10
+ declare const CIRCLE_THRESHOLD_STRATEGY: BrushStrategy;
11
+ declare const fillInsideCircle: (enabledElement: any, operationData: any) => unknown;
12
+ declare const thresholdInsideCircle: (enabledElement: any, operationData: any) => unknown;
13
+ export declare function fillOutsideCircle(): void;
14
+ export { CIRCLE_STRATEGY, CIRCLE_THRESHOLD_STRATEGY, fillInsideCircle, thresholdInsideCircle, createPointInEllipse as createEllipseInPoint, };
@@ -3,106 +3,84 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fillOutsideCircle = exports.thresholdInsideCircle = exports.fillInsideCircle = void 0;
6
+ exports.createEllipseInPoint = exports.thresholdInsideCircle = exports.fillInsideCircle = exports.CIRCLE_THRESHOLD_STRATEGY = exports.CIRCLE_STRATEGY = exports.fillOutsideCircle = void 0;
7
7
  const gl_matrix_1 = require("gl-matrix");
8
8
  const core_1 = require("@cornerstonejs/core");
9
- const core_2 = require("@cornerstonejs/core");
10
9
  const ellipse_1 = require("../../../utilities/math/ellipse");
10
+ const pointInSphere_1 = __importDefault(require("../../../utilities/math/sphere/pointInSphere"));
11
11
  const boundingBox_1 = require("../../../utilities/boundingBox");
12
- const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentation/triggerSegmentationEvents");
13
- const utilities_1 = require("../../../utilities");
14
- const isWithinThreshold_1 = __importDefault(require("./utils/isWithinThreshold"));
15
- const getStrategyData_1 = require("./utils/getStrategyData");
16
- const stackVolumeCheck_1 = require("./utils/stackVolumeCheck");
17
- const { transformWorldToIndex } = core_2.utilities;
18
- function fillCircle(enabledElement, operationData, threshold = false) {
19
- const { points, segmentsLocked, segmentIndex, segmentationId, strategySpecificConfiguration, } = operationData;
20
- const { viewport } = enabledElement;
21
- const data = (0, getStrategyData_1.getStrategyData)({ operationData, viewport });
22
- if (!data) {
23
- console.warn('No data found for fillCircle');
24
- return;
25
- }
26
- const { imageScalarData, segmentationImageData, segmentationScalarData } = data;
27
- const { ellipseObj, boundsIJK } = getEllipse(viewport, segmentationImageData, points);
28
- const modifiedSlicesToUse = new Set();
29
- let callback;
30
- if (threshold) {
31
- callback = ({ value, index, pointIJK }) => {
32
- if (segmentsLocked.includes(value)) {
33
- return;
34
- }
35
- if ((0, isWithinThreshold_1.default)(index, imageScalarData, strategySpecificConfiguration)) {
36
- segmentationScalarData[index] = segmentIndex;
37
- modifiedSlicesToUse.add(pointIJK[2]);
38
- }
39
- };
40
- }
41
- else {
42
- callback = ({ value, index, pointIJK }) => {
43
- if (segmentsLocked.includes(value)) {
44
- return;
45
- }
46
- segmentationScalarData[index] = segmentIndex;
47
- modifiedSlicesToUse.add(pointIJK[2]);
12
+ const BrushStrategy_1 = __importDefault(require("./BrushStrategy"));
13
+ const enums_1 = require("../../../enums");
14
+ const compositions_1 = __importDefault(require("./compositions"));
15
+ const { transformWorldToIndex } = core_1.utilities;
16
+ const EPSILON = 1e-4;
17
+ const nearOrZero = (testValue, nearValue) => Math.abs(testValue) < EPSILON || Math.abs(testValue - nearValue) < EPSILON;
18
+ const initializeCircle = {
19
+ [enums_1.StrategyCallbacks.Initialize]: (operationData) => {
20
+ const { points, imageVoxelManager: imageVoxelManager, viewport, segmentationImageData, segmentationVoxelManager: segmentationVoxelManager, } = operationData;
21
+ if (!points) {
22
+ return;
23
+ }
24
+ const center = gl_matrix_1.vec3.fromValues(0, 0, 0);
25
+ points.forEach((point) => {
26
+ gl_matrix_1.vec3.add(center, center, point);
27
+ });
28
+ gl_matrix_1.vec3.scale(center, center, 1 / points.length);
29
+ operationData.centerWorld = center;
30
+ operationData.centerIJK = transformWorldToIndex(segmentationImageData, center);
31
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
32
+ const [topLeftCanvas, bottomRightCanvas] = (0, ellipse_1.getCanvasEllipseCorners)(canvasCoordinates);
33
+ const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
34
+ const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
35
+ const ellipsoidCornersIJK = [
36
+ transformWorldToIndex(segmentationImageData, topLeftWorld),
37
+ (transformWorldToIndex(segmentationImageData, bottomRightWorld)),
38
+ ];
39
+ segmentationVoxelManager.boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(ellipsoidCornersIJK, segmentationVoxelManager.dimensions);
40
+ imageVoxelManager.isInObject = createPointInEllipse({
41
+ topLeftWorld,
42
+ bottomRightWorld,
43
+ center,
44
+ });
45
+ },
46
+ };
47
+ function createPointInEllipse(worldInfo) {
48
+ const { topLeftWorld, bottomRightWorld, center } = worldInfo;
49
+ const xRadius = Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2;
50
+ const yRadius = Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2;
51
+ const zRadius = Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2;
52
+ const radius = Math.max(xRadius, yRadius, zRadius);
53
+ if (nearOrZero(xRadius, radius) &&
54
+ nearOrZero(yRadius, radius) &&
55
+ nearOrZero(zRadius, radius)) {
56
+ const sphereObj = {
57
+ center,
58
+ radius,
59
+ radius2: radius * radius,
48
60
  };
61
+ return (pointLPS) => (0, pointInSphere_1.default)(sphereObj, pointLPS);
49
62
  }
50
- (0, utilities_1.pointInShapeCallback)(segmentationImageData, (pointLPS) => (0, ellipse_1.pointInEllipse)(ellipseObj, pointLPS, {
51
- fast: true,
52
- }), callback, boundsIJK);
53
- const arrayOfSlices = Array.from(modifiedSlicesToUse);
54
- (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(segmentationId, arrayOfSlices);
55
- }
56
- function fillInsideCircle(enabledElement, operationData) {
57
- fillCircle(enabledElement, operationData, false);
63
+ const ellipseObj = {
64
+ center: center,
65
+ xRadius,
66
+ yRadius,
67
+ zRadius,
68
+ };
69
+ const inverts = (0, ellipse_1.precalculatePointInEllipse)(ellipseObj);
70
+ const { precalculated } = inverts;
71
+ return precalculated;
58
72
  }
73
+ exports.createEllipseInPoint = createPointInEllipse;
74
+ const CIRCLE_STRATEGY = new BrushStrategy_1.default('Circle', compositions_1.default.regionFill, compositions_1.default.setValue, initializeCircle, compositions_1.default.determineSegmentIndex, compositions_1.default.preview);
75
+ exports.CIRCLE_STRATEGY = CIRCLE_STRATEGY;
76
+ const CIRCLE_THRESHOLD_STRATEGY = new BrushStrategy_1.default('CircleThreshold', compositions_1.default.regionFill, compositions_1.default.setValue, initializeCircle, compositions_1.default.determineSegmentIndex, compositions_1.default.dynamicThreshold, compositions_1.default.threshold, compositions_1.default.preview, compositions_1.default.islandRemoval);
77
+ exports.CIRCLE_THRESHOLD_STRATEGY = CIRCLE_THRESHOLD_STRATEGY;
78
+ const fillInsideCircle = CIRCLE_STRATEGY.strategyFunction;
59
79
  exports.fillInsideCircle = fillInsideCircle;
60
- function thresholdInsideCircle(enabledElement, operationData) {
61
- if ((0, stackVolumeCheck_1.isVolumeSegmentation)(operationData)) {
62
- const { referencedVolumeId, volumeId } = operationData;
63
- const imageVolume = core_1.cache.getVolume(referencedVolumeId);
64
- const segmentation = core_1.cache.getVolume(volumeId);
65
- if (!core_2.utilities.isEqual(segmentation.dimensions, imageVolume.dimensions) ||
66
- !core_2.utilities.isEqual(segmentation.direction, imageVolume.direction)) {
67
- throw new Error('Only source data the same dimensions/size/orientation as the segmentation currently supported.');
68
- }
69
- }
70
- fillCircle(enabledElement, operationData, true);
71
- }
80
+ const thresholdInsideCircle = CIRCLE_THRESHOLD_STRATEGY.strategyFunction;
72
81
  exports.thresholdInsideCircle = thresholdInsideCircle;
73
- function fillOutsideCircle(enabledElement, operationData) {
82
+ function fillOutsideCircle() {
74
83
  throw new Error('Not yet implemented');
75
84
  }
76
85
  exports.fillOutsideCircle = fillOutsideCircle;
77
- function getCenter(points) {
78
- const center = gl_matrix_1.vec3.fromValues(0, 0, 0);
79
- points.forEach((point) => {
80
- gl_matrix_1.vec3.add(center, center, point);
81
- });
82
- gl_matrix_1.vec3.scale(center, center, 1 / points.length);
83
- return center;
84
- }
85
- function getEllipse(viewport, imageData, points) {
86
- const center = getCenter(points);
87
- const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
88
- const dimensions = imageData.getDimensions();
89
- const [topLeftCanvas, bottomRightCanvas] = (0, ellipse_1.getCanvasEllipseCorners)(canvasCoordinates);
90
- const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
91
- const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
92
- const ellipsoidCornersIJK = [
93
- transformWorldToIndex(imageData, topLeftWorld),
94
- transformWorldToIndex(imageData, bottomRightWorld),
95
- ];
96
- const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(ellipsoidCornersIJK, dimensions);
97
- if (boundsIJK.every(([min, max]) => min !== max)) {
98
- throw new Error('Oblique segmentation tools are not supported yet');
99
- }
100
- const ellipseObj = {
101
- center: center,
102
- xRadius: Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2,
103
- yRadius: Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2,
104
- zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2,
105
- };
106
- return { ellipseObj, boundsIJK };
107
- }
108
86
  //# sourceMappingURL=fillCircle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fillCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillCircle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillCircle.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAiC;AACjC,8CAA2D;AAG3D,6DAGyC;AACzC,iGAAyE;AACzE,gEAA2E;AAC3E,oEAA4C;AAG5C,0CAAmD;AACnD,kEAA0C;AAE1C,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAC1C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC;AAE7E,MAAM,gBAAgB,GAAG;IACvB,CAAC,yBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,aAAuC,EAAE,EAAE;QAC1E,MAAM,EACJ,MAAM,EACN,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,EAAE,wBAAwB,GACnD,GAAG,aAAa,CAAC;QAGlB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,MAAM,MAAM,GAAG,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,gBAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,gBAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,aAAa,CAAC,WAAW,GAAG,MAAsB,CAAC;QACnD,aAAa,CAAC,SAAS,GAAG,qBAAqB,CAC7C,qBAAqB,EACrB,MAAsB,CACvB,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CACL,CAAC;QAIvB,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GACtC,IAAA,iCAAuB,EAAC,iBAAiB,CAAC,CAAC;QAG7C,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAEnE,MAAM,mBAAmB,GAAG;YACZ,qBAAqB,CAAC,qBAAqB,EAAE,YAAY,CAAC;YAC1D,CACZ,qBAAqB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAC/D;SACF,CAAC;QAEF,wBAAwB,CAAC,SAAS,GAAG,IAAA,uCAAyB,EAC5D,mBAAmB,EACnB,wBAAwB,CAAC,UAAU,CACpC,CAAC;QACF,iBAAiB,CAAC,UAAU,GAAG,oBAAoB,CAAC;YAClD,YAAY;YACZ,gBAAgB;YAChB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACa,CAAC;AAUjB,SAAS,oBAAoB,CAAC,SAI7B;IACC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAE7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,IACE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAC3B;QACA,MAAM,SAAS,GAAG;YAChB,MAAM;YACN,MAAM;YACN,OAAO,EAAE,MAAM,GAAG,MAAM;SACzB,CAAC;QACF,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACzD;IAED,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,MAAsB;QAC9B,OAAO;QACP,OAAO;QACP,OAAO;KACR,CAAC;IACF,MAAM,OAAO,GAAG,IAAA,oCAA0B,EAAC,UAAU,CAAC,CAAC;IACvD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAElC,OAAO,aAAa,CAAC;AACvB,CAAC;AAsDyB,oDAAoB;AApD9C,MAAM,eAAe,GAAG,IAAI,uBAAa,CACvC,QAAQ,EACR,sBAAY,CAAC,UAAU,EACvB,sBAAY,CAAC,QAAQ,EACrB,gBAAgB,EAChB,sBAAY,CAAC,qBAAqB,EAClC,sBAAY,CAAC,OAAO,CACrB,CAAC;AAyCA,0CAAe;AAvCjB,MAAM,yBAAyB,GAAG,IAAI,uBAAa,CACjD,iBAAiB,EACjB,sBAAY,CAAC,UAAU,EACvB,sBAAY,CAAC,QAAQ,EACrB,gBAAgB,EAChB,sBAAY,CAAC,qBAAqB,EAClC,sBAAY,CAAC,gBAAgB,EAC7B,sBAAY,CAAC,SAAS,EACtB,sBAAY,CAAC,OAAO,EACpB,sBAAY,CAAC,aAAa,CAC3B,CAAC;AA8BA,8DAAyB;AAtB3B,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,CAAC;AAuBxD,4CAAgB;AAflB,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,gBAAgB,CAAC;AAgBvE,sDAAqB;AARvB,SAAgB,iBAAiB;IAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAFD,8CAEC"}
@@ -8,7 +8,7 @@ const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentati
8
8
  const getStrategyData_1 = require("./utils/getStrategyData");
9
9
  const { transformWorldToIndex } = core_1.utilities;
10
10
  function fillRectangle(enabledElement, operationData, inside = true) {
11
- const { points, segmentsLocked, segmentIndex, segmentationId, constraintFn } = operationData;
11
+ const { points, segmentsLocked, segmentIndex, segmentationId } = operationData;
12
12
  const strategyData = (0, getStrategyData_1.getStrategyData)({
13
13
  operationData,
14
14
  viewport: enabledElement.viewport,
@@ -28,17 +28,11 @@ function fillRectangle(enabledElement, operationData, inside = true) {
28
28
  });
29
29
  const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(rectangleCornersIJK, segmentationImageData.getDimensions());
30
30
  const pointInRectangle = () => true;
31
- const callback = ({ value, index, pointIJK }) => {
31
+ const callback = ({ value, index }) => {
32
32
  if (segmentsLocked.includes(value)) {
33
33
  return;
34
34
  }
35
- if (!constraintFn) {
36
- segmentationScalarData[index] = segmentIndex;
37
- return;
38
- }
39
- if (constraintFn(pointIJK)) {
40
- segmentationScalarData[index] = segmentIndex;
41
- }
35
+ segmentationScalarData[index] = segmentIndex;
42
36
  };
43
37
  (0, utilities_1.pointInShapeCallback)(segmentationImageData, pointInRectangle, callback, boundsIJK);
44
38
  (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(segmentationId);
@@ -1 +1 @@
1
- {"version":3,"file":"fillRectangle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillRectangle.ts"],"names":[],"mappings":";;;AAAA,8CAA2D;AAG3D,gEAA2E;AAC3E,kDAA0D;AAC1D,+GAAkH;AAElH,6DAA0D;AAE1D,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAe1C,SAAS,aAAa,CACpB,cAAqC,EACrC,aAA4B,EAC5B,MAAM,GAAG,IAAI;IAEb,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,GAC1E,aAAa,CAAC;IAEhB,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC;QACnC,aAAa;QACb,QAAQ,EAAE,cAAc,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,OAAO;KACR;IAED,MAAM,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,YAAY,CAAC;IAEvE,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,OAAO,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAGH,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,uCAAyB,EACzC,mBAAmB,EACnB,qBAAqB,CAAC,aAAa,EAAE,CACtC,CAAC;IAGF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAEpC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9C,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO;SACR;QAED,IAAI,CAAC,YAAY,EAAE;YACjB,sBAAsB,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;YAC7C,OAAO;SACR;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC1B,sBAAsB,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;SAC9C;IACH,CAAC,CAAC;IAEF,IAAA,gCAAoB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;IAEF,IAAA,2DAA+B,EAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AASD,SAAgB,mBAAmB,CACjC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AALD,kDAKC;AASD,SAAgB,oBAAoB,CAClC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AALD,oDAKC"}
1
+ {"version":3,"file":"fillRectangle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillRectangle.ts"],"names":[],"mappings":";;;AAAA,8CAA2D;AAG3D,gEAA2E;AAC3E,kDAA0D;AAC1D,+GAAkH;AAElH,6DAA0D;AAE1D,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAc1C,SAAS,aAAa,CACpB,cAAqC,EACrC,aAA4B,EAC5B,MAAM,GAAG,IAAI;IAEb,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,GAC5D,aAAa,CAAC;IAEhB,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC;QACnC,aAAa;QACb,QAAQ,EAAE,cAAc,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,OAAO;KACR;IAED,MAAM,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,YAAY,CAAC;IAEvE,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,OAAO,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAGH,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,uCAAyB,EACzC,mBAAmB,EACnB,qBAAqB,CAAC,aAAa,EAAE,CACtC,CAAC;IAGF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAEpC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO;SACR;QAED,sBAAsB,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;IAC/C,CAAC,CAAC;IAEF,IAAA,gCAAoB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;IAEF,IAAA,2DAA+B,EAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AAQD,SAAgB,mBAAmB,CACjC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AALD,kDAKC;AAQD,SAAgB,oBAAoB,CAClC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AALD,oDAKC"}
@@ -1,9 +1,6 @@
1
- import type { Types } from '@cornerstonejs/core';
2
- import { LabelmapToolOperationData } from '../../../types';
3
- declare type OperationData = LabelmapToolOperationData & {
4
- points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
5
- };
6
- export declare function fillInsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
7
- export declare function thresholdInsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
8
- export declare function fillOutsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
9
- export {};
1
+ import BrushStrategy from './BrushStrategy';
2
+ declare const SPHERE_STRATEGY: BrushStrategy;
3
+ declare const fillInsideSphere: (enabledElement: any, operationData: any) => unknown;
4
+ declare const thresholdInsideSphere: (enabledElement: any, operationData: any) => unknown;
5
+ export declare function fillOutsideSphere(): void;
6
+ export { fillInsideSphere, thresholdInsideSphere, SPHERE_STRATEGY };