@cornerstonejs/tools 2.0.0-beta.1 → 2.0.0-beta.3

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 (565) hide show
  1. package/dist/cjs/drawingSvg/drawCircle.js +9 -5
  2. package/dist/cjs/drawingSvg/drawCircle.js.map +1 -1
  3. package/dist/cjs/drawingSvg/drawEllipse.js +4 -4
  4. package/dist/cjs/drawingSvg/drawEllipse.js.map +1 -1
  5. package/dist/cjs/drawingSvg/drawHandles.js +4 -4
  6. package/dist/cjs/drawingSvg/drawHandles.js.map +1 -1
  7. package/dist/cjs/drawingSvg/drawLine.js +4 -4
  8. package/dist/cjs/drawingSvg/drawLine.js.map +1 -1
  9. package/dist/cjs/drawingSvg/drawPolyline.js +4 -4
  10. package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
  11. package/dist/cjs/drawingSvg/drawRect.js +4 -4
  12. package/dist/cjs/drawingSvg/drawRect.js.map +1 -1
  13. package/dist/cjs/drawingSvg/drawTextBox.js +4 -4
  14. package/dist/cjs/drawingSvg/drawTextBox.js.map +1 -1
  15. package/dist/cjs/drawingSvg/getSvgDrawingHelper.js +1 -1
  16. package/dist/cjs/drawingSvg/getSvgDrawingHelper.js.map +1 -1
  17. package/dist/cjs/drawingSvg/index.d.ts +3 -1
  18. package/dist/cjs/drawingSvg/index.js +5 -1
  19. package/dist/cjs/drawingSvg/index.js.map +1 -1
  20. package/dist/cjs/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
  21. package/dist/cjs/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +5 -5
  22. package/dist/cjs/drawingSvg/setAttributesIfNecessary.js.map +1 -0
  23. package/dist/cjs/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
  24. package/dist/cjs/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +5 -5
  25. package/dist/cjs/drawingSvg/setNewAttributesIfValid.js.map +1 -0
  26. package/dist/cjs/enums/Events.d.ts +2 -0
  27. package/dist/cjs/enums/Events.js +2 -0
  28. package/dist/cjs/enums/Events.js.map +1 -1
  29. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
  30. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  31. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
  32. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +41 -0
  33. package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
  34. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js +10 -5
  35. package/dist/cjs/eventDispatchers/shared/getMouseModifier.js.map +1 -1
  36. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
  37. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +39 -0
  38. package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
  39. package/dist/cjs/eventListeners/keyboard/keyDownListener.js +8 -0
  40. package/dist/cjs/eventListeners/keyboard/keyDownListener.js.map +1 -1
  41. package/dist/cjs/eventListeners/mouse/mouseDownListener.js +7 -2
  42. package/dist/cjs/eventListeners/mouse/mouseDownListener.js.map +1 -1
  43. package/dist/cjs/eventListeners/mouse/mouseMoveListener.js +5 -1
  44. package/dist/cjs/eventListeners/mouse/mouseMoveListener.js.map +1 -1
  45. package/dist/cjs/eventListeners/touch/touchStartListener.js +10 -5
  46. package/dist/cjs/eventListeners/touch/touchStartListener.js.map +1 -1
  47. package/dist/cjs/index.d.ts +2 -2
  48. package/dist/cjs/index.js +6 -2
  49. package/dist/cjs/index.js.map +1 -1
  50. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js +1 -0
  51. package/dist/cjs/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  52. package/dist/cjs/stateManagement/annotation/config/getState.js +6 -3
  53. package/dist/cjs/stateManagement/annotation/config/getState.js.map +1 -1
  54. package/dist/cjs/stateManagement/annotation/config/helpers.js +4 -2
  55. package/dist/cjs/stateManagement/annotation/config/helpers.js.map +1 -1
  56. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +10 -2
  57. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
  58. package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +5 -3
  59. package/dist/cjs/store/ToolGroupManager/ToolGroup.js +44 -2
  60. package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
  61. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
  62. package/dist/cjs/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
  63. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +25 -22
  64. package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
  65. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js +1 -1
  66. package/dist/cjs/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
  67. package/dist/cjs/tools/AdvancedMagnifyTool.d.ts +36 -0
  68. package/dist/cjs/tools/AdvancedMagnifyTool.js +448 -0
  69. package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -0
  70. package/dist/cjs/tools/AdvancedMagnifyViewport.d.ts +76 -0
  71. package/dist/cjs/tools/AdvancedMagnifyViewport.js +352 -0
  72. package/dist/cjs/tools/AdvancedMagnifyViewport.js.map +1 -0
  73. package/dist/cjs/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
  74. package/dist/cjs/tools/AdvancedMagnifyViewportManager.js +133 -0
  75. package/dist/cjs/tools/AdvancedMagnifyViewportManager.js.map +1 -0
  76. package/dist/cjs/tools/MIPJumpToClickTool.js +4 -2
  77. package/dist/cjs/tools/MIPJumpToClickTool.js.map +1 -1
  78. package/dist/cjs/tools/MagnifyTool.js +2 -2
  79. package/dist/cjs/tools/MagnifyTool.js.map +1 -1
  80. package/dist/cjs/tools/OrientationMarkerTool.d.ts +88 -0
  81. package/dist/cjs/tools/OrientationMarkerTool.js +193 -0
  82. package/dist/cjs/tools/OrientationMarkerTool.js.map +1 -0
  83. package/dist/cjs/tools/OverlayGridTool.d.ts +31 -0
  84. package/dist/cjs/tools/OverlayGridTool.js +170 -0
  85. package/dist/cjs/tools/OverlayGridTool.js.map +1 -0
  86. package/dist/cjs/tools/PlanarRotateTool.js +2 -1
  87. package/dist/cjs/tools/PlanarRotateTool.js.map +1 -1
  88. package/dist/cjs/tools/ReferenceCursors.js +58 -29
  89. package/dist/cjs/tools/ReferenceCursors.js.map +1 -1
  90. package/dist/cjs/tools/ReferenceLinesTool.d.ts +3 -0
  91. package/dist/cjs/tools/ReferenceLinesTool.js +71 -2
  92. package/dist/cjs/tools/ReferenceLinesTool.js.map +1 -1
  93. package/dist/cjs/tools/ScaleOverlayTool.js +2 -1
  94. package/dist/cjs/tools/ScaleOverlayTool.js.map +1 -1
  95. package/dist/cjs/tools/annotation/AngleTool.d.ts +0 -1
  96. package/dist/cjs/tools/annotation/AngleTool.js +33 -15
  97. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
  98. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +15 -1
  99. package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  100. package/dist/cjs/tools/annotation/BidirectionalTool.d.ts +0 -1
  101. package/dist/cjs/tools/annotation/BidirectionalTool.js +30 -15
  102. package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
  103. package/dist/cjs/tools/annotation/CircleROITool.d.ts +1 -3
  104. package/dist/cjs/tools/annotation/CircleROITool.js +63 -60
  105. package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
  106. package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +31 -6
  107. package/dist/cjs/tools/annotation/CobbAngleTool.js +294 -82
  108. package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
  109. package/dist/cjs/tools/annotation/DragProbeTool.js +17 -4
  110. package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
  111. package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +2 -4
  112. package/dist/cjs/tools/annotation/EllipticalROITool.js +67 -61
  113. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  114. package/dist/cjs/tools/annotation/LengthTool.d.ts +0 -1
  115. package/dist/cjs/tools/annotation/LengthTool.js +27 -12
  116. package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
  117. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +1 -3
  118. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +72 -60
  119. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  120. package/dist/cjs/tools/annotation/ProbeTool.d.ts +1 -3
  121. package/dist/cjs/tools/annotation/ProbeTool.js +28 -22
  122. package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
  123. package/dist/cjs/tools/annotation/RectangleROITool.d.ts +1 -2
  124. package/dist/cjs/tools/annotation/RectangleROITool.js +55 -57
  125. package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
  126. package/dist/cjs/tools/base/AnnotationDisplayTool.js +4 -0
  127. package/dist/cjs/tools/base/AnnotationDisplayTool.js.map +1 -1
  128. package/dist/cjs/tools/base/AnnotationTool.d.ts +3 -2
  129. package/dist/cjs/tools/base/AnnotationTool.js +27 -16
  130. package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
  131. package/dist/cjs/tools/base/index.d.ts +2 -1
  132. package/dist/cjs/tools/base/index.js +3 -1
  133. package/dist/cjs/tools/base/index.js.map +1 -1
  134. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +3 -0
  135. package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  136. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
  137. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  138. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -0
  139. package/dist/cjs/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
  140. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js +5 -6
  141. package/dist/cjs/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  142. package/dist/cjs/tools/index.d.ts +5 -2
  143. package/dist/cjs/tools/index.js +8 -1
  144. package/dist/cjs/tools/index.js.map +1 -1
  145. package/dist/cjs/tools/segmentation/BrushTool.js +24 -17
  146. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  147. package/dist/cjs/tools/segmentation/PaintFillTool.js +4 -2
  148. package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
  149. package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
  150. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  151. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +5 -7
  152. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
  153. package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +3 -0
  154. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +38 -10
  155. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
  156. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
  157. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +10 -0
  158. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
  159. package/dist/cjs/types/CINETypes.d.ts +2 -0
  160. package/dist/cjs/types/CalculatorTypes.d.ts +6 -0
  161. package/dist/cjs/types/CalculatorTypes.js +3 -0
  162. package/dist/cjs/types/CalculatorTypes.js.map +1 -0
  163. package/dist/cjs/types/EventTypes.d.ts +16 -1
  164. package/dist/cjs/types/ISetToolModeOptions.d.ts +2 -2
  165. package/dist/cjs/types/IToolGroup.d.ts +6 -2
  166. package/dist/cjs/types/ToolAction.d.ts +8 -0
  167. package/dist/cjs/types/ToolAction.js +3 -0
  168. package/dist/cjs/types/ToolAction.js.map +1 -0
  169. package/dist/cjs/types/ToolProps.d.ts +5 -1
  170. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +55 -0
  171. package/dist/cjs/types/index.d.ts +4 -2
  172. package/dist/cjs/utilities/cine/playClip.js +13 -3
  173. package/dist/cjs/utilities/cine/playClip.js.map +1 -1
  174. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js +7 -4
  175. package/dist/cjs/utilities/dynamicVolume/getDataInTime.js.map +1 -1
  176. package/dist/cjs/utilities/getCalibratedUnits.js +10 -5
  177. package/dist/cjs/utilities/getCalibratedUnits.js.map +1 -1
  178. package/dist/cjs/utilities/getModalityUnit.js +5 -2
  179. package/dist/cjs/utilities/getModalityUnit.js.map +1 -1
  180. package/dist/cjs/utilities/index.d.ts +2 -2
  181. package/dist/cjs/utilities/index.js +4 -3
  182. package/dist/cjs/utilities/index.js.map +1 -1
  183. package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +3 -1
  184. package/dist/cjs/utilities/math/angle/angleBetweenLines.js +18 -1
  185. package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +1 -1
  186. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
  187. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js +44 -0
  188. package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
  189. package/dist/cjs/utilities/math/basic/Calculator.d.ts +8 -0
  190. package/dist/cjs/utilities/math/basic/Calculator.js +6 -0
  191. package/dist/cjs/utilities/math/basic/Calculator.js.map +1 -0
  192. package/dist/cjs/utilities/math/basic/index.d.ts +3 -0
  193. package/dist/cjs/utilities/math/basic/index.js +11 -0
  194. package/dist/cjs/utilities/math/basic/index.js.map +1 -0
  195. package/dist/cjs/utilities/math/index.d.ts +2 -1
  196. package/dist/cjs/utilities/math/index.js +3 -1
  197. package/dist/cjs/utilities/math/index.js.map +1 -1
  198. package/dist/cjs/utilities/math/midPoint.js +2 -1
  199. package/dist/cjs/utilities/math/midPoint.js.map +1 -1
  200. package/dist/cjs/utilities/math/polyline/pointInPolyline.js +2 -1
  201. package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +1 -1
  202. package/dist/cjs/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  203. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js +10 -5
  204. package/dist/cjs/utilities/math/vec2/liangBarksyClip.js.map +1 -1
  205. package/dist/cjs/utilities/pointInShapeCallback.d.ts +7 -1
  206. package/dist/cjs/utilities/pointInShapeCallback.js +6 -1
  207. package/dist/cjs/utilities/pointInShapeCallback.js.map +1 -1
  208. package/dist/cjs/utilities/roundNumber.js +4 -2
  209. package/dist/cjs/utilities/roundNumber.js.map +1 -1
  210. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
  211. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js +4 -4
  212. package/dist/cjs/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
  213. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js +2 -1
  214. package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
  215. package/dist/cjs/utilities/segmentation/utilities.d.ts +1 -2
  216. package/dist/cjs/utilities/segmentation/utilities.js +4 -1
  217. package/dist/cjs/utilities/segmentation/utilities.js.map +1 -1
  218. package/dist/cjs/utilities/stackPrefetch/index.d.ts +3 -2
  219. package/dist/cjs/utilities/stackPrefetch/index.js +8 -6
  220. package/dist/cjs/utilities/stackPrefetch/index.js.map +1 -1
  221. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
  222. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js +227 -0
  223. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
  224. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
  225. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js +25 -95
  226. package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
  227. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
  228. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js +85 -0
  229. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
  230. package/dist/esm/drawingSvg/drawCircle.js +9 -5
  231. package/dist/esm/drawingSvg/drawCircle.js.map +1 -1
  232. package/dist/esm/drawingSvg/drawEllipse.js +4 -4
  233. package/dist/esm/drawingSvg/drawEllipse.js.map +1 -1
  234. package/dist/esm/drawingSvg/drawHandles.js +4 -4
  235. package/dist/esm/drawingSvg/drawHandles.js.map +1 -1
  236. package/dist/esm/drawingSvg/drawLine.js +4 -4
  237. package/dist/esm/drawingSvg/drawLine.js.map +1 -1
  238. package/dist/esm/drawingSvg/drawPolyline.js +4 -4
  239. package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
  240. package/dist/esm/drawingSvg/drawRect.js +4 -4
  241. package/dist/esm/drawingSvg/drawRect.js.map +1 -1
  242. package/dist/esm/drawingSvg/drawTextBox.js +4 -4
  243. package/dist/esm/drawingSvg/drawTextBox.js.map +1 -1
  244. package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
  245. package/dist/esm/drawingSvg/getSvgDrawingHelper.js.map +1 -1
  246. package/dist/esm/drawingSvg/index.d.ts +3 -1
  247. package/dist/esm/drawingSvg/index.js +3 -1
  248. package/dist/esm/drawingSvg/index.js.map +1 -1
  249. package/dist/esm/drawingSvg/setAttributesIfNecessary.d.ts +2 -0
  250. package/dist/esm/drawingSvg/{_setAttributesIfNecessary.js → setAttributesIfNecessary.js} +3 -3
  251. package/dist/esm/drawingSvg/setAttributesIfNecessary.js.map +1 -0
  252. package/dist/esm/drawingSvg/setNewAttributesIfValid.d.ts +2 -0
  253. package/dist/esm/drawingSvg/{_setNewAttributesIfValid.js → setNewAttributesIfValid.js} +3 -3
  254. package/dist/esm/drawingSvg/setNewAttributesIfValid.js.map +1 -0
  255. package/dist/esm/enums/Events.d.ts +2 -0
  256. package/dist/esm/enums/Events.js +2 -0
  257. package/dist/esm/enums/Events.js.map +1 -1
  258. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
  259. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
  260. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
  261. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +35 -0
  262. package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
  263. package/dist/esm/eventDispatchers/shared/getMouseModifier.js +10 -5
  264. package/dist/esm/eventDispatchers/shared/getMouseModifier.js.map +1 -1
  265. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
  266. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +32 -0
  267. package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
  268. package/dist/esm/eventListeners/keyboard/keyDownListener.js +8 -0
  269. package/dist/esm/eventListeners/keyboard/keyDownListener.js.map +1 -1
  270. package/dist/esm/eventListeners/mouse/mouseDownListener.js +7 -2
  271. package/dist/esm/eventListeners/mouse/mouseDownListener.js.map +1 -1
  272. package/dist/esm/eventListeners/mouse/mouseMoveListener.js +5 -1
  273. package/dist/esm/eventListeners/mouse/mouseMoveListener.js.map +1 -1
  274. package/dist/esm/eventListeners/touch/touchStartListener.js +10 -5
  275. package/dist/esm/eventListeners/touch/touchStartListener.js.map +1 -1
  276. package/dist/esm/index.d.ts +2 -2
  277. package/dist/esm/index.js +2 -2
  278. package/dist/esm/index.js.map +1 -1
  279. package/dist/esm/stateManagement/annotation/config/ToolStyle.js +1 -0
  280. package/dist/esm/stateManagement/annotation/config/ToolStyle.js.map +1 -1
  281. package/dist/esm/stateManagement/annotation/config/getState.js +6 -3
  282. package/dist/esm/stateManagement/annotation/config/getState.js.map +1 -1
  283. package/dist/esm/stateManagement/annotation/config/helpers.js +4 -2
  284. package/dist/esm/stateManagement/annotation/config/helpers.js.map +1 -1
  285. package/dist/esm/store/SynchronizerManager/Synchronizer.js +10 -2
  286. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
  287. package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +5 -3
  288. package/dist/esm/store/ToolGroupManager/ToolGroup.js +45 -4
  289. package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
  290. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +2 -1
  291. package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js.map +1 -1
  292. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +26 -23
  293. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
  294. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js +1 -1
  295. package/dist/esm/synchronizers/callbacks/voiSyncCallback.js.map +1 -1
  296. package/dist/esm/tools/AdvancedMagnifyTool.d.ts +36 -0
  297. package/dist/esm/tools/AdvancedMagnifyTool.js +440 -0
  298. package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -0
  299. package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +76 -0
  300. package/dist/esm/tools/AdvancedMagnifyViewport.js +346 -0
  301. package/dist/esm/tools/AdvancedMagnifyViewport.js.map +1 -0
  302. package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
  303. package/dist/esm/tools/AdvancedMagnifyViewportManager.js +128 -0
  304. package/dist/esm/tools/AdvancedMagnifyViewportManager.js.map +1 -0
  305. package/dist/esm/tools/MIPJumpToClickTool.js +4 -2
  306. package/dist/esm/tools/MIPJumpToClickTool.js.map +1 -1
  307. package/dist/esm/tools/MagnifyTool.js +2 -2
  308. package/dist/esm/tools/MagnifyTool.js.map +1 -1
  309. package/dist/esm/tools/OrientationMarkerTool.d.ts +88 -0
  310. package/dist/esm/tools/OrientationMarkerTool.js +185 -0
  311. package/dist/esm/tools/OrientationMarkerTool.js.map +1 -0
  312. package/dist/esm/tools/OverlayGridTool.d.ts +31 -0
  313. package/dist/esm/tools/OverlayGridTool.js +165 -0
  314. package/dist/esm/tools/OverlayGridTool.js.map +1 -0
  315. package/dist/esm/tools/PlanarRotateTool.js +2 -1
  316. package/dist/esm/tools/PlanarRotateTool.js.map +1 -1
  317. package/dist/esm/tools/ReferenceCursors.js +58 -29
  318. package/dist/esm/tools/ReferenceCursors.js.map +1 -1
  319. package/dist/esm/tools/ReferenceLinesTool.d.ts +3 -0
  320. package/dist/esm/tools/ReferenceLinesTool.js +71 -2
  321. package/dist/esm/tools/ReferenceLinesTool.js.map +1 -1
  322. package/dist/esm/tools/ScaleOverlayTool.js +2 -1
  323. package/dist/esm/tools/ScaleOverlayTool.js.map +1 -1
  324. package/dist/esm/tools/annotation/AngleTool.d.ts +0 -1
  325. package/dist/esm/tools/annotation/AngleTool.js +33 -15
  326. package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
  327. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +15 -1
  328. package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
  329. package/dist/esm/tools/annotation/BidirectionalTool.d.ts +0 -1
  330. package/dist/esm/tools/annotation/BidirectionalTool.js +30 -15
  331. package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
  332. package/dist/esm/tools/annotation/CircleROITool.d.ts +1 -3
  333. package/dist/esm/tools/annotation/CircleROITool.js +62 -60
  334. package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
  335. package/dist/esm/tools/annotation/CobbAngleTool.d.ts +31 -6
  336. package/dist/esm/tools/annotation/CobbAngleTool.js +301 -83
  337. package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
  338. package/dist/esm/tools/annotation/DragProbeTool.js +17 -4
  339. package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
  340. package/dist/esm/tools/annotation/EllipticalROITool.d.ts +2 -4
  341. package/dist/esm/tools/annotation/EllipticalROITool.js +66 -61
  342. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  343. package/dist/esm/tools/annotation/LengthTool.d.ts +0 -1
  344. package/dist/esm/tools/annotation/LengthTool.js +27 -12
  345. package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
  346. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +1 -3
  347. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +71 -60
  348. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  349. package/dist/esm/tools/annotation/ProbeTool.d.ts +1 -3
  350. package/dist/esm/tools/annotation/ProbeTool.js +28 -22
  351. package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
  352. package/dist/esm/tools/annotation/RectangleROITool.d.ts +1 -2
  353. package/dist/esm/tools/annotation/RectangleROITool.js +54 -57
  354. package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
  355. package/dist/esm/tools/base/AnnotationDisplayTool.js +3 -0
  356. package/dist/esm/tools/base/AnnotationDisplayTool.js.map +1 -1
  357. package/dist/esm/tools/base/AnnotationTool.d.ts +3 -2
  358. package/dist/esm/tools/base/AnnotationTool.js +26 -16
  359. package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
  360. package/dist/esm/tools/base/index.d.ts +2 -1
  361. package/dist/esm/tools/base/index.js +2 -1
  362. package/dist/esm/tools/base/index.js.map +1 -1
  363. package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -1
  364. package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
  365. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
  366. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  367. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +4 -1
  368. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js.map +1 -1
  369. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js +5 -6
  370. package/dist/esm/tools/displayTools/SegmentationDisplayTool.js.map +1 -1
  371. package/dist/esm/tools/index.d.ts +5 -2
  372. package/dist/esm/tools/index.js +5 -2
  373. package/dist/esm/tools/index.js.map +1 -1
  374. package/dist/esm/tools/segmentation/BrushTool.js +25 -18
  375. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  376. package/dist/esm/tools/segmentation/PaintFillTool.js +4 -2
  377. package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
  378. package/dist/esm/tools/segmentation/strategies/eraseSphere.d.ts +2 -0
  379. package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  380. package/dist/esm/tools/segmentation/strategies/fillCircle.js +1 -6
  381. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
  382. package/dist/esm/tools/segmentation/strategies/fillSphere.d.ts +3 -0
  383. package/dist/esm/tools/segmentation/strategies/fillSphere.js +33 -9
  384. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
  385. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +3 -0
  386. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +8 -0
  387. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -0
  388. package/dist/esm/types/CINETypes.d.ts +2 -0
  389. package/dist/esm/types/CalculatorTypes.d.ts +6 -0
  390. package/dist/esm/types/CalculatorTypes.js +2 -0
  391. package/dist/esm/types/CalculatorTypes.js.map +1 -0
  392. package/dist/esm/types/EventTypes.d.ts +16 -1
  393. package/dist/esm/types/ISetToolModeOptions.d.ts +2 -2
  394. package/dist/esm/types/IToolGroup.d.ts +6 -2
  395. package/dist/esm/types/ToolAction.d.ts +8 -0
  396. package/dist/esm/types/ToolAction.js +2 -0
  397. package/dist/esm/types/ToolAction.js.map +1 -0
  398. package/dist/esm/types/ToolProps.d.ts +5 -1
  399. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +55 -0
  400. package/dist/esm/types/index.d.ts +4 -2
  401. package/dist/esm/utilities/cine/playClip.js +13 -4
  402. package/dist/esm/utilities/cine/playClip.js.map +1 -1
  403. package/dist/esm/utilities/dynamicVolume/getDataInTime.js +7 -4
  404. package/dist/esm/utilities/dynamicVolume/getDataInTime.js.map +1 -1
  405. package/dist/esm/utilities/getCalibratedUnits.js +10 -5
  406. package/dist/esm/utilities/getCalibratedUnits.js.map +1 -1
  407. package/dist/esm/utilities/getModalityUnit.js +5 -2
  408. package/dist/esm/utilities/getModalityUnit.js.map +1 -1
  409. package/dist/esm/utilities/index.d.ts +2 -2
  410. package/dist/esm/utilities/index.js +2 -2
  411. package/dist/esm/utilities/index.js.map +1 -1
  412. package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +3 -1
  413. package/dist/esm/utilities/math/angle/angleBetweenLines.js +19 -2
  414. package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +1 -1
  415. package/dist/esm/utilities/math/basic/BasicStatsCalculator.d.ts +14 -0
  416. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js +36 -0
  417. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js.map +1 -0
  418. package/dist/esm/utilities/math/basic/Calculator.d.ts +8 -0
  419. package/dist/esm/utilities/math/basic/Calculator.js +4 -0
  420. package/dist/esm/utilities/math/basic/Calculator.js.map +1 -0
  421. package/dist/esm/utilities/math/basic/index.d.ts +3 -0
  422. package/dist/esm/utilities/math/basic/index.js +4 -0
  423. package/dist/esm/utilities/math/basic/index.js.map +1 -0
  424. package/dist/esm/utilities/math/index.d.ts +2 -1
  425. package/dist/esm/utilities/math/index.js +2 -1
  426. package/dist/esm/utilities/math/index.js.map +1 -1
  427. package/dist/esm/utilities/math/midPoint.js +2 -1
  428. package/dist/esm/utilities/math/midPoint.js.map +1 -1
  429. package/dist/esm/utilities/math/polyline/pointInPolyline.js +2 -1
  430. package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +1 -1
  431. package/dist/esm/utilities/math/vec2/liangBarksyClip.d.ts +1 -1
  432. package/dist/esm/utilities/math/vec2/liangBarksyClip.js +10 -5
  433. package/dist/esm/utilities/math/vec2/liangBarksyClip.js.map +1 -1
  434. package/dist/esm/utilities/pointInShapeCallback.d.ts +7 -1
  435. package/dist/esm/utilities/pointInShapeCallback.js +6 -1
  436. package/dist/esm/utilities/pointInShapeCallback.js.map +1 -1
  437. package/dist/esm/utilities/roundNumber.js +4 -2
  438. package/dist/esm/utilities/roundNumber.js.map +1 -1
  439. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.d.ts +2 -2
  440. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +4 -4
  441. package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js.map +1 -1
  442. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js +2 -1
  443. package/dist/esm/utilities/segmentation/thresholdVolumeByRange.js.map +1 -1
  444. package/dist/esm/utilities/segmentation/utilities.d.ts +1 -2
  445. package/dist/esm/utilities/segmentation/utilities.js +4 -1
  446. package/dist/esm/utilities/segmentation/utilities.js.map +1 -1
  447. package/dist/esm/utilities/stackPrefetch/index.d.ts +3 -2
  448. package/dist/esm/utilities/stackPrefetch/index.js +3 -2
  449. package/dist/esm/utilities/stackPrefetch/index.js.map +1 -1
  450. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
  451. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +220 -0
  452. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
  453. package/dist/esm/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
  454. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +14 -81
  455. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
  456. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
  457. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +77 -0
  458. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
  459. package/dist/umd/index.js +1 -1
  460. package/dist/umd/index.js.map +1 -1
  461. package/package.json +3 -3
  462. package/src/drawingSvg/drawCircle.ts +17 -5
  463. package/src/drawingSvg/drawEllipse.ts +4 -4
  464. package/src/drawingSvg/drawHandles.ts +4 -4
  465. package/src/drawingSvg/drawLine.ts +4 -4
  466. package/src/drawingSvg/drawPolyline.ts +4 -4
  467. package/src/drawingSvg/drawRect.ts +4 -4
  468. package/src/drawingSvg/drawTextBox.ts +4 -4
  469. package/src/drawingSvg/getSvgDrawingHelper.ts +4 -1
  470. package/src/drawingSvg/index.ts +4 -0
  471. package/src/drawingSvg/{_setAttributesIfNecessary.ts → setAttributesIfNecessary.ts} +2 -2
  472. package/src/drawingSvg/{_setNewAttributesIfValid.ts → setNewAttributesIfValid.ts} +2 -2
  473. package/src/enums/Events.ts +22 -0
  474. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +11 -2
  475. package/src/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.ts +72 -0
  476. package/src/eventDispatchers/shared/getMouseModifier.ts +15 -5
  477. package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +66 -0
  478. package/src/eventListeners/keyboard/keyDownListener.ts +13 -0
  479. package/src/eventListeners/mouse/mouseDownListener.ts +10 -2
  480. package/src/eventListeners/mouse/mouseMoveListener.ts +7 -1
  481. package/src/eventListeners/touch/touchStartListener.ts +15 -5
  482. package/src/index.ts +8 -0
  483. package/src/stateManagement/annotation/config/ToolStyle.ts +1 -0
  484. package/src/stateManagement/annotation/config/getState.ts +7 -3
  485. package/src/stateManagement/annotation/config/helpers.ts +6 -2
  486. package/src/store/SynchronizerManager/Synchronizer.ts +16 -8
  487. package/src/store/ToolGroupManager/ToolGroup.ts +99 -6
  488. package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +3 -1
  489. package/src/synchronizers/callbacks/stackImageSyncCallback.ts +63 -68
  490. package/src/synchronizers/callbacks/voiSyncCallback.ts +1 -1
  491. package/src/tools/AdvancedMagnifyTool.ts +725 -0
  492. package/src/tools/AdvancedMagnifyViewport.ts +624 -0
  493. package/src/tools/AdvancedMagnifyViewportManager.ts +291 -0
  494. package/src/tools/MIPJumpToClickTool.ts +6 -2
  495. package/src/tools/MagnifyTool.ts +2 -2
  496. package/src/tools/OrientationMarkerTool.ts +235 -0
  497. package/src/tools/OverlayGridTool.ts +357 -0
  498. package/src/tools/PlanarRotateTool.ts +3 -1
  499. package/src/tools/ReferenceCursors.ts +85 -29
  500. package/src/tools/ReferenceLinesTool.ts +131 -3
  501. package/src/tools/ScaleOverlayTool.ts +3 -1
  502. package/src/tools/annotation/AngleTool.ts +42 -20
  503. package/src/tools/annotation/ArrowAnnotateTool.ts +16 -1
  504. package/src/tools/annotation/BidirectionalTool.ts +38 -24
  505. package/src/tools/annotation/CircleROITool.ts +94 -107
  506. package/src/tools/annotation/CobbAngleTool.ts +452 -114
  507. package/src/tools/annotation/DragProbeTool.ts +25 -14
  508. package/src/tools/annotation/EllipticalROITool.ts +88 -97
  509. package/src/tools/annotation/LengthTool.ts +33 -18
  510. package/src/tools/annotation/PlanarFreehandROITool.ts +90 -78
  511. package/src/tools/annotation/ProbeTool.ts +43 -49
  512. package/src/tools/annotation/RectangleROITool.ts +80 -92
  513. package/src/tools/base/AnnotationDisplayTool.ts +4 -0
  514. package/src/tools/base/AnnotationTool.ts +41 -18
  515. package/src/tools/base/index.ts +2 -1
  516. package/src/tools/displayTools/Contour/contourDisplay.ts +8 -0
  517. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +4 -1
  518. package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +6 -1
  519. package/src/tools/displayTools/SegmentationDisplayTool.ts +12 -18
  520. package/src/tools/index.ts +8 -1
  521. package/src/tools/segmentation/BrushTool.ts +42 -19
  522. package/src/tools/segmentation/PaintFillTool.ts +10 -3
  523. package/src/tools/segmentation/strategies/eraseSphere.ts +2 -0
  524. package/src/tools/segmentation/strategies/fillCircle.ts +1 -13
  525. package/src/tools/segmentation/strategies/fillSphere.ts +56 -8
  526. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +16 -0
  527. package/src/types/CINETypes.ts +8 -2
  528. package/src/types/CalculatorTypes.ts +7 -0
  529. package/src/types/EventTypes.ts +43 -0
  530. package/src/types/ISetToolModeOptions.ts +2 -2
  531. package/src/types/IToolGroup.ts +13 -3
  532. package/src/types/ToolAction.ts +54 -0
  533. package/src/types/ToolProps.ts +7 -1
  534. package/src/types/ToolSpecificAnnotationTypes.ts +58 -0
  535. package/src/types/index.ts +11 -1
  536. package/src/utilities/cine/playClip.ts +20 -3
  537. package/src/utilities/dynamicVolume/getDataInTime.ts +9 -6
  538. package/src/utilities/getCalibratedUnits.ts +15 -5
  539. package/src/utilities/getModalityUnit.ts +8 -2
  540. package/src/utilities/index.ts +2 -1
  541. package/src/utilities/math/angle/angleBetweenLines.ts +39 -9
  542. package/src/utilities/math/basic/BasicStatsCalculator.ts +60 -0
  543. package/src/utilities/math/basic/Calculator.ts +8 -0
  544. package/src/utilities/math/basic/index.ts +4 -0
  545. package/src/utilities/math/index.ts +10 -1
  546. package/src/utilities/math/midPoint.ts +3 -1
  547. package/src/utilities/math/polyline/pointInPolyline.ts +3 -1
  548. package/src/utilities/math/vec2/liangBarksyClip.ts +15 -5
  549. package/src/utilities/pointInShapeCallback.ts +15 -3
  550. package/src/utilities/roundNumber.ts +6 -2
  551. package/src/utilities/segmentation/brushSizeForToolGroup.ts +22 -4
  552. package/src/utilities/segmentation/thresholdVolumeByRange.ts +3 -1
  553. package/src/utilities/segmentation/utilities.ts +8 -1
  554. package/src/utilities/stackPrefetch/index.ts +3 -7
  555. package/src/utilities/stackPrefetch/stackContextPrefetch.ts +380 -0
  556. package/src/utilities/stackPrefetch/stackPrefetch.ts +37 -153
  557. package/src/utilities/stackPrefetch/stackPrefetchUtils.ts +114 -0
  558. package/dist/cjs/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
  559. package/dist/cjs/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
  560. package/dist/cjs/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
  561. package/dist/cjs/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
  562. package/dist/esm/drawingSvg/_setAttributesIfNecessary.d.ts +0 -2
  563. package/dist/esm/drawingSvg/_setAttributesIfNecessary.js.map +0 -1
  564. package/dist/esm/drawingSvg/_setNewAttributesIfValid.d.ts +0 -2
  565. package/dist/esm/drawingSvg/_setNewAttributesIfValid.js.map +0 -1
