@cornerstonejs/tools 0.56.1 → 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 (360) hide show
  1. package/dist/cjs/tools/CrosshairsTool.d.ts +1 -0
  2. package/dist/cjs/tools/CrosshairsTool.js +4 -1
  3. package/dist/cjs/tools/CrosshairsTool.js.map +1 -1
  4. package/dist/esm/tools/CrosshairsTool.d.ts +1 -0
  5. package/dist/esm/tools/CrosshairsTool.js +4 -1
  6. package/dist/esm/tools/CrosshairsTool.js.map +1 -1
  7. package/dist/umd/index.js +1 -1
  8. package/dist/umd/index.js.map +1 -1
  9. package/package.json +5 -4
  10. package/src/constants/COLOR_LUT.ts +262 -0
  11. package/src/constants/index.ts +3 -0
  12. package/src/cursors/ImageMouseCursor.ts +39 -0
  13. package/src/cursors/MouseCursor.ts +114 -0
  14. package/src/cursors/SVGCursorDescriptor.ts +462 -0
  15. package/src/cursors/SVGMouseCursor.ts +145 -0
  16. package/src/cursors/elementCursor.ts +69 -0
  17. package/src/cursors/index.ts +24 -0
  18. package/src/cursors/setCursorForElement.ts +33 -0
  19. package/src/drawingSvg/_getHash.ts +9 -0
  20. package/src/drawingSvg/_setAttributesIfNecessary.ts +13 -0
  21. package/src/drawingSvg/_setNewAttributesIfValid.ts +10 -0
  22. package/src/drawingSvg/clearByToolType.ts +26 -0
  23. package/src/drawingSvg/draw.ts +16 -0
  24. package/src/drawingSvg/drawArrow.ts +82 -0
  25. package/src/drawingSvg/drawCircle.ts +62 -0
  26. package/src/drawingSvg/drawEllipse.ts +71 -0
  27. package/src/drawingSvg/drawHandles.ts +87 -0
  28. package/src/drawingSvg/drawLine.ts +70 -0
  29. package/src/drawingSvg/drawLink.ts +76 -0
  30. package/src/drawingSvg/drawLinkedTextBox.ts +64 -0
  31. package/src/drawingSvg/drawPolyline.ts +80 -0
  32. package/src/drawingSvg/drawRect.ts +70 -0
  33. package/src/drawingSvg/drawTextBox.ts +213 -0
  34. package/src/drawingSvg/getSvgDrawingHelper.ts +98 -0
  35. package/src/drawingSvg/index.ts +23 -0
  36. package/src/enums/AnnotationStyleStates.ts +22 -0
  37. package/src/enums/Events.ts +242 -0
  38. package/src/enums/SegmentationRepresentations.ts +12 -0
  39. package/src/enums/ToolBindings.ts +37 -0
  40. package/src/enums/ToolModes.ts +31 -0
  41. package/src/enums/Touch.ts +8 -0
  42. package/src/enums/index.js +16 -0
  43. package/src/eventDispatchers/annotationModifiedEventDispatcher.ts +41 -0
  44. package/src/eventDispatchers/cameraModifiedEventDispatcher.ts +41 -0
  45. package/src/eventDispatchers/imageRenderedEventDispatcher.ts +37 -0
  46. package/src/eventDispatchers/imageSpacingCalibratedEventDispatcher.ts +50 -0
  47. package/src/eventDispatchers/index.js +15 -0
  48. package/src/eventDispatchers/keyboardEventHandlers/index.js +4 -0
  49. package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +29 -0
  50. package/src/eventDispatchers/keyboardEventHandlers/keyUp.ts +33 -0
  51. package/src/eventDispatchers/keyboardToolEventDispatcher.ts +28 -0
  52. package/src/eventDispatchers/mouseEventHandlers/index.js +19 -0
  53. package/src/eventDispatchers/mouseEventHandlers/mouseClick.ts +13 -0
  54. package/src/eventDispatchers/mouseEventHandlers/mouseDoubleClick.ts +13 -0
  55. package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +196 -0
  56. package/src/eventDispatchers/mouseEventHandlers/mouseDownActivate.ts +35 -0
  57. package/src/eventDispatchers/mouseEventHandlers/mouseDrag.ts +25 -0
  58. package/src/eventDispatchers/mouseEventHandlers/mouseMove.ts +70 -0
  59. package/src/eventDispatchers/mouseEventHandlers/mouseUp.ts +9 -0
  60. package/src/eventDispatchers/mouseEventHandlers/mouseWheel.ts +13 -0
  61. package/src/eventDispatchers/mouseToolEventDispatcher.ts +64 -0
  62. package/src/eventDispatchers/shared/customCallbackHandler.ts +73 -0
  63. package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +58 -0
  64. package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +61 -0
  65. package/src/eventDispatchers/shared/getActiveToolForTouchEvent.ts +64 -0
  66. package/src/eventDispatchers/shared/getMouseModifier.ts +30 -0
  67. package/src/eventDispatchers/shared/getToolsWithModesForMouseEvent.ts +56 -0
  68. package/src/eventDispatchers/shared/getToolsWithModesForTouchEvent.ts +54 -0
  69. package/src/eventDispatchers/touchEventHandlers/index.js +15 -0
  70. package/src/eventDispatchers/touchEventHandlers/touchDrag.ts +23 -0
  71. package/src/eventDispatchers/touchEventHandlers/touchEnd.ts +9 -0
  72. package/src/eventDispatchers/touchEventHandlers/touchPress.ts +13 -0
  73. package/src/eventDispatchers/touchEventHandlers/touchStart.ts +174 -0
  74. package/src/eventDispatchers/touchEventHandlers/touchStartActivate.ts +36 -0
  75. package/src/eventDispatchers/touchEventHandlers/touchTap.ts +9 -0
  76. package/src/eventDispatchers/touchToolEventDispatcher.ts +51 -0
  77. package/src/eventListeners/annotations/annotationModifiedListener.ts +22 -0
  78. package/src/eventListeners/annotations/annotationSelectionListener.ts +29 -0
  79. package/src/eventListeners/annotations/index.ts +4 -0
  80. package/src/eventListeners/index.ts +28 -0
  81. package/src/eventListeners/keyboard/index.ts +16 -0
  82. package/src/eventListeners/keyboard/keyDownListener.ts +99 -0
  83. package/src/eventListeners/mouse/getMouseEventPoints.ts +66 -0
  84. package/src/eventListeners/mouse/index.ts +55 -0
  85. package/src/eventListeners/mouse/mouseDoubleClickListener.ts +55 -0
  86. package/src/eventListeners/mouse/mouseDownListener.ts +519 -0
  87. package/src/eventListeners/mouse/mouseMoveListener.ts +33 -0
  88. package/src/eventListeners/segmentation/index.ts +11 -0
  89. package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +61 -0
  90. package/src/eventListeners/segmentation/segmentationModifiedEventListener.ts +32 -0
  91. package/src/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.ts +15 -0
  92. package/src/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.ts +16 -0
  93. package/src/eventListeners/touch/getTouchEventPoints.ts +75 -0
  94. package/src/eventListeners/touch/index.ts +37 -0
  95. package/src/eventListeners/touch/preventGhostClick.js +72 -0
  96. package/src/eventListeners/touch/touchStartListener.ts +499 -0
  97. package/src/eventListeners/wheel/index.ts +27 -0
  98. package/src/eventListeners/wheel/normalizeWheel.ts +69 -0
  99. package/src/eventListeners/wheel/wheelListener.ts +51 -0
  100. package/src/index.ts +133 -0
  101. package/src/init.ts +187 -0
  102. package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +399 -0
  103. package/src/stateManagement/annotation/annotationLocking.ts +178 -0
  104. package/src/stateManagement/annotation/annotationSelection.ts +163 -0
  105. package/src/stateManagement/annotation/annotationState.ts +180 -0
  106. package/src/stateManagement/annotation/annotationVisibility.ts +156 -0
  107. package/src/stateManagement/annotation/config/ToolStyle.ts +265 -0
  108. package/src/stateManagement/annotation/config/getFont.ts +36 -0
  109. package/src/stateManagement/annotation/config/getState.ts +26 -0
  110. package/src/stateManagement/annotation/config/helpers.ts +55 -0
  111. package/src/stateManagement/annotation/config/index.ts +5 -0
  112. package/src/stateManagement/annotation/helpers/state.ts +83 -0
  113. package/src/stateManagement/annotation/index.ts +15 -0
  114. package/src/stateManagement/index.js +40 -0
  115. package/src/stateManagement/segmentation/SegmentationStateManager.ts +491 -0
  116. package/src/stateManagement/segmentation/activeSegmentation.ts +60 -0
  117. package/src/stateManagement/segmentation/addSegmentationRepresentations.ts +77 -0
  118. package/src/stateManagement/segmentation/addSegmentations.ts +27 -0
  119. package/src/stateManagement/segmentation/config/index.ts +29 -0
  120. package/src/stateManagement/segmentation/config/segmentationColor.ts +132 -0
  121. package/src/stateManagement/segmentation/config/segmentationConfig.ts +195 -0
  122. package/src/stateManagement/segmentation/config/segmentationVisibility.ts +171 -0
  123. package/src/stateManagement/segmentation/helpers/index.ts +3 -0
  124. package/src/stateManagement/segmentation/helpers/normalizeSegmentationInput.ts +35 -0
  125. package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +41 -0
  126. package/src/stateManagement/segmentation/index.ts +22 -0
  127. package/src/stateManagement/segmentation/removeSegmentationsFromToolGroup.ts +85 -0
  128. package/src/stateManagement/segmentation/segmentIndex.ts +38 -0
  129. package/src/stateManagement/segmentation/segmentLocking.ts +72 -0
  130. package/src/stateManagement/segmentation/segmentationState.ts +429 -0
  131. package/src/stateManagement/segmentation/triggerSegmentationEvents.ts +157 -0
  132. package/src/store/SynchronizerManager/Synchronizer.ts +344 -0
  133. package/src/store/SynchronizerManager/createSynchronizer.ts +41 -0
  134. package/src/store/SynchronizerManager/destroy.ts +14 -0
  135. package/src/store/SynchronizerManager/destroySynchronizer.ts +25 -0
  136. package/src/store/SynchronizerManager/getAllSynchronizers.ts +12 -0
  137. package/src/store/SynchronizerManager/getSynchronizer.ts +13 -0
  138. package/src/store/SynchronizerManager/getSynchronizersForViewport.ts +44 -0
  139. package/src/store/SynchronizerManager/index.js +15 -0
  140. package/src/store/ToolGroupManager/ToolGroup.ts +679 -0
  141. package/src/store/ToolGroupManager/createToolGroup.ts +33 -0
  142. package/src/store/ToolGroupManager/destroy.ts +24 -0
  143. package/src/store/ToolGroupManager/destroyToolGroup.ts +26 -0
  144. package/src/store/ToolGroupManager/getAllToolGroups.ts +12 -0
  145. package/src/store/ToolGroupManager/getToolGroup.ts +14 -0
  146. package/src/store/ToolGroupManager/getToolGroupForViewport.ts +44 -0
  147. package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +33 -0
  148. package/src/store/ToolGroupManager/index.ts +17 -0
  149. package/src/store/addEnabledElement.ts +137 -0
  150. package/src/store/addTool.ts +56 -0
  151. package/src/store/cancelActiveManipulations.ts +30 -0
  152. package/src/store/filterMoveableAnnotationTools.ts +61 -0
  153. package/src/store/filterToolsWithAnnotationsForElement.ts +51 -0
  154. package/src/store/filterToolsWithMoveableHandles.ts +51 -0
  155. package/src/store/index.ts +29 -0
  156. package/src/store/removeEnabledElement.ts +132 -0
  157. package/src/store/state.ts +57 -0
  158. package/src/store/svgNodeCache.ts +7 -0
  159. package/src/synchronizers/callbacks/areViewportsCoplanar .ts +12 -0
  160. package/src/synchronizers/callbacks/cameraSyncCallback.ts +33 -0
  161. package/src/synchronizers/callbacks/stackImageSyncCallback.ts +157 -0
  162. package/src/synchronizers/callbacks/voiSyncCallback.ts +51 -0
  163. package/src/synchronizers/callbacks/zoomPanSyncCallback.ts +43 -0
  164. package/src/synchronizers/index.ts +11 -0
  165. package/src/synchronizers/synchronizers/createCameraPositionSynchronizer.ts +25 -0
  166. package/src/synchronizers/synchronizers/createStackImageSynchronizer.ts +25 -0
  167. package/src/synchronizers/synchronizers/createVOISynchronizer.ts +24 -0
  168. package/src/synchronizers/synchronizers/createZoomPanSynchronizer.ts +25 -0
  169. package/src/synchronizers/synchronizers/index.ts +11 -0
  170. package/src/tools/CrosshairsTool.ts +2693 -0
  171. package/src/tools/MIPJumpToClickTool.ts +99 -0
  172. package/src/tools/MagnifyTool.ts +319 -0
  173. package/src/tools/PanTool.ts +58 -0
  174. package/src/tools/PlanarRotateTool.ts +77 -0
  175. package/src/tools/ReferenceCursors.ts +466 -0
  176. package/src/tools/ReferenceLinesTool.ts +279 -0
  177. package/src/tools/ScaleOverlayTool.ts +685 -0
  178. package/src/tools/StackScrollTool.ts +97 -0
  179. package/src/tools/StackScrollToolMouseWheelTool.ts +58 -0
  180. package/src/tools/TrackballRotateTool.ts +141 -0
  181. package/src/tools/VolumeRotateMouseWheelTool.ts +86 -0
  182. package/src/tools/WindowLevelTool.ts +260 -0
  183. package/src/tools/ZoomTool.ts +293 -0
  184. package/src/tools/annotation/AngleTool.ts +835 -0
  185. package/src/tools/annotation/ArrowAnnotateTool.ts +820 -0
  186. package/src/tools/annotation/BidirectionalTool.ts +1350 -0
  187. package/src/tools/annotation/CircleROITool.ts +1070 -0
  188. package/src/tools/annotation/CobbAngleTool.ts +815 -0
  189. package/src/tools/annotation/DragProbeTool.ts +213 -0
  190. package/src/tools/annotation/EllipticalROITool.ts +1223 -0
  191. package/src/tools/annotation/LengthTool.ts +861 -0
  192. package/src/tools/annotation/PlanarFreehandROITool.ts +636 -0
  193. package/src/tools/annotation/ProbeTool.ts +681 -0
  194. package/src/tools/annotation/RectangleROITool.ts +1028 -0
  195. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +488 -0
  196. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +462 -0
  197. package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +331 -0
  198. package/src/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.ts +74 -0
  199. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +612 -0
  200. package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +74 -0
  201. package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +407 -0
  202. package/src/tools/base/AnnotationDisplayTool.ts +228 -0
  203. package/src/tools/base/AnnotationTool.ts +307 -0
  204. package/src/tools/base/BaseTool.ts +215 -0
  205. package/src/tools/base/index.ts +4 -0
  206. package/src/tools/displayTools/Contour/addContourToElement.ts +135 -0
  207. package/src/tools/displayTools/Contour/contourDisplay.ts +252 -0
  208. package/src/tools/displayTools/Contour/index.ts +3 -0
  209. package/src/tools/displayTools/Contour/removeContourFromElement.ts +35 -0
  210. package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +57 -0
  211. package/src/tools/displayTools/Labelmap/index.ts +4 -0
  212. package/src/tools/displayTools/Labelmap/labelmapConfig.ts +37 -0
  213. package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +461 -0
  214. package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +27 -0
  215. package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +30 -0
  216. package/src/tools/displayTools/SegmentationDisplayTool.ts +198 -0
  217. package/src/tools/index.ts +84 -0
  218. package/src/tools/segmentation/BrushTool.ts +474 -0
  219. package/src/tools/segmentation/CircleScissorsTool.ts +365 -0
  220. package/src/tools/segmentation/PaintFillTool.ts +370 -0
  221. package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +471 -0
  222. package/src/tools/segmentation/RectangleROIThresholdTool.ts +281 -0
  223. package/src/tools/segmentation/RectangleScissorsTool.ts +382 -0
  224. package/src/tools/segmentation/SphereScissorsTool.ts +368 -0
  225. package/src/tools/segmentation/strategies/eraseCircle.ts +30 -0
  226. package/src/tools/segmentation/strategies/eraseRectangle.ts +81 -0
  227. package/src/tools/segmentation/strategies/eraseSphere.ts +27 -0
  228. package/src/tools/segmentation/strategies/fillCircle.ts +185 -0
  229. package/src/tools/segmentation/strategies/fillRectangle.ts +110 -0
  230. package/src/tools/segmentation/strategies/fillSphere.ts +88 -0
  231. package/src/tools/segmentation/strategies/index.ts +9 -0
  232. package/src/types/AnnotationGroupSelector.ts +7 -0
  233. package/src/types/AnnotationStyle.ts +42 -0
  234. package/src/types/AnnotationTypes.ts +109 -0
  235. package/src/types/BoundsIJK.ts +5 -0
  236. package/src/types/CINETypes.ts +32 -0
  237. package/src/types/ContourTypes.ts +26 -0
  238. package/src/types/CursorTypes.ts +12 -0
  239. package/src/types/EventTypes.ts +657 -0
  240. package/src/types/FloodFillTypes.ts +19 -0
  241. package/src/types/IAnnotationManager.ts +89 -0
  242. package/src/types/IDistance.ts +16 -0
  243. package/src/types/IPoints.ts +18 -0
  244. package/src/types/ISetToolModeOptions.ts +29 -0
  245. package/src/types/ISynchronizerEventHandler.ts +11 -0
  246. package/src/types/IToolClassReference.ts +5 -0
  247. package/src/types/IToolGroup.ts +72 -0
  248. package/src/types/ITouchPoints.ts +14 -0
  249. package/src/types/InteractionTypes.ts +6 -0
  250. package/src/types/InternalToolTypes.ts +19 -0
  251. package/src/types/JumpToSliceOptions.ts +7 -0
  252. package/src/types/LabelmapTypes.ts +41 -0
  253. package/src/types/PlanarBoundingBox.ts +8 -0
  254. package/src/types/SVGDrawingHelper.ts +10 -0
  255. package/src/types/ScrollOptions.ts +9 -0
  256. package/src/types/SegmentationStateTypes.ts +248 -0
  257. package/src/types/ToolHandle.ts +26 -0
  258. package/src/types/ToolProps.ts +16 -0
  259. package/src/types/ToolSpecificAnnotationTypes.ts +311 -0
  260. package/src/types/index.ts +115 -0
  261. package/src/utilities/boundingBox/extend2DBoundingBoxInViewAxis.ts +29 -0
  262. package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +57 -0
  263. package/src/utilities/boundingBox/index.ts +4 -0
  264. package/src/utilities/calibrateImageSpacing.ts +46 -0
  265. package/src/utilities/cine/events.ts +9 -0
  266. package/src/utilities/cine/index.ts +5 -0
  267. package/src/utilities/cine/playClip.ts +435 -0
  268. package/src/utilities/cine/state.ts +18 -0
  269. package/src/utilities/clip.js +30 -0
  270. package/src/utilities/debounce.js +217 -0
  271. package/src/utilities/drawing/getTextBoxCoordsCanvas.ts +45 -0
  272. package/src/utilities/drawing/index.ts +3 -0
  273. package/src/utilities/dynamicVolume/getDataInTime.ts +110 -0
  274. package/src/utilities/dynamicVolume/index.ts +2 -0
  275. package/src/utilities/getAnnotationNearPoint.ts +130 -0
  276. package/src/utilities/getModalityUnit.ts +11 -0
  277. package/src/utilities/getToolsWithModesForElement.ts +52 -0
  278. package/src/utilities/index.ts +68 -0
  279. package/src/utilities/isObject.js +29 -0
  280. package/src/utilities/math/angle/angleBetweenLines.ts +29 -0
  281. package/src/utilities/math/circle/_types.ts +6 -0
  282. package/src/utilities/math/circle/getCanvasCircleCorners.ts +23 -0
  283. package/src/utilities/math/circle/getCanvasCircleRadius.ts +16 -0
  284. package/src/utilities/math/circle/index.ts +4 -0
  285. package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +26 -0
  286. package/src/utilities/math/ellipse/index.ts +4 -0
  287. package/src/utilities/math/ellipse/pointInEllipse.ts +38 -0
  288. package/src/utilities/math/ellipse/pointInEllipsoidWithConstraint.ts +35 -0
  289. package/src/utilities/math/index.ts +8 -0
  290. package/src/utilities/math/line/distanceToPoint.ts +24 -0
  291. package/src/utilities/math/line/distanceToPointSquared.ts +44 -0
  292. package/src/utilities/math/line/index.ts +5 -0
  293. package/src/utilities/math/line/intersectLine.ts +92 -0
  294. package/src/utilities/math/midPoint.ts +24 -0
  295. package/src/utilities/math/point/distanceToPoint.ts +22 -0
  296. package/src/utilities/math/point/index.ts +3 -0
  297. package/src/utilities/math/polyline/addCanvasPointsToArray.ts +62 -0
  298. package/src/utilities/math/polyline/calculateAreaOfPoints.ts +23 -0
  299. package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +182 -0
  300. package/src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts +99 -0
  301. package/src/utilities/math/polyline/index.ts +19 -0
  302. package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +36 -0
  303. package/src/utilities/math/polyline/pointCanProjectOnLine.ts +57 -0
  304. package/src/utilities/math/polyline/pointsAreWithinCloseContourProximity.ts +15 -0
  305. package/src/utilities/math/rectangle/distanceToPoint.ts +82 -0
  306. package/src/utilities/math/rectangle/index.ts +3 -0
  307. package/src/utilities/math/sphere/index.ts +3 -0
  308. package/src/utilities/math/sphere/pointInSphere.ts +31 -0
  309. package/src/utilities/math/vec2/findClosestPoint.ts +40 -0
  310. package/src/utilities/math/vec2/index.ts +4 -0
  311. package/src/utilities/math/vec2/liangBarksyClip.ts +84 -0
  312. package/src/utilities/orientation/getOrientationStringLPS.ts +52 -0
  313. package/src/utilities/orientation/index.ts +4 -0
  314. package/src/utilities/orientation/invertOrientationStringLPS.ts +21 -0
  315. package/src/utilities/planar/filterAnnotationsForDisplay.ts +68 -0
  316. package/src/utilities/planar/filterAnnotationsWithinSlice.ts +85 -0
  317. package/src/utilities/planar/getPointInLineOfSightWithCriteria.ts +104 -0
  318. package/src/utilities/planar/getWorldWidthAndHeightFromCorners.ts +51 -0
  319. package/src/utilities/planar/getWorldWidthAndHeightFromTwoPoints.ts +51 -0
  320. package/src/utilities/planar/index.ts +18 -0
  321. package/src/utilities/planarFreehandROITool/index.ts +7 -0
  322. package/src/utilities/planarFreehandROITool/interpolateAnnotation.ts +87 -0
  323. package/src/utilities/planarFreehandROITool/interpolatePoints.ts +214 -0
  324. package/src/utilities/planarFreehandROITool/interpolation/algorithms/bspline.ts +55 -0
  325. package/src/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.ts +90 -0
  326. package/src/utilities/pointInShapeCallback.ts +138 -0
  327. package/src/utilities/pointInSurroundingSphereCallback.ts +188 -0
  328. package/src/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.ts +76 -0
  329. package/src/utilities/rectangleROITool/index.ts +3 -0
  330. package/src/utilities/scroll.ts +62 -0
  331. package/src/utilities/segmentation/brushSizeForToolGroup.ts +72 -0
  332. package/src/utilities/segmentation/brushThresholdForToolGroup.ts +65 -0
  333. package/src/utilities/segmentation/createLabelmapVolumeForViewport.ts +74 -0
  334. package/src/utilities/segmentation/createMergedLabelmapForIndex.ts +65 -0
  335. package/src/utilities/segmentation/floodFill.ts +194 -0
  336. package/src/utilities/segmentation/getDefaultRepresentationConfig.ts +20 -0
  337. package/src/utilities/segmentation/index.ts +33 -0
  338. package/src/utilities/segmentation/isValidRepresentationConfig.ts +22 -0
  339. package/src/utilities/segmentation/rectangleROIThresholdVolumeByRange.ts +91 -0
  340. package/src/utilities/segmentation/thresholdSegmentationByRange.ts +129 -0
  341. package/src/utilities/segmentation/thresholdVolumeByRange.ts +150 -0
  342. package/src/utilities/segmentation/triggerSegmentationRender.ts +206 -0
  343. package/src/utilities/segmentation/utilities.ts +116 -0
  344. package/src/utilities/stackPrefetch/index.ts +8 -0
  345. package/src/utilities/stackPrefetch/stackPrefetch.ts +405 -0
  346. package/src/utilities/stackPrefetch/state.ts +17 -0
  347. package/src/utilities/throttle.js +69 -0
  348. package/src/utilities/touch/index.ts +246 -0
  349. package/src/utilities/triggerAnnotationRender.ts +237 -0
  350. package/src/utilities/triggerAnnotationRenderForViewportIds.ts +18 -0
  351. package/src/utilities/viewport/index.ts +5 -0
  352. package/src/utilities/viewport/isViewportPreScaled.ts +24 -0
  353. package/src/utilities/viewport/jumpToSlice.ts +73 -0
  354. package/src/utilities/viewport/jumpToWorld.ts +58 -0
  355. package/src/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.ts +28 -0
  356. package/src/utilities/viewportFilters/filterViewportsWithParallelNormals.ts +26 -0
  357. package/src/utilities/viewportFilters/filterViewportsWithSameOrientation.ts +15 -0
  358. package/src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts +72 -0
  359. package/src/utilities/viewportFilters/getViewportIdsWithToolToRender.ts +45 -0
  360. package/src/utilities/viewportFilters/index.ts +11 -0
@@ -0,0 +1,311 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import { Annotation } from './AnnotationTypes';
3
+
4
+ interface ROICachedStats {
5
+ [targetId: string]: {
6
+ Modality: string;
7
+ area: number;
8
+ areaUnit: string;
9
+ max: number;
10
+ mean: number;
11
+ stdDev: number;
12
+ };
13
+ }
14
+
15
+ export interface RectangleROIAnnotation extends Annotation {
16
+ data: {
17
+ handles: {
18
+ points: Types.Point3[];
19
+ activeHandleIndex: number | null;
20
+ textBox: {
21
+ hasMoved: boolean;
22
+ worldPosition: Types.Point3;
23
+ worldBoundingBox: {
24
+ topLeft: Types.Point3;
25
+ topRight: Types.Point3;
26
+ bottomLeft: Types.Point3;
27
+ bottomRight: Types.Point3;
28
+ };
29
+ };
30
+ };
31
+ label: string;
32
+ cachedStats?:
33
+ | ROICachedStats
34
+ | {
35
+ projectionPoints?: Types.Point3[];
36
+ projectionPointsImageIds?: string[];
37
+ };
38
+ };
39
+ }
40
+
41
+ export interface ProbeAnnotation extends Annotation {
42
+ data: {
43
+ handles: { points: Types.Point3[] };
44
+ cachedStats: {
45
+ [targetId: string]: {
46
+ Modality: string;
47
+ index: Types.Point3;
48
+ value: number;
49
+ };
50
+ };
51
+ label: string;
52
+ };
53
+ }
54
+
55
+ export interface LengthAnnotation extends Annotation {
56
+ data: {
57
+ handles: {
58
+ points: Types.Point3[];
59
+ activeHandleIndex: number | null;
60
+ textBox: {
61
+ hasMoved: boolean;
62
+ worldPosition: Types.Point3;
63
+ worldBoundingBox: {
64
+ topLeft: Types.Point3;
65
+ topRight: Types.Point3;
66
+ bottomLeft: Types.Point3;
67
+ bottomRight: Types.Point3;
68
+ };
69
+ };
70
+ };
71
+ label: string;
72
+ cachedStats: {
73
+ [targetId: string]: {
74
+ length: number;
75
+ unit: string;
76
+ };
77
+ };
78
+ };
79
+ }
80
+
81
+ export interface CircleROIAnnotation extends Annotation {
82
+ data: {
83
+ handles: {
84
+ points: [Types.Point3, Types.Point3]; // [center, end]
85
+ activeHandleIndex: number | null;
86
+ textBox?: {
87
+ hasMoved: boolean;
88
+ worldPosition: Types.Point3;
89
+ worldBoundingBox: {
90
+ topLeft: Types.Point3;
91
+ topRight: Types.Point3;
92
+ bottomLeft: Types.Point3;
93
+ bottomRight: Types.Point3;
94
+ };
95
+ };
96
+ };
97
+ label: string;
98
+ cachedStats?: ROICachedStats & {
99
+ [targetId: string]: {
100
+ radius: number;
101
+ radiusUnit: string;
102
+ perimeter: number;
103
+ };
104
+ };
105
+ };
106
+ }
107
+
108
+ export interface EllipticalROIAnnotation extends Annotation {
109
+ data: {
110
+ handles: {
111
+ points: [Types.Point3, Types.Point3, Types.Point3, Types.Point3]; // [bottom, top, left, right]
112
+ activeHandleIndex: number | null;
113
+ textBox?: {
114
+ hasMoved: boolean;
115
+ worldPosition: Types.Point3;
116
+ worldBoundingBox: {
117
+ topLeft: Types.Point3;
118
+ topRight: Types.Point3;
119
+ bottomLeft: Types.Point3;
120
+ bottomRight: Types.Point3;
121
+ };
122
+ };
123
+ };
124
+ label: string;
125
+ cachedStats?: ROICachedStats;
126
+ initialRotation: number;
127
+ };
128
+ }
129
+
130
+ export interface BidirectionalAnnotation extends Annotation {
131
+ data: {
132
+ handles: {
133
+ points: Types.Point3[];
134
+ activeHandleIndex: number | null;
135
+ textBox: {
136
+ hasMoved: boolean;
137
+ worldPosition: Types.Point3;
138
+ worldBoundingBox: {
139
+ topLeft: Types.Point3;
140
+ topRight: Types.Point3;
141
+ bottomLeft: Types.Point3;
142
+ bottomRight: Types.Point3;
143
+ };
144
+ };
145
+ };
146
+ label: string;
147
+ cachedStats: {
148
+ [targetId: string]: {
149
+ length: number;
150
+ width: number;
151
+ unit: string;
152
+ };
153
+ };
154
+ };
155
+ }
156
+
157
+ export interface RectangleROIThresholdAnnotation extends Annotation {
158
+ metadata: {
159
+ cameraPosition?: Types.Point3;
160
+ cameraFocalPoint?: Types.Point3;
161
+ viewPlaneNormal?: Types.Point3;
162
+ viewUp?: Types.Point3;
163
+ annotationUID?: string;
164
+ FrameOfReferenceUID: string;
165
+ referencedImageId?: string;
166
+ toolName: string;
167
+ enabledElement: Types.IEnabledElement; // Todo: how to remove this from the annotation??
168
+ volumeId: string;
169
+ };
170
+ data: {
171
+ label: string;
172
+ handles: {
173
+ points: Types.Point3[];
174
+ activeHandleIndex: number | null;
175
+ };
176
+ };
177
+ }
178
+
179
+ export interface RectangleROIStartEndThresholdAnnotation extends Annotation {
180
+ metadata: {
181
+ cameraPosition?: Types.Point3;
182
+ cameraFocalPoint?: Types.Point3;
183
+ viewPlaneNormal?: Types.Point3;
184
+ viewUp?: Types.Point3;
185
+ annotationUID?: string;
186
+ FrameOfReferenceUID: string;
187
+ referencedImageId?: string;
188
+ toolName: string;
189
+ enabledElement: any; // Todo: how to remove this from the annotation??
190
+ volumeId: string;
191
+ spacingInNormal: number;
192
+ };
193
+ data: {
194
+ label: string;
195
+ startSlice: number;
196
+ endSlice: number;
197
+ cachedStats: {
198
+ projectionPoints: Types.Point3[][]; // first slice p1, p2, p3, p4; second slice p1, p2, p3, p4 ...
199
+ projectionPointsImageIds: string[];
200
+ };
201
+ handles: {
202
+ points: Types.Point3[];
203
+ activeHandleIndex: number | null;
204
+ };
205
+ };
206
+ }
207
+
208
+ export interface PlanarFreehandROIAnnotation extends Annotation {
209
+ metadata: {
210
+ cameraPosition?: Types.Point3;
211
+ cameraFocalPoint?: Types.Point3;
212
+ viewPlaneNormal?: Types.Point3;
213
+ viewUp?: Types.Point3;
214
+ annotationUID?: string;
215
+ FrameOfReferenceUID: string;
216
+ referencedImageId?: string;
217
+ toolName: string;
218
+ };
219
+ data: {
220
+ polyline: Types.Point3[];
221
+ label?: string;
222
+ isOpenContour?: boolean;
223
+ isOpenUShapeContour?: boolean;
224
+ // Present if isOpenUShapeContour is true:
225
+ openUShapeContourVectorToPeak?: Types.Point3[];
226
+ handles: {
227
+ points: Types.Point3[];
228
+ activeHandleIndex: number | null;
229
+ textBox: {
230
+ hasMoved: boolean;
231
+ worldPosition: Types.Point3;
232
+ worldBoundingBox: {
233
+ topLeft: Types.Point3;
234
+ topRight: Types.Point3;
235
+ bottomLeft: Types.Point3;
236
+ bottomRight: Types.Point3;
237
+ };
238
+ };
239
+ };
240
+ };
241
+ }
242
+
243
+ export interface ArrowAnnotation extends Annotation {
244
+ data: {
245
+ text: string;
246
+ handles: {
247
+ points: Types.Point3[];
248
+ arrowFirst: boolean;
249
+ activeHandleIndex: number | null;
250
+ textBox: {
251
+ hasMoved: boolean;
252
+ worldPosition: Types.Point3;
253
+ worldBoundingBox: {
254
+ topLeft: Types.Point3;
255
+ topRight: Types.Point3;
256
+ bottomLeft: Types.Point3;
257
+ bottomRight: Types.Point3;
258
+ };
259
+ };
260
+ };
261
+ };
262
+ }
263
+ export interface AngleAnnotation extends Annotation {
264
+ data: {
265
+ handles: {
266
+ points: Types.Point3[];
267
+ activeHandleIndex: number | null;
268
+ textBox: {
269
+ hasMoved: boolean;
270
+ worldPosition: Types.Point3;
271
+ worldBoundingBox: {
272
+ topLeft: Types.Point3;
273
+ topRight: Types.Point3;
274
+ bottomLeft: Types.Point3;
275
+ bottomRight: Types.Point3;
276
+ };
277
+ };
278
+ };
279
+ label: string;
280
+ cachedStats: {
281
+ [targetId: string]: {
282
+ angle: number;
283
+ };
284
+ };
285
+ };
286
+ }
287
+
288
+ export interface ReferenceCursor extends Annotation {
289
+ data: {
290
+ handles: {
291
+ points: [Types.Point3];
292
+ };
293
+ };
294
+ }
295
+
296
+ export interface ReferenceLineAnnotation extends Annotation {
297
+ data: {
298
+ handles: {
299
+ points: Types.Point3[];
300
+ };
301
+ };
302
+ }
303
+
304
+ export interface ScaleOverlayAnnotation extends Annotation {
305
+ data: {
306
+ handles: {
307
+ points: Types.Point3[];
308
+ };
309
+ viewportId: string;
310
+ };
311
+ }
@@ -0,0 +1,115 @@
1
+ import type {
2
+ Annotation,
3
+ Annotations,
4
+ AnnotationState,
5
+ GroupSpecificAnnotations,
6
+ } from './AnnotationTypes';
7
+ import type * as EventTypes from './EventTypes';
8
+ import type * as LabelmapTypes from './LabelmapTypes';
9
+ import type IPoints from './IPoints';
10
+ import type ITouchPoints from './ITouchPoints';
11
+ import type IDistance from './IDistance';
12
+ import type PlanarBoundingBox from './PlanarBoundingBox';
13
+ import type {
14
+ SetToolBindingsType,
15
+ IToolBinding,
16
+ ToolOptionsType,
17
+ } from './ISetToolModeOptions';
18
+ import type IToolGroup from './IToolGroup';
19
+ import type * as ToolSpecificAnnotationTypes from './ToolSpecificAnnotationTypes';
20
+ import type * as AnnotationStyle from './AnnotationStyle';
21
+ import type ToolHandle from './ToolHandle';
22
+ import type { AnnotationHandle, TextBoxHandle } from './ToolHandle';
23
+ import type InteractionTypes from './InteractionTypes';
24
+ import type { ToolProps, PublicToolProps } from './ToolProps';
25
+ import type { SVGCursorDescriptor, SVGPoint } from './CursorTypes';
26
+ import type JumpToSliceOptions from './JumpToSliceOptions';
27
+ import type ScrollOptions from './ScrollOptions';
28
+ import type BoundsIJK from './BoundsIJK';
29
+ import type SVGDrawingHelper from './SVGDrawingHelper';
30
+ import type * as CINETypes from './CINETypes';
31
+ import type {
32
+ Color,
33
+ ColorLUT,
34
+ RepresentationConfig,
35
+ SegmentationRepresentationConfig,
36
+ SegmentationRepresentationData,
37
+ Segmentation,
38
+ ToolGroupSpecificRepresentationState,
39
+ ToolGroupSpecificLabelmapRepresentation,
40
+ ToolGroupSpecificRepresentation,
41
+ SegmentationState,
42
+ RepresentationPublicInput,
43
+ } from './SegmentationStateTypes';
44
+ import ISynchronizerEventHandler from './ISynchronizerEventHandler';
45
+ import {
46
+ FloodFillGetter,
47
+ FloodFillOptions,
48
+ FloodFillResult,
49
+ } from './FloodFillTypes';
50
+ import IToolClassReference from './IToolClassReference';
51
+ import { ContourSegmentationData } from './ContourTypes';
52
+ import IAnnotationManager from './IAnnotationManager';
53
+ import AnnotationGroupSelector from './AnnotationGroupSelector';
54
+
55
+ export type {
56
+ // AnnotationState
57
+ Annotation,
58
+ Annotations,
59
+ IAnnotationManager,
60
+ GroupSpecificAnnotations,
61
+ AnnotationState,
62
+ AnnotationStyle,
63
+ ToolSpecificAnnotationTypes,
64
+ JumpToSliceOptions,
65
+ AnnotationGroupSelector,
66
+ // Geometry
67
+ PlanarBoundingBox,
68
+ ToolProps,
69
+ PublicToolProps,
70
+ // Event data
71
+ EventTypes,
72
+ IPoints,
73
+ ITouchPoints,
74
+ IDistance,
75
+ // ToolBindings
76
+ IToolBinding,
77
+ SetToolBindingsType,
78
+ ToolOptionsType,
79
+ InteractionTypes,
80
+ //
81
+ IToolGroup,
82
+ IToolClassReference,
83
+ ISynchronizerEventHandler,
84
+ ToolHandle,
85
+ AnnotationHandle,
86
+ TextBoxHandle,
87
+ // Segmentation
88
+ Segmentation,
89
+ SegmentationState,
90
+ SegmentationRepresentationData,
91
+ SegmentationRepresentationConfig,
92
+ RepresentationConfig,
93
+ ToolGroupSpecificRepresentationState,
94
+ ToolGroupSpecificLabelmapRepresentation,
95
+ ToolGroupSpecificRepresentation,
96
+ RepresentationPublicInput,
97
+ Color,
98
+ ColorLUT,
99
+ LabelmapTypes,
100
+ // Cursors
101
+ SVGCursorDescriptor,
102
+ SVGPoint,
103
+ // Scroll
104
+ ScrollOptions,
105
+ // CINE
106
+ CINETypes,
107
+ BoundsIJK,
108
+ SVGDrawingHelper,
109
+ // FloodFill
110
+ FloodFillResult,
111
+ FloodFillGetter,
112
+ FloodFillOptions,
113
+ // Contour
114
+ ContourSegmentationData,
115
+ };
@@ -0,0 +1,29 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+
3
+ /**
4
+ * Uses the current bounds of the 2D rectangle and extends it in the view axis by numSlices
5
+ * It compares min and max of each IJK to find the view axis (for axial, zMin === zMax) and
6
+ * then calculates the extended range. It will assume the slice is relative to the
7
+ * current slice and will add the given slices to the current max of the boundingBox.
8
+ * @param boundsIJK - [[iMin, iMax], [jMin, jMax], [kMin, kMax]]
9
+ * @param slices - number of slices to project before and after
10
+ * @returns extended bounds
11
+ */
12
+ function extend2DBoundingBoxInViewAxis(
13
+ boundsIJK: [Types.Point2, Types.Point2, Types.Point2],
14
+ numSlicesToProject: number
15
+ ): [Types.Point2, Types.Point2, Types.Point2] {
16
+ // find which index in boundsIJK has the same first and last value
17
+ const sliceNormalIndex = boundsIJK.findIndex(([min, max]) => min === max);
18
+
19
+ if (sliceNormalIndex === -1) {
20
+ throw new Error('3D bounding boxes not supported in an oblique plane');
21
+ }
22
+
23
+ // get the index and subtract slices from the min and add to the max
24
+ boundsIJK[sliceNormalIndex][0] -= numSlicesToProject;
25
+ boundsIJK[sliceNormalIndex][1] += numSlicesToProject;
26
+ return boundsIJK;
27
+ }
28
+
29
+ export default extend2DBoundingBoxInViewAxis;
@@ -0,0 +1,57 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+
3
+ /**
4
+ * With a given vertices (points) coordinates in IJK, it calculates the minimum and maximum
5
+ * coordinate in each axis, and returns them. If dimensions are provided it also
6
+ * clip the min, max to the provided width, height and depth
7
+ *
8
+ * @param points - shape corner points coordinates (IJK)
9
+ * @param dimensions - dimensions of the image
10
+ * @returns [[xMin,xMax],[yMin,yMax], [zMin,zMax]]
11
+ */
12
+ function getBoundingBoxAroundShape(
13
+ points: Types.Point3[],
14
+ dimensions?: Types.Point3
15
+ ): [Types.Point2, Types.Point2, Types.Point2] {
16
+ let xMin = Infinity;
17
+ let xMax = 0;
18
+ let yMin = Infinity;
19
+ let yMax = 0;
20
+ let zMin = Infinity;
21
+ let zMax = 0;
22
+
23
+ points.forEach((p) => {
24
+ xMin = Math.min(p[0], xMin);
25
+ xMax = Math.max(p[0], xMax);
26
+ yMin = Math.min(p[1], yMin);
27
+ yMax = Math.max(p[1], yMax);
28
+ zMin = Math.min(p[2], zMin);
29
+ zMax = Math.max(p[2], zMax);
30
+ });
31
+
32
+ xMin = Math.floor(xMin);
33
+ xMax = Math.floor(xMax);
34
+ yMin = Math.floor(yMin);
35
+ yMax = Math.floor(yMax);
36
+ zMin = Math.floor(zMin);
37
+ zMax = Math.floor(zMax);
38
+
39
+ if (dimensions) {
40
+ // clip the min, max to the provided width, height and depth
41
+ const [width, height, depth] = dimensions;
42
+ xMin = Math.max(0, xMin);
43
+ xMax = Math.min(width - 1, xMax);
44
+ yMin = Math.max(0, yMin);
45
+ yMax = Math.min(height - 1, yMax);
46
+ zMin = Math.max(0, zMin);
47
+ zMax = Math.min(depth - 1, zMax);
48
+ }
49
+
50
+ return [
51
+ [xMin, xMax],
52
+ [yMin, yMax],
53
+ [zMin, zMax],
54
+ ];
55
+ }
56
+
57
+ export default getBoundingBoxAroundShape;
@@ -0,0 +1,4 @@
1
+ import extend2DBoundingBoxInViewAxis from './extend2DBoundingBoxInViewAxis';
2
+ import getBoundingBoxAroundShape from './getBoundingBoxAroundShape';
3
+
4
+ export { extend2DBoundingBoxInViewAxis, getBoundingBoxAroundShape };
@@ -0,0 +1,46 @@
1
+ import { utilities } from '@cornerstonejs/core';
2
+ import type { Types } from '@cornerstonejs/core';
3
+
4
+ const { calibratedPixelSpacingMetadataProvider } = utilities;
5
+
6
+ /**
7
+ * It adds the provided spacing to the Cornerstone internal calibratedPixelSpacing
8
+ * metadata provider, then it invalidates all the tools that have the imageId as
9
+ * their reference imageIds. Finally, it triggers a re-render for invalidated annotations.
10
+ * @param imageId - ImageId for the calibrated image
11
+ * @param rowPixelSpacing - Spacing in row direction
12
+ * @param columnPixelSpacing - Spacing in column direction
13
+ * @param renderingEngine - Cornerstone RenderingEngine instance
14
+ */
15
+ export default function calibrateImageSpacing(
16
+ imageId: string,
17
+ renderingEngine: Types.IRenderingEngine,
18
+ rowPixelSpacing: number,
19
+ columnPixelSpacing: number
20
+ ): void {
21
+ // 1. Add the calibratedPixelSpacing metadata to the metadata provider
22
+ // If no column spacing provided, assume square pixels
23
+ if (!columnPixelSpacing) {
24
+ columnPixelSpacing = rowPixelSpacing;
25
+ }
26
+
27
+ calibratedPixelSpacingMetadataProvider.add(imageId, [
28
+ rowPixelSpacing,
29
+ columnPixelSpacing,
30
+ ]);
31
+
32
+ // 2. Update the actor for stackViewports
33
+ const viewports = renderingEngine.getStackViewports();
34
+
35
+ // 2.1 If imageId is already being used in a stackViewport -> update actor
36
+ viewports.forEach((viewport) => {
37
+ const imageIds = viewport.getImageIds();
38
+ if (imageIds.includes(imageId)) {
39
+ viewport.calibrateSpacing(imageId);
40
+ }
41
+ });
42
+
43
+ // 2.2 If imageId is cached but not being displayed in a viewport, stackViewport
44
+ // will handle using the calibratedPixelSpacing since it has been added
45
+ // to the provider
46
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * CINE Tool Events
3
+ */
4
+ enum Events {
5
+ CLIP_STOPPED = 'CORNERSTONE_CINE_TOOL_STOPPED',
6
+ CLIP_STARTED = 'CORNERSTONE_CINE_TOOL_STARTED',
7
+ }
8
+
9
+ export default Events;
@@ -0,0 +1,5 @@
1
+ import { playClip, stopClip } from './playClip';
2
+ import Events from './events';
3
+ import { getToolState, addToolState } from './state';
4
+
5
+ export { playClip, stopClip, Events, getToolState, addToolState };