@cornerstonejs/tools 1.32.3 → 1.34.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 (260) hide show
  1. package/dist/cjs/eventListeners/index.d.ts +2 -2
  2. package/dist/cjs/eventListeners/index.js +2 -1
  3. package/dist/cjs/eventListeners/index.js.map +1 -1
  4. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.d.ts +5 -0
  5. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js +143 -0
  6. package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js.map +1 -0
  7. package/dist/cjs/eventListeners/segmentation/index.d.ts +2 -1
  8. package/dist/cjs/eventListeners/segmentation/index.js +3 -1
  9. package/dist/cjs/eventListeners/segmentation/index.js.map +1 -1
  10. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js +31 -5
  11. package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
  12. package/dist/cjs/store/SynchronizerManager/Synchronizer.d.ts +1 -0
  13. package/dist/cjs/store/SynchronizerManager/Synchronizer.js +17 -1
  14. package/dist/cjs/store/SynchronizerManager/Synchronizer.js.map +1 -1
  15. package/dist/cjs/store/addEnabledElement.js +1 -0
  16. package/dist/cjs/store/addEnabledElement.js.map +1 -1
  17. package/dist/cjs/store/removeEnabledElement.js +2 -0
  18. package/dist/cjs/store/removeEnabledElement.js.map +1 -1
  19. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .d.ts +1 -1
  20. package/dist/cjs/synchronizers/callbacks/areViewportsCoplanar .js.map +1 -1
  21. package/dist/cjs/synchronizers/callbacks/{stackImageSyncCallback.d.ts → imageSliceSyncCallback.d.ts} +1 -1
  22. package/dist/cjs/synchronizers/callbacks/{stackImageSyncCallback.js → imageSliceSyncCallback.js} +8 -4
  23. package/dist/cjs/synchronizers/callbacks/{stackImageSyncCallback.js.map → imageSliceSyncCallback.js.map} +1 -1
  24. package/dist/cjs/synchronizers/index.d.ts +3 -2
  25. package/dist/cjs/synchronizers/index.js +5 -3
  26. package/dist/cjs/synchronizers/index.js.map +1 -1
  27. package/dist/cjs/synchronizers/synchronizers/{createStackImageSynchronizer.d.ts → createImageSliceSynchronizer.d.ts} +1 -1
  28. package/dist/cjs/synchronizers/synchronizers/createImageSliceSynchronizer.js +17 -0
  29. package/dist/cjs/synchronizers/synchronizers/createImageSliceSynchronizer.js.map +1 -0
  30. package/dist/cjs/synchronizers/synchronizers/index.d.ts +3 -2
  31. package/dist/cjs/synchronizers/synchronizers/index.js +5 -3
  32. package/dist/cjs/synchronizers/synchronizers/index.js.map +1 -1
  33. package/dist/cjs/tools/annotation/CircleROITool.js +3 -1
  34. package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
  35. package/dist/cjs/tools/annotation/EllipticalROITool.js +1 -1
  36. package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
  37. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +2 -1
  38. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js +23 -10
  39. package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
  40. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -1
  41. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +36 -22
  42. package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  43. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js +6 -5
  44. package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js.map +1 -1
  45. package/dist/cjs/tools/segmentation/BrushTool.js +40 -45
  46. package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
  47. package/dist/cjs/tools/segmentation/CircleScissorsTool.d.ts +4 -2
  48. package/dist/cjs/tools/segmentation/CircleScissorsTool.js +18 -17
  49. package/dist/cjs/tools/segmentation/CircleScissorsTool.js.map +1 -1
  50. package/dist/cjs/tools/segmentation/PaintFillTool.js +28 -5
  51. package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
  52. package/dist/cjs/tools/segmentation/RectangleScissorsTool.d.ts +3 -1
  53. package/dist/cjs/tools/segmentation/RectangleScissorsTool.js +15 -16
  54. package/dist/cjs/tools/segmentation/RectangleScissorsTool.js.map +1 -1
  55. package/dist/cjs/tools/segmentation/SphereScissorsTool.d.ts +4 -2
  56. package/dist/cjs/tools/segmentation/SphereScissorsTool.js +20 -20
  57. package/dist/cjs/tools/segmentation/SphereScissorsTool.js.map +1 -1
  58. package/dist/cjs/tools/segmentation/strategies/eraseCircle.d.ts +2 -10
  59. package/dist/cjs/tools/segmentation/strategies/eraseCircle.js.map +1 -1
  60. package/dist/cjs/tools/segmentation/strategies/eraseRectangle.d.ts +4 -8
  61. package/dist/cjs/tools/segmentation/strategies/eraseRectangle.js +4 -20
  62. package/dist/cjs/tools/segmentation/strategies/eraseRectangle.js.map +1 -1
  63. package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -10
  64. package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  65. package/dist/cjs/tools/segmentation/strategies/fillCircle.d.ts +3 -11
  66. package/dist/cjs/tools/segmentation/strategies/fillCircle.js +57 -32
  67. package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
  68. package/dist/cjs/tools/segmentation/strategies/fillRectangle.d.ts +2 -7
  69. package/dist/cjs/tools/segmentation/strategies/fillRectangle.js +16 -8
  70. package/dist/cjs/tools/segmentation/strategies/fillRectangle.js.map +1 -1
  71. package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +2 -10
  72. package/dist/cjs/tools/segmentation/strategies/fillSphere.js +31 -17
  73. package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
  74. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.d.ts +9 -0
  75. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js +43 -0
  76. package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -0
  77. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +2 -2
  78. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +2 -2
  79. package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
  80. package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +5 -0
  81. package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.js +13 -0
  82. package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.js.map +1 -0
  83. package/dist/cjs/types/LabelmapToolOperationData.d.ts +14 -0
  84. package/dist/cjs/types/LabelmapToolOperationData.js +3 -0
  85. package/dist/cjs/types/LabelmapToolOperationData.js.map +1 -0
  86. package/dist/cjs/types/LabelmapTypes.d.ts +5 -1
  87. package/dist/cjs/types/index.d.ts +2 -1
  88. package/dist/cjs/utilities/math/ellipse/pointInEllipse.d.ts +7 -9
  89. package/dist/cjs/utilities/math/ellipse/pointInEllipse.js +19 -11
  90. package/dist/cjs/utilities/math/ellipse/pointInEllipse.js.map +1 -1
  91. package/dist/esm/eventListeners/index.js +2 -2
  92. package/dist/esm/eventListeners/index.js.map +1 -1
  93. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +115 -0
  94. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js.map +1 -0
  95. package/dist/esm/eventListeners/segmentation/index.js +2 -1
  96. package/dist/esm/eventListeners/segmentation/index.js.map +1 -1
  97. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +32 -6
  98. package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
  99. package/dist/esm/store/SynchronizerManager/Synchronizer.js +17 -1
  100. package/dist/esm/store/SynchronizerManager/Synchronizer.js.map +1 -1
  101. package/dist/esm/store/addEnabledElement.js +2 -1
  102. package/dist/esm/store/addEnabledElement.js.map +1 -1
  103. package/dist/esm/store/removeEnabledElement.js +2 -0
  104. package/dist/esm/store/removeEnabledElement.js.map +1 -1
  105. package/dist/esm/synchronizers/callbacks/areViewportsCoplanar .js.map +1 -1
  106. package/dist/esm/synchronizers/callbacks/{stackImageSyncCallback.js → imageSliceSyncCallback.js} +8 -4
  107. package/dist/esm/synchronizers/callbacks/imageSliceSyncCallback.js.map +1 -0
  108. package/dist/esm/synchronizers/index.js +3 -2
  109. package/dist/esm/synchronizers/index.js.map +1 -1
  110. package/dist/esm/synchronizers/synchronizers/createImageSliceSynchronizer.js +11 -0
  111. package/dist/esm/synchronizers/synchronizers/createImageSliceSynchronizer.js.map +1 -0
  112. package/dist/esm/synchronizers/synchronizers/index.js +3 -2
  113. package/dist/esm/synchronizers/synchronizers/index.js.map +1 -1
  114. package/dist/esm/tools/annotation/CircleROITool.js +4 -2
  115. package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
  116. package/dist/esm/tools/annotation/EllipticalROITool.js +1 -1
  117. package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
  118. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +24 -11
  119. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
  120. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +36 -22
  121. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
  122. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js +6 -5
  123. package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js.map +1 -1
  124. package/dist/esm/tools/segmentation/BrushTool.js +38 -29
  125. package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
  126. package/dist/esm/tools/segmentation/CircleScissorsTool.js +27 -15
  127. package/dist/esm/tools/segmentation/CircleScissorsTool.js.map +1 -1
  128. package/dist/esm/tools/segmentation/PaintFillTool.js +28 -5
  129. package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
  130. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +26 -17
  131. package/dist/esm/tools/segmentation/RectangleScissorsTool.js.map +1 -1
  132. package/dist/esm/tools/segmentation/SphereScissorsTool.js +28 -17
  133. package/dist/esm/tools/segmentation/SphereScissorsTool.js.map +1 -1
  134. package/dist/esm/tools/segmentation/strategies/eraseCircle.js.map +1 -1
  135. package/dist/esm/tools/segmentation/strategies/eraseRectangle.js +4 -20
  136. package/dist/esm/tools/segmentation/strategies/eraseRectangle.js.map +1 -1
  137. package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
  138. package/dist/esm/tools/segmentation/strategies/fillCircle.js +56 -31
  139. package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
  140. package/dist/esm/tools/segmentation/strategies/fillRectangle.js +16 -8
  141. package/dist/esm/tools/segmentation/strategies/fillRectangle.js.map +1 -1
  142. package/dist/esm/tools/segmentation/strategies/fillSphere.js +32 -18
  143. package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
  144. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +40 -0
  145. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -0
  146. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +2 -2
  147. package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
  148. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +9 -0
  149. package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js.map +1 -0
  150. package/dist/esm/types/LabelmapToolOperationData.js +2 -0
  151. package/dist/esm/types/LabelmapToolOperationData.js.map +1 -0
  152. package/dist/esm/utilities/math/ellipse/pointInEllipse.js +19 -11
  153. package/dist/esm/utilities/math/ellipse/pointInEllipse.js.map +1 -1
  154. package/dist/types/eventListeners/index.d.ts +2 -2
  155. package/dist/types/eventListeners/index.d.ts.map +1 -1
  156. package/dist/types/eventListeners/segmentation/imageChangeEventListener.d.ts +6 -0
  157. package/dist/types/eventListeners/segmentation/imageChangeEventListener.d.ts.map +1 -0
  158. package/dist/types/eventListeners/segmentation/index.d.ts +2 -1
  159. package/dist/types/eventListeners/segmentation/index.d.ts.map +1 -1
  160. package/dist/types/eventListeners/segmentation/segmentationDataModifiedEventListener.d.ts.map +1 -1
  161. package/dist/types/store/SynchronizerManager/Synchronizer.d.ts +1 -0
  162. package/dist/types/store/SynchronizerManager/Synchronizer.d.ts.map +1 -1
  163. package/dist/types/store/addEnabledElement.d.ts.map +1 -1
  164. package/dist/types/store/removeEnabledElement.d.ts.map +1 -1
  165. package/dist/types/synchronizers/callbacks/areViewportsCoplanar .d.ts +1 -1
  166. package/dist/types/synchronizers/callbacks/areViewportsCoplanar .d.ts.map +1 -1
  167. package/dist/types/synchronizers/callbacks/{stackImageSyncCallback.d.ts → imageSliceSyncCallback.d.ts} +2 -2
  168. package/dist/types/synchronizers/callbacks/imageSliceSyncCallback.d.ts.map +1 -0
  169. package/dist/types/synchronizers/index.d.ts +3 -2
  170. package/dist/types/synchronizers/index.d.ts.map +1 -1
  171. package/dist/types/synchronizers/synchronizers/createImageSliceSynchronizer.d.ts +3 -0
  172. package/dist/types/synchronizers/synchronizers/createImageSliceSynchronizer.d.ts.map +1 -0
  173. package/dist/types/synchronizers/synchronizers/index.d.ts +3 -2
  174. package/dist/types/synchronizers/synchronizers/index.d.ts.map +1 -1
  175. package/dist/types/tools/annotation/CircleROITool.d.ts.map +1 -1
  176. package/dist/types/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +2 -1
  177. package/dist/types/tools/displayTools/Labelmap/addLabelmapToElement.d.ts.map +1 -1
  178. package/dist/types/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -1
  179. package/dist/types/tools/displayTools/Labelmap/labelmapDisplay.d.ts.map +1 -1
  180. package/dist/types/tools/displayTools/Labelmap/validateRepresentationData.d.ts.map +1 -1
  181. package/dist/types/tools/segmentation/BrushTool.d.ts.map +1 -1
  182. package/dist/types/tools/segmentation/CircleScissorsTool.d.ts +4 -2
  183. package/dist/types/tools/segmentation/CircleScissorsTool.d.ts.map +1 -1
  184. package/dist/types/tools/segmentation/PaintFillTool.d.ts.map +1 -1
  185. package/dist/types/tools/segmentation/RectangleScissorsTool.d.ts +3 -1
  186. package/dist/types/tools/segmentation/RectangleScissorsTool.d.ts.map +1 -1
  187. package/dist/types/tools/segmentation/SphereScissorsTool.d.ts +4 -2
  188. package/dist/types/tools/segmentation/SphereScissorsTool.d.ts.map +1 -1
  189. package/dist/types/tools/segmentation/strategies/eraseCircle.d.ts +2 -10
  190. package/dist/types/tools/segmentation/strategies/eraseCircle.d.ts.map +1 -1
  191. package/dist/types/tools/segmentation/strategies/eraseRectangle.d.ts +4 -8
  192. package/dist/types/tools/segmentation/strategies/eraseRectangle.d.ts.map +1 -1
  193. package/dist/types/tools/segmentation/strategies/eraseSphere.d.ts +2 -10
  194. package/dist/types/tools/segmentation/strategies/eraseSphere.d.ts.map +1 -1
  195. package/dist/types/tools/segmentation/strategies/fillCircle.d.ts +3 -11
  196. package/dist/types/tools/segmentation/strategies/fillCircle.d.ts.map +1 -1
  197. package/dist/types/tools/segmentation/strategies/fillRectangle.d.ts +2 -7
  198. package/dist/types/tools/segmentation/strategies/fillRectangle.d.ts.map +1 -1
  199. package/dist/types/tools/segmentation/strategies/fillSphere.d.ts +2 -10
  200. package/dist/types/tools/segmentation/strategies/fillSphere.d.ts.map +1 -1
  201. package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts +10 -0
  202. package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts.map +1 -0
  203. package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +2 -2
  204. package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts.map +1 -1
  205. package/dist/types/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +6 -0
  206. package/dist/types/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts.map +1 -0
  207. package/dist/types/types/LabelmapToolOperationData.d.ts +15 -0
  208. package/dist/types/types/LabelmapToolOperationData.d.ts.map +1 -0
  209. package/dist/types/types/LabelmapTypes.d.ts +5 -1
  210. package/dist/types/types/LabelmapTypes.d.ts.map +1 -1
  211. package/dist/types/types/index.d.ts +2 -1
  212. package/dist/types/types/index.d.ts.map +1 -1
  213. package/dist/types/utilities/math/ellipse/pointInEllipse.d.ts +7 -9
  214. package/dist/types/utilities/math/ellipse/pointInEllipse.d.ts.map +1 -1
  215. package/dist/umd/index.js +1 -1
  216. package/dist/umd/index.js.map +1 -1
  217. package/package.json +3 -3
  218. package/src/eventListeners/index.ts +2 -0
  219. package/src/eventListeners/segmentation/imageChangeEventListener.ts +215 -0
  220. package/src/eventListeners/segmentation/index.ts +2 -0
  221. package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +70 -9
  222. package/src/store/SynchronizerManager/Synchronizer.ts +28 -3
  223. package/src/store/addEnabledElement.ts +2 -0
  224. package/src/store/removeEnabledElement.ts +3 -0
  225. package/src/synchronizers/callbacks/areViewportsCoplanar .ts +2 -2
  226. package/src/synchronizers/callbacks/{stackImageSyncCallback.ts → imageSliceSyncCallback.ts} +16 -8
  227. package/src/synchronizers/index.ts +5 -1
  228. package/src/synchronizers/synchronizers/{createStackImageSynchronizer.ts → createImageSliceSynchronizer.ts} +8 -5
  229. package/src/synchronizers/synchronizers/index.ts +4 -1
  230. package/src/tools/annotation/CircleROITool.ts +5 -5
  231. package/src/tools/annotation/EllipticalROITool.ts +1 -1
  232. package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +51 -22
  233. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +65 -35
  234. package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +17 -11
  235. package/src/tools/segmentation/BrushTool.ts +78 -39
  236. package/src/tools/segmentation/CircleScissorsTool.ts +46 -29
  237. package/src/tools/segmentation/PaintFillTool.ts +45 -8
  238. package/src/tools/segmentation/RectangleScissorsTool.ts +41 -31
  239. package/src/tools/segmentation/SphereScissorsTool.ts +46 -28
  240. package/src/tools/segmentation/strategies/eraseCircle.ts +3 -11
  241. package/src/tools/segmentation/strategies/eraseRectangle.ts +13 -42
  242. package/src/tools/segmentation/strategies/eraseSphere.ts +2 -10
  243. package/src/tools/segmentation/strategies/fillCircle.ts +93 -61
  244. package/src/tools/segmentation/strategies/fillRectangle.ts +31 -22
  245. package/src/tools/segmentation/strategies/fillSphere.ts +51 -41
  246. package/src/tools/segmentation/strategies/utils/getStrategyData.ts +58 -0
  247. package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +3 -2
  248. package/src/tools/segmentation/strategies/utils/stackVolumeCheck.ts +33 -0
  249. package/src/types/LabelmapToolOperationData.ts +27 -0
  250. package/src/types/LabelmapTypes.ts +16 -1
  251. package/src/types/index.ts +8 -0
  252. package/src/utilities/math/ellipse/pointInEllipse.ts +43 -22
  253. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js +0 -15
  254. package/dist/cjs/synchronizers/synchronizers/createStackImageSynchronizer.js.map +0 -1
  255. package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +0 -1
  256. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js +0 -9
  257. package/dist/esm/synchronizers/synchronizers/createStackImageSynchronizer.js.map +0 -1
  258. package/dist/types/synchronizers/callbacks/stackImageSyncCallback.d.ts.map +0 -1
  259. package/dist/types/synchronizers/synchronizers/createStackImageSynchronizer.d.ts +0 -3
  260. package/dist/types/synchronizers/synchronizers/createStackImageSynchronizer.d.ts.map +0 -1