@@ -45,7 +45,6 @@ import {
45
45
  TextBoxHandle,
46
46
  ToolProps,
47
47
  PublicToolProps,
48
- InteractionTypes,
49
48
  SVGDrawingHelper,
50
49
  } from '../../types';
51
50
  import { RectangleROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
@@ -56,6 +55,8 @@ import {
56
55
  import { StyleSpecifier } from '../../types/AnnotationStyle';
57
56
  import { getModalityUnit } from '../../utilities/getModalityUnit';
58
57
  import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
58
+ import { pointInShapeCallback } from '../../utilities/';
59
+ import { BasicStatsCalculator } from '../../utilities/math/basic';
59
60
 
60
61
  const { transformWorldToIndex } = csUtils;
61
62
 
@@ -97,6 +98,7 @@ const { transformWorldToIndex } = csUtils;
97
98
  *
98
99
  * Read more in the Docs section of the website.
99
100
  */
101
+
100
102
  class RectangleROITool extends AnnotationTool {
101
103
  static toolName;
102
104
 
@@ -119,6 +121,8 @@ class RectangleROITool extends AnnotationTool {
119
121
  configuration: {
120
122
  shadow: true,
121
123
  preventHandleOutsideImage: false,
124
+ getTextLines: defaultGetTextLines,
125
+ statsCalculator: BasicStatsCalculator,
122
126
  },
123
127
  }
124
128
  ) {
@@ -654,21 +658,11 @@ class RectangleROITool extends AnnotationTool {
654
658
 
655
659
  const { viewPlaneNormal, viewUp } = viewport.getCamera();
656
660
 
657
- const modalityUnitOptions = {
658
- isPreScaled: isViewportPreScaled(viewport, targetId),
659
-
660
- isSuvScaled: this.isSuvScaled(
661
- viewport,
662
- targetId,
663
- annotation.metadata.referencedImageId
664
- ),
665
- };
666
-
667
661
  // If cachedStats does not exist, or the unit is missing (as part of import/hydration etc.),
668
662
  // force to recalculate the stats from the points
669
663
  if (
670
664
  !data.cachedStats[targetId] ||
671
- data.cachedStats[targetId].areaUnit === undefined
665
+ data.cachedStats[targetId].areaUnit == null
672
666
  ) {
673
667
  data.cachedStats[targetId] = {
674
668
  Modality: null,
@@ -684,8 +678,7 @@ class RectangleROITool extends AnnotationTool {
684
678
  viewPlaneNormal,
685
679
  viewUp,
686
680
  renderingEngine,
687
- enabledElement,
688
- modalityUnitOptions
681
+ enabledElement
689
682
  );
690
683
  } else if (annotation.invalidated) {
691
684
  this._throttledCalculateCachedStats(
@@ -693,8 +686,7 @@ class RectangleROITool extends AnnotationTool {
693
686
  viewPlaneNormal,
694
687
  viewUp,
695
688
  renderingEngine,
696
- enabledElement,
697
- modalityUnitOptions
689
+ enabledElement
698
690
  );
699
691
 
700
692
  // If the invalidated data is as a result of volumeViewport manipulation
@@ -786,7 +778,22 @@ class RectangleROITool extends AnnotationTool {
786
778
 
787
779
  renderStatus = true;
788
780
 
789
- const textLines = this._getTextLines(data, targetId);
781
+ const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
782
+ if (!options.visibility) {
783
+ data.handles.textBox = {
784
+ hasMoved: false,
785
+ worldPosition: <Types.Point3>[0, 0, 0],
786
+ worldBoundingBox: {
787
+ topLeft: <Types.Point3>[0, 0, 0],
788
+ topRight: <Types.Point3>[0, 0, 0],
789
+ bottomLeft: <Types.Point3>[0, 0, 0],
790
+ bottomRight: <Types.Point3>[0, 0, 0],
791
+ },
792
+ };
793
+ continue;
794
+ }
795
+
796
+ const textLines = this.configuration.getTextLines(data, targetId);
790
797
  if (!textLines || textLines.length === 0) {
791
798
  continue;
792
799
  }
@@ -811,7 +818,7 @@ class RectangleROITool extends AnnotationTool {
811
818
  textBoxPosition,
812
819
  canvasCoordinates,
813
820
  {},
814
- this.getLinkedTextBoxStyle(styleSpecifier, annotation)
821
+ options
815
822
  );
816
823
 
817
824
  const { x: left, y: top, width, height } = boundingBox;
@@ -845,33 +852,6 @@ class RectangleROITool extends AnnotationTool {
845
852
  };
846
853
  };
847
854
 
848
- /**
849
- * _getTextLines - Returns the Area, mean and std deviation of the area of the
850
- * target volume enclosed by the rectangle.
851
- *
852
- * @param data - The annotation tool-specific data.
853
- * @param targetId - The volumeId of the volume to display the stats for.
854
- * @param isPreScaled - Whether the viewport is pre-scaled or not.
855
- */
856
- _getTextLines = (data, targetId: string): string[] | undefined => {
857
- const cachedVolumeStats = data.cachedStats[targetId];
858
- const { area, mean, max, stdDev, areaUnit, modalityUnit } =
859
- cachedVolumeStats;
860
-
861
- if (mean === undefined) {
862
- return;
863
- }
864
-
865
- const textLines: string[] = [];
866
-
867
- textLines.push(`Area: ${roundNumber(area)} ${areaUnit}`);
868
- textLines.push(`Mean: ${roundNumber(mean)} ${modalityUnit}`);
869
- textLines.push(`Max: ${roundNumber(max)} ${modalityUnit}`);
870
- textLines.push(`Std Dev: ${roundNumber(stdDev)} ${modalityUnit}`);
871
-
872
- return textLines;
873
- };
874
-
875
855
  /**
876
856
  * _calculateCachedStats - For each volume in the frame of reference that a
877
857
  * tool instance in particular viewport defines as its target volume, find the
@@ -888,11 +868,10 @@ class RectangleROITool extends AnnotationTool {
888
868
  viewPlaneNormal,
889
869
  viewUp,
890
870
  renderingEngine,
891
- enabledElement,
892
- modalityUnitOptions
871
+ enabledElement
893
872
  ) => {
894
873
  const { data } = annotation;
895
- const { viewportId, renderingEngineId } = enabledElement;
874
+ const { viewportId, renderingEngineId, viewport } = enabledElement;
896
875
 
897
876
  const worldPos1 = data.handles.points[0];
898
877
  const worldPos2 = data.handles.points[3];
@@ -945,6 +924,12 @@ class RectangleROITool extends AnnotationTool {
945
924
  const kMin = Math.min(worldPos1Index[2], worldPos2Index[2]);
946
925
  const kMax = Math.max(worldPos1Index[2], worldPos2Index[2]);
947
926
 
927
+ const boundsIJK = [
928
+ [iMin, iMax],
929
+ [jMin, jMax],
930
+ [kMin, kMax],
931
+ ] as [Types.Point2, Types.Point2, Types.Point2];
932
+
948
933
  const { worldWidth, worldHeight } = getWorldWidthAndHeightFromCorners(
949
934
  viewPlaneNormal,
950
935
  viewUp,
@@ -955,48 +940,15 @@ class RectangleROITool extends AnnotationTool {
955
940
 
956
941
  const area = Math.abs(worldWidth * worldHeight) / (scale * scale);
957
942
 
958
- let count = 0;
959
- let mean = 0;
960
- let stdDev = 0;
961
- let max = -Infinity;
943
+ const modalityUnitOptions = {
944
+ isPreScaled: isViewportPreScaled(viewport, targetId),
962
945
 
963
- const yMultiple = dimensions[0];
964
- const zMultiple = dimensions[0] * dimensions[1];
965
-
966
- //Todo: this can be replaced by pointInShapeCallback....
967
- // This is a triple loop, but one of these 3 values will be constant
968
- // In the planar view.
969
- for (let k = kMin; k <= kMax; k++) {
970
- for (let j = jMin; j <= jMax; j++) {
971
- for (let i = iMin; i <= iMax; i++) {
972
- const value = scalarData[k * zMultiple + j * yMultiple + i];
973
-
974
- if (value > max) {
975
- max = value;
976
- }
977
-
978
- count++;
979
- mean += value;
980
- }
981
- }
982
- }
983
-
984
- mean /= count;
985
-
986
- for (let k = kMin; k <= kMax; k++) {
987
- for (let j = jMin; j <= jMax; j++) {
988
- for (let i = iMin; i <= iMax; i++) {
989
- const value = scalarData[k * zMultiple + j * yMultiple + i];
990
-
991
- const valueMinusMean = value - mean;
992
-
993
- stdDev += valueMinusMean * valueMinusMean;
994
- }
995
- }
996
- }
997
-
998
- stdDev /= count;
999
- stdDev = Math.sqrt(stdDev);
946
+ isSuvScaled: this.isSuvScaled(
947
+ viewport,
948
+ targetId,
949
+ annotation.metadata.referencedImageId
950
+ ),
951
+ };
1000
952
 
1001
953
  const modalityUnit = getModalityUnit(
1002
954
  metadata.Modality,
@@ -1004,12 +956,23 @@ class RectangleROITool extends AnnotationTool {
1004
956
  modalityUnitOptions
1005
957
  );
1006
958
 
959
+ const pointsInShape = pointInShapeCallback(
960
+ imageData,
961
+ () => true,
962
+ this.configuration.statsCalculator.statsCallback,
963
+ boundsIJK
964
+ );
965
+
966
+ const stats = this.configuration.statsCalculator.getStatistics();
967
+
1007
968
  cachedStats[targetId] = {
1008
969
  Modality: metadata.Modality,
1009
970
  area,
1010
- mean,
1011
- stdDev,
1012
- max,
971
+ mean: stats[1]?.value,
972
+ stdDev: stats[2]?.value,
973
+ max: stats[0]?.value,
974
+ statsArray: stats,
975
+ pointsInShape: pointsInShape,
1013
976
  areaUnit: getCalibratedAreaUnits(null, image),
1014
977
  modalityUnit,
1015
978
  };
@@ -1044,5 +1007,30 @@ class RectangleROITool extends AnnotationTool {
1044
1007
  };
1045
1008
  }
1046
1009
 
1010
+ /**
1011
+ * _getTextLines - Returns the Area, mean and std deviation of the area of the
1012
+ * target volume enclosed by the rectangle.
1013
+ *
1014
+ * @param data - The annotation tool-specific data.
1015
+ * @param targetId - The volumeId of the volume to display the stats for.
1016
+ */
1017
+ function defaultGetTextLines(data, targetId: string): string[] {
1018
+ const cachedVolumeStats = data.cachedStats[targetId];
1019
+ const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
1020
+
1021
+ if (mean === undefined) {
1022
+ return;
1023
+ }
1024
+
1025
+ const textLines: string[] = [];
1026
+
1027
+ textLines.push(`Area: ${roundNumber(area)} ${areaUnit}`);
1028
+ textLines.push(`Mean: ${roundNumber(mean)} ${modalityUnit}`);
1029
+ textLines.push(`Max: ${roundNumber(max)} ${modalityUnit}`);
1030
+ textLines.push(`Std Dev: ${roundNumber(stdDev)} ${modalityUnit}`);
1031
+
1032
+ return textLines;
1033
+ }
1034
+
1047
1035
  RectangleROITool.toolName = 'RectangleROI';
1048
1036
  export default RectangleROITool;
@@ -102,6 +102,10 @@ abstract class AnnotationDisplayTool extends BaseTool {
102
102
 
103
103
  // for this specific tool
104
104
  toolSpecificAnnotations.forEach((annotation) => {
105
+ if (!annotation.metadata?.referencedImageId) {
106
+ return;
107
+ }
108
+
105
109
  // if the annotation is drawn on the same imageId
106
110
  const referencedImageURI = utilities.imageIdToURI(
107
111
  annotation.metadata.referencedImageId
@@ -18,10 +18,12 @@ import {
18
18
  EventTypes,
19
19
  ToolHandle,
20
20
  InteractionTypes,
21
+ ToolProps,
22
+ PublicToolProps,
21
23
  } from '../../types';
22
24
  import { StyleSpecifier } from '../../types/AnnotationStyle';
23
25
 
24
- /**
26
+ /**-q
25
27
  * Abstract class for tools which create and display annotations on the
26
28
  * cornerstone3D canvas. In addition, it provides a base class for segmentation
27
29
  * tools that require drawing an annotation before running the segmentation strategy
@@ -37,6 +39,19 @@ abstract class AnnotationTool extends AnnotationDisplayTool {
37
39
  // Abstract Methods - Must be implemented.
38
40
  // ===================================================================
39
41
 
42
+ constructor(toolProps: PublicToolProps, defaultToolProps: ToolProps) {
43
+ super(toolProps, defaultToolProps);
44
+
45
+ if (toolProps.configuration?.getTextLines) {
46
+ this.configuration.getTextLines = toolProps.configuration.getTextLines;
47
+ }
48
+
49
+ if (toolProps.configuration?.statsCalculator) {
50
+ this.configuration.statsCalculator =
51
+ toolProps.configuration.statsCalculator;
52
+ }
53
+ }
54
+
40
55
  /**
41
56
  * @abstract addNewAnnotation Creates a new annotation based on the clicked mouse position
42
57
  *
@@ -79,7 +94,8 @@ abstract class AnnotationTool extends AnnotationDisplayTool {
79
94
  abstract toolSelectedCallback(
80
95
  evt: EventTypes.InteractionEventType,
81
96
  annotation: Annotation,
82
- interactionType: InteractionTypes
97
+ interactionType: InteractionTypes,
98
+ canvasCoords?: Types.Point2
83
99
  ): void;
84
100
 
85
101
  /**
@@ -185,24 +201,26 @@ abstract class AnnotationTool extends AnnotationDisplayTool {
185
201
 
186
202
  const { data } = annotation;
187
203
  const { points, textBox } = data.handles;
188
- const { worldBoundingBox } = textBox;
189
204
 
190
- if (worldBoundingBox) {
191
- const canvasBoundingBox = {
192
- topLeft: viewport.worldToCanvas(worldBoundingBox.topLeft),
193
- topRight: viewport.worldToCanvas(worldBoundingBox.topRight),
194
- bottomLeft: viewport.worldToCanvas(worldBoundingBox.bottomLeft),
195
- bottomRight: viewport.worldToCanvas(worldBoundingBox.bottomRight),
196
- };
205
+ if (textBox) {
206
+ const { worldBoundingBox } = textBox;
207
+ if (worldBoundingBox) {
208
+ const canvasBoundingBox = {
209
+ topLeft: viewport.worldToCanvas(worldBoundingBox.topLeft),
210
+ topRight: viewport.worldToCanvas(worldBoundingBox.topRight),
211
+ bottomLeft: viewport.worldToCanvas(worldBoundingBox.bottomLeft),
212
+ bottomRight: viewport.worldToCanvas(worldBoundingBox.bottomRight),
213
+ };
197
214
 
198
- if (
199
- canvasCoords[0] >= canvasBoundingBox.topLeft[0] &&
200
- canvasCoords[0] <= canvasBoundingBox.bottomRight[0] &&
201
- canvasCoords[1] >= canvasBoundingBox.topLeft[1] &&
202
- canvasCoords[1] <= canvasBoundingBox.bottomRight[1]
203
- ) {
204
- data.handles.activeHandleIndex = null;
205
- return textBox;
215
+ if (
216
+ canvasCoords[0] >= canvasBoundingBox.topLeft[0] &&
217
+ canvasCoords[0] <= canvasBoundingBox.bottomRight[0] &&
218
+ canvasCoords[1] >= canvasBoundingBox.topLeft[1] &&
219
+ canvasCoords[1] <= canvasBoundingBox.bottomRight[1]
220
+ ) {
221
+ data.handles.activeHandleIndex = null;
222
+ return textBox;
223
+ }
206
224
  }
207
225
  }
208
226
 
@@ -240,6 +258,11 @@ abstract class AnnotationTool extends AnnotationDisplayTool {
240
258
  // for the textBox.
241
259
 
242
260
  return {
261
+ visibility: this.getStyle(
262
+ 'textBoxVisibility',
263
+ specifications,
264
+ annotation
265
+ ),
243
266
  fontFamily: this.getStyle(
244
267
  'textBoxFontFamily',
245
268
  specifications,
@@ -1,4 +1,5 @@
1
1
  import BaseTool from './BaseTool';
2
2
  import AnnotationTool from './AnnotationTool';
3
+ import AnnotationDisplayTool from './AnnotationDisplayTool';
3
4
 
4
- export { BaseTool, AnnotationTool };
5
+ export { BaseTool, AnnotationTool, AnnotationDisplayTool };
@@ -2,6 +2,7 @@ import {
2
2
  getEnabledElementByIds,
3
3
  Types,
4
4
  utilities as csUtils,
5
+ StackViewport,
5
6
  } from '@cornerstonejs/core';
6
7
 
7
8
  import Representations from '../../../enums/SegmentationRepresentations';
@@ -128,6 +129,13 @@ async function render(
128
129
  const contourData = segmentation.representationData[Representations.Contour];
129
130
  const { geometryIds } = contourData;
130
131
 
132
+
133
+ // We don't have a good way to handle stack viewports for contours at the moment.
134
+ // Plus, if we add a segmentation to one viewport, it gets added to all the viewports in the toolGroup too.
135
+ if (viewport instanceof StackViewport) {
136
+ return;
137
+ }
138
+
131
139
  if (!geometryIds?.length) {
132
140
  console.warn(
133
141
  `No contours found for segmentationId ${segmentationId}. Skipping render.`
@@ -276,6 +276,9 @@ function _setLabelmapColorAndOpacity(
276
276
  isActiveLabelmap
277
277
  );
278
278
 
279
+ // Todo: the below loop probably can be optimized so that we don't hit it
280
+ // unless a config has changed. Right now we get into the following loop
281
+ // even for brush drawing which does not makes sense
279
282
  for (let i = 0; i < numColors; i++) {
280
283
  const segmentIndex = i;
281
284
  const segmentColor = colorLUT[segmentIndex];
@@ -413,7 +416,7 @@ function _needsTransferFunctionUpdate(
413
416
  renderFill,
414
417
  renderOutline,
415
418
  outlineWidth,
416
- segmentColor,
419
+ segmentColor: segmentColor.slice(), // Create a copy
417
420
  segmentsHidden: new Set(segmentsHidden), // Create a copy
418
421
  });
419
422
 
@@ -1,4 +1,4 @@
1
- import { getEnabledElement } from '@cornerstonejs/core';
1
+ import { StackViewport, getEnabledElement } from '@cornerstonejs/core';
2
2
  import type { Types } from '@cornerstonejs/core';
3
3
 
4
4
  /**
@@ -19,6 +19,11 @@ function removeLabelmapFromElement(
19
19
  const enabledElement = getEnabledElement(element);
20
20
  const { viewport } = enabledElement;
21
21
 
22
+ if (viewport instanceof StackViewport) {
23
+ // Todo: we don't have stack segmentation yet
24
+ return;
25
+ }
26
+
22
27
  (viewport as Types.IVolumeViewport).removeVolumeActors([
23
28
  segmentationRepresentationUID,
24
29
  ]);
@@ -143,26 +143,20 @@ class SegmentationDisplayTool extends BaseTool {
143
143
  const config = this._getMergedRepresentationsConfig(toolGroupId);
144
144
 
145
145
  const viewportsRenderList = [];
146
+ const display =
147
+ representation.type === Representations.Labelmap
148
+ ? labelmapDisplay
149
+ : contourDisplay;
150
+
146
151
  for (const viewport of toolGroupViewports) {
147
- if (representation.type == Representations.Labelmap) {
148
- viewportsRenderList.push(
149
- labelmapDisplay.render(
150
- viewport as Types.IVolumeViewport,
151
- representation,
152
- config
153
- )
154
- );
155
- } else if (representation.type == Representations.Contour) {
156
- viewportsRenderList.push(
157
- contourDisplay.render(
158
- viewport as Types.IVolumeViewport,
159
- representation,
160
- config
161
- )
162
- );
163
- }
164
- }
152
+ const renderedViewport = display.render(
153
+ viewport as Types.IVolumeViewport,
154
+ representation,
155
+ config
156
+ );
165
157
 
158
+ viewportsRenderList.push(renderedViewport);
159
+ }
166
160
  return viewportsRenderList;
167
161
  }
168
162
  );
@@ -1,4 +1,4 @@
1
- import { BaseTool, AnnotationTool } from './base';
1
+ import { BaseTool, AnnotationTool, AnnotationDisplayTool } from './base';
2
2
  import PanTool from './PanTool';
3
3
  import TrackballRotateTool from './TrackballRotateTool';
4
4
  import WindowLevelTool from './WindowLevelTool';
@@ -10,7 +10,9 @@ import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
10
10
  import MIPJumpToClickTool from './MIPJumpToClickTool';
11
11
  import CrosshairsTool from './CrosshairsTool';
12
12
  import MagnifyTool from './MagnifyTool';
13
+ import AdvancedMagnifyTool from './AdvancedMagnifyTool';
13
14
  import ReferenceLinesTool from './ReferenceLinesTool';
15
+ import OverlayGridTool from './OverlayGridTool';
14
16
  //
15
17
  import BidirectionalTool from './annotation/BidirectionalTool';
16
18
  import LengthTool from './annotation/LengthTool';
@@ -38,11 +40,13 @@ import RectangleROIThresholdTool from './segmentation/RectangleROIThresholdTool'
38
40
  import RectangleROIStartEndThresholdTool from './segmentation/RectangleROIStartEndThresholdTool';
39
41
  import BrushTool from './segmentation/BrushTool';
40
42
  import PaintFillTool from './segmentation/PaintFillTool';
43
+ import OrientationMarkerTool from './OrientationMarkerTool';
41
44
 
42
45
  export {
43
46
  // ~~ BASE
44
47
  BaseTool,
45
48
  AnnotationTool,
49
+ AnnotationDisplayTool,
46
50
  // Manipulation Tools
47
51
  PanTool,
48
52
  TrackballRotateTool,
@@ -57,6 +61,7 @@ export {
57
61
  // Annotation Tools
58
62
  CrosshairsTool,
59
63
  ReferenceLinesTool,
64
+ OverlayGridTool,
60
65
  BidirectionalTool,
61
66
  LengthTool,
62
67
  ProbeTool,
@@ -78,7 +83,9 @@ export {
78
83
  RectangleROIStartEndThresholdTool,
79
84
  BrushTool,
80
85
  MagnifyTool,
86
+ AdvancedMagnifyTool,
81
87
  ReferenceLines,
82
88
  PaintFillTool,
83
89
  ScaleOverlayTool,
90
+ OrientationMarkerTool,
84
91
  };
@@ -1,4 +1,5 @@
1
1
  import { cache, getEnabledElement, StackViewport } from '@cornerstonejs/core';
2
+ import { vec3 } from 'gl-matrix';
2
3
 
3
4
  import type { Types } from '@cornerstonejs/core';
4
5
  import type {
@@ -8,7 +9,10 @@ import type {
8
9
  SVGDrawingHelper,
9
10
  } from '../../types';
10
11
  import { BaseTool } from '../base';
11
- import { fillInsideSphere } from './strategies/fillSphere';
12
+ import {
13
+ fillInsideSphere,
14
+ thresholdInsideSphere,
15
+ } from './strategies/fillSphere';
12
16
  import { eraseInsideSphere } from './strategies/eraseSphere';
13
17
  import {
14
18
  thresholdInsideCircle,
@@ -59,10 +63,11 @@ class BrushTool extends BaseTool {
59
63
  configuration: {
60
64
  strategies: {
61
65
  FILL_INSIDE_CIRCLE: fillInsideCircle,
62
- THRESHOLD_INSIDE_CIRCLE: thresholdInsideCircle,
63
66
  ERASE_INSIDE_CIRCLE: eraseInsideCircle,
64
67
  FILL_INSIDE_SPHERE: fillInsideSphere,
65
68
  ERASE_INSIDE_SPHERE: eraseInsideSphere,
69
+ THRESHOLD_INSIDE_CIRCLE: thresholdInsideCircle,
70
+ THRESHOLD_INSIDE_SPHERE: thresholdInsideSphere,
66
71
  },
67
72
  strategySpecificConfiguration: {
68
73
  THRESHOLD_INSIDE_CIRCLE: {
@@ -277,24 +282,42 @@ class BrushTool extends BaseTool {
277
282
  const enabledElement = getEnabledElement(element);
278
283
  const { viewport } = enabledElement;
279
284
  const { canvasToWorld } = viewport;
285
+ const camera = viewport.getCamera();
280
286
  const { brushSize } = this.configuration;
281
- // Center of circle in canvas Coordinates
282
287
 
283
- const radius = brushSize;
288
+ const viewUp = vec3.fromValues(
289
+ camera.viewUp[0],
290
+ camera.viewUp[1],
291
+ camera.viewUp[2]
292
+ );
293
+ const viewPlaneNormal = vec3.fromValues(
294
+ camera.viewPlaneNormal[0],
295
+ camera.viewPlaneNormal[1],
296
+ camera.viewPlaneNormal[2]
297
+ );
298
+ const viewRight = vec3.create();
284
299
 
285
- const bottomCanvas: Types.Point2 = [
300
+ vec3.cross(viewRight, viewUp, viewPlaneNormal);
301
+
302
+ // in the world coordinate system, the brushSize is the radius of the circle
303
+ // in mm
304
+ const centerCursorInWorld: Types.Point3 = canvasToWorld([
286
305
  centerCanvas[0],
287
- centerCanvas[1] + radius,
288
- ];
289
- const topCanvas: Types.Point2 = [centerCanvas[0], centerCanvas[1] - radius];
290
- const leftCanvas: Types.Point2 = [
291
- centerCanvas[0] - radius,
292
- centerCanvas[1],
293
- ];
294
- const rightCanvas: Types.Point2 = [
295
- centerCanvas[0] + radius,
296
306
  centerCanvas[1],
297
- ];
307
+ ]);
308
+
309
+ const bottomCursorInWorld = vec3.create();
310
+ const topCursorInWorld = vec3.create();
311
+ const leftCursorInWorld = vec3.create();
312
+ const rightCursorInWorld = vec3.create();
313
+
314
+ // Calculate the bottom and top points of the circle in world coordinates
315
+ for (let i = 0; i <= 2; i++) {
316
+ bottomCursorInWorld[i] = centerCursorInWorld[i] - viewUp[i] * brushSize;
317
+ topCursorInWorld[i] = centerCursorInWorld[i] + viewUp[i] * brushSize;
318
+ leftCursorInWorld[i] = centerCursorInWorld[i] - viewRight[i] * brushSize;
319
+ rightCursorInWorld[i] = centerCursorInWorld[i] + viewRight[i] * brushSize;
320
+ }
298
321
 
299
322
  const { brushCursor } = this._hoverData;
300
323
  const { data } = brushCursor;
@@ -304,10 +327,10 @@ class BrushTool extends BaseTool {
304
327
  }
305
328
 
306
329
  data.handles.points = [
307
- canvasToWorld(bottomCanvas),
308
- canvasToWorld(topCanvas),
309
- canvasToWorld(leftCanvas),
310
- canvasToWorld(rightCanvas),
330
+ bottomCursorInWorld,
331
+ topCursorInWorld,
332
+ leftCursorInWorld,
333
+ rightCursorInWorld,
311
334
  ];
312
335
 
313
336
  data.invalidated = false;
@@ -90,7 +90,10 @@ class PaintFillTool extends BaseTool {
90
90
 
91
91
  const index = transformWorldToIndex(segmentation.imageData, worldPos);
92
92
 
93
- const fixedDimension = this.getFixedDimension(viewPlaneNormal, direction);
93
+ const fixedDimension = this.getFixedDimension(
94
+ viewPlaneNormal,
95
+ direction as number[]
96
+ );
94
97
 
95
98
  if (fixedDimension === undefined) {
96
99
  console.warn('Oblique paint fill not yet supported');
@@ -169,8 +172,12 @@ class PaintFillTool extends BaseTool {
169
172
  for (let b = 0; b < boundaries.length; b++) {
170
173
  const j = boundaries[b][1];
171
174
 
172
- if (j < minJ) minJ = j;
173
- if (j > maxJ) maxJ = j;
175
+ if (j < minJ) {
176
+ minJ = j;
177
+ }
178
+ if (j > maxJ) {
179
+ maxJ = j;
180
+ }
174
181
  }
175
182
 
176
183
  const framesModified = [];