@cornerstonejs/tools 1.36.3 → 1.37.0

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
@@ -3,74 +3,63 @@ 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.fillOutsideSphere = exports.thresholdInsideSphere = exports.fillInsideSphere = void 0;
6
+ exports.SPHERE_STRATEGY = exports.thresholdInsideSphere = exports.fillInsideSphere = exports.fillOutsideSphere = void 0;
7
7
  const core_1 = require("@cornerstonejs/core");
8
- const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentation/triggerSegmentationEvents");
9
- const utilities_1 = require("../../../utilities");
10
- const isWithinThreshold_1 = __importDefault(require("./utils/isWithinThreshold"));
11
- const getStrategyData_1 = require("./utils/getStrategyData");
12
- const stackVolumeCheck_1 = require("./utils/stackVolumeCheck");
13
- function fillSphere(enabledElement, operationData, _inside = true, threshold = false) {
14
- const { viewport } = enabledElement;
15
- const { segmentsLocked, segmentIndex, strategySpecificConfiguration, points, } = operationData;
16
- const strategyData = (0, getStrategyData_1.getStrategyData)({ operationData, viewport });
17
- if (!strategyData) {
18
- console.warn('No data found for fillSphere');
19
- return;
20
- }
21
- const { imageScalarData, segmentationImageData, segmentationScalarData } = strategyData;
22
- const scalarIndex = [];
23
- let callback;
24
- if (threshold) {
25
- callback = ({ value, index }) => {
26
- if (segmentsLocked.includes(value)) {
27
- return;
28
- }
29
- if ((0, isWithinThreshold_1.default)(index, imageScalarData, strategySpecificConfiguration)) {
30
- segmentationScalarData[index] = segmentIndex;
31
- scalarIndex.push(index);
32
- }
33
- };
34
- }
35
- else {
36
- callback = ({ index, value }) => {
37
- if (segmentsLocked.includes(value)) {
38
- return;
8
+ const gl_matrix_1 = require("gl-matrix");
9
+ const ellipse_1 = require("../../../utilities/math/ellipse");
10
+ const boundingBox_1 = require("../../../utilities/boundingBox");
11
+ const BrushStrategy_1 = __importDefault(require("./BrushStrategy"));
12
+ const compositions_1 = __importDefault(require("./compositions"));
13
+ const StrategyCallbacks_1 = __importDefault(require("../../../enums/StrategyCallbacks"));
14
+ const fillCircle_1 = require("./fillCircle");
15
+ const { transformWorldToIndex } = core_1.utilities;
16
+ const sphereComposition = {
17
+ [StrategyCallbacks_1.default.Initialize]: (operationData) => {
18
+ const { points, imageVoxelManager: imageVoxelManager, viewport, segmentationImageData, segmentationVoxelManager: segmentationVoxelManager, } = operationData;
19
+ if (!points) {
20
+ return;
21
+ }
22
+ const center = gl_matrix_1.vec3.fromValues(0, 0, 0);
23
+ points.forEach((point) => {
24
+ gl_matrix_1.vec3.add(center, center, point);
25
+ });
26
+ gl_matrix_1.vec3.scale(center, center, 1 / points.length);
27
+ operationData.centerWorld = center;
28
+ operationData.centerIJK = transformWorldToIndex(segmentationImageData, center);
29
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
30
+ const [topLeftCanvas, bottomRightCanvas] = (0, ellipse_1.getCanvasEllipseCorners)(canvasCoordinates);
31
+ const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
32
+ const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
33
+ const diameters = topLeftWorld.map((left, index) => Math.abs(bottomRightWorld[index] - left));
34
+ const radius = Math.max(...diameters) / 2;
35
+ topLeftWorld.forEach((left, index) => {
36
+ const right = bottomRightWorld[index];
37
+ if (left === right) {
38
+ topLeftWorld[index] = left - radius;
39
+ bottomRightWorld[index] = left + radius;
39
40
  }
40
- segmentationScalarData[index] = segmentIndex;
41
- scalarIndex.push(index);
42
- };
43
- }
44
- (0, utilities_1.pointInSurroundingSphereCallback)(segmentationImageData, [points[0], points[1]], callback, viewport);
45
- const dimensions = segmentationImageData.getDimensions();
46
- let sliceArray;
47
- if ((0, stackVolumeCheck_1.isVolumeSegmentation)(operationData)) {
48
- const zMultiple = dimensions[0] * dimensions[1];
49
- const minSlice = Math.floor(scalarIndex[0] / zMultiple);
50
- const maxSlice = Math.floor(scalarIndex[scalarIndex.length - 1] / zMultiple);
51
- sliceArray = Array.from({ length: maxSlice - minSlice + 1 }, (v, k) => k + minSlice);
52
- (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(operationData.volumeId, sliceArray);
53
- }
54
- }
55
- function fillInsideSphere(enabledElement, operationData) {
56
- fillSphere(enabledElement, operationData, true);
57
- }
41
+ });
42
+ const ellipsoidCornersIJK = [
43
+ transformWorldToIndex(segmentationImageData, topLeftWorld),
44
+ (transformWorldToIndex(segmentationImageData, bottomRightWorld)),
45
+ ];
46
+ segmentationVoxelManager.boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(ellipsoidCornersIJK, segmentationVoxelManager.dimensions);
47
+ imageVoxelManager.isInObject = (0, fillCircle_1.createEllipseInPoint)({
48
+ topLeftWorld,
49
+ bottomRightWorld,
50
+ center,
51
+ });
52
+ },
53
+ };
54
+ const SPHERE_STRATEGY = new BrushStrategy_1.default('Sphere', compositions_1.default.regionFill, compositions_1.default.setValue, sphereComposition, compositions_1.default.determineSegmentIndex, compositions_1.default.preview);
55
+ exports.SPHERE_STRATEGY = SPHERE_STRATEGY;
56
+ const fillInsideSphere = SPHERE_STRATEGY.strategyFunction;
58
57
  exports.fillInsideSphere = fillInsideSphere;
59
- function thresholdInsideSphere(enabledElement, operationData) {
60
- if ((0, stackVolumeCheck_1.isVolumeSegmentation)(operationData)) {
61
- const { referencedVolumeId, volumeId } = operationData;
62
- const imageVolume = core_1.cache.getVolume(referencedVolumeId);
63
- const segmentation = core_1.cache.getVolume(volumeId);
64
- if (!core_1.utilities.isEqual(segmentation.dimensions, imageVolume.dimensions) ||
65
- !core_1.utilities.isEqual(segmentation.direction, imageVolume.direction)) {
66
- throw new Error('Only source data the same dimensions/size/orientation as the segmentation currently supported.');
67
- }
68
- }
69
- fillSphere(enabledElement, operationData, true, true);
70
- }
58
+ const SPHERE_THRESHOLD_STRATEGY = new BrushStrategy_1.default('SphereThreshold', ...SPHERE_STRATEGY.compositions, compositions_1.default.dynamicThreshold, compositions_1.default.threshold, compositions_1.default.islandRemoval);
59
+ const thresholdInsideSphere = SPHERE_THRESHOLD_STRATEGY.strategyFunction;
71
60
  exports.thresholdInsideSphere = thresholdInsideSphere;
72
- function fillOutsideSphere(enabledElement, operationData) {
73
- fillSphere(enabledElement, operationData, false);
61
+ function fillOutsideSphere() {
62
+ throw new Error('fill outside sphere not implemented');
74
63
  }
75
64
  exports.fillOutsideSphere = fillOutsideSphere;
76
65
  //# sourceMappingURL=fillSphere.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fillSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillSphere.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillSphere.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
+ import { utilities } from '@cornerstonejs/core';
1
2
  declare function getStrategyData({ operationData, viewport }: {
2
3
  operationData: any;
3
4
  viewport: any;
4
5
  }): {
5
6
  segmentationImageData: any;
6
7
  segmentationScalarData: any;
8
+ segmentationVoxelManager: utilities.VoxelManager<number>;
7
9
  imageScalarData: any;
10
+ imageVoxelManager: utilities.VoxelManager<number>;
8
11
  };
9
12
  export { getStrategyData };
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getStrategyData = void 0;
4
4
  const core_1 = require("@cornerstonejs/core");
5
5
  const stackVolumeCheck_1 = require("./stackVolumeCheck");
6
+ const { VoxelManager } = core_1.utilities;
6
7
  function getStrategyData({ operationData, viewport }) {
7
8
  let segmentationImageData, segmentationScalarData, imageScalarData;
9
+ let dimensions;
8
10
  if ((0, stackVolumeCheck_1.isVolumeSegmentation)(operationData)) {
9
11
  const { volumeId, referencedVolumeId } = operationData;
10
12
  const segmentationVolume = core_1.cache.getVolume(volumeId);
@@ -15,6 +17,7 @@ function getStrategyData({ operationData, viewport }) {
15
17
  ({ imageData: segmentationImageData } = segmentationVolume);
16
18
  segmentationScalarData = segmentationVolume.getScalarData();
17
19
  imageScalarData = imageVolume.getScalarData();
20
+ dimensions = imageVolume.dimensions;
18
21
  }
19
22
  else {
20
23
  const { imageIdReferenceMap, segmentationRepresentationUID } = operationData;
@@ -32,11 +35,14 @@ function getStrategyData({ operationData, viewport }) {
32
35
  segmentationScalarData = segmentationImage.getPixelData();
33
36
  const image = core_1.cache.getImage(currentImageId);
34
37
  imageScalarData = image.getPixelData();
38
+ dimensions = [image.columns, image.rows, 1];
35
39
  }
36
40
  return {
37
41
  segmentationImageData,
38
42
  segmentationScalarData,
43
+ segmentationVoxelManager: VoxelManager.createVolumeVoxelManager(dimensions, segmentationScalarData),
39
44
  imageScalarData,
45
+ imageVoxelManager: VoxelManager.createVolumeVoxelManager(dimensions, imageScalarData),
40
46
  };
41
47
  }
42
48
  exports.getStrategyData = getStrategyData;
@@ -1 +1 @@
1
- {"version":3,"file":"getStrategyData.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/getStrategyData.ts"],"names":[],"mappings":";;;AAAA,8CAA4C;AAC5C,yDAA0D;AAG1D,SAAS,eAAe,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE;IAClD,IAAI,qBAAqB,EAAE,sBAAsB,EAAE,eAAe,CAAC;IACnE,IAAI,IAAA,uCAAoB,EAAC,aAAa,CAAC,EAAE;QACvC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;QAEvD,MAAM,kBAAkB,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,YAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAExD,IAAI,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE;YACvC,OAAO;SACR;QAED,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAC5D,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,EAAE,CAAC;QAC5D,eAAe,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;KAC/C;SAAM;QACL,MAAM,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,GAC1D,aAA+C,CAAC;QAElD,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAKD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC/D,qBAAqB,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;QAC/D,MAAM,0BAA0B,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE3E,MAAM,iBAAiB,GAAG,YAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QACrE,sBAAsB,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;QAE1D,MAAM,KAAK,GAAG,YAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAK7C,eAAe,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,OAAO;QACL,qBAAqB;QACrB,sBAAsB;QACtB,eAAe;KAChB,CAAC;AACJ,CAAC;AAEQ,0CAAe"}
1
+ {"version":3,"file":"getStrategyData.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/getStrategyData.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAEvD,yDAA0D;AAG1D,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAS,CAAC;AAEnC,SAAS,eAAe,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE;IAClD,IAAI,qBAAqB,EAAE,sBAAsB,EAAE,eAAe,CAAC;IACnE,IAAI,UAAwB,CAAC;IAC7B,IAAI,IAAA,uCAAoB,EAAC,aAAa,CAAC,EAAE;QACvC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;QAEvD,MAAM,kBAAkB,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,YAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAExD,IAAI,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE;YACvC,OAAO;SACR;QAED,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAC5D,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,EAAE,CAAC;QAC5D,eAAe,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAC9C,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;KACrC;SAAM;QACL,MAAM,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,GAC1D,aAA+C,CAAC;QAElD,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAKD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC/D,qBAAqB,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;QAC/D,MAAM,0BAA0B,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE3E,MAAM,iBAAiB,GAAG,YAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QACrE,sBAAsB,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;QAE1D,MAAM,KAAK,GAAG,YAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAK7C,eAAe,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACvC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,OAAO;QACL,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB,EAAE,YAAY,CAAC,wBAAwB,CAC7D,UAAU,EACV,sBAAsB,CACvB;QACD,eAAe;QACf,iBAAiB,EAAE,YAAY,CAAC,wBAAwB,CACtD,UAAU,EACV,eAAe,CAChB;KACF,CAAC;AACJ,CAAC;AAEQ,0CAAe"}
@@ -1,3 +1,3 @@
1
- import { TypedArray } from '@kitware/vtk.js/types';
2
- declare function isWithinThreshold(index: number, imageScalarData: TypedArray, strategySpecificConfiguration: any): boolean;
1
+ import { Types } from '@cornerstonejs/core';
2
+ declare function isWithinThreshold(index: number, imageScalarData: Types.VolumeScalarData, strategySpecificConfiguration: any): boolean;
3
3
  export default isWithinThreshold;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function isWithinThreshold(index, imageScalarData, strategySpecificConfiguration) {
4
- const { THRESHOLD_INSIDE_CIRCLE } = strategySpecificConfiguration;
4
+ const { THRESHOLD, THRESHOLD_INSIDE_CIRCLE } = strategySpecificConfiguration;
5
5
  const voxelValue = imageScalarData[index];
6
- const { threshold } = THRESHOLD_INSIDE_CIRCLE;
6
+ const { threshold } = THRESHOLD || THRESHOLD_INSIDE_CIRCLE;
7
7
  return threshold[0] <= voxelValue && voxelValue <= threshold[1];
8
8
  }
9
9
  exports.default = isWithinThreshold;
@@ -1 +1 @@
1
- {"version":3,"file":"isWithinThreshold.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/isWithinThreshold.ts"],"names":[],"mappings":";;AAGA,SAAS,iBAAiB,CACxB,KAAa,EACb,eAA2B,EAC3B,6BAAkC;IAElC,MAAM,EAAE,uBAAuB,EAAE,GAAG,6BAA6B,CAAC;IAElE,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAuB,CAAC;IAE9C,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"isWithinThreshold.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/isWithinThreshold.ts"],"names":[],"mappings":";;AAEA,SAAS,iBAAiB,CACxB,KAAa,EACb,eAAuC,EACvC,6BAAkC;IAElC,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,6BAA6B,CAAC;IAE7E,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAG1C,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,IAAI,uBAAuB,CAAC;IAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- declare type BoundsIJK = [Types.Point2, Types.Point2, Types.Point2];
2
+ declare type BoundsIJK = Types.BoundsIJK;
3
3
  export default BoundsIJK;
@@ -3,12 +3,12 @@ declare type FloodFillResult = {
3
3
  flooded: Types.Point2[] | Types.Point3[];
4
4
  boundaries: Types.Point2[] | Types.Point3[];
5
5
  };
6
- declare type FloodFillGetter3D = (x: number, y: number, z: number) => number;
7
- declare type FloodFillGetter2D = (x: number, y: number) => number;
6
+ declare type FloodFillGetter3D = (x: number, y: number, z: number) => unknown;
7
+ declare type FloodFillGetter2D = (x: number, y: number) => unknown;
8
8
  declare type FloodFillGetter = FloodFillGetter2D | FloodFillGetter3D;
9
9
  declare type FloodFillOptions = {
10
- onFlood?: (x: any, y: any) => void;
11
- onBoundary?: (x: any, y: any) => void;
10
+ onFlood?: (x: number, y: number, z?: number) => void;
11
+ onBoundary?: (x: number, y: number, z?: number) => void;
12
12
  equals?: (a: any, b: any) => boolean;
13
13
  diagonals?: boolean;
14
14
  };
@@ -1,14 +1,19 @@
1
+ import type { Types } from '@cornerstonejs/core';
1
2
  import { LabelmapSegmentationDataStack, LabelmapSegmentationDataVolume } from './LabelmapTypes';
2
3
  declare type LabelmapToolOperationData = {
3
4
  segmentationId: string;
4
5
  segmentIndex: number;
6
+ previewColors?: Record<number, [number, number, number, number]>;
5
7
  segmentsLocked: number[];
6
8
  viewPlaneNormal: number[];
7
9
  viewUp: number[];
8
10
  strategySpecificConfiguration: any;
9
- constraintFn: (pointIJK: number) => boolean;
10
11
  segmentationRepresentationUID: string;
12
+ points: Types.Point3[];
13
+ preview: any;
14
+ toolGroupId: string;
11
15
  };
12
16
  declare type LabelmapToolOperationDataStack = LabelmapToolOperationData & LabelmapSegmentationDataStack;
13
17
  declare type LabelmapToolOperationDataVolume = LabelmapToolOperationData & LabelmapSegmentationDataVolume;
14
- export { LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, };
18
+ declare type LabelmapToolOperationDataAny = LabelmapToolOperationDataVolume | LabelmapToolOperationDataStack;
19
+ export { LabelmapToolOperationData, LabelmapToolOperationDataAny, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, };
@@ -28,6 +28,7 @@ import type { ContourSegmentationData } from './ContourTypes';
28
28
  import type IAnnotationManager from './IAnnotationManager';
29
29
  import type AnnotationGroupSelector from './AnnotationGroupSelector';
30
30
  import type { Statistics } from './CalculatorTypes';
31
+ import type { CanvasCoordinates } from '../utilities/math/ellipse/getCanvasEllipseCorners';
31
32
  import { LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume } from './LabelmapToolOperationData';
32
33
  import type { CardinalSplineProps } from './CardinalSplineProps';
33
34
  import type { ClosestControlPoint } from './ClosestControlPoint';
@@ -38,4 +39,4 @@ import type { ISpline } from './ISpline';
38
39
  import type { SplineCurveSegment } from './SplineCurveSegment';
39
40
  import type { SplineLineSegment } from './SplineLineSegment';
40
41
  import type { SplineProps } from './SplineProps';
41
- export type { Annotation, Annotations, IAnnotationManager, GroupSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, AnnotationGroupSelector, PlanarBoundingBox, ToolProps, PublicToolProps, ToolConfiguration, EventTypes, IPoints, ITouchPoints, IDistance, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, ToolAction, IToolGroup, IToolClassReference, ISynchronizerEventHandler, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, SegmentationRepresentationData, SegmentationRepresentationConfig, RepresentationConfig, ToolGroupSpecificRepresentationState, ToolGroupSpecificContourRepresentation, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, RepresentationPublicInput, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, BoundsIJK, SVGDrawingHelper, FloodFillResult, FloodFillGetter, FloodFillOptions, ContourSegmentationData, Statistics, LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, CardinalSplineProps, ClosestControlPoint, ClosestPoint, ClosestSplinePoint, ControlPointInfo, ISpline, SplineCurveSegment, SplineLineSegment, SplineProps, };
42
+ export type { Annotation, Annotations, CanvasCoordinates, IAnnotationManager, GroupSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, AnnotationGroupSelector, PlanarBoundingBox, ToolProps, PublicToolProps, ToolConfiguration, EventTypes, IPoints, ITouchPoints, IDistance, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, ToolAction, IToolGroup, IToolClassReference, ISynchronizerEventHandler, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, SegmentationRepresentationData, SegmentationRepresentationConfig, RepresentationConfig, ToolGroupSpecificRepresentationState, ToolGroupSpecificContourRepresentation, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, RepresentationPublicInput, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, BoundsIJK, SVGDrawingHelper, FloodFillResult, FloodFillGetter, FloodFillOptions, ContourSegmentationData, Statistics, LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, CardinalSplineProps, ClosestControlPoint, ClosestPoint, ClosestSplinePoint, ControlPointInfo, ISpline, SplineCurveSegment, SplineLineSegment, SplineProps, };
@@ -1,9 +1,8 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- declare type canvasCoordinates = [
2
+ export declare type CanvasCoordinates = [
3
3
  Types.Point2,
4
4
  Types.Point2,
5
5
  Types.Point2,
6
6
  Types.Point2
7
7
  ];
8
- export default function getCanvasEllipseCorners(ellipseCanvasPoints: canvasCoordinates): Array<Types.Point2>;
9
- export {};
8
+ export default function getCanvasEllipseCorners(ellipseCanvasPoints: CanvasCoordinates): Array<Types.Point2>;
@@ -1,3 +1,3 @@
1
- import pointInEllipse from './pointInEllipse';
1
+ import pointInEllipse, { precalculatePointInEllipse } from './pointInEllipse';
2
2
  import getCanvasEllipseCorners from './getCanvasEllipseCorners';
3
- export { pointInEllipse, getCanvasEllipseCorners };
3
+ export { pointInEllipse, precalculatePointInEllipse, getCanvasEllipseCorners };
@@ -1,11 +1,35 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getCanvasEllipseCorners = exports.pointInEllipse = void 0;
7
- const pointInEllipse_1 = __importDefault(require("./pointInEllipse"));
29
+ exports.getCanvasEllipseCorners = exports.precalculatePointInEllipse = exports.pointInEllipse = void 0;
30
+ const pointInEllipse_1 = __importStar(require("./pointInEllipse"));
8
31
  exports.pointInEllipse = pointInEllipse_1.default;
32
+ Object.defineProperty(exports, "precalculatePointInEllipse", { enumerable: true, get: function () { return pointInEllipse_1.precalculatePointInEllipse; } });
9
33
  const getCanvasEllipseCorners_1 = __importDefault(require("./getCanvasEllipseCorners"));
10
34
  exports.getCanvasEllipseCorners = getCanvasEllipseCorners_1.default;
11
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/index.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA8C;AAGrC,yBAHF,wBAAc,CAGE;AAFvB,wFAAgE;AAEvC,kCAFlB,iCAAuB,CAEkB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAA8E;AAGrE,yBAHF,wBAAc,CAGE;AAAE,2GAHA,2CAA0B,OAGA;AAFnD,wFAAgE;AAEX,kCAF9C,iCAAuB,CAE8C"}
@@ -1,8 +1,11 @@
1
+ import type { Types } from '@cornerstonejs/core';
1
2
  interface Inverts {
2
3
  invXRadiusSq?: number;
3
4
  invYRadiusSq?: number;
4
5
  invZRadiusSq?: number;
5
6
  fast?: boolean;
7
+ precalculated?: (pointLPS: Types.Point3) => boolean;
6
8
  }
7
9
  export default function pointInEllipse(ellipse: any, pointLPS: any, inverts?: Inverts): boolean;
8
- export {};
10
+ declare const precalculatePointInEllipse: (ellipse: any, inverts?: Inverts) => Inverts;
11
+ export { precalculatePointInEllipse };
@@ -1,7 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.precalculatePointInEllipse = void 0;
3
4
  function pointInEllipse(ellipse, pointLPS, inverts = {}) {
4
- const { center, xRadius, yRadius, zRadius } = ellipse;
5
+ if (!inverts.precalculated) {
6
+ precalculatePointInEllipse(ellipse, inverts);
7
+ }
8
+ return inverts.precalculated(pointLPS);
9
+ }
10
+ exports.default = pointInEllipse;
11
+ const precalculatePointInEllipse = (ellipse, inverts = {}) => {
12
+ const { xRadius, yRadius, zRadius } = ellipse;
5
13
  if (inverts.invXRadiusSq === undefined ||
6
14
  inverts.invYRadiusSq === undefined ||
7
15
  inverts.invZRadiusSq === undefined) {
@@ -9,20 +17,25 @@ function pointInEllipse(ellipse, pointLPS, inverts = {}) {
9
17
  inverts.invYRadiusSq = yRadius !== 0 ? 1 / Math.pow(yRadius, 2) : 0;
10
18
  inverts.invZRadiusSq = zRadius !== 0 ? 1 / Math.pow(zRadius, 2) : 0;
11
19
  }
12
- let inside = 0;
13
- const dx = pointLPS[0] - center[0];
14
- inside += dx * dx * inverts.invXRadiusSq;
15
- if (inside > 1) {
16
- return false;
17
- }
18
- const dy = pointLPS[1] - center[1];
19
- inside += dy * dy * inverts.invYRadiusSq;
20
- if (inside > 1) {
21
- return false;
22
- }
23
- const dz = pointLPS[2] - center[2];
24
- inside += dz * dz * inverts.invZRadiusSq;
25
- return inside <= 1;
26
- }
27
- exports.default = pointInEllipse;
20
+ const { invXRadiusSq, invYRadiusSq, invZRadiusSq } = inverts;
21
+ const { center } = ellipse;
22
+ const [centerL, centerP, centerS] = center;
23
+ inverts.precalculated = (pointLPS) => {
24
+ const dx = pointLPS[0] - centerL;
25
+ let inside = dx * dx * invXRadiusSq;
26
+ if (inside > 1) {
27
+ return false;
28
+ }
29
+ const dy = pointLPS[1] - centerP;
30
+ inside += dy * dy * invYRadiusSq;
31
+ if (inside > 1) {
32
+ return false;
33
+ }
34
+ const dz = pointLPS[2] - centerS;
35
+ inside += dz * dz * invZRadiusSq;
36
+ return inside <= 1;
37
+ };
38
+ return inverts;
39
+ };
40
+ exports.precalculatePointInEllipse = precalculatePointInEllipse;
28
41
  //# sourceMappingURL=pointInEllipse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pointInEllipse.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/pointInEllipse.ts"],"names":[],"mappings":";;AAoBA,SAAwB,cAAc,CACpC,OAAO,EACP,QAAQ,EACR,UAAmB,EAAE;IAErB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAItD,IACE,OAAO,CAAC,YAAY,KAAK,SAAS;QAClC,OAAO,CAAC,YAAY,KAAK,SAAS;QAClC,OAAO,CAAC,YAAY,KAAK,SAAS,EAClC;QACA,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7D;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IAGf,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,OAAO,KAAK,CAAC;KACd;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,OAAO,KAAK,CAAC;KACd;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAGzC,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAvCD,iCAuCC"}
1
+ {"version":3,"file":"pointInEllipse.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/pointInEllipse.ts"],"names":[],"mappings":";;;AA2BA,SAAwB,cAAc,CACpC,OAAO,EACP,QAAQ,EACR,UAAmB,EAAE;IAErB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC9C;IACD,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AATD,iCASC;AAcD,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,UAAmB,EAAE,EAAE,EAAE;IACpE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAI9C,IACE,OAAO,CAAC,YAAY,KAAK,SAAS;QAClC,OAAO,CAAC,YAAY,KAAK,SAAS;QAClC,OAAO,CAAC,YAAY,KAAK,SAAS,EAClC;QACA,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAE3C,OAAO,CAAC,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE;QAEnC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjC,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QACjC,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAGjC,OAAO,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEO,gEAA0B"}
@@ -3,6 +3,7 @@ import { vec3 } from 'gl-matrix';
3
3
  declare type Sphere = {
4
4
  center: Types.Point3 | vec3;
5
5
  radius: number;
6
+ radius2?: number;
6
7
  };
7
8
  export default function pointInSphere(sphere: Sphere, pointLPS: vec3): boolean;
8
9
  export {};
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function pointInSphere(sphere, pointLPS) {
4
4
  const { center, radius } = sphere;
5
+ const radius2 = sphere.radius2 || radius * radius;
5
6
  return ((pointLPS[0] - center[0]) * (pointLPS[0] - center[0]) +
6
7
  (pointLPS[1] - center[1]) * (pointLPS[1] - center[1]) +
7
8
  (pointLPS[2] - center[2]) * (pointLPS[2] - center[2]) <=
8
- Math.pow(radius, 2));
9
+ radius2);
9
10
  }
10
11
  exports.default = pointInSphere;
11
12
  //# sourceMappingURL=pointInSphere.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pointInSphere.js","sourceRoot":"","sources":["../../../../../src/utilities/math/sphere/pointInSphere.ts"],"names":[],"mappings":";;AAkBA,SAAwB,aAAa,CAAC,MAAc,EAAE,QAAc;IAClE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAElC,OAAO,CACL,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,SAAA,MAAM,EAAI,CAAC,CAAA,CACZ,CAAC;AACJ,CAAC;AATD,gCASC"}
1
+ {"version":3,"file":"pointInSphere.js","sourceRoot":"","sources":["../../../../../src/utilities/math/sphere/pointInSphere.ts"],"names":[],"mappings":";;AAyBA,SAAwB,aAAa,CAAC,MAAc,EAAE,QAAc;IAClE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,GAAG,MAAM,CAAC;IAElD,OAAO,CACL,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,gCAUC"}
@@ -1,3 +1,3 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- export declare function setBrushThresholdForToolGroup(toolGroupId: string, threshold: Types.Point2): void;
2
+ export declare function setBrushThresholdForToolGroup(toolGroupId: string, threshold: Types.Point2, otherArgs?: Record<string, unknown>): void;
3
3
  export declare function getBrushThresholdForToolGroup(toolGroupId: string): any;
@@ -8,15 +8,15 @@ const ToolGroupManager_1 = require("../../store/ToolGroupManager");
8
8
  const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../triggerAnnotationRenderForViewportIds"));
9
9
  const core_1 = require("@cornerstonejs/core");
10
10
  const utilities_1 = __importDefault(require("./utilities"));
11
- function setBrushThresholdForToolGroup(toolGroupId, threshold) {
11
+ function setBrushThresholdForToolGroup(toolGroupId, threshold, otherArgs = { isDynamic: false }) {
12
12
  const toolGroup = (0, ToolGroupManager_1.getToolGroup)(toolGroupId);
13
13
  if (toolGroup === undefined) {
14
14
  return;
15
15
  }
16
16
  const brushBasedToolInstances = (0, utilities_1.default)(toolGroupId);
17
+ const configuration = Object.assign(Object.assign({}, otherArgs), (threshold !== undefined && { threshold }));
17
18
  brushBasedToolInstances.forEach((tool) => {
18
- tool.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold =
19
- threshold;
19
+ tool.configuration.strategySpecificConfiguration.THRESHOLD = Object.assign(Object.assign({}, tool.configuration.strategySpecificConfiguration.THRESHOLD), configuration);
20
20
  });
21
21
  const viewportsInfo = toolGroup.getViewportsInfo();
22
22
  if (!viewportsInfo.length) {
@@ -42,8 +42,8 @@ function getBrushThresholdForToolGroup(toolGroupId) {
42
42
  if (!brushToolInstance) {
43
43
  return;
44
44
  }
45
- return brushToolInstance.configuration.strategySpecificConfiguration
46
- .THRESHOLD_INSIDE_CIRCLE.threshold;
45
+ return brushToolInstance.configuration.strategySpecificConfiguration.THRESHOLD
46
+ .threshold;
47
47
  }
48
48
  exports.getBrushThresholdForToolGroup = getBrushThresholdForToolGroup;
49
49
  //# sourceMappingURL=brushThresholdForToolGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"brushThresholdForToolGroup.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/brushThresholdForToolGroup.ts"],"names":[],"mappings":";;;;;;AACA,mEAA4D;AAC5D,qHAA6F;AAC7F,8CAAyD;AACzD,4DAAgD;AAEhD,SAAgB,6BAA6B,CAC3C,WAAmB,EACnB,SAAuB;IAEvB,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO;KACR;IAED,MAAM,uBAAuB,GAAG,IAAA,mBAAqB,EAAC,WAAW,CAAC,CAAC;IAEnE,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,uBAAuB,CAAC,SAAS;YAChF,SAAS,CAAC;IACd,CAAC,CAAC,CAAC;IAGH,MAAM,aAAa,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAEnD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACzB,OAAO;KACR;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAI/C,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IAE/C,MAAM,eAAe,GAAG,IAAA,yBAAkB,EAAC,iBAAiB,CAAC,CAAC;IAE9D,IAAA,+CAAqC,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACtE,CAAC;AAjCD,sEAiCC;AAED,SAAgB,6BAA6B,CAAC,WAAmB;IAC/D,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO;KACR;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;QACtC,OAAO;KACR;IAED,MAAM,uBAAuB,GAAG,IAAA,mBAAqB,EAAC,WAAW,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAErD,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO;KACR;IAGD,OAAO,iBAAiB,CAAC,aAAa,CAAC,6BAA6B;SACjE,uBAAuB,CAAC,SAAS,CAAC;AACvC,CAAC;AAvBD,sEAuBC"}
1
+ {"version":3,"file":"brushThresholdForToolGroup.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/brushThresholdForToolGroup.ts"],"names":[],"mappings":";;;;;;AACA,mEAA4D;AAC5D,qHAA6F;AAC7F,8CAAyD;AACzD,4DAAgD;AAEhD,SAAgB,6BAA6B,CAC3C,WAAmB,EACnB,SAAuB,EACvB,YAAqC,EAAE,SAAS,EAAE,KAAK,EAAE;IAEzD,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO;KACR;IAED,MAAM,uBAAuB,GAAG,IAAA,mBAAqB,EAAC,WAAW,CAAC,CAAC;IACnE,MAAM,aAAa,mCACd,SAAS,GACT,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,CAC9C,CAAC;IAEF,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS,mCACrD,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS,GAC1D,aAAa,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAGH,MAAM,aAAa,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAEnD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACzB,OAAO;KACR;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAI/C,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IAE/C,MAAM,eAAe,GAAG,IAAA,yBAAkB,EAAC,iBAAiB,CAAC,CAAC;IAE9D,IAAA,+CAAqC,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACtE,CAAC;AAxCD,sEAwCC;AAED,SAAgB,6BAA6B,CAAC,WAAmB;IAC/D,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO;KACR;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;QACtC,OAAO;KACR;IAED,MAAM,uBAAuB,GAAG,IAAA,mBAAqB,EAAC,WAAW,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAErD,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO;KACR;IAGD,OAAO,iBAAiB,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS;SAC3E,SAAS,CAAC;AACf,CAAC;AAvBD,sEAuBC"}
@@ -4,7 +4,7 @@ function drawEllipse(svgDrawingHelper, annotationUID, ellipseUID, corner1, corne
4
4
  const bottom = [(corner1[0] + corner2[0]) / 2, corner2[1]];
5
5
  const left = [corner1[0], (corner1[1] + corner2[1]) / 2];
6
6
  const right = [corner2[0], (corner1[1] + corner2[1]) / 2];
7
- drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, [bottom, top, left, right], options = {}, dataId = '');
7
+ drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, [bottom, top, left, right], (options = {}), (dataId = ''));
8
8
  }
9
9
  export default drawEllipse;
10
10
  //# sourceMappingURL=drawEllipse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drawEllipse.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipse.ts"],"names":[],"mappings":"AAIA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,SAAS,WAAW,CAClB,gBAAkC,EAClC,aAAqB,EACrB,UAAkB,EAClB,OAAqB,EACrB,OAAqB,EACrB,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE;IAEX,MAAM,GAAG,GAAiB,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC;IACxE,MAAM,MAAM,GAAiB,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC;IAC3E,MAAM,IAAI,GAAiB,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAiB,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzE,wBAAwB,CACtB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAC1B,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,CACZ,CAAA;AACH,CAAC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"drawEllipse.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipse.ts"],"names":[],"mappings":"AAIA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,SAAS,WAAW,CAClB,gBAAkC,EAClC,aAAqB,EACrB,UAAkB,EAClB,OAAqB,EACrB,OAAqB,EACrB,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE;IAEX,MAAM,GAAG,GAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,wBAAwB,CACtB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAC1B,CAAC,OAAO,GAAG,EAAE,CAAC,EACd,CAAC,MAAM,GAAG,EAAE,CAAC,CACd,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -1,4 +1,3 @@
1
- 2;
2
1
  import _getHash from './_getHash';
3
2
  import setAttributesIfNecessary from './setAttributesIfNecessary';
4
3
  import setNewAttributesIfValid from './setNewAttributesIfValid';
@@ -16,7 +15,7 @@ function drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, c
16
15
  const [bottom, top, left, right] = canvasCoordinates;
17
16
  const w = Math.hypot(left[0] - right[0], left[1] - right[1]);
18
17
  const h = Math.hypot(top[0] - bottom[0], top[1] - bottom[1]);
19
- const angle = Math.atan2(left[1] - right[1], left[0] - right[0]) * 180 / Math.PI;
18
+ const angle = (Math.atan2(left[1] - right[1], left[0] - right[0]) * 180) / Math.PI;
20
19
  const center = [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2];
21
20
  const radiusX = w / 2;
22
21
  const radiusY = h / 2;
@@ -27,7 +26,7 @@ function drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, c
27
26
  ry: `${radiusY}`,
28
27
  stroke: color,
29
28
  fill: 'transparent',
30
- 'transform': `rotate(${angle} ${center[0]} ${center[1]})`,
29
+ transform: `rotate(${angle} ${center[0]} ${center[1]})`,
31
30
  'stroke-width': strokeWidth,
32
31
  'stroke-dasharray': lineDash,
33
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"drawEllipseByCoordinates.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipseByCoordinates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drawEllipseByCoordinates.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipseByCoordinates.ts"],"names":[],"mappings":"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"}