@cornerstonejs/tools 5.0.0-beta.1 → 5.0.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 (285) hide show
  1. package/dist/esm/config.d.ts +4 -0
  2. package/dist/esm/drawingSvg/drawPath.d.ts +3 -0
  3. package/dist/esm/drawingSvg/drawPath.js +4 -1
  4. package/dist/esm/eventListeners/keyboard/keyDownListener.js +2 -2
  5. package/dist/esm/eventListeners/mouse/getMouseEventPoints.d.ts +1 -1
  6. package/dist/esm/eventListeners/mouse/getMouseEventPoints.js +19 -1
  7. package/dist/esm/eventListeners/mouse/mouseDoubleClickListener.js +8 -1
  8. package/dist/esm/eventListeners/mouse/mouseDownListener.js +37 -5
  9. package/dist/esm/eventListeners/mouse/mouseMoveListener.js +3 -0
  10. package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +60 -92
  11. package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +49 -21
  12. package/dist/esm/eventListeners/segmentation/labelmap/performStackLabelmapUpdate.js +7 -13
  13. package/dist/esm/eventListeners/segmentation/labelmap/performVolumeLabelmapUpdate.js +44 -18
  14. package/dist/esm/eventListeners/touch/getTouchEventPoints.js +27 -4
  15. package/dist/esm/eventListeners/touch/touchStartListener.js +27 -9
  16. package/dist/esm/eventListeners/wheel/wheelListener.js +5 -1
  17. package/dist/esm/index.d.ts +2 -2
  18. package/dist/esm/index.js +2 -2
  19. package/dist/esm/init.js +2 -0
  20. package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +10 -4
  21. package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +23 -20
  22. package/dist/esm/stateManagement/segmentation/SegmentationRepresentationDisplayRegistry.d.ts +12 -0
  23. package/dist/esm/stateManagement/segmentation/SegmentationRepresentationDisplayRegistry.js +7 -0
  24. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +1 -10
  25. package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +28 -149
  26. package/dist/esm/stateManagement/segmentation/addColorLUT.js +7 -1
  27. package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.js +16 -1
  28. package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.js +9 -7
  29. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.d.ts +1 -1
  30. package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.js +3 -2
  31. package/dist/esm/stateManagement/segmentation/helpers/getViewportLabelmapRenderMode.d.ts +5 -0
  32. package/dist/esm/stateManagement/segmentation/helpers/getViewportLabelmapRenderMode.js +58 -0
  33. package/dist/esm/stateManagement/segmentation/helpers/labelmapImageMapperSupport.d.ts +52 -0
  34. package/dist/esm/stateManagement/segmentation/helpers/labelmapImageMapperSupport.js +246 -0
  35. package/dist/esm/stateManagement/segmentation/helpers/labelmapSegmentationState.d.ts +1 -0
  36. package/dist/esm/stateManagement/segmentation/helpers/labelmapSegmentationState.js +1 -0
  37. package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +12 -1
  38. package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.js +3 -3
  39. package/dist/esm/stateManagement/segmentation/labelmapModel/index.d.ts +9 -0
  40. package/dist/esm/stateManagement/segmentation/labelmapModel/index.js +7 -0
  41. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapEditTransaction.d.ts +54 -0
  42. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapEditTransaction.js +224 -0
  43. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapImageIdMapping.d.ts +6 -0
  44. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapImageIdMapping.js +39 -0
  45. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapImageReferenceResolver.d.ts +23 -0
  46. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapImageReferenceResolver.js +269 -0
  47. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapLayerStore.d.ts +15 -0
  48. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapLayerStore.js +160 -0
  49. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapLegacyAdapter.d.ts +4 -0
  50. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapLegacyAdapter.js +42 -0
  51. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapSegmentBindings.d.ts +11 -0
  52. package/dist/esm/stateManagement/segmentation/labelmapModel/labelmapSegmentBindings.js +73 -0
  53. package/dist/esm/stateManagement/segmentation/labelmapModel/normalizeLabelmapSegmentationData.d.ts +17 -0
  54. package/dist/esm/stateManagement/segmentation/labelmapModel/normalizeLabelmapSegmentationData.js +75 -0
  55. package/dist/esm/stateManagement/segmentation/labelmapModel/privateLabelmap.d.ts +5 -0
  56. package/dist/esm/stateManagement/segmentation/labelmapModel/privateLabelmap.js +106 -0
  57. package/dist/esm/stateManagement/segmentation/models/SegmentModel.d.ts +11 -0
  58. package/dist/esm/stateManagement/segmentation/models/SegmentModel.js +19 -0
  59. package/dist/esm/stateManagement/segmentation/models/SegmentationModel.d.ts +12 -0
  60. package/dist/esm/stateManagement/segmentation/models/SegmentationModel.js +23 -0
  61. package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +6 -10
  62. package/dist/esm/stateManagement/segmentation/segmentIndex.js +24 -0
  63. package/dist/esm/stateManagement/segmentation/segmentationEventManager.js +2 -9
  64. package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +2 -1
  65. package/dist/esm/stateManagement/segmentation/segmentationState.js +4 -1
  66. package/dist/esm/store/SynchronizerManager/Synchronizer.d.ts +3 -1
  67. package/dist/esm/store/state.js +2 -1
  68. package/dist/esm/synchronizers/callbacks/imageSliceSyncCallback.js +12 -3
  69. package/dist/esm/synchronizers/callbacks/presentationViewSyncCallback.js +5 -2
  70. package/dist/esm/synchronizers/callbacks/zoomPanSyncCallback.js +51 -3
  71. package/dist/esm/synchronizers/synchronizers/createPresentationViewSynchronizer.d.ts +1 -1
  72. package/dist/esm/tools/AdvancedMagnifyTool.js +4 -1
  73. package/dist/esm/tools/CrosshairsTool.d.ts +4 -0
  74. package/dist/esm/tools/CrosshairsTool.js +95 -41
  75. package/dist/esm/tools/MagnifyTool.js +3 -1
  76. package/dist/esm/tools/OrientationControllerTool.d.ts +45 -0
  77. package/dist/esm/tools/OrientationControllerTool.js +454 -0
  78. package/dist/esm/tools/OrientationMarkerTool.js +4 -4
  79. package/dist/esm/tools/PanTool.js +26 -3
  80. package/dist/esm/tools/PlanarRotateTool.js +19 -4
  81. package/dist/esm/tools/ReferenceCursors.js +7 -1
  82. package/dist/esm/tools/SculptorTool/CircleSculptCursor.js +1 -1
  83. package/dist/esm/tools/TrackballRotateTool.js +3 -2
  84. package/dist/esm/tools/VolumeCroppingControlTool.d.ts +10 -35
  85. package/dist/esm/tools/VolumeCroppingControlTool.js +179 -699
  86. package/dist/esm/tools/VolumeCroppingTool.d.ts +34 -32
  87. package/dist/esm/tools/VolumeCroppingTool.js +813 -532
  88. package/dist/esm/tools/WindowLevelTool.d.ts +2 -1
  89. package/dist/esm/tools/WindowLevelTool.js +48 -4
  90. package/dist/esm/tools/ZoomTool.d.ts +8 -0
  91. package/dist/esm/tools/ZoomTool.js +92 -11
  92. package/dist/esm/tools/annotation/AngleTool.js +38 -32
  93. package/dist/esm/tools/annotation/ArrowAnnotateTool.js +30 -28
  94. package/dist/esm/tools/annotation/BidirectionalTool.js +51 -49
  95. package/dist/esm/tools/annotation/CircleROITool.d.ts +1 -0
  96. package/dist/esm/tools/annotation/CircleROITool.js +89 -51
  97. package/dist/esm/tools/annotation/CobbAngleTool.js +1 -1
  98. package/dist/esm/tools/annotation/DragProbeTool.js +1 -1
  99. package/dist/esm/tools/annotation/ETDRSGridTool.js +1 -1
  100. package/dist/esm/tools/annotation/EllipticalROITool.js +46 -39
  101. package/dist/esm/tools/annotation/HeightTool.js +1 -1
  102. package/dist/esm/tools/annotation/KeyImageTool.js +11 -11
  103. package/dist/esm/tools/annotation/LabelTool.js +37 -35
  104. package/dist/esm/tools/annotation/LengthTool.js +35 -33
  105. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +6 -4
  106. package/dist/esm/tools/annotation/LivewireContourTool.js +4 -8
  107. package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +6 -4
  108. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +3 -4
  109. package/dist/esm/tools/annotation/ProbeTool.js +66 -56
  110. package/dist/esm/tools/annotation/RectangleROITool.js +48 -37
  111. package/dist/esm/tools/annotation/RegionSegmentPlusTool.js +1 -1
  112. package/dist/esm/tools/annotation/RegionSegmentTool.js +1 -1
  113. package/dist/esm/tools/annotation/SplineContourSegmentationTool.js +1 -1
  114. package/dist/esm/tools/annotation/SplineROITool.js +60 -56
  115. package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +1 -1
  116. package/dist/esm/tools/annotation/UltrasoundPleuraBLineTool/UltrasoundPleuraBLineTool.js +57 -55
  117. package/dist/esm/tools/annotation/VideoRedactionTool.js +1 -1
  118. package/dist/esm/tools/base/AnnotationDisplayTool.js +9 -6
  119. package/dist/esm/tools/base/AnnotationTool.js +2 -1
  120. package/dist/esm/tools/base/BaseTool.js +16 -10
  121. package/dist/esm/tools/base/ContourSegmentationBaseTool.js +1 -1
  122. package/dist/esm/tools/base/GrowCutBaseTool.js +2 -2
  123. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +2 -4
  124. package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +15 -85
  125. package/dist/esm/tools/displayTools/Labelmap/labelmapActorStyle.d.ts +5 -0
  126. package/dist/esm/tools/displayTools/Labelmap/labelmapActorStyle.js +191 -0
  127. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +4 -3
  128. package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +48 -209
  129. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/createLabelmapRenderPlan.d.ts +3 -0
  130. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/createLabelmapRenderPlan.js +51 -0
  131. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/index.d.ts +4 -0
  132. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/index.js +3 -0
  133. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/legacyVolumePlan.d.ts +14 -0
  134. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/legacyVolumePlan.js +143 -0
  135. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/planarGenericVolumeLabelmap.d.ts +40 -0
  136. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/planarGenericVolumeLabelmap.js +79 -0
  137. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/removeLabelmapRepresentationFromViewport.d.ts +3 -0
  138. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/removeLabelmapRepresentationFromViewport.js +18 -0
  139. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/resolveLabelmapRenderPlan.d.ts +9 -0
  140. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/resolveLabelmapRenderPlan.js +56 -0
  141. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/stackImagePlan.d.ts +11 -0
  142. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/stackImagePlan.js +35 -0
  143. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/types.d.ts +48 -0
  144. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/types.js +0 -0
  145. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/volumeSliceImageMapperPlan.d.ts +13 -0
  146. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan/volumeSliceImageMapperPlan.js +34 -0
  147. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan.d.ts +2 -0
  148. package/dist/esm/tools/displayTools/Labelmap/labelmapRenderPlan.js +1 -0
  149. package/dist/esm/tools/displayTools/Labelmap/labelmapRepresentationUID.d.ts +8 -0
  150. package/dist/esm/tools/displayTools/Labelmap/labelmapRepresentationUID.js +18 -0
  151. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +2 -2
  152. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapRepresentationData.d.ts +3 -0
  153. package/dist/esm/tools/displayTools/Labelmap/removeLabelmapRepresentationData.js +16 -0
  154. package/dist/esm/tools/displayTools/Labelmap/syncStackLabelmapActors.d.ts +2 -0
  155. package/dist/esm/tools/displayTools/Labelmap/syncStackLabelmapActors.js +135 -0
  156. package/dist/esm/tools/displayTools/Labelmap/volumeLabelmapImageMapper.d.ts +16 -0
  157. package/dist/esm/tools/displayTools/Labelmap/volumeLabelmapImageMapper.js +267 -0
  158. package/dist/esm/tools/displayTools/Labelmap/volumeLabelmapSliceData.d.ts +27 -0
  159. package/dist/esm/tools/displayTools/Labelmap/volumeLabelmapSliceData.js +185 -0
  160. package/dist/esm/tools/displayTools/registerBuiltInSegmentationRepresentationDisplays.d.ts +1 -0
  161. package/dist/esm/tools/displayTools/registerBuiltInSegmentationRepresentationDisplays.js +16 -0
  162. package/dist/esm/tools/index.d.ts +2 -1
  163. package/dist/esm/tools/index.js +2 -1
  164. package/dist/esm/tools/segmentation/BrushTool.d.ts +9 -2
  165. package/dist/esm/tools/segmentation/BrushTool.js +123 -26
  166. package/dist/esm/tools/segmentation/CircleScissorsTool.js +19 -36
  167. package/dist/esm/tools/segmentation/LabelmapBaseTool.d.ts +2 -3
  168. package/dist/esm/tools/segmentation/LabelmapBaseTool.js +77 -46
  169. package/dist/esm/tools/segmentation/LabelmapEditWithContour.js +3 -3
  170. package/dist/esm/tools/segmentation/PaintFillTool.js +11 -4
  171. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +2 -0
  172. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +16 -8
  173. package/dist/esm/tools/segmentation/RectangleScissorsTool.js +13 -6
  174. package/dist/esm/tools/segmentation/SegmentBidirectionalTool.js +63 -61
  175. package/dist/esm/tools/segmentation/SegmentSelectTool.js +4 -4
  176. package/dist/esm/tools/segmentation/SphereScissorsTool.js +11 -31
  177. package/dist/esm/tools/segmentation/strategies/BrushStrategy.d.ts +7 -0
  178. package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +47 -24
  179. package/dist/esm/tools/segmentation/strategies/compositions/circularCursor.js +49 -21
  180. package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +2 -2
  181. package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +5 -1
  182. package/dist/esm/tools/segmentation/strategies/compositions/islandRemovalComposition.js +2 -2
  183. package/dist/esm/tools/segmentation/strategies/compositions/preview.js +2 -2
  184. package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +14 -6
  185. package/dist/esm/tools/segmentation/strategies/fillCircle.d.ts +3 -1
  186. package/dist/esm/tools/segmentation/strategies/fillCircle.js +38 -31
  187. package/dist/esm/tools/segmentation/strategies/fillSphere.js +11 -3
  188. package/dist/esm/tools/segmentation/strategies/utils/crossLayerErase.d.ts +4 -0
  189. package/dist/esm/tools/segmentation/strategies/utils/crossLayerErase.js +23 -0
  190. package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +1 -1
  191. package/dist/esm/tools/segmentation/strategies/utils/handleUseSegmentCenterIndex.js +12 -11
  192. package/dist/esm/tools/segmentation/strategies/utils/labelmapOverlap.d.ts +4 -0
  193. package/dist/esm/tools/segmentation/strategies/utils/labelmapOverlap.js +41 -0
  194. package/dist/esm/tools/segmentation/strategies/utils/overwritePolicy.d.ts +3 -0
  195. package/dist/esm/tools/segmentation/strategies/utils/overwritePolicy.js +31 -0
  196. package/dist/esm/tools/segmentation/strategies/utils/segmentSeparation.d.ts +3 -0
  197. package/dist/esm/tools/segmentation/strategies/utils/segmentSeparation.js +38 -0
  198. package/dist/esm/tools/segmentation/utils/LazyBrushEditController.d.ts +19 -0
  199. package/dist/esm/tools/segmentation/utils/LazyBrushEditController.js +55 -0
  200. package/dist/esm/tools/segmentation/utils/lazyBrushPreview.d.ts +3 -0
  201. package/dist/esm/tools/segmentation/utils/lazyBrushPreview.js +34 -0
  202. package/dist/esm/tools/segmentation/utils/shouldUseLazyLabelmapEditing.d.ts +3 -0
  203. package/dist/esm/tools/segmentation/utils/shouldUseLazyLabelmapEditing.js +42 -0
  204. package/dist/esm/types/ISynchronizerEventHandler.d.ts +2 -1
  205. package/dist/esm/types/LabelmapToolOperationData.d.ts +5 -0
  206. package/dist/esm/types/LabelmapTypes.d.ts +29 -6
  207. package/dist/esm/types/SegmentationStateTypes.d.ts +6 -0
  208. package/dist/esm/utilities/calibrateImageSpacing.js +17 -2
  209. package/dist/esm/utilities/contours/AnnotationToPointData.js +1 -1
  210. package/dist/esm/utilities/draw3D/addLine3DBetweenPoints.d.ts +7 -0
  211. package/dist/esm/utilities/draw3D/addLine3DBetweenPoints.js +34 -0
  212. package/dist/esm/utilities/draw3D/calculateAdaptiveSphereRadius.d.ts +6 -0
  213. package/dist/esm/utilities/draw3D/calculateAdaptiveSphereRadius.js +7 -0
  214. package/dist/esm/utilities/draw3D/index.d.ts +2 -0
  215. package/dist/esm/utilities/draw3D/index.js +2 -0
  216. package/dist/esm/utilities/drawing/getTextBoxCoordsCanvas.js +22 -14
  217. package/dist/esm/utilities/getCenterAndRadiusInCanvas.d.ts +6 -0
  218. package/dist/esm/utilities/getCenterAndRadiusInCanvas.js +26 -0
  219. package/dist/esm/utilities/getEllipseWorldCoordinates.d.ts +2 -0
  220. package/dist/esm/utilities/getEllipseWorldCoordinates.js +26 -0
  221. package/dist/esm/utilities/getSphereBoundsInfo.js +5 -1
  222. package/dist/esm/utilities/getViewportICamera.d.ts +4 -0
  223. package/dist/esm/utilities/getViewportICamera.js +23 -0
  224. package/dist/esm/utilities/getViewportsForAnnotation.js +5 -1
  225. package/dist/esm/utilities/index.d.ts +2 -1
  226. package/dist/esm/utilities/index.js +2 -1
  227. package/dist/esm/utilities/interactionDragCoordinator.d.ts +5 -0
  228. package/dist/esm/utilities/interactionDragCoordinator.js +16 -0
  229. package/dist/esm/utilities/math/basic/BasicStatsCalculator.js +9 -7
  230. package/dist/esm/utilities/pointInSurroundingSphereCallback.js +8 -1
  231. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js +121 -118
  232. package/dist/esm/utilities/segmentation/SegmentStatsCalculator.js +5 -4
  233. package/dist/esm/utilities/segmentation/VolumetricCalculator.js +1 -1
  234. package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +1 -1
  235. package/dist/esm/utilities/segmentation/getReferenceVolumeForSegmentation.js +1 -1
  236. package/dist/esm/utilities/segmentation/getReferenceVolumeForSegmentationVolume.js +11 -2
  237. package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.js +36 -17
  238. package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.js +42 -25
  239. package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +3 -30
  240. package/dist/esm/utilities/segmentation/index.d.ts +2 -1
  241. package/dist/esm/utilities/segmentation/index.js +2 -1
  242. package/dist/esm/utilities/segmentation/utilsForWorker.js +6 -2
  243. package/dist/esm/utilities/segmentation/validateLabelmap.js +1 -1
  244. package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +0 -1
  245. package/dist/esm/utilities/touch/index.js +3 -2
  246. package/dist/esm/utilities/viewportCapabilities.d.ts +16 -0
  247. package/dist/esm/utilities/viewportCapabilities.js +18 -0
  248. package/dist/esm/utilities/viewportFilters/filterViewportsWithParallelNormals.d.ts +1 -1
  249. package/dist/esm/utilities/viewportFilters/filterViewportsWithParallelNormals.js +12 -4
  250. package/dist/esm/utilities/viewportFilters/filterViewportsWithSameOrientation.d.ts +1 -1
  251. package/dist/esm/utilities/viewportFilters/filterViewportsWithSameOrientation.js +11 -4
  252. package/dist/esm/utilities/viewportFilters/getViewportIdsWithToolToRender.js +1 -1
  253. package/dist/esm/utilities/viewportPresentation.d.ts +3 -0
  254. package/dist/esm/utilities/viewportPresentation.js +26 -0
  255. package/dist/esm/utilities/volumeCropping/computePlanePlaneIntersection.d.ts +6 -0
  256. package/dist/esm/utilities/volumeCropping/computePlanePlaneIntersection.js +37 -0
  257. package/dist/esm/utilities/volumeCropping/constants.d.ts +31 -0
  258. package/dist/esm/utilities/volumeCropping/constants.js +31 -0
  259. package/dist/esm/utilities/volumeCropping/copyClippingPlanes.d.ts +2 -0
  260. package/dist/esm/utilities/volumeCropping/copyClippingPlanes.js +6 -0
  261. package/dist/esm/utilities/volumeCropping/extractVolumeDirectionVectors.d.ts +9 -0
  262. package/dist/esm/utilities/volumeCropping/extractVolumeDirectionVectors.js +9 -0
  263. package/dist/esm/utilities/volumeCropping/findLineBoundsIntersection.d.ts +5 -0
  264. package/dist/esm/utilities/volumeCropping/findLineBoundsIntersection.js +50 -0
  265. package/dist/esm/utilities/volumeCropping/getColorKeyForPlaneIndex.d.ts +1 -0
  266. package/dist/esm/utilities/volumeCropping/getColorKeyForPlaneIndex.js +13 -0
  267. package/dist/esm/utilities/volumeCropping/getOrientationFromNormal.d.ts +2 -0
  268. package/dist/esm/utilities/volumeCropping/getOrientationFromNormal.js +19 -0
  269. package/dist/esm/utilities/volumeCropping/index.d.ts +9 -0
  270. package/dist/esm/utilities/volumeCropping/index.js +9 -0
  271. package/dist/esm/utilities/volumeCropping/parseCornerKey.d.ts +8 -0
  272. package/dist/esm/utilities/volumeCropping/parseCornerKey.js +11 -0
  273. package/dist/esm/utilities/volumeCropping/types.d.ts +5 -0
  274. package/dist/esm/utilities/volumeCropping/types.js +0 -0
  275. package/dist/esm/utilities/vtkjs/AnnotatedRhombicuboctahedronActor/index.d.ts +31 -0
  276. package/dist/esm/utilities/vtkjs/AnnotatedRhombicuboctahedronActor/index.js +391 -0
  277. package/dist/esm/utilities/vtkjs/OrientationControllerWidget/index.d.ts +69 -0
  278. package/dist/esm/utilities/vtkjs/OrientationControllerWidget/index.js +804 -0
  279. package/dist/esm/utilities/vtkjs/RhombicuboctahedronSource/index.d.ts +7 -0
  280. package/dist/esm/utilities/vtkjs/RhombicuboctahedronSource/index.js +144 -0
  281. package/dist/esm/utilities/vtkjs/index.d.ts +3 -0
  282. package/dist/esm/utilities/vtkjs/index.js +3 -0
  283. package/dist/esm/version.d.ts +1 -1
  284. package/dist/esm/version.js +1 -1
  285. package/package.json +10 -9