@@ -12,6 +12,7 @@ const elementCursor_1 = require("../../cursors/elementCursor");
12
12
  const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../../utilities/triggerAnnotationRenderForViewportIds"));
13
13
  const segmentation_1 = require("../../stateManagement/segmentation");
14
14
  const segmentationState_1 = require("../../stateManagement/segmentation/segmentationState");
15
+ const stackVolumeCheck_1 = require("./strategies/utils/stackVolumeCheck");
15
16
  class SphereScissorsTool extends base_1.BaseTool {
16
17
  constructor(toolProps = {}, defaultToolProps = {
17
18
  supportedInteractionTypes: ['Mouse', 'Touch'],
@@ -39,13 +40,10 @@ class SphereScissorsTool extends base_1.BaseTool {
39
40
  if (!activeSegmentationRepresentation) {
40
41
  throw new Error('No active segmentation detected, create one before using scissors tool');
41
42
  }
42
- const { segmentationRepresentationUID, segmentationId, type } = activeSegmentationRepresentation;
43
+ const { segmentationRepresentationUID, segmentationId } = activeSegmentationRepresentation;
43
44
  const segmentIndex = segmentation_1.segmentIndex.getActiveSegmentIndex(segmentationId);
44
45
  const segmentsLocked = segmentation_1.segmentLocking.getLockedSegments(segmentationId);
45
46
  const segmentColor = segmentation_1.config.color.getColorForSegmentIndex(toolGroupId, segmentationRepresentationUID, segmentIndex);
46
- const { representationData } = (0, segmentationState_1.getSegmentation)(segmentationId);
47
- const { volumeId } = representationData[type];
48
- const segmentation = core_1.cache.getVolume(volumeId);
49
47
  this.isDrawing = true;
50
48
  const annotation = {
51
49
  metadata: {
@@ -69,12 +67,11 @@ class SphereScissorsTool extends base_1.BaseTool {
69
67
  const viewportIdsToRender = [viewport.id];
70
68
  this.editData = {
71
69
  annotation,
72
- segmentation,
73
70
  centerCanvas: canvasPos,
71
+ segmentationRepresentationUID,
74
72
  segmentIndex,
75
73
  segmentsLocked,
76
74
  segmentColor,
77
- segmentationId,
78
75
  toolGroupId,
79
76
  viewportIdsToRender,
80
77
  handleIndex: 3,
@@ -82,6 +79,17 @@ class SphereScissorsTool extends base_1.BaseTool {
82
79
  newAnnotation: true,
83
80
  hasMoved: false,
84
81
  };
82
+ const { representationData } = (0, segmentationState_1.getSegmentation)(segmentationId);
83
+ const labelmapData = representationData[enums_1.SegmentationRepresentations.Labelmap];
84
+ if ((0, stackVolumeCheck_1.isVolumeSegmentation)(labelmapData)) {
85
+ const { volumeId } = labelmapData;
86
+ const segmentation = core_1.cache.getVolume(volumeId);
87
+ this.editData = Object.assign(Object.assign({}, this.editData), { volumeId, referencedVolumeId: segmentation.referencedVolumeId });
88
+ }
89
+ else {
90
+ const { imageIdReferenceMap } = labelmapData;
91
+ this.editData = Object.assign(Object.assign({}, this.editData), { imageIdReferenceMap });
92
+ }
85
93
  this._activateDraw(element);
86
94
  (0, elementCursor_1.hideElementCursor)(element);
87
95
  evt.preventDefault();
@@ -128,7 +136,7 @@ class SphereScissorsTool extends base_1.BaseTool {
128
136
  this._endCallback = (evt) => {
129
137
  const eventDetail = evt.detail;
130
138
  const { element } = eventDetail;
131
- const { annotation, newAnnotation, hasMoved, segmentation, segmentIndex, segmentsLocked, segmentationId, } = this.editData;
139
+ const { annotation, newAnnotation, hasMoved, segmentIndex, segmentationRepresentationUID, segmentsLocked, } = this.editData;
132
140
  const { data } = annotation;
133
141
  const { viewPlaneNormal, viewUp } = annotation.metadata;
134
142
  if (newAnnotation && !hasMoved) {
@@ -139,21 +147,13 @@ class SphereScissorsTool extends base_1.BaseTool {
139
147
  this._deactivateDraw(element);
140
148
  (0, elementCursor_1.resetElementCursor)(element);
141
149
  const enabledElement = (0, core_1.getEnabledElement)(element);
142
- const { viewport } = enabledElement;
143
- this.editData = null;
144
- this.isDrawing = false;
145
- if (viewport instanceof core_1.StackViewport) {
146
- throw new Error('Not implemented yet');
147
- }
148
- const operationData = {
149
- points: data.handles.points,
150
- volume: segmentation,
151
- segmentIndex,
150
+ const operationData = Object.assign(Object.assign({}, this.editData), { points: data.handles.points, segmentIndex,
151
+ segmentationRepresentationUID,
152
152
  segmentsLocked,
153
- segmentationId,
154
153
  viewPlaneNormal,
155
- viewUp,
156
- };
154
+ viewUp });
155
+ this.editData = null;
156
+ this.isDrawing = false;
157
157
  this.applyActiveStrategy(enabledElement, operationData);
158
158
  };
159
159
  this._activateDraw = (element) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SphereScissorsTool.js","sourceRoot":"","sources":["../../../../src/tools/segmentation/SphereScissorsTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SphereScissorsTool.js","sourceRoot":"","sources":["../../../../src/tools/segmentation/SphereScissorsTool.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,7 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- declare type OperationData = {
3
- segmentationId: string;
4
- imageVolume: Types.IImageVolume;
2
+ import { LabelmapToolOperationData } from '../../../types';
3
+ declare type OperationData = LabelmapToolOperationData & {
5
4
  points: any;
6
- volume: Types.IImageVolume;
7
- segmentIndex: number;
8
- segmentsLocked: number[];
9
- viewPlaneNormal: number[];
10
- viewUp: number[];
11
- strategySpecificConfiguration: any;
12
- constraintFn: () => boolean;
13
5
  };
14
6
  export declare function eraseInsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
15
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"eraseCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseCircle.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAehD,SAAgB,iBAAiB,CAC/B,cAAqC,EACrC,aAA4B;IAI5B,MAAM,kBAAkB,mCACnB,aAAa,KAChB,YAAY,EAAE,CAAC,GAChB,CAAC;IAEF,IAAA,6BAAgB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAZD,8CAYC"}
1
+ {"version":3,"file":"eraseCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseCircle.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAOhD,SAAgB,iBAAiB,CAC/B,cAAqC,EACrC,aAA4B;IAI5B,MAAM,kBAAkB,mCACnB,aAAa,KAChB,YAAY,EAAE,CAAC,GAChB,CAAC;IAEF,IAAA,6BAAgB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAZD,8CAYC"}
@@ -1,12 +1,8 @@
1
- import { ImageVolume } from '@cornerstonejs/core';
2
1
  import type { Types } from '@cornerstonejs/core';
3
- declare type EraseOperationData = {
4
- segmentationId: string;
2
+ import { LabelmapToolOperationData } from '../../../types';
3
+ declare type OperationData = LabelmapToolOperationData & {
5
4
  points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
6
- volume: ImageVolume;
7
- constraintFn: (x: [number, number, number]) => boolean;
8
- segmentsLocked: number[];
9
5
  };
10
- export declare function eraseInsideRectangle(enabledElement: Types.IEnabledElement, operationData: EraseOperationData): void;
11
- export declare function eraseOutsideRectangle(enabledElement: Types.IEnabledElement, operationData: EraseOperationData): void;
6
+ export declare function eraseInsideRectangle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
7
+ export declare function eraseOutsideRectangle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
12
8
  export {};
@@ -1,28 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.eraseOutsideRectangle = exports.eraseInsideRectangle = void 0;
4
- const core_1 = require("@cornerstonejs/core");
5
- const boundingBox_1 = require("../../../utilities/boundingBox");
6
- const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentation/triggerSegmentationEvents");
7
- const utilities_1 = require("../../../utilities");
8
- const { transformWorldToIndex } = core_1.utilities;
4
+ const fillRectangle_1 = require("./fillRectangle");
9
5
  function eraseRectangle(enabledElement, operationData, inside = true) {
10
- const { volume: segmentation, points, segmentsLocked, segmentationId, } = operationData;
11
- const { imageData, dimensions } = segmentation;
12
- const scalarData = segmentation.getScalarData();
13
- const rectangleCornersIJK = points.map((world) => {
14
- return transformWorldToIndex(imageData, world);
6
+ const eraseOperationData = Object.assign({}, operationData, {
7
+ segmentIndex: 0,
15
8
  });
16
- const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(rectangleCornersIJK, dimensions);
17
- const pointInShape = () => true;
18
- const callback = ({ value, index }) => {
19
- if (segmentsLocked.includes(value)) {
20
- return;
21
- }
22
- scalarData[index] = 0;
23
- };
24
- (0, utilities_1.pointInShapeCallback)(imageData, pointInShape, callback, boundsIJK);
25
- (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(segmentationId);
9
+ (0, fillRectangle_1.fillInsideRectangle)(enabledElement, eraseOperationData);
26
10
  }
27
11
  function eraseInsideRectangle(enabledElement, operationData) {
28
12
  eraseRectangle(enabledElement, operationData, true);
@@ -1 +1 @@
1
- {"version":3,"file":"eraseRectangle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseRectangle.ts"],"names":[],"mappings":";;;AAAA,8CAAwE;AAGxE,gEAA2E;AAC3E,+GAAkH;AAClH,kDAA0D;AAE1D,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAU1C,SAAS,cAAc,CACrB,cAAqC,EACrC,aAAiC,EACjC,MAAM,GAAG,IAAI;IAEb,MAAM,EACJ,MAAM,EAAE,YAAY,EACpB,MAAM,EACN,cAAc,EACd,cAAc,GACf,GAAG,aAAa,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;IAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IAEhD,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,OAAO,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,uCAAyB,EAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAG7E,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAEhC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO;SACR;QACD,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,IAAA,gCAAoB,EAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAA,2DAA+B,EAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AAQD,SAAgB,oBAAoB,CAClC,cAAqC,EACrC,aAAiC;IAEjC,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AALD,oDAKC;AAQD,SAAgB,qBAAqB,CACnC,cAAqC,EACrC,aAAiC;IAEjC,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AALD,sDAKC"}
1
+ {"version":3,"file":"eraseRectangle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseRectangle.ts"],"names":[],"mappings":";;;AAGA,mDAAsD;AAMtD,SAAS,cAAc,CACrB,cAAqC,EACrC,aAA4B,EAC5B,MAAM,GAAG,IAAI;IAIb,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1D,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAA,mCAAmB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAC1D,CAAC;AAQD,SAAgB,oBAAoB,CAClC,cAAqC,EACrC,aAA4B;IAE5B,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AALD,oDAKC;AAQD,SAAgB,qBAAqB,CACnC,cAAqC,EACrC,aAA4B;IAE5B,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AALD,sDAKC"}
@@ -1,15 +1,7 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- declare type OperationData = {
2
+ import { LabelmapToolOperationData } from '../../../types';
3
+ declare type OperationData = LabelmapToolOperationData & {
3
4
  points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
4
- imageVolume: Types.IImageVolume;
5
- volume: Types.IImageVolume;
6
- segmentIndex: number;
7
- segmentationId: string;
8
- segmentsLocked: number[];
9
- viewPlaneNormal: Types.Point3;
10
- viewUp: Types.Point3;
11
- constraintFn: () => boolean;
12
- strategySpecificConfiguration: any;
13
5
  };
14
6
  export declare function eraseInsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
15
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"eraseSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseSphere.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAehD,SAAgB,iBAAiB,CAC/B,cAAqC,EACrC,aAA4B;IAI5B,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1D,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAA,6BAAgB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAXD,8CAWC"}
1
+ {"version":3,"file":"eraseSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/eraseSphere.ts"],"names":[],"mappings":";;;AAEA,6CAAgD;AAOhD,SAAgB,iBAAiB,CAC/B,cAAqC,EACrC,aAA4B;IAI5B,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1D,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAA,6BAAgB,EAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACvD,CAAC;AAXD,8CAWC"}
@@ -1,15 +1,7 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- declare type OperationData = {
3
- segmentationId: string;
4
- imageVolume: Types.IImageVolume;
5
- points: any;
6
- volume: Types.IImageVolume;
7
- segmentIndex: number;
8
- segmentsLocked: number[];
9
- viewPlaneNormal: number[];
10
- viewUp: number[];
11
- strategySpecificConfiguration: any;
12
- constraintFn: () => boolean;
2
+ import { LabelmapToolOperationData } from '../../../types';
3
+ declare type OperationData = LabelmapToolOperationData & {
4
+ points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
13
5
  };
14
6
  export declare function fillInsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
15
7
  export declare function thresholdInsideCircle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
@@ -6,37 +6,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.fillOutsideCircle = exports.thresholdInsideCircle = exports.fillInsideCircle = void 0;
7
7
  const gl_matrix_1 = require("gl-matrix");
8
8
  const core_1 = require("@cornerstonejs/core");
9
+ const core_2 = require("@cornerstonejs/core");
9
10
  const ellipse_1 = require("../../../utilities/math/ellipse");
10
11
  const boundingBox_1 = require("../../../utilities/boundingBox");
11
12
  const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentation/triggerSegmentationEvents");
12
13
  const utilities_1 = require("../../../utilities");
13
14
  const isWithinThreshold_1 = __importDefault(require("./utils/isWithinThreshold"));
14
- const { transformWorldToIndex } = core_1.utilities;
15
+ const getStrategyData_1 = require("./utils/getStrategyData");
16
+ const stackVolumeCheck_1 = require("./utils/stackVolumeCheck");
17
+ const { transformWorldToIndex } = core_2.utilities;
15
18
  function fillCircle(enabledElement, operationData, threshold = false) {
16
- const { volume: segmentationVolume, imageVolume, points, segmentsLocked, segmentIndex, segmentationId, strategySpecificConfiguration, } = operationData;
17
- const { imageData, dimensions } = segmentationVolume;
18
- const scalarData = segmentationVolume.getScalarData();
19
+ const { points, segmentsLocked, segmentIndex, segmentationId, strategySpecificConfiguration, } = operationData;
19
20
  const { viewport } = enabledElement;
20
- const center = gl_matrix_1.vec3.fromValues(0, 0, 0);
21
- points.forEach((point) => {
22
- gl_matrix_1.vec3.add(center, center, point);
23
- });
24
- gl_matrix_1.vec3.scale(center, center, 1 / points.length);
25
- const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
26
- const [topLeftCanvas, bottomRightCanvas] = (0, ellipse_1.getCanvasEllipseCorners)(canvasCoordinates);
27
- const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
28
- const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
29
- const ellipsoidCornersIJK = [
30
- transformWorldToIndex(imageData, topLeftWorld),
31
- transformWorldToIndex(imageData, bottomRightWorld),
32
- ];
33
- const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(ellipsoidCornersIJK, dimensions);
34
- const ellipseObj = {
35
- center: center,
36
- xRadius: Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2,
37
- yRadius: Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2,
38
- zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2,
39
- };
21
+ const data = (0, getStrategyData_1.getStrategyData)({ operationData, viewport });
22
+ if (!data) {
23
+ console.warn('No data found for fillCircle');
24
+ return;
25
+ }
26
+ const { imageScalarData, segmentationImageData, segmentationScalarData } = data;
27
+ const { ellipseObj, boundsIJK } = getEllipse(viewport, segmentationImageData, points);
40
28
  const modifiedSlicesToUse = new Set();
41
29
  let callback;
42
30
  if (threshold) {
@@ -44,8 +32,8 @@ function fillCircle(enabledElement, operationData, threshold = false) {
44
32
  if (segmentsLocked.includes(value)) {
45
33
  return;
46
34
  }
47
- if ((0, isWithinThreshold_1.default)(index, imageVolume, strategySpecificConfiguration)) {
48
- scalarData[index] = segmentIndex;
35
+ if ((0, isWithinThreshold_1.default)(index, imageScalarData, strategySpecificConfiguration)) {
36
+ segmentationScalarData[index] = segmentIndex;
49
37
  modifiedSlicesToUse.add(pointIJK[2]);
50
38
  }
51
39
  };
@@ -55,11 +43,13 @@ function fillCircle(enabledElement, operationData, threshold = false) {
55
43
  if (segmentsLocked.includes(value)) {
56
44
  return;
57
45
  }
58
- scalarData[index] = segmentIndex;
46
+ segmentationScalarData[index] = segmentIndex;
59
47
  modifiedSlicesToUse.add(pointIJK[2]);
60
48
  };
61
49
  }
62
- (0, utilities_1.pointInShapeCallback)(imageData, (pointLPS, pointIJK) => (0, ellipse_1.pointInEllipse)(ellipseObj, pointLPS), callback, boundsIJK);
50
+ (0, utilities_1.pointInShapeCallback)(segmentationImageData, (pointLPS) => (0, ellipse_1.pointInEllipse)(ellipseObj, pointLPS, {
51
+ fast: true,
52
+ }), callback, boundsIJK);
63
53
  const arrayOfSlices = Array.from(modifiedSlicesToUse);
64
54
  (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(segmentationId, arrayOfSlices);
65
55
  }
@@ -68,10 +58,14 @@ function fillInsideCircle(enabledElement, operationData) {
68
58
  }
69
59
  exports.fillInsideCircle = fillInsideCircle;
70
60
  function thresholdInsideCircle(enabledElement, operationData) {
71
- const { volume, imageVolume } = operationData;
72
- if (!core_1.utilities.isEqual(volume.dimensions, imageVolume.dimensions) ||
73
- !core_1.utilities.isEqual(volume.direction, imageVolume.direction)) {
74
- throw new Error('Only source data the same dimensions/size/orientation as the segmentation currently supported.');
61
+ if ((0, stackVolumeCheck_1.isVolumeSegmentation)(operationData)) {
62
+ const { referencedVolumeId, volumeId } = operationData;
63
+ const imageVolume = core_1.cache.getVolume(referencedVolumeId);
64
+ const segmentation = core_1.cache.getVolume(volumeId);
65
+ if (!core_2.utilities.isEqual(segmentation.dimensions, imageVolume.dimensions) ||
66
+ !core_2.utilities.isEqual(segmentation.direction, imageVolume.direction)) {
67
+ throw new Error('Only source data the same dimensions/size/orientation as the segmentation currently supported.');
68
+ }
75
69
  }
76
70
  fillCircle(enabledElement, operationData, true);
77
71
  }
@@ -80,4 +74,35 @@ function fillOutsideCircle(enabledElement, operationData) {
80
74
  throw new Error('Not yet implemented');
81
75
  }
82
76
  exports.fillOutsideCircle = fillOutsideCircle;
77
+ function getCenter(points) {
78
+ const center = gl_matrix_1.vec3.fromValues(0, 0, 0);
79
+ points.forEach((point) => {
80
+ gl_matrix_1.vec3.add(center, center, point);
81
+ });
82
+ gl_matrix_1.vec3.scale(center, center, 1 / points.length);
83
+ return center;
84
+ }
85
+ function getEllipse(viewport, imageData, points) {
86
+ const center = getCenter(points);
87
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
88
+ const dimensions = imageData.getDimensions();
89
+ const [topLeftCanvas, bottomRightCanvas] = (0, ellipse_1.getCanvasEllipseCorners)(canvasCoordinates);
90
+ const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
91
+ const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
92
+ const ellipsoidCornersIJK = [
93
+ transformWorldToIndex(imageData, topLeftWorld),
94
+ transformWorldToIndex(imageData, bottomRightWorld),
95
+ ];
96
+ const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(ellipsoidCornersIJK, dimensions);
97
+ if (boundsIJK.every(([min, max]) => min !== max)) {
98
+ throw new Error('Oblique segmentation tools are not supported yet');
99
+ }
100
+ const ellipseObj = {
101
+ center: center,
102
+ xRadius: Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2,
103
+ yRadius: Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2,
104
+ zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2,
105
+ };
106
+ return { ellipseObj, boundsIJK };
107
+ }
83
108
  //# sourceMappingURL=fillCircle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fillCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillCircle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillCircle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillCircle.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,7 @@
1
- import { ImageVolume } from '@cornerstonejs/core';
2
1
  import type { Types } from '@cornerstonejs/core';
3
- declare type OperationData = {
4
- segmentationId: string;
2
+ import { LabelmapToolOperationData } from '../../../types';
3
+ declare type OperationData = LabelmapToolOperationData & {
5
4
  points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
6
- volume: ImageVolume;
7
- constraintFn: (x: [number, number, number]) => boolean;
8
- segmentIndex: number;
9
- segmentsLocked: number[];
10
5
  };
11
6
  export declare function fillInsideRectangle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
12
7
  export declare function fillOutsideRectangle(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
@@ -5,34 +5,42 @@ const core_1 = require("@cornerstonejs/core");
5
5
  const boundingBox_1 = require("../../../utilities/boundingBox");
6
6
  const utilities_1 = require("../../../utilities");
7
7
  const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentation/triggerSegmentationEvents");
8
+ const getStrategyData_1 = require("./utils/getStrategyData");
8
9
  const { transformWorldToIndex } = core_1.utilities;
9
10
  function fillRectangle(enabledElement, operationData, inside = true) {
10
- const { volume: segmentation, points, segmentsLocked, segmentIndex, segmentationId, constraintFn, } = operationData;
11
- const { imageData, dimensions } = segmentation;
12
- const scalarData = segmentation.getScalarData();
11
+ const { points, segmentsLocked, segmentIndex, segmentationId, constraintFn } = operationData;
12
+ const strategyData = (0, getStrategyData_1.getStrategyData)({
13
+ operationData,
14
+ viewport: enabledElement.viewport,
15
+ });
16
+ if (!strategyData) {
17
+ console.warn('No data found for fillRectangle');
18
+ return;
19
+ }
20
+ const { segmentationImageData, segmentationScalarData } = strategyData;
13
21
  let rectangleCornersIJK = points.map((world) => {
14
- return transformWorldToIndex(imageData, world);
22
+ return transformWorldToIndex(segmentationImageData, world);
15
23
  });
16
24
  rectangleCornersIJK = rectangleCornersIJK.map((point) => {
17
25
  return point.map((coord) => {
18
26
  return Math.round(coord);
19
27
  });
20
28
  });
21
- const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(rectangleCornersIJK, dimensions);
29
+ const boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(rectangleCornersIJK, segmentationImageData.getDimensions());
22
30
  const pointInRectangle = () => true;
23
31
  const callback = ({ value, index, pointIJK }) => {
24
32
  if (segmentsLocked.includes(value)) {
25
33
  return;
26
34
  }
27
35
  if (!constraintFn) {
28
- scalarData[index] = segmentIndex;
36
+ segmentationScalarData[index] = segmentIndex;
29
37
  return;
30
38
  }
31
39
  if (constraintFn(pointIJK)) {
32
- scalarData[index] = segmentIndex;
40
+ segmentationScalarData[index] = segmentIndex;
33
41
  }
34
42
  };
35
- (0, utilities_1.pointInShapeCallback)(imageData, pointInRectangle, callback, boundsIJK);
43
+ (0, utilities_1.pointInShapeCallback)(segmentationImageData, pointInRectangle, callback, boundsIJK);
36
44
  (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(segmentationId);
37
45
  }
38
46
  function fillInsideRectangle(enabledElement, operationData) {
@@ -1 +1 @@
1
- {"version":3,"file":"fillRectangle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillRectangle.ts"],"names":[],"mappings":";;;AAAA,8CAAwE;AAGxE,gEAA2E;AAC3E,kDAA0D;AAC1D,+GAAkH;AAElH,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAoB1C,SAAS,aAAa,CACpB,cAAqC,EACrC,aAA4B,EAC5B,MAAM,GAAG,IAAI;IAEb,MAAM,EACJ,MAAM,EAAE,YAAY,EACpB,MAAM,EACN,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,GACb,GAAG,aAAa,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;IAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IAEhD,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,OAAO,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAGH,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,uCAAyB,EAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAG7E,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAEpC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9C,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO;SACR;QAED,IAAI,CAAC,YAAY,EAAE;YACjB,UAAU,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;YACjC,OAAO;SACR;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC1B,UAAU,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;SAClC;IACH,CAAC,CAAC;IAEF,IAAA,gCAAoB,EAAC,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEvE,IAAA,2DAA+B,EAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AASD,SAAgB,mBAAmB,CACjC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AALD,kDAKC;AASD,SAAgB,oBAAoB,CAClC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AALD,oDAKC"}
1
+ {"version":3,"file":"fillRectangle.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillRectangle.ts"],"names":[],"mappings":";;;AAAA,8CAA2D;AAG3D,gEAA2E;AAC3E,kDAA0D;AAC1D,+GAAkH;AAElH,6DAA0D;AAE1D,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAe1C,SAAS,aAAa,CACpB,cAAqC,EACrC,aAA4B,EAC5B,MAAM,GAAG,IAAI;IAEb,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,GAC1E,aAAa,CAAC;IAEhB,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC;QACnC,aAAa;QACb,QAAQ,EAAE,cAAc,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,OAAO;KACR;IAED,MAAM,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,YAAY,CAAC;IAEvE,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,OAAO,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAGH,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,uCAAyB,EACzC,mBAAmB,EACnB,qBAAqB,CAAC,aAAa,EAAE,CACtC,CAAC;IAGF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAEpC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9C,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO;SACR;QAED,IAAI,CAAC,YAAY,EAAE;YACjB,sBAAsB,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;YAC7C,OAAO;SACR;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC1B,sBAAsB,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;SAC9C;IACH,CAAC,CAAC;IAEF,IAAA,gCAAoB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,SAAS,CACV,CAAC;IAEF,IAAA,2DAA+B,EAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AASD,SAAgB,mBAAmB,CACjC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AALD,kDAKC;AASD,SAAgB,oBAAoB,CAClC,cAAqC,EACrC,aAA4B;IAE5B,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AALD,oDAKC"}
@@ -1,15 +1,7 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- declare type OperationData = {
2
+ import { LabelmapToolOperationData } from '../../../types';
3
+ declare type OperationData = LabelmapToolOperationData & {
3
4
  points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3];
4
- volume: Types.IImageVolume;
5
- imageVolume: Types.IImageVolume;
6
- segmentIndex: number;
7
- segmentationId: string;
8
- segmentsLocked: number[];
9
- viewPlaneNormal: Types.Point3;
10
- viewUp: Types.Point3;
11
- strategySpecificConfiguration: any;
12
- constraintFn: () => boolean;
13
5
  };
14
6
  export declare function fillInsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
15
7
  export declare function thresholdInsideSphere(enabledElement: Types.IEnabledElement, operationData: OperationData): void;
@@ -8,20 +8,26 @@ const core_1 = require("@cornerstonejs/core");
8
8
  const triggerSegmentationEvents_1 = require("../../../stateManagement/segmentation/triggerSegmentationEvents");
9
9
  const utilities_1 = require("../../../utilities");
10
10
  const isWithinThreshold_1 = __importDefault(require("./utils/isWithinThreshold"));
11
+ const getStrategyData_1 = require("./utils/getStrategyData");
12
+ const stackVolumeCheck_1 = require("./utils/stackVolumeCheck");
11
13
  function fillSphere(enabledElement, operationData, _inside = true, threshold = false) {
12
14
  const { viewport } = enabledElement;
13
- const { volume: segmentation, segmentsLocked, segmentIndex, imageVolume, strategySpecificConfiguration, segmentationId, points, } = operationData;
14
- const { imageData, dimensions } = segmentation;
15
- const scalarData = segmentation.getScalarData();
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;
16
22
  const scalarIndex = [];
17
23
  let callback;
18
24
  if (threshold) {
19
- callback = ({ value, index, pointIJK }) => {
25
+ callback = ({ value, index }) => {
20
26
  if (segmentsLocked.includes(value)) {
21
27
  return;
22
28
  }
23
- if ((0, isWithinThreshold_1.default)(index, imageVolume, strategySpecificConfiguration)) {
24
- scalarData[index] = segmentIndex;
29
+ if ((0, isWithinThreshold_1.default)(index, imageScalarData, strategySpecificConfiguration)) {
30
+ segmentationScalarData[index] = segmentIndex;
25
31
  scalarIndex.push(index);
26
32
  }
27
33
  };
@@ -31,26 +37,34 @@ function fillSphere(enabledElement, operationData, _inside = true, threshold = f
31
37
  if (segmentsLocked.includes(value)) {
32
38
  return;
33
39
  }
34
- scalarData[index] = segmentIndex;
40
+ segmentationScalarData[index] = segmentIndex;
35
41
  scalarIndex.push(index);
36
42
  };
37
43
  }
38
- (0, utilities_1.pointInSurroundingSphereCallback)(imageData, [points[0], points[1]], callback, viewport);
39
- const zMultiple = dimensions[0] * dimensions[1];
40
- const minSlice = Math.floor(scalarIndex[0] / zMultiple);
41
- const maxSlice = Math.floor(scalarIndex[scalarIndex.length - 1] / zMultiple);
42
- const sliceArray = Array.from({ length: maxSlice - minSlice + 1 }, (v, k) => k + minSlice);
43
- (0, triggerSegmentationEvents_1.triggerSegmentationDataModified)(segmentationId, sliceArray);
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
+ }
44
54
  }
45
55
  function fillInsideSphere(enabledElement, operationData) {
46
56
  fillSphere(enabledElement, operationData, true);
47
57
  }
48
58
  exports.fillInsideSphere = fillInsideSphere;
49
59
  function thresholdInsideSphere(enabledElement, operationData) {
50
- const { volume, imageVolume } = operationData;
51
- if (!core_1.utilities.isEqual(volume.dimensions, imageVolume.dimensions) ||
52
- !core_1.utilities.isEqual(volume.direction, imageVolume.direction)) {
53
- throw new Error('Only source data the same dimensions/size/orientation as the segmentation currently supported.');
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
+ }
54
68
  }
55
69
  fillSphere(enabledElement, operationData, true, true);
56
70
  }