@cornerstonejs/tools 0.56.2 → 0.56.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 (352) hide show
  1. package/package.json +5 -4
  2. package/src/constants/COLOR_LUT.ts +262 -0
  3. package/src/constants/index.ts +3 -0
  4. package/src/cursors/ImageMouseCursor.ts +39 -0
  5. package/src/cursors/MouseCursor.ts +114 -0
  6. package/src/cursors/SVGCursorDescriptor.ts +462 -0
  7. package/src/cursors/SVGMouseCursor.ts +145 -0
  8. package/src/cursors/elementCursor.ts +69 -0
  9. package/src/cursors/index.ts +24 -0
  10. package/src/cursors/setCursorForElement.ts +33 -0
  11. package/src/drawingSvg/_getHash.ts +9 -0
  12. package/src/drawingSvg/_setAttributesIfNecessary.ts +13 -0
  13. package/src/drawingSvg/_setNewAttributesIfValid.ts +10 -0
  14. package/src/drawingSvg/clearByToolType.ts +26 -0
  15. package/src/drawingSvg/draw.ts +16 -0
  16. package/src/drawingSvg/drawArrow.ts +82 -0
  17. package/src/drawingSvg/drawCircle.ts +62 -0
  18. package/src/drawingSvg/drawEllipse.ts +71 -0
  19. package/src/drawingSvg/drawHandles.ts +87 -0
  20. package/src/drawingSvg/drawLine.ts +70 -0
  21. package/src/drawingSvg/drawLink.ts +76 -0
  22. package/src/drawingSvg/drawLinkedTextBox.ts +64 -0
  23. package/src/drawingSvg/drawPolyline.ts +80 -0
  24. package/src/drawingSvg/drawRect.ts +70 -0
  25. package/src/drawingSvg/drawTextBox.ts +213 -0
  26. package/src/drawingSvg/getSvgDrawingHelper.ts +98 -0
  27. package/src/drawingSvg/index.ts +23 -0
  28. package/src/enums/AnnotationStyleStates.ts +22 -0
  29. package/src/enums/Events.ts +242 -0
  30. package/src/enums/SegmentationRepresentations.ts +12 -0
  31. package/src/enums/ToolBindings.ts +37 -0
  32. package/src/enums/ToolModes.ts +31 -0
  33. package/src/enums/Touch.ts +8 -0
  34. package/src/enums/index.js +16 -0
  35. package/src/eventDispatchers/annotationModifiedEventDispatcher.ts +41 -0
  36. package/src/eventDispatchers/cameraModifiedEventDispatcher.ts +41 -0
  37. package/src/eventDispatchers/imageRenderedEventDispatcher.ts +37 -0
  38. package/src/eventDispatchers/imageSpacingCalibratedEventDispatcher.ts +50 -0
  39. package/src/eventDispatchers/index.js +15 -0
  40. package/src/eventDispatchers/keyboardEventHandlers/index.js +4 -0
  41. package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +29 -0
  42. package/src/eventDispatchers/keyboardEventHandlers/keyUp.ts +33 -0
  43. package/src/eventDispatchers/keyboardToolEventDispatcher.ts +28 -0
  44. package/src/eventDispatchers/mouseEventHandlers/index.js +19 -0
  45. package/src/eventDispatchers/mouseEventHandlers/mouseClick.ts +13 -0
  46. package/src/eventDispatchers/mouseEventHandlers/mouseDoubleClick.ts +13 -0
  47. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +196 -0
  48. package/src/eventDispatchers/mouseEventHandlers/mouseDownActivate.ts +35 -0
  49. package/src/eventDispatchers/mouseEventHandlers/mouseDrag.ts +25 -0
  50. package/src/eventDispatchers/mouseEventHandlers/mouseMove.ts +70 -0
  51. package/src/eventDispatchers/mouseEventHandlers/mouseUp.ts +9 -0
  52. package/src/eventDispatchers/mouseEventHandlers/mouseWheel.ts +13 -0
  53. package/src/eventDispatchers/mouseToolEventDispatcher.ts +64 -0
  54. package/src/eventDispatchers/shared/customCallbackHandler.ts +73 -0
  55. package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +58 -0
  56. package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +61 -0
  57. package/src/eventDispatchers/shared/getActiveToolForTouchEvent.ts +64 -0
  58. package/src/eventDispatchers/shared/getMouseModifier.ts +30 -0
  59. package/src/eventDispatchers/shared/getToolsWithModesForMouseEvent.ts +56 -0
  60. package/src/eventDispatchers/shared/getToolsWithModesForTouchEvent.ts +54 -0
  61. package/src/eventDispatchers/touchEventHandlers/index.js +15 -0
  62. package/src/eventDispatchers/touchEventHandlers/touchDrag.ts +23 -0
  63. package/src/eventDispatchers/touchEventHandlers/touchEnd.ts +9 -0
  64. package/src/eventDispatchers/touchEventHandlers/touchPress.ts +13 -0
  65. package/src/eventDispatchers/touchEventHandlers/touchStart.ts +174 -0
  66. package/src/eventDispatchers/touchEventHandlers/touchStartActivate.ts +36 -0
  67. package/src/eventDispatchers/touchEventHandlers/touchTap.ts +9 -0
  68. package/src/eventDispatchers/touchToolEventDispatcher.ts +51 -0
  69. package/src/eventListeners/annotations/annotationModifiedListener.ts +22 -0
  70. package/src/eventListeners/annotations/annotationSelectionListener.ts +29 -0
  71. package/src/eventListeners/annotations/index.ts +4 -0
  72. package/src/eventListeners/index.ts +28 -0
  73. package/src/eventListeners/keyboard/index.ts +16 -0
  74. package/src/eventListeners/keyboard/keyDownListener.ts +99 -0
  75. package/src/eventListeners/mouse/getMouseEventPoints.ts +66 -0
  76. package/src/eventListeners/mouse/index.ts +55 -0
  77. package/src/eventListeners/mouse/mouseDoubleClickListener.ts +55 -0
  78. package/src/eventListeners/mouse/mouseDownListener.ts +519 -0
  79. package/src/eventListeners/mouse/mouseMoveListener.ts +33 -0
  80. package/src/eventListeners/segmentation/index.ts +11 -0
  81. package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +61 -0
  82. package/src/eventListeners/segmentation/segmentationModifiedEventListener.ts +32 -0
  83. package/src/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.ts +15 -0
  84. package/src/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.ts +16 -0
  85. package/src/eventListeners/touch/getTouchEventPoints.ts +75 -0
  86. package/src/eventListeners/touch/index.ts +37 -0
  87. package/src/eventListeners/touch/preventGhostClick.js +72 -0
  88. package/src/eventListeners/touch/touchStartListener.ts +499 -0
  89. package/src/eventListeners/wheel/index.ts +27 -0
  90. package/src/eventListeners/wheel/normalizeWheel.ts +69 -0
  91. package/src/eventListeners/wheel/wheelListener.ts +51 -0
  92. package/src/index.ts +133 -0
  93. package/src/init.ts +187 -0
  94. package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +399 -0
  95. package/src/stateManagement/annotation/annotationLocking.ts +178 -0
  96. package/src/stateManagement/annotation/annotationSelection.ts +163 -0
  97. package/src/stateManagement/annotation/annotationState.ts +180 -0
  98. package/src/stateManagement/annotation/annotationVisibility.ts +156 -0
  99. package/src/stateManagement/annotation/config/ToolStyle.ts +265 -0
  100. package/src/stateManagement/annotation/config/getFont.ts +36 -0
  101. package/src/stateManagement/annotation/config/getState.ts +26 -0
  102. package/src/stateManagement/annotation/config/helpers.ts +55 -0
  103. package/src/stateManagement/annotation/config/index.ts +5 -0
  104. package/src/stateManagement/annotation/helpers/state.ts +83 -0
  105. package/src/stateManagement/annotation/index.ts +15 -0
  106. package/src/stateManagement/index.js +40 -0
  107. package/src/stateManagement/segmentation/SegmentationStateManager.ts +491 -0
  108. package/src/stateManagement/segmentation/activeSegmentation.ts +60 -0
  109. package/src/stateManagement/segmentation/addSegmentationRepresentations.ts +77 -0
  110. package/src/stateManagement/segmentation/addSegmentations.ts +27 -0
  111. package/src/stateManagement/segmentation/config/index.ts +29 -0
  112. package/src/stateManagement/segmentation/config/segmentationColor.ts +132 -0
  113. package/src/stateManagement/segmentation/config/segmentationConfig.ts +195 -0
  114. package/src/stateManagement/segmentation/config/segmentationVisibility.ts +171 -0
  115. package/src/stateManagement/segmentation/helpers/index.ts +3 -0
  116. package/src/stateManagement/segmentation/helpers/normalizeSegmentationInput.ts +35 -0
  117. package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +41 -0
  118. package/src/stateManagement/segmentation/index.ts +22 -0
  119. package/src/stateManagement/segmentation/removeSegmentationsFromToolGroup.ts +85 -0
  120. package/src/stateManagement/segmentation/segmentIndex.ts +38 -0
  121. package/src/stateManagement/segmentation/segmentLocking.ts +72 -0
  122. package/src/stateManagement/segmentation/segmentationState.ts +429 -0
  123. package/src/stateManagement/segmentation/triggerSegmentationEvents.ts +157 -0
  124. package/src/store/SynchronizerManager/Synchronizer.ts +344 -0
  125. package/src/store/SynchronizerManager/createSynchronizer.ts +41 -0
  126. package/src/store/SynchronizerManager/destroy.ts +14 -0
  127. package/src/store/SynchronizerManager/destroySynchronizer.ts +25 -0
  128. package/src/store/SynchronizerManager/getAllSynchronizers.ts +12 -0
  129. package/src/store/SynchronizerManager/getSynchronizer.ts +13 -0
  130. package/src/store/SynchronizerManager/getSynchronizersForViewport.ts +44 -0
  131. package/src/store/SynchronizerManager/index.js +15 -0
  132. package/src/store/ToolGroupManager/ToolGroup.ts +679 -0
  133. package/src/store/ToolGroupManager/createToolGroup.ts +33 -0
  134. package/src/store/ToolGroupManager/destroy.ts +24 -0
  135. package/src/store/ToolGroupManager/destroyToolGroup.ts +26 -0
  136. package/src/store/ToolGroupManager/getAllToolGroups.ts +12 -0
  137. package/src/store/ToolGroupManager/getToolGroup.ts +14 -0
  138. package/src/store/ToolGroupManager/getToolGroupForViewport.ts +44 -0
  139. package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +33 -0
  140. package/src/store/ToolGroupManager/index.ts +17 -0
  141. package/src/store/addEnabledElement.ts +137 -0
  142. package/src/store/addTool.ts +56 -0
  143. package/src/store/cancelActiveManipulations.ts +30 -0
  144. package/src/store/filterMoveableAnnotationTools.ts +61 -0
  145. package/src/store/filterToolsWithAnnotationsForElement.ts +51 -0
  146. package/src/store/filterToolsWithMoveableHandles.ts +51 -0
  147. package/src/store/index.ts +29 -0
  148. package/src/store/removeEnabledElement.ts +132 -0
  149. package/src/store/state.ts +57 -0
  150. package/src/store/svgNodeCache.ts +7 -0
  151. package/src/synchronizers/callbacks/areViewportsCoplanar .ts +12 -0
  152. package/src/synchronizers/callbacks/cameraSyncCallback.ts +33 -0
  153. package/src/synchronizers/callbacks/stackImageSyncCallback.ts +157 -0
  154. package/src/synchronizers/callbacks/voiSyncCallback.ts +51 -0
  155. package/src/synchronizers/callbacks/zoomPanSyncCallback.ts +43 -0
  156. package/src/synchronizers/index.ts +11 -0
  157. package/src/synchronizers/synchronizers/createCameraPositionSynchronizer.ts +25 -0
  158. package/src/synchronizers/synchronizers/createStackImageSynchronizer.ts +25 -0
  159. package/src/synchronizers/synchronizers/createVOISynchronizer.ts +24 -0
  160. package/src/synchronizers/synchronizers/createZoomPanSynchronizer.ts +25 -0
  161. package/src/synchronizers/synchronizers/index.ts +11 -0
  162. package/src/tools/CrosshairsTool.ts +2693 -0
  163. package/src/tools/MIPJumpToClickTool.ts +99 -0
  164. package/src/tools/MagnifyTool.ts +319 -0
  165. package/src/tools/PanTool.ts +58 -0
  166. package/src/tools/PlanarRotateTool.ts +77 -0
  167. package/src/tools/ReferenceCursors.ts +466 -0
  168. package/src/tools/ReferenceLinesTool.ts +279 -0
  169. package/src/tools/ScaleOverlayTool.ts +685 -0
  170. package/src/tools/StackScrollTool.ts +97 -0
  171. package/src/tools/StackScrollToolMouseWheelTool.ts +58 -0
  172. package/src/tools/TrackballRotateTool.ts +141 -0
  173. package/src/tools/VolumeRotateMouseWheelTool.ts +86 -0
  174. package/src/tools/WindowLevelTool.ts +260 -0
  175. package/src/tools/ZoomTool.ts +293 -0
  176. package/src/tools/annotation/AngleTool.ts +835 -0
  177. package/src/tools/annotation/ArrowAnnotateTool.ts +820 -0
  178. package/src/tools/annotation/BidirectionalTool.ts +1350 -0
  179. package/src/tools/annotation/CircleROITool.ts +1070 -0
  180. package/src/tools/annotation/CobbAngleTool.ts +815 -0
  181. package/src/tools/annotation/DragProbeTool.ts +213 -0
  182. package/src/tools/annotation/EllipticalROITool.ts +1223 -0
  183. package/src/tools/annotation/LengthTool.ts +861 -0
  184. package/src/tools/annotation/PlanarFreehandROITool.ts +636 -0
  185. package/src/tools/annotation/ProbeTool.ts +681 -0
  186. package/src/tools/annotation/RectangleROITool.ts +1028 -0
  187. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +488 -0
  188. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +462 -0
  189. package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +331 -0
  190. package/src/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.ts +74 -0
  191. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +612 -0
  192. package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +74 -0
  193. package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +407 -0
  194. package/src/tools/base/AnnotationDisplayTool.ts +228 -0
  195. package/src/tools/base/AnnotationTool.ts +307 -0
  196. package/src/tools/base/BaseTool.ts +215 -0
  197. package/src/tools/base/index.ts +4 -0
  198. package/src/tools/displayTools/Contour/addContourToElement.ts +135 -0
  199. package/src/tools/displayTools/Contour/contourDisplay.ts +252 -0
  200. package/src/tools/displayTools/Contour/index.ts +3 -0
  201. package/src/tools/displayTools/Contour/removeContourFromElement.ts +35 -0
  202. package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +57 -0
  203. package/src/tools/displayTools/Labelmap/index.ts +4 -0
  204. package/src/tools/displayTools/Labelmap/labelmapConfig.ts +37 -0
  205. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +461 -0
  206. package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +27 -0
  207. package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +30 -0
  208. package/src/tools/displayTools/SegmentationDisplayTool.ts +198 -0
  209. package/src/tools/index.ts +84 -0
  210. package/src/tools/segmentation/BrushTool.ts +474 -0
  211. package/src/tools/segmentation/CircleScissorsTool.ts +365 -0
  212. package/src/tools/segmentation/PaintFillTool.ts +370 -0
  213. package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +471 -0
  214. package/src/tools/segmentation/RectangleROIThresholdTool.ts +281 -0
  215. package/src/tools/segmentation/RectangleScissorsTool.ts +382 -0
  216. package/src/tools/segmentation/SphereScissorsTool.ts +368 -0
  217. package/src/tools/segmentation/strategies/eraseCircle.ts +30 -0
  218. package/src/tools/segmentation/strategies/eraseRectangle.ts +81 -0
  219. package/src/tools/segmentation/strategies/eraseSphere.ts +27 -0
  220. package/src/tools/segmentation/strategies/fillCircle.ts +185 -0
  221. package/src/tools/segmentation/strategies/fillRectangle.ts +110 -0
  222. package/src/tools/segmentation/strategies/fillSphere.ts +88 -0
  223. package/src/tools/segmentation/strategies/index.ts +9 -0
  224. package/src/types/AnnotationGroupSelector.ts +7 -0
  225. package/src/types/AnnotationStyle.ts +42 -0
  226. package/src/types/AnnotationTypes.ts +109 -0
  227. package/src/types/BoundsIJK.ts +5 -0
  228. package/src/types/CINETypes.ts +32 -0
  229. package/src/types/ContourTypes.ts +26 -0
  230. package/src/types/CursorTypes.ts +12 -0
  231. package/src/types/EventTypes.ts +657 -0
  232. package/src/types/FloodFillTypes.ts +19 -0
  233. package/src/types/IAnnotationManager.ts +89 -0
  234. package/src/types/IDistance.ts +16 -0
  235. package/src/types/IPoints.ts +18 -0
  236. package/src/types/ISetToolModeOptions.ts +29 -0
  237. package/src/types/ISynchronizerEventHandler.ts +11 -0
  238. package/src/types/IToolClassReference.ts +5 -0
  239. package/src/types/IToolGroup.ts +72 -0
  240. package/src/types/ITouchPoints.ts +14 -0
  241. package/src/types/InteractionTypes.ts +6 -0
  242. package/src/types/InternalToolTypes.ts +19 -0
  243. package/src/types/JumpToSliceOptions.ts +7 -0
  244. package/src/types/LabelmapTypes.ts +41 -0
  245. package/src/types/PlanarBoundingBox.ts +8 -0
  246. package/src/types/SVGDrawingHelper.ts +10 -0
  247. package/src/types/ScrollOptions.ts +9 -0
  248. package/src/types/SegmentationStateTypes.ts +248 -0
  249. package/src/types/ToolHandle.ts +26 -0
  250. package/src/types/ToolProps.ts +16 -0
  251. package/src/types/ToolSpecificAnnotationTypes.ts +311 -0
  252. package/src/types/index.ts +115 -0
  253. package/src/utilities/boundingBox/extend2DBoundingBoxInViewAxis.ts +29 -0
  254. package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +57 -0
  255. package/src/utilities/boundingBox/index.ts +4 -0
  256. package/src/utilities/calibrateImageSpacing.ts +46 -0
  257. package/src/utilities/cine/events.ts +9 -0
  258. package/src/utilities/cine/index.ts +5 -0
  259. package/src/utilities/cine/playClip.ts +435 -0
  260. package/src/utilities/cine/state.ts +18 -0
  261. package/src/utilities/clip.js +30 -0
  262. package/src/utilities/debounce.js +217 -0
  263. package/src/utilities/drawing/getTextBoxCoordsCanvas.ts +45 -0
  264. package/src/utilities/drawing/index.ts +3 -0
  265. package/src/utilities/dynamicVolume/getDataInTime.ts +110 -0
  266. package/src/utilities/dynamicVolume/index.ts +2 -0
  267. package/src/utilities/getAnnotationNearPoint.ts +130 -0
  268. package/src/utilities/getModalityUnit.ts +11 -0
  269. package/src/utilities/getToolsWithModesForElement.ts +52 -0
  270. package/src/utilities/index.ts +68 -0
  271. package/src/utilities/isObject.js +29 -0
  272. package/src/utilities/math/angle/angleBetweenLines.ts +29 -0
  273. package/src/utilities/math/circle/_types.ts +6 -0
  274. package/src/utilities/math/circle/getCanvasCircleCorners.ts +23 -0
  275. package/src/utilities/math/circle/getCanvasCircleRadius.ts +16 -0
  276. package/src/utilities/math/circle/index.ts +4 -0
  277. package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +26 -0
  278. package/src/utilities/math/ellipse/index.ts +4 -0
  279. package/src/utilities/math/ellipse/pointInEllipse.ts +38 -0
  280. package/src/utilities/math/ellipse/pointInEllipsoidWithConstraint.ts +35 -0
  281. package/src/utilities/math/index.ts +8 -0
  282. package/src/utilities/math/line/distanceToPoint.ts +24 -0
  283. package/src/utilities/math/line/distanceToPointSquared.ts +44 -0
  284. package/src/utilities/math/line/index.ts +5 -0
  285. package/src/utilities/math/line/intersectLine.ts +92 -0
  286. package/src/utilities/math/midPoint.ts +24 -0
  287. package/src/utilities/math/point/distanceToPoint.ts +22 -0
  288. package/src/utilities/math/point/index.ts +3 -0
  289. package/src/utilities/math/polyline/addCanvasPointsToArray.ts +62 -0
  290. package/src/utilities/math/polyline/calculateAreaOfPoints.ts +23 -0
  291. package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +182 -0
  292. package/src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts +99 -0
  293. package/src/utilities/math/polyline/index.ts +19 -0
  294. package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +36 -0
  295. package/src/utilities/math/polyline/pointCanProjectOnLine.ts +57 -0
  296. package/src/utilities/math/polyline/pointsAreWithinCloseContourProximity.ts +15 -0
  297. package/src/utilities/math/rectangle/distanceToPoint.ts +82 -0
  298. package/src/utilities/math/rectangle/index.ts +3 -0
  299. package/src/utilities/math/sphere/index.ts +3 -0
  300. package/src/utilities/math/sphere/pointInSphere.ts +31 -0
  301. package/src/utilities/math/vec2/findClosestPoint.ts +40 -0
  302. package/src/utilities/math/vec2/index.ts +4 -0
  303. package/src/utilities/math/vec2/liangBarksyClip.ts +84 -0
  304. package/src/utilities/orientation/getOrientationStringLPS.ts +52 -0
  305. package/src/utilities/orientation/index.ts +4 -0
  306. package/src/utilities/orientation/invertOrientationStringLPS.ts +21 -0
  307. package/src/utilities/planar/filterAnnotationsForDisplay.ts +68 -0
  308. package/src/utilities/planar/filterAnnotationsWithinSlice.ts +85 -0
  309. package/src/utilities/planar/getPointInLineOfSightWithCriteria.ts +104 -0
  310. package/src/utilities/planar/getWorldWidthAndHeightFromCorners.ts +51 -0
  311. package/src/utilities/planar/getWorldWidthAndHeightFromTwoPoints.ts +51 -0
  312. package/src/utilities/planar/index.ts +18 -0
  313. package/src/utilities/planarFreehandROITool/index.ts +7 -0
  314. package/src/utilities/planarFreehandROITool/interpolateAnnotation.ts +87 -0
  315. package/src/utilities/planarFreehandROITool/interpolatePoints.ts +214 -0
  316. package/src/utilities/planarFreehandROITool/interpolation/algorithms/bspline.ts +55 -0
  317. package/src/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.ts +90 -0
  318. package/src/utilities/pointInShapeCallback.ts +138 -0
  319. package/src/utilities/pointInSurroundingSphereCallback.ts +188 -0
  320. package/src/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.ts +76 -0
  321. package/src/utilities/rectangleROITool/index.ts +3 -0
  322. package/src/utilities/scroll.ts +62 -0
  323. package/src/utilities/segmentation/brushSizeForToolGroup.ts +72 -0
  324. package/src/utilities/segmentation/brushThresholdForToolGroup.ts +65 -0
  325. package/src/utilities/segmentation/createLabelmapVolumeForViewport.ts +74 -0
  326. package/src/utilities/segmentation/createMergedLabelmapForIndex.ts +65 -0
  327. package/src/utilities/segmentation/floodFill.ts +194 -0
  328. package/src/utilities/segmentation/getDefaultRepresentationConfig.ts +20 -0
  329. package/src/utilities/segmentation/index.ts +33 -0
  330. package/src/utilities/segmentation/isValidRepresentationConfig.ts +22 -0
  331. package/src/utilities/segmentation/rectangleROIThresholdVolumeByRange.ts +91 -0
  332. package/src/utilities/segmentation/thresholdSegmentationByRange.ts +129 -0
  333. package/src/utilities/segmentation/thresholdVolumeByRange.ts +150 -0
  334. package/src/utilities/segmentation/triggerSegmentationRender.ts +206 -0
  335. package/src/utilities/segmentation/utilities.ts +116 -0
  336. package/src/utilities/stackPrefetch/index.ts +8 -0
  337. package/src/utilities/stackPrefetch/stackPrefetch.ts +405 -0
  338. package/src/utilities/stackPrefetch/state.ts +17 -0
  339. package/src/utilities/throttle.js +69 -0
  340. package/src/utilities/touch/index.ts +246 -0
  341. package/src/utilities/triggerAnnotationRender.ts +237 -0
  342. package/src/utilities/triggerAnnotationRenderForViewportIds.ts +18 -0
  343. package/src/utilities/viewport/index.ts +5 -0
  344. package/src/utilities/viewport/isViewportPreScaled.ts +24 -0
  345. package/src/utilities/viewport/jumpToSlice.ts +73 -0
  346. package/src/utilities/viewport/jumpToWorld.ts +58 -0
  347. package/src/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.ts +28 -0
  348. package/src/utilities/viewportFilters/filterViewportsWithParallelNormals.ts +26 -0
  349. package/src/utilities/viewportFilters/filterViewportsWithSameOrientation.ts +15 -0
  350. package/src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts +72 -0
  351. package/src/utilities/viewportFilters/getViewportIdsWithToolToRender.ts +45 -0
  352. package/src/utilities/viewportFilters/index.ts +11 -0
@@ -0,0 +1,69 @@
1
+ // Reasonable defaults
2
+ const PIXEL_STEP = 10;
3
+ const LINE_HEIGHT = 40;
4
+ const PAGE_HEIGHT = 800;
5
+
6
+ /**
7
+ * Normalizes wheel events and provides properties that are more
8
+ * consistent and helpful across different browsers
9
+ *
10
+ * @param event - the original mouse event
11
+ * @returns a normalized eventDetail
12
+ */
13
+ export default function normalizeWheel(event) {
14
+ let spinX = 0,
15
+ spinY = 0,
16
+ pixelX = 0,
17
+ pixelY = 0;
18
+
19
+ // Legacy
20
+ if ('detail' in event) {
21
+ spinY = event.detail;
22
+ }
23
+ if ('wheelDelta' in event) {
24
+ spinY = -event.wheelDelta / 120;
25
+ }
26
+ if ('wheelDeltaY' in event) {
27
+ spinY = -event.wheelDeltaY / 120;
28
+ }
29
+ if ('wheelDeltaX' in event) {
30
+ spinX = -event.wheelDeltaX / 120;
31
+ }
32
+
33
+ pixelX = spinX * PIXEL_STEP;
34
+ pixelY = spinY * PIXEL_STEP;
35
+
36
+ if ('deltaY' in event) {
37
+ pixelY = event.deltaY;
38
+ }
39
+ if ('deltaX' in event) {
40
+ pixelX = event.deltaX;
41
+ }
42
+
43
+ if ((pixelX || pixelY) && event.deltaMode) {
44
+ if (event.deltaMode === 1) {
45
+ // Delta in LINE units
46
+ pixelX *= LINE_HEIGHT;
47
+ pixelY *= LINE_HEIGHT;
48
+ } else {
49
+ // Delta in PAGE units
50
+ pixelX *= PAGE_HEIGHT;
51
+ pixelY *= PAGE_HEIGHT;
52
+ }
53
+ }
54
+
55
+ // Fall-back if spin cannot be determined
56
+ if (pixelX && !spinX) {
57
+ spinX = pixelX < 1 ? -1 : 1;
58
+ }
59
+ if (pixelY && !spinY) {
60
+ spinY = pixelY < 1 ? -1 : 1;
61
+ }
62
+
63
+ return {
64
+ spinX,
65
+ spinY,
66
+ pixelX,
67
+ pixelY,
68
+ };
69
+ }
@@ -0,0 +1,51 @@
1
+ import { getEnabledElement, triggerEvent } from '@cornerstonejs/core';
2
+ import normalizeWheel from './normalizeWheel';
3
+ import Events from '../../enums/Events';
4
+ // ~~ VIEWPORT LIBRARY
5
+ import getMouseEventPoints from '../mouse/getMouseEventPoints';
6
+ import { MouseWheelEventDetail } from '../../types/EventTypes';
7
+
8
+ /**
9
+ * wheelListener - Captures and normalizes mouse wheel events. Emits as a
10
+ * cornerstoneTools3D mouse wheel event.
11
+ * @param evt - The mouse wheel event.
12
+ */
13
+ function wheelListener(evt: WheelEvent) {
14
+ const element = <HTMLDivElement>evt.currentTarget;
15
+ const enabledElement = getEnabledElement(element);
16
+ const { renderingEngineId, viewportId } = enabledElement;
17
+
18
+ // Prevent triggering MouseWheel events that are not real scroll events:
19
+ // E.g. when clicking the MiddleMouseWheelButton, a deltaY of 0 is emitted.
20
+ // See https://github.com/cornerstonejs/cornerstoneTools/issues/935
21
+ if (evt.deltaY > -1 && evt.deltaY < 1) {
22
+ return;
23
+ }
24
+
25
+ evt.preventDefault();
26
+
27
+ const { spinX, spinY, pixelX, pixelY } = normalizeWheel(evt);
28
+ const direction = spinY < 0 ? -1 : 1;
29
+
30
+ const eventDetail: MouseWheelEventDetail = {
31
+ event: evt,
32
+ eventName: Events.MOUSE_WHEEL,
33
+ renderingEngineId,
34
+ viewportId,
35
+ element,
36
+ camera: {},
37
+ detail: evt,
38
+ wheel: {
39
+ spinX,
40
+ spinY,
41
+ pixelX,
42
+ pixelY,
43
+ direction,
44
+ },
45
+ points: getMouseEventPoints(evt),
46
+ };
47
+
48
+ triggerEvent(element, Events.MOUSE_WHEEL, eventDetail);
49
+ }
50
+
51
+ export default wheelListener;
package/src/index.ts ADDED
@@ -0,0 +1,133 @@
1
+ import { init, destroy } from './init';
2
+ import {
3
+ addTool,
4
+ removeTool,
5
+ state,
6
+ ToolGroupManager,
7
+ SynchronizerManager,
8
+ Synchronizer,
9
+ cancelActiveManipulations,
10
+ } from './store';
11
+
12
+ import * as CONSTANTS from './constants';
13
+
14
+ // Name spaces
15
+ import * as synchronizers from './synchronizers';
16
+ import * as drawing from './drawingSvg';
17
+ import * as utilities from './utilities';
18
+ import * as cursors from './cursors';
19
+ import * as Types from './types';
20
+ import * as annotation from './stateManagement/annotation';
21
+ import * as segmentation from './stateManagement/segmentation';
22
+
23
+ import {
24
+ BaseTool,
25
+ AnnotationTool,
26
+ PanTool,
27
+ TrackballRotateTool,
28
+ DragProbeTool,
29
+ WindowLevelTool,
30
+ ZoomTool,
31
+ StackScrollTool,
32
+ PlanarRotateTool,
33
+ StackScrollMouseWheelTool,
34
+ VolumeRotateMouseWheelTool,
35
+ MIPJumpToClickTool,
36
+ LengthTool,
37
+ ProbeTool,
38
+ RectangleROITool,
39
+ EllipticalROITool,
40
+ CircleROITool,
41
+ BidirectionalTool,
42
+ PlanarFreehandROITool,
43
+ ArrowAnnotateTool,
44
+ CrosshairsTool,
45
+ ReferenceLinesTool,
46
+ RectangleScissorsTool,
47
+ CircleScissorsTool,
48
+ SphereScissorsTool,
49
+ RectangleROIThresholdTool,
50
+ RectangleROIStartEndThresholdTool,
51
+ SegmentationDisplayTool,
52
+ BrushTool,
53
+ AngleTool,
54
+ CobbAngleTool,
55
+ MagnifyTool,
56
+ ReferenceCursors,
57
+ ReferenceLines,
58
+ PaintFillTool,
59
+ ScaleOverlayTool,
60
+ } from './tools';
61
+
62
+ import * as Enums from './enums';
63
+
64
+ export {
65
+ //
66
+ init,
67
+ destroy,
68
+ addTool,
69
+ removeTool,
70
+ cancelActiveManipulations,
71
+ // Base Tools
72
+ BaseTool,
73
+ AnnotationTool,
74
+ // Manipulation Tools
75
+ PanTool,
76
+ TrackballRotateTool,
77
+ DragProbeTool,
78
+ WindowLevelTool,
79
+ ZoomTool,
80
+ StackScrollTool,
81
+ PlanarRotateTool,
82
+ StackScrollMouseWheelTool,
83
+ VolumeRotateMouseWheelTool,
84
+ MIPJumpToClickTool,
85
+ // Annotation Tools
86
+ LengthTool,
87
+ CrosshairsTool,
88
+ ReferenceLinesTool,
89
+ ProbeTool,
90
+ RectangleROITool,
91
+ EllipticalROITool,
92
+ CircleROITool,
93
+ BidirectionalTool,
94
+ PlanarFreehandROITool,
95
+ ArrowAnnotateTool,
96
+ AngleTool,
97
+ CobbAngleTool,
98
+ MagnifyTool,
99
+ ReferenceCursors,
100
+ ReferenceLines,
101
+ ScaleOverlayTool,
102
+ // Segmentation Display
103
+ SegmentationDisplayTool,
104
+ // Segmentation Editing Tools
105
+ RectangleScissorsTool,
106
+ CircleScissorsTool,
107
+ SphereScissorsTool,
108
+ RectangleROIThresholdTool,
109
+ RectangleROIStartEndThresholdTool,
110
+ BrushTool,
111
+ // Synchronizers
112
+ synchronizers,
113
+ Synchronizer,
114
+ SynchronizerManager,
115
+ PaintFillTool,
116
+ Types,
117
+ state,
118
+ // ToolGroups
119
+ ToolGroupManager,
120
+ // Enums
121
+ Enums,
122
+ // Constants
123
+ CONSTANTS,
124
+ // Drawing API
125
+ drawing,
126
+ // Annotation
127
+ annotation,
128
+ // Segmentations
129
+ segmentation,
130
+ // Utilities
131
+ utilities,
132
+ cursors,
133
+ };
package/src/init.ts ADDED
@@ -0,0 +1,187 @@
1
+ import { eventTarget, Enums } from '@cornerstonejs/core';
2
+ import { getAnnotationManager } from './stateManagement/annotation/annotationState';
3
+ import { getDefaultSegmentationStateManager } from './stateManagement/segmentation/segmentationState';
4
+ import { Events as TOOLS_EVENTS } from './enums';
5
+ import { addEnabledElement, removeEnabledElement } from './store';
6
+ import { resetCornerstoneToolsState } from './store/state';
7
+ import {
8
+ annotationSelectionListener,
9
+ segmentationDataModifiedEventListener,
10
+ segmentationRepresentationModifiedEventListener,
11
+ segmentationRepresentationRemovedEventListener,
12
+ segmentationModifiedListener,
13
+ annotationModifiedListener,
14
+ } from './eventListeners';
15
+
16
+ import * as ToolGroupManager from './store/ToolGroupManager';
17
+
18
+ let csToolsInitialized = false;
19
+
20
+ /**
21
+ * Initialize the cornerstoneTools package. It will add event listeners for mouse
22
+ * and keyboard events.
23
+ * @param defaultConfiguration - A configuration object that will be used to
24
+ * initialize the tool.
25
+ */
26
+ export function init(defaultConfiguration = {}): void {
27
+ if (csToolsInitialized) {
28
+ return;
29
+ }
30
+
31
+ _addCornerstoneEventListeners();
32
+ _addCornerstoneToolsEventListeners();
33
+
34
+ csToolsInitialized = true;
35
+ }
36
+
37
+ /**
38
+ * It destroys and cleanup state for cornerstone3DTools. It removes all the tools
39
+ * that were added to the tool groups and restore states. It also removes all
40
+ * event listeners.
41
+ */
42
+ export function destroy(): void {
43
+ _removeCornerstoneEventListeners();
44
+ _removeCornerstoneToolsEventListeners();
45
+
46
+ // Important: destroy ToolGroups first, in order for cleanup to work correctly for the
47
+ // added tools.
48
+ ToolGroupManager.destroy();
49
+
50
+ // Remove all tools
51
+ resetCornerstoneToolsState();
52
+
53
+ // remove all annotation.
54
+ const annotationManager = getAnnotationManager();
55
+ const segmentationStateManager = getDefaultSegmentationStateManager();
56
+
57
+ annotationManager.restoreAnnotations({});
58
+ segmentationStateManager.resetState();
59
+ csToolsInitialized = false;
60
+ }
61
+
62
+ /**
63
+ * Wires up event listeners for the Cornerstone#ElementDisabled and
64
+ * Cornerstone#ElementEnabled events.
65
+ *
66
+ * @internal
67
+ */
68
+ function _addCornerstoneEventListeners(): void {
69
+ // Clear any listeners that may already be set
70
+ _removeCornerstoneEventListeners();
71
+
72
+ const elementEnabledEvent = Enums.Events.ELEMENT_ENABLED;
73
+ const elementDisabledEvent = Enums.Events.ELEMENT_DISABLED;
74
+
75
+ eventTarget.addEventListener(elementEnabledEvent, addEnabledElement);
76
+ eventTarget.addEventListener(elementDisabledEvent, removeEnabledElement);
77
+ }
78
+
79
+ /**
80
+ * Removes event listeners for the Cornerstone#ElementDisabled and
81
+ * Cornerstone#ElementEnabled events.
82
+ *
83
+ */
84
+ function _removeCornerstoneEventListeners(): void {
85
+ const elementEnabledEvent = Enums.Events.ELEMENT_ENABLED;
86
+ const elementDisabledEvent = Enums.Events.ELEMENT_DISABLED;
87
+
88
+ eventTarget.removeEventListener(elementEnabledEvent, addEnabledElement);
89
+ eventTarget.removeEventListener(elementDisabledEvent, removeEnabledElement);
90
+ }
91
+
92
+ /**
93
+ * It adds an event listener to the event target (the cornerstoneTools object) for
94
+ * the annotation selected and annotation modified events.
95
+ */
96
+ function _addCornerstoneToolsEventListeners() {
97
+ // Clear any listeners that may already be set
98
+ _removeCornerstoneToolsEventListeners();
99
+
100
+ /**
101
+ * Annotation
102
+ */
103
+ eventTarget.addEventListener(
104
+ TOOLS_EVENTS.ANNOTATION_MODIFIED,
105
+ annotationModifiedListener
106
+ );
107
+
108
+ eventTarget.addEventListener(
109
+ TOOLS_EVENTS.ANNOTATION_SELECTION_CHANGE,
110
+ annotationSelectionListener
111
+ );
112
+
113
+ eventTarget.addEventListener(
114
+ TOOLS_EVENTS.ANNOTATION_SELECTION_CHANGE,
115
+ annotationSelectionListener
116
+ );
117
+
118
+ /**
119
+ * Segmentation
120
+ */
121
+ eventTarget.addEventListener(
122
+ TOOLS_EVENTS.SEGMENTATION_MODIFIED,
123
+ segmentationModifiedListener
124
+ );
125
+
126
+ eventTarget.addEventListener(
127
+ TOOLS_EVENTS.SEGMENTATION_DATA_MODIFIED,
128
+ segmentationDataModifiedEventListener
129
+ );
130
+ eventTarget.addEventListener(
131
+ TOOLS_EVENTS.SEGMENTATION_REPRESENTATION_MODIFIED,
132
+ segmentationRepresentationModifiedEventListener
133
+ );
134
+
135
+ eventTarget.addEventListener(
136
+ TOOLS_EVENTS.SEGMENTATION_REPRESENTATION_REMOVED,
137
+ segmentationRepresentationRemovedEventListener
138
+ );
139
+ }
140
+
141
+ /**
142
+ * Remove the event listener for the the annotation selected and annotation modified events.
143
+ */
144
+ function _removeCornerstoneToolsEventListeners() {
145
+ /**
146
+ * Annotation
147
+ */
148
+ eventTarget.removeEventListener(
149
+ TOOLS_EVENTS.ANNOTATION_MODIFIED,
150
+ annotationModifiedListener
151
+ );
152
+
153
+ eventTarget.removeEventListener(
154
+ TOOLS_EVENTS.ANNOTATION_SELECTION_CHANGE,
155
+ annotationSelectionListener
156
+ );
157
+
158
+ eventTarget.removeEventListener(
159
+ TOOLS_EVENTS.ANNOTATION_SELECTION_CHANGE,
160
+ annotationSelectionListener
161
+ );
162
+
163
+ /**
164
+ * Segmentation
165
+ */
166
+
167
+ eventTarget.removeEventListener(
168
+ TOOLS_EVENTS.SEGMENTATION_MODIFIED,
169
+ segmentationModifiedListener
170
+ );
171
+
172
+ eventTarget.removeEventListener(
173
+ TOOLS_EVENTS.SEGMENTATION_DATA_MODIFIED,
174
+ segmentationDataModifiedEventListener
175
+ );
176
+ eventTarget.removeEventListener(
177
+ TOOLS_EVENTS.SEGMENTATION_REPRESENTATION_MODIFIED,
178
+ segmentationRepresentationModifiedEventListener
179
+ );
180
+
181
+ eventTarget.removeEventListener(
182
+ TOOLS_EVENTS.SEGMENTATION_REPRESENTATION_REMOVED,
183
+ segmentationRepresentationRemovedEventListener
184
+ );
185
+ }
186
+
187
+ export default init;