@@ -52,6 +52,10 @@ class CrosshairsTool extends AnnotationTool {
52
52
  enableHDPIHandles: false,
53
53
  referenceLinesCenterGapRadius: 20,
54
54
  referenceLinesCenterGapRatio: null,
55
+ minimal: {
56
+ enabled: false,
57
+ lineLengthInPx: 40,
58
+ },
55
59
  filterActorUIDsToSetSlabThickness: [],
56
60
  slabThicknessBlendMode: Enums.BlendModes.MAXIMUM_INTENSITY_BLEND,
57
61
  centerPoint: {
@@ -380,15 +384,15 @@ class CrosshairsTool extends AnnotationTool {
380
384
  vec2.normalize(canvasUnitVectorFromCenter, canvasUnitVectorFromCenter);
381
385
  const canvasVectorFromCenterLong = vec2.create();
382
386
  vec2.scale(canvasVectorFromCenterLong, canvasUnitVectorFromCenter, canvasDiagonalLength * 100);
383
- const canvasVectorFromCenterMid = vec2.create();
384
- vec2.scale(canvasVectorFromCenterMid, canvasUnitVectorFromCenter, canvasMinDimensionLength * 0.4);
385
387
  const canvasVectorFromCenterShort = vec2.create();
386
388
  vec2.scale(canvasVectorFromCenterShort, canvasUnitVectorFromCenter, canvasMinDimensionLength * 0.2);
387
389
  const canvasVectorFromCenterStart = vec2.create();
388
390
  const mobileConfig = this.configuration.mobile;
389
- const { referenceLinesCenterGapRatio } = mobileConfig?.enabled
391
+ const activeConfiguration = mobileConfig?.enabled
390
392
  ? mobileConfig
391
393
  : this.configuration;
394
+ const { referenceLinesCenterGapRatio } = activeConfiguration;
395
+ const minimalCrosshairConfig = getMinimalCrosshairConfig(this.configuration);
392
396
  const centerGap = referenceLinesCenterGapRatio > 0
393
397
  ? canvasMinDimensionLength * referenceLinesCenterGapRatio
394
398
  : this.configuration.referenceLinesCenterGapRadius;
@@ -407,10 +411,18 @@ class CrosshairsTool extends AnnotationTool {
407
411
  vec2.subtract(refLinePointFour, refLinesCenter, canvasVectorFromCenterLong);
408
412
  liangBarksyClip(refLinePointOne, refLinePointTwo, canvasBox);
409
413
  liangBarksyClip(refLinePointThree, refLinePointFour, canvasBox);
410
- const rotHandleOne = vec2.create();
411
- vec2.subtract(rotHandleOne, crosshairCenterCanvas, canvasVectorFromCenterMid);
412
- const rotHandleTwo = vec2.create();
413
- vec2.add(rotHandleTwo, crosshairCenterCanvas, canvasVectorFromCenterMid);
414
+ if (minimalCrosshairConfig.enabled) {
415
+ const minimalCanvasVectorFromCenterLong = vec2.create();
416
+ vec2.scale(minimalCanvasVectorFromCenterLong, canvasUnitVectorFromCenter, minimalCrosshairConfig.lineLengthInPx);
417
+ vec2.add(refLinePointOne, refLinesCenter, canvasVectorFromCenterStart);
418
+ vec2.add(refLinePointTwo, refLinePointOne, minimalCanvasVectorFromCenterLong);
419
+ vec2.subtract(refLinePointThree, refLinesCenter, canvasVectorFromCenterStart);
420
+ vec2.subtract(refLinePointFour, refLinePointThree, minimalCanvasVectorFromCenterLong);
421
+ liangBarksyClip(refLinePointOne, refLinePointTwo, canvasBox);
422
+ liangBarksyClip(refLinePointThree, refLinePointFour, canvasBox);
423
+ }
424
+ const rotHandleOne = getSegmentMidpoint(refLinePointOne, refLinePointTwo);
425
+ const rotHandleTwo = getSegmentMidpoint(refLinePointThree, refLinePointFour);
414
426
  let stHandlesCenterCanvas = vec2.clone(crosshairCenterCanvas);
415
427
  if (!otherViewportDraggableRotatable &&
416
428
  otherViewportSlabThicknessControlsOn) {
@@ -490,12 +502,15 @@ class CrosshairsTool extends AnnotationTool {
490
502
  const color = viewportColor !== undefined ? viewportColor : 'rgb(200, 200, 200)';
491
503
  referenceLines.forEach((line, lineIndex) => {
492
504
  const otherViewport = line[0];
505
+ const minimalCrosshairConfig = getMinimalCrosshairConfig(this.configuration);
493
506
  const viewportColor = this._getReferenceLineColor(otherViewport.id);
494
507
  const viewportControllable = this._getReferenceLineControllable(otherViewport.id);
495
- const viewportDraggableRotatable = this._getReferenceLineDraggableRotatable(otherViewport.id) ||
496
- this.configuration.mobile?.enabled;
497
- const viewportSlabThicknessControlsOn = this._getReferenceLineSlabThicknessControlsOn(otherViewport.id) ||
498
- this.configuration.mobile?.enabled;
508
+ const viewportDraggableRotatable = !minimalCrosshairConfig.enabled &&
509
+ (this._getReferenceLineDraggableRotatable(otherViewport.id) ||
510
+ this.configuration.mobile?.enabled);
511
+ const viewportSlabThicknessControlsOn = !minimalCrosshairConfig.enabled &&
512
+ (this._getReferenceLineSlabThicknessControlsOn(otherViewport.id) ||
513
+ this.configuration.mobile?.enabled);
499
514
  const selectedViewportId = data.activeViewportIds.find((id) => id === otherViewport.id);
500
515
  let color = viewportColor !== undefined ? viewportColor : 'rgb(200, 200, 200)';
501
516
  let lineWidth = 1;
@@ -506,7 +521,8 @@ class CrosshairsTool extends AnnotationTool {
506
521
  lineWidth = 2.5;
507
522
  }
508
523
  let lineUID = `${lineIndex}`;
509
- if (viewportControllable && viewportDraggableRotatable) {
524
+ if (viewportControllable &&
525
+ (viewportDraggableRotatable || minimalCrosshairConfig.enabled)) {
510
526
  lineUID = `${lineIndex}One`;
511
527
  drawLineSvg(svgDrawingHelper, annotationUID, lineUID, line[1], line[2], {
512
528
  color,
@@ -544,31 +560,33 @@ class CrosshairsTool extends AnnotationTool {
544
560
  newRtpoints.push(rotHandleWorldOne, rotHandleWorldTwo);
545
561
  const slabThicknessHandlesActive = data.handles.activeOperation === OPERATION.SLAB;
546
562
  const slabThicknessHandles = [line[11], line[12], line[13], line[14]];
547
- const slabThicknessHandleWorldOne = [
548
- viewport.canvasToWorld(line[11]),
549
- otherViewport,
550
- line[5],
551
- line[6],
552
- ];
553
- const slabThicknessHandleWorldTwo = [
554
- viewport.canvasToWorld(line[12]),
555
- otherViewport,
556
- line[5],
557
- line[6],
558
- ];
559
- const slabThicknessHandleWorldThree = [
560
- viewport.canvasToWorld(line[13]),
561
- otherViewport,
562
- line[7],
563
- line[8],
564
- ];
565
- const slabThicknessHandleWorldFour = [
566
- viewport.canvasToWorld(line[14]),
567
- otherViewport,
568
- line[7],
569
- line[8],
570
- ];
571
- newStpoints.push(slabThicknessHandleWorldOne, slabThicknessHandleWorldTwo, slabThicknessHandleWorldThree, slabThicknessHandleWorldFour);
563
+ if (!minimalCrosshairConfig.enabled) {
564
+ const slabThicknessHandleWorldOne = [
565
+ viewport.canvasToWorld(line[11]),
566
+ otherViewport,
567
+ line[5],
568
+ line[6],
569
+ ];
570
+ const slabThicknessHandleWorldTwo = [
571
+ viewport.canvasToWorld(line[12]),
572
+ otherViewport,
573
+ line[5],
574
+ line[6],
575
+ ];
576
+ const slabThicknessHandleWorldThree = [
577
+ viewport.canvasToWorld(line[13]),
578
+ otherViewport,
579
+ line[7],
580
+ line[8],
581
+ ];
582
+ const slabThicknessHandleWorldFour = [
583
+ viewport.canvasToWorld(line[14]),
584
+ otherViewport,
585
+ line[7],
586
+ line[8],
587
+ ];
588
+ newStpoints.push(slabThicknessHandleWorldOne, slabThicknessHandleWorldTwo, slabThicknessHandleWorldThree, slabThicknessHandleWorldFour);
589
+ }
572
590
  let handleRadius = this.configuration.handleRadius *
573
591
  (this.configuration.enableHDPIHandles ? window.devicePixelRatio : 1);
574
592
  let opacity = 1;
@@ -905,6 +923,7 @@ class CrosshairsTool extends AnnotationTool {
905
923
  emitEvent: true,
906
924
  updateViewportCameras: false,
907
925
  });
926
+ viewport.render();
908
927
  state.isInteractingWithTool = false;
909
928
  return true;
910
929
  };
@@ -1581,6 +1600,7 @@ class CrosshairsTool extends AnnotationTool {
1581
1600
  }
1582
1601
  }
1583
1602
  _getRotationHandleNearImagePoint(viewport, annotation, canvasCoords, proximity) {
1603
+ const minimalCrosshairConfig = getMinimalCrosshairConfig(this.configuration);
1584
1604
  const { data } = annotation;
1585
1605
  const { rotationPoints } = data.handles;
1586
1606
  for (let i = 0; i < rotationPoints.length; i++) {
@@ -1590,7 +1610,8 @@ class CrosshairsTool extends AnnotationTool {
1590
1610
  if (!viewportControllable) {
1591
1611
  continue;
1592
1612
  }
1593
- const viewportDraggableRotatable = this._getReferenceLineDraggableRotatable(otherViewport.id);
1613
+ const viewportDraggableRotatable = !minimalCrosshairConfig.enabled &&
1614
+ this._getReferenceLineDraggableRotatable(otherViewport.id);
1594
1615
  if (!viewportDraggableRotatable) {
1595
1616
  continue;
1596
1617
  }
@@ -1606,6 +1627,7 @@ class CrosshairsTool extends AnnotationTool {
1606
1627
  return null;
1607
1628
  }
1608
1629
  _getSlabThicknessHandleNearImagePoint(viewport, annotation, canvasCoords, proximity) {
1630
+ const minimalCrosshairConfig = getMinimalCrosshairConfig(this.configuration);
1609
1631
  const { data } = annotation;
1610
1632
  const { slabThicknessPoints } = data.handles;
1611
1633
  for (let i = 0; i < slabThicknessPoints.length; i++) {
@@ -1615,7 +1637,8 @@ class CrosshairsTool extends AnnotationTool {
1615
1637
  if (!viewportControllable) {
1616
1638
  continue;
1617
1639
  }
1618
- const viewportSlabThicknessControlsOn = this._getReferenceLineSlabThicknessControlsOn(otherViewport.id);
1640
+ const viewportSlabThicknessControlsOn = !minimalCrosshairConfig.enabled &&
1641
+ this._getReferenceLineSlabThicknessControlsOn(otherViewport.id);
1619
1642
  if (!viewportSlabThicknessControlsOn) {
1620
1643
  continue;
1621
1644
  }
@@ -1632,6 +1655,7 @@ class CrosshairsTool extends AnnotationTool {
1632
1655
  return null;
1633
1656
  }
1634
1657
  _pointNearTool(element, annotation, canvasCoords, proximity) {
1658
+ const minimalCrosshairConfig = getMinimalCrosshairConfig(this.configuration);
1635
1659
  const enabledElement = getEnabledElement(element);
1636
1660
  const { viewport } = enabledElement;
1637
1661
  const { clientWidth, clientHeight } = viewport.canvas;
@@ -1644,7 +1668,8 @@ class CrosshairsTool extends AnnotationTool {
1644
1668
  const otherViewport = rotationPoints[i][1];
1645
1669
  const viewportControllable = this._getReferenceLineControllable(otherViewport.id);
1646
1670
  const viewportDraggableRotatable = this._getReferenceLineDraggableRotatable(otherViewport.id);
1647
- if (!viewportControllable || !viewportDraggableRotatable) {
1671
+ if (!viewportControllable ||
1672
+ (!viewportDraggableRotatable && !minimalCrosshairConfig.enabled)) {
1648
1673
  continue;
1649
1674
  }
1650
1675
  const lineSegment1 = {
@@ -1681,7 +1706,8 @@ class CrosshairsTool extends AnnotationTool {
1681
1706
  continue;
1682
1707
  }
1683
1708
  const viewportControllable = this._getReferenceLineControllable(otherViewport.id);
1684
- const viewportSlabThicknessControlsOn = this._getReferenceLineSlabThicknessControlsOn(otherViewport.id);
1709
+ const viewportSlabThicknessControlsOn = !minimalCrosshairConfig.enabled &&
1710
+ this._getReferenceLineSlabThicknessControlsOn(otherViewport.id);
1685
1711
  if (!viewportControllable || !viewportSlabThicknessControlsOn) {
1686
1712
  continue;
1687
1713
  }
@@ -1734,5 +1760,33 @@ class CrosshairsTool extends AnnotationTool {
1734
1760
  return data.handles.activeOperation === OPERATION.DRAG ? true : false;
1735
1761
  }
1736
1762
  }
1763
+ CrosshairsTool.minimalModeExamples = new Map([
1764
+ ['Default', { enabled: false, lineLengthInPx: 40 }],
1765
+ ['Minimal 40px', { enabled: true, lineLengthInPx: 40 }],
1766
+ ['Minimal 80px', { enabled: true, lineLengthInPx: 80 }],
1767
+ ]);
1768
+ function getMinimalCrosshairConfig(configuration) {
1769
+ const minimal = configuration?.minimal;
1770
+ if (!minimal?.enabled) {
1771
+ return {
1772
+ enabled: false,
1773
+ lineLengthInPx: 0,
1774
+ };
1775
+ }
1776
+ const lineLengthInPx = typeof minimal.lineLengthInPx === 'number' &&
1777
+ Number.isFinite(minimal.lineLengthInPx)
1778
+ ? minimal.lineLengthInPx
1779
+ : 40;
1780
+ return {
1781
+ enabled: true,
1782
+ lineLengthInPx: Math.max(0, lineLengthInPx),
1783
+ };
1784
+ }
1785
+ function getSegmentMidpoint(start, end) {
1786
+ const midpoint = vec2.create();
1787
+ vec2.add(midpoint, start, end);
1788
+ vec2.scale(midpoint, midpoint, 0.5);
1789
+ return midpoint;
1790
+ }
1737
1791
  CrosshairsTool.toolName = 'Crosshairs';
1738
1792
  export default CrosshairsTool;
@@ -52,7 +52,7 @@ class MagnifyTool extends BaseTool {
52
52
  const { viewport } = enabledElement;
53
53
  const { element } = viewport;
54
54
  const viewportProperties = viewport.getProperties();
55
- const { rotation: originalViewportRotation } = viewport.getViewPresentation();
55
+ const { rotation: originalViewportRotation, flipHorizontal: originalViewportFlipHorizontal, flipVertical: originalViewportFlipVertical, } = viewport.getViewPresentation();
56
56
  const { canvas: canvasPos, world: worldPos } = currentPoints;
57
57
  let magnifyToolElement;
58
58
  magnifyToolElement = element.querySelector('.magnifyTool');
@@ -83,6 +83,8 @@ class MagnifyTool extends BaseTool {
83
83
  magnifyViewport.setProperties(viewportProperties);
84
84
  magnifyViewport.setViewPresentation({
85
85
  rotation: originalViewportRotation,
86
+ flipHorizontal: originalViewportFlipHorizontal,
87
+ flipVertical: originalViewportFlipVertical,
86
88
  });
87
89
  const { parallelScale } = viewport.getCamera();
88
90
  const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
@@ -0,0 +1,45 @@
1
+ import { BaseTool } from './base';
2
+ declare class OrientationControllerTool extends BaseTool {
3
+ static toolName: string;
4
+ private widget;
5
+ private resizeObservers;
6
+ private cameraHandlers;
7
+ private animationFrameHandles;
8
+ private animationTokens;
9
+ constructor(toolProps?: {}, defaultToolProps?: {
10
+ supportedInteractionTypes: string[];
11
+ configuration: {
12
+ enabled: boolean;
13
+ opacity: number;
14
+ size: number;
15
+ position: string;
16
+ colorScheme: string;
17
+ letterColorScheme: string;
18
+ showEdgeFaces: boolean;
19
+ showCornerFaces: boolean;
20
+ keepOrientationUp: boolean;
21
+ highlightColor: number[];
22
+ edgeColor: number[];
23
+ cornerColor: number[];
24
+ restingAmbient: number;
25
+ hoverAmbient: number;
26
+ };
27
+ });
28
+ private _getViewportsInfo;
29
+ private getPositionConfig;
30
+ private getFaceColors;
31
+ private getLetterColors;
32
+ onSetToolEnabled(): void;
33
+ onSetToolDisabled(): void;
34
+ onSetToolConfiguration: () => void;
35
+ private onViewportAdded;
36
+ private onViewportRemoved;
37
+ private removeMarkers;
38
+ private addMarkers;
39
+ private createAnnotatedRhombActor;
40
+ private addMarkerToViewport;
41
+ private onCameraModified;
42
+ private updateMarkerPosition;
43
+ private animateCameraToOrientation;
44
+ }
45
+ export default OrientationControllerTool;