@cornerstonejs/tools 2.0.0-beta.2 → 2.0.0-beta.4
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.
- package/dist/cjs/drawingSvg/getSvgDrawingHelper.js +1 -1
- package/dist/cjs/drawingSvg/getSvgDrawingHelper.js.map +1 -1
- package/dist/cjs/enums/Events.d.ts +1 -0
- package/dist/cjs/enums/Events.js +1 -0
- package/dist/cjs/enums/Events.js.map +1 -1
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +41 -0
- package/dist/cjs/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +39 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithModesForMouseEvent.d.ts +1 -1
- package/dist/cjs/eventDispatchers/shared/getToolsWithModesForTouchEvent.d.ts +1 -1
- package/dist/cjs/eventListeners/keyboard/keyDownListener.js +1 -2
- package/dist/cjs/eventListeners/keyboard/keyDownListener.js.map +1 -1
- package/dist/cjs/eventListeners/mouse/mouseDownListener.js +5 -1
- package/dist/cjs/eventListeners/mouse/mouseDownListener.js.map +1 -1
- package/dist/cjs/eventListeners/mouse/mouseMoveListener.js +5 -1
- package/dist/cjs/eventListeners/mouse/mouseMoveListener.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +5 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +4 -8
- package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +2 -3
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentations.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/addSegmentations.js +1 -5
- package/dist/cjs/stateManagement/segmentation/addSegmentations.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +36 -2
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/cjs/store/state.js +1 -5
- package/dist/cjs/store/state.js.map +1 -1
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +1 -1
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
- package/dist/cjs/synchronizers/synchronizers/createVOISynchronizer.d.ts +1 -1
- package/dist/cjs/tools/AdvancedMagnifyTool.d.ts +36 -0
- package/dist/cjs/tools/AdvancedMagnifyTool.js +448 -0
- package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -0
- package/dist/cjs/tools/AdvancedMagnifyViewport.d.ts +76 -0
- package/dist/cjs/tools/AdvancedMagnifyViewport.js +352 -0
- package/dist/cjs/tools/AdvancedMagnifyViewport.js.map +1 -0
- package/dist/cjs/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
- package/dist/cjs/tools/AdvancedMagnifyViewportManager.js +133 -0
- package/dist/cjs/tools/AdvancedMagnifyViewportManager.js.map +1 -0
- package/dist/cjs/tools/MagnifyTool.js +2 -2
- package/dist/cjs/tools/MagnifyTool.js.map +1 -1
- package/dist/cjs/tools/OrientationMarkerTool.d.ts +88 -0
- package/dist/cjs/tools/OrientationMarkerTool.js +193 -0
- package/dist/cjs/tools/OrientationMarkerTool.js.map +1 -0
- package/dist/cjs/tools/OverlayGridTool.d.ts +31 -0
- package/dist/cjs/tools/OverlayGridTool.js +170 -0
- package/dist/cjs/tools/OverlayGridTool.js.map +1 -0
- package/dist/cjs/tools/ReferenceLinesTool.d.ts +3 -0
- package/dist/cjs/tools/ReferenceLinesTool.js +71 -2
- package/dist/cjs/tools/ReferenceLinesTool.js.map +1 -1
- package/dist/cjs/tools/annotation/AngleTool.js +2 -1
- package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/BidirectionalTool.js +1 -1
- package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/cjs/tools/annotation/CircleROITool.d.ts +1 -2
- package/dist/cjs/tools/annotation/CircleROITool.js +8 -8
- package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/CobbAngleTool.d.ts +31 -5
- package/dist/cjs/tools/annotation/CobbAngleTool.js +268 -71
- package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/DragProbeTool.js +4 -3
- package/dist/cjs/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.d.ts +2 -3
- package/dist/cjs/tools/annotation/EllipticalROITool.js +20 -16
- package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/LengthTool.js +1 -1
- package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +1 -2
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +22 -9
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.d.ts +1 -2
- package/dist/cjs/tools/annotation/ProbeTool.js +10 -9
- package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/RectangleROITool.d.ts +1 -1
- package/dist/cjs/tools/annotation/RectangleROITool.js +9 -9
- package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationDisplayTool.js +4 -0
- package/dist/cjs/tools/base/AnnotationDisplayTool.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.d.ts +1 -1
- package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
- package/dist/cjs/tools/displayTools/Contour/contourConfigCache.d.ts +1 -1
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +3 -0
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/cjs/tools/index.d.ts +4 -1
- package/dist/cjs/tools/index.js +7 -1
- package/dist/cjs/tools/index.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/eraseCircle.d.ts +1 -1
- package/dist/cjs/tools/segmentation/strategies/eraseRectangle.d.ts +1 -1
- package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillCircle.d.ts +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillRectangle.d.ts +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +1 -1
- package/dist/cjs/types/AnnotationGroupSelector.d.ts +1 -1
- package/dist/cjs/types/AnnotationStyle.d.ts +7 -7
- package/dist/cjs/types/AnnotationTypes.d.ts +4 -4
- package/dist/cjs/types/BoundsIJK.d.ts +1 -1
- package/dist/cjs/types/CINETypes.d.ts +2 -2
- package/dist/cjs/types/CalculatorTypes.d.ts +1 -1
- package/dist/cjs/types/ContourTypes.d.ts +3 -3
- package/dist/cjs/types/CursorTypes.d.ts +2 -2
- package/dist/cjs/types/EventTypes.d.ts +88 -80
- package/dist/cjs/types/FloodFillTypes.d.ts +5 -5
- package/dist/cjs/types/IDistance.d.ts +1 -1
- package/dist/cjs/types/IPoints.d.ts +1 -1
- package/dist/cjs/types/ISetToolModeOptions.d.ts +5 -5
- package/dist/cjs/types/IToolClassReference.d.ts +1 -1
- package/dist/cjs/types/IToolGroup.d.ts +3 -0
- package/dist/cjs/types/ITouchPoints.d.ts +1 -1
- package/dist/cjs/types/InteractionTypes.d.ts +1 -1
- package/dist/cjs/types/InternalToolTypes.d.ts +3 -3
- package/dist/cjs/types/JumpToSliceOptions.d.ts +1 -1
- package/dist/cjs/types/LabelmapTypes.d.ts +3 -3
- package/dist/cjs/types/PlanarBoundingBox.d.ts +1 -1
- package/dist/cjs/types/SVGDrawingHelper.d.ts +1 -1
- package/dist/cjs/types/ScrollOptions.d.ts +1 -1
- package/dist/cjs/types/SegmentationStateTypes.d.ts +15 -15
- package/dist/cjs/types/ToolAction.d.ts +8 -0
- package/dist/cjs/types/ToolAction.js +3 -0
- package/dist/cjs/types/ToolAction.js.map +1 -0
- package/dist/cjs/types/ToolHandle.d.ts +3 -3
- package/dist/cjs/types/ToolProps.d.ts +4 -4
- package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +55 -0
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/utilities/getModalityUnit.d.ts +1 -1
- package/dist/cjs/utilities/getModalityUnit.js +5 -2
- package/dist/cjs/utilities/getModalityUnit.js.map +1 -1
- package/dist/cjs/utilities/getToolsWithModesForElement.d.ts +1 -1
- package/dist/cjs/utilities/index.d.ts +2 -2
- package/dist/cjs/utilities/index.js +4 -3
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +3 -1
- package/dist/cjs/utilities/math/angle/angleBetweenLines.js +18 -1
- package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +1 -1
- package/dist/cjs/utilities/math/basic/BasicStatsCalculator.js.map +1 -1
- package/dist/cjs/utilities/math/circle/_types.d.ts +1 -1
- package/dist/cjs/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +1 -1
- package/dist/cjs/utilities/math/ellipse/pointInEllipse.d.ts +1 -1
- package/dist/cjs/utilities/math/ellipse/pointInEllipsoidWithConstraint.d.ts +1 -1
- package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +3 -3
- package/dist/cjs/utilities/math/sphere/pointInSphere.d.ts +1 -1
- package/dist/cjs/utilities/pointInShapeCallback.d.ts +3 -3
- package/dist/cjs/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.d.ts +1 -1
- package/dist/cjs/utilities/segmentation/createLabelmapVolumeForViewport.d.ts +8 -8
- package/dist/cjs/utilities/segmentation/createLabelmapVolumeForViewport.js +1 -2
- package/dist/cjs/utilities/segmentation/createLabelmapVolumeForViewport.js.map +1 -1
- package/dist/cjs/utilities/segmentation/rectangleROIThresholdVolumeByRange.d.ts +2 -2
- package/dist/cjs/utilities/segmentation/thresholdVolumeByRange.d.ts +1 -1
- package/dist/cjs/utilities/segmentation/utilities.d.ts +1 -1
- package/dist/cjs/utilities/stackPrefetch/index.d.ts +3 -2
- package/dist/cjs/utilities/stackPrefetch/index.js +8 -6
- package/dist/cjs/utilities/stackPrefetch/index.js.map +1 -1
- package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
- package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js +227 -0
- package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js +23 -93
- package/dist/cjs/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
- package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
- package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js +85 -0
- package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
- package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
- package/dist/esm/drawingSvg/getSvgDrawingHelper.js.map +1 -1
- package/dist/esm/enums/Events.d.ts +1 -0
- package/dist/esm/enums/Events.js +1 -0
- package/dist/esm/enums/Events.js.map +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +6 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js.map +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.d.ts +2 -0
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +35 -0
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js.map +1 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts +3 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +32 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.d.ts +1 -1
- package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.d.ts +1 -1
- package/dist/esm/eventListeners/keyboard/keyDownListener.js +1 -2
- package/dist/esm/eventListeners/keyboard/keyDownListener.js.map +1 -1
- package/dist/esm/eventListeners/mouse/mouseDownListener.js +5 -1
- package/dist/esm/eventListeners/mouse/mouseDownListener.js.map +1 -1
- package/dist/esm/eventListeners/mouse/mouseMoveListener.js +5 -1
- package/dist/esm/eventListeners/mouse/mouseMoveListener.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +4 -5
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +2 -3
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/addSegmentations.js +1 -2
- package/dist/esm/stateManagement/segmentation/addSegmentations.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +36 -3
- package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/esm/store/state.js +9 -2
- package/dist/esm/store/state.js.map +1 -1
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +1 -1
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
- package/dist/esm/synchronizers/synchronizers/createVOISynchronizer.d.ts +1 -1
- package/dist/esm/tools/AdvancedMagnifyTool.d.ts +36 -0
- package/dist/esm/tools/AdvancedMagnifyTool.js +440 -0
- package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -0
- package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +76 -0
- package/dist/esm/tools/AdvancedMagnifyViewport.js +346 -0
- package/dist/esm/tools/AdvancedMagnifyViewport.js.map +1 -0
- package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +36 -0
- package/dist/esm/tools/AdvancedMagnifyViewportManager.js +128 -0
- package/dist/esm/tools/AdvancedMagnifyViewportManager.js.map +1 -0
- package/dist/esm/tools/MagnifyTool.js +2 -2
- package/dist/esm/tools/MagnifyTool.js.map +1 -1
- package/dist/esm/tools/OrientationMarkerTool.d.ts +88 -0
- package/dist/esm/tools/OrientationMarkerTool.js +185 -0
- package/dist/esm/tools/OrientationMarkerTool.js.map +1 -0
- package/dist/esm/tools/OverlayGridTool.d.ts +31 -0
- package/dist/esm/tools/OverlayGridTool.js +165 -0
- package/dist/esm/tools/OverlayGridTool.js.map +1 -0
- package/dist/esm/tools/ReferenceLinesTool.d.ts +3 -0
- package/dist/esm/tools/ReferenceLinesTool.js +71 -2
- package/dist/esm/tools/ReferenceLinesTool.js.map +1 -1
- package/dist/esm/tools/annotation/AngleTool.js +2 -1
- package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/esm/tools/annotation/CircleROITool.d.ts +1 -2
- package/dist/esm/tools/annotation/CircleROITool.js +8 -8
- package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/CobbAngleTool.d.ts +31 -5
- package/dist/esm/tools/annotation/CobbAngleTool.js +275 -72
- package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/DragProbeTool.js +4 -3
- package/dist/esm/tools/annotation/DragProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.d.ts +2 -3
- package/dist/esm/tools/annotation/EllipticalROITool.js +20 -16
- package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +1 -1
- package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +1 -2
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +22 -9
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/ProbeTool.d.ts +1 -2
- package/dist/esm/tools/annotation/ProbeTool.js +10 -9
- package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/RectangleROITool.d.ts +1 -1
- package/dist/esm/tools/annotation/RectangleROITool.js +9 -9
- package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/esm/tools/base/AnnotationDisplayTool.js +3 -0
- package/dist/esm/tools/base/AnnotationDisplayTool.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.d.ts +1 -1
- package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
- package/dist/esm/tools/displayTools/Contour/contourConfigCache.d.ts +1 -1
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -1
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/esm/tools/index.d.ts +4 -1
- package/dist/esm/tools/index.js +4 -1
- package/dist/esm/tools/index.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/eraseCircle.d.ts +1 -1
- package/dist/esm/tools/segmentation/strategies/eraseRectangle.d.ts +1 -1
- package/dist/esm/tools/segmentation/strategies/eraseSphere.d.ts +1 -1
- package/dist/esm/tools/segmentation/strategies/fillCircle.d.ts +1 -1
- package/dist/esm/tools/segmentation/strategies/fillRectangle.d.ts +1 -1
- package/dist/esm/tools/segmentation/strategies/fillSphere.d.ts +1 -1
- package/dist/esm/types/AnnotationGroupSelector.d.ts +1 -1
- package/dist/esm/types/AnnotationStyle.d.ts +7 -7
- package/dist/esm/types/AnnotationTypes.d.ts +4 -4
- package/dist/esm/types/BoundsIJK.d.ts +1 -1
- package/dist/esm/types/CINETypes.d.ts +2 -2
- package/dist/esm/types/CalculatorTypes.d.ts +1 -1
- package/dist/esm/types/ContourTypes.d.ts +3 -3
- package/dist/esm/types/CursorTypes.d.ts +2 -2
- package/dist/esm/types/EventTypes.d.ts +88 -80
- package/dist/esm/types/FloodFillTypes.d.ts +5 -5
- package/dist/esm/types/IDistance.d.ts +1 -1
- package/dist/esm/types/IPoints.d.ts +1 -1
- package/dist/esm/types/ISetToolModeOptions.d.ts +5 -5
- package/dist/esm/types/IToolClassReference.d.ts +1 -1
- package/dist/esm/types/IToolGroup.d.ts +3 -0
- package/dist/esm/types/ITouchPoints.d.ts +1 -1
- package/dist/esm/types/InteractionTypes.d.ts +1 -1
- package/dist/esm/types/InternalToolTypes.d.ts +3 -3
- package/dist/esm/types/JumpToSliceOptions.d.ts +1 -1
- package/dist/esm/types/LabelmapTypes.d.ts +3 -3
- package/dist/esm/types/PlanarBoundingBox.d.ts +1 -1
- package/dist/esm/types/SVGDrawingHelper.d.ts +1 -1
- package/dist/esm/types/ScrollOptions.d.ts +1 -1
- package/dist/esm/types/SegmentationStateTypes.d.ts +15 -15
- package/dist/esm/types/ToolAction.d.ts +8 -0
- package/dist/esm/types/ToolAction.js +2 -0
- package/dist/esm/types/ToolAction.js.map +1 -0
- package/dist/esm/types/ToolHandle.d.ts +3 -3
- package/dist/esm/types/ToolProps.d.ts +4 -4
- package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +55 -0
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/esm/utilities/getModalityUnit.d.ts +1 -1
- package/dist/esm/utilities/getModalityUnit.js +5 -2
- package/dist/esm/utilities/getModalityUnit.js.map +1 -1
- package/dist/esm/utilities/getToolsWithModesForElement.d.ts +1 -1
- package/dist/esm/utilities/index.d.ts +2 -2
- package/dist/esm/utilities/index.js +2 -2
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +3 -1
- package/dist/esm/utilities/math/angle/angleBetweenLines.js +19 -2
- package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +1 -1
- package/dist/esm/utilities/math/basic/BasicStatsCalculator.js.map +1 -1
- package/dist/esm/utilities/math/circle/_types.d.ts +1 -1
- package/dist/esm/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +1 -1
- package/dist/esm/utilities/math/ellipse/pointInEllipse.d.ts +1 -1
- package/dist/esm/utilities/math/ellipse/pointInEllipsoidWithConstraint.d.ts +1 -1
- package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +3 -3
- package/dist/esm/utilities/math/sphere/pointInSphere.d.ts +1 -1
- package/dist/esm/utilities/pointInShapeCallback.d.ts +3 -3
- package/dist/esm/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.d.ts +1 -1
- package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.d.ts +8 -8
- package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +1 -2
- package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js.map +1 -1
- package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.d.ts +2 -2
- package/dist/esm/utilities/segmentation/thresholdVolumeByRange.d.ts +1 -1
- package/dist/esm/utilities/segmentation/utilities.d.ts +1 -1
- package/dist/esm/utilities/stackPrefetch/index.d.ts +3 -2
- package/dist/esm/utilities/stackPrefetch/index.js +3 -2
- package/dist/esm/utilities/stackPrefetch/index.js.map +1 -1
- package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.d.ts +16 -0
- package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +220 -0
- package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -0
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.d.ts +7 -1
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.js +12 -79
- package/dist/esm/utilities/stackPrefetch/stackPrefetch.js.map +1 -1
- package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.d.ts +14 -0
- package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +77 -0
- package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/drawingSvg/getSvgDrawingHelper.ts +4 -1
- package/src/enums/Events.ts +9 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +11 -2
- package/src/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.ts +72 -0
- package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +66 -0
- package/src/eventListeners/keyboard/keyDownListener.ts +1 -2
- package/src/eventListeners/mouse/mouseDownListener.ts +7 -1
- package/src/eventListeners/mouse/mouseMoveListener.ts +7 -1
- package/src/index.ts +6 -0
- package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +4 -5
- package/src/stateManagement/segmentation/SegmentationStateManager.ts +2 -3
- package/src/stateManagement/segmentation/addSegmentationRepresentations.ts +0 -1
- package/src/stateManagement/segmentation/addSegmentations.ts +1 -2
- package/src/store/ToolGroupManager/ToolGroup.ts +80 -4
- package/src/store/state.ts +9 -3
- package/src/synchronizers/callbacks/stackImageSyncCallback.ts +1 -1
- package/src/tools/AdvancedMagnifyTool.ts +725 -0
- package/src/tools/AdvancedMagnifyViewport.ts +624 -0
- package/src/tools/AdvancedMagnifyViewportManager.ts +291 -0
- package/src/tools/MagnifyTool.ts +2 -2
- package/src/tools/OrientationMarkerTool.ts +235 -0
- package/src/tools/OverlayGridTool.ts +357 -0
- package/src/tools/ReferenceLinesTool.ts +131 -3
- package/src/tools/annotation/AngleTool.ts +4 -1
- package/src/tools/annotation/BidirectionalTool.ts +1 -1
- package/src/tools/annotation/CircleROITool.ts +13 -20
- package/src/tools/annotation/CobbAngleTool.ts +422 -99
- package/src/tools/annotation/DragProbeTool.ts +6 -13
- package/src/tools/annotation/EllipticalROITool.ts +28 -29
- package/src/tools/annotation/LengthTool.ts +1 -1
- package/src/tools/annotation/PlanarFreehandROITool.ts +35 -20
- package/src/tools/annotation/ProbeTool.ts +17 -30
- package/src/tools/annotation/RectangleROITool.ts +15 -19
- package/src/tools/base/AnnotationDisplayTool.ts +4 -0
- package/src/tools/base/AnnotationTool.ts +2 -1
- package/src/tools/displayTools/Contour/contourDisplay.ts +8 -0
- package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +1 -1
- package/src/tools/index.ts +6 -0
- package/src/types/EventTypes.ts +23 -0
- package/src/types/IToolGroup.ts +7 -0
- package/src/types/ToolAction.ts +54 -0
- package/src/types/ToolSpecificAnnotationTypes.ts +58 -0
- package/src/types/index.ts +2 -0
- package/src/utilities/getModalityUnit.ts +8 -2
- package/src/utilities/index.ts +2 -1
- package/src/utilities/math/angle/angleBetweenLines.ts +39 -9
- package/src/utilities/segmentation/createLabelmapVolumeForViewport.ts +9 -10
- package/src/utilities/stackPrefetch/index.ts +3 -7
- package/src/utilities/stackPrefetch/stackContextPrefetch.ts +380 -0
- package/src/utilities/stackPrefetch/stackPrefetch.ts +29 -151
- package/src/utilities/stackPrefetch/stackPrefetchUtils.ts +114 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { imageLoader, Enums, eventTarget, imageLoadPoolManager, cache, getConfiguration as getCoreConfiguration, } from '@cornerstonejs/core';
|
|
2
|
+
import { addToolState, getToolState } from './state';
|
|
3
|
+
import { getStackData, requestType, priority, clearFromImageIds, getPromiseRemovedHandler, } from './stackPrefetchUtils';
|
|
4
|
+
import roundNumber from '../roundNumber';
|
|
5
|
+
let configuration = {
|
|
6
|
+
maxImagesToPrefetch: Infinity,
|
|
7
|
+
minBefore: 2,
|
|
8
|
+
maxAfter: 2,
|
|
9
|
+
directionExtraImages: 10,
|
|
10
|
+
preserveExistingPool: false,
|
|
11
|
+
};
|
|
12
|
+
let resetPrefetchTimeout;
|
|
13
|
+
const resetPrefetchDelay = 5;
|
|
14
|
+
const enable = (element) => {
|
|
15
|
+
const stack = getStackData(element);
|
|
16
|
+
if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
|
|
17
|
+
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
updateToolState(element);
|
|
21
|
+
prefetch(element);
|
|
22
|
+
element.removeEventListener(Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
23
|
+
element.addEventListener(Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
24
|
+
const promiseRemovedHandler = getPromiseRemovedHandler(element);
|
|
25
|
+
eventTarget.removeEventListener(Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
26
|
+
eventTarget.addEventListener(Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
27
|
+
};
|
|
28
|
+
function prefetch(element) {
|
|
29
|
+
const stack = getStackData(element);
|
|
30
|
+
if (!stack?.imageIds?.length) {
|
|
31
|
+
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const stackPrefetchData = getToolState(element);
|
|
35
|
+
if (!stackPrefetchData) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const stackPrefetch = stackPrefetchData || {};
|
|
39
|
+
stackPrefetch.enabled &&= stackPrefetch.indicesToRequest?.length;
|
|
40
|
+
if (stackPrefetch.enabled === false) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
function removeFromList(imageIdIndex) {
|
|
44
|
+
const index = stackPrefetch.indicesToRequest.indexOf(imageIdIndex);
|
|
45
|
+
if (index > -1) {
|
|
46
|
+
stackPrefetch.indicesToRequest.splice(index, 1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const indicesToRequestCopy = stackPrefetch.indicesToRequest.slice();
|
|
50
|
+
const { currentImageIdIndex } = stack;
|
|
51
|
+
indicesToRequestCopy.forEach((imageIdIndex) => {
|
|
52
|
+
const imageId = stack.imageIds[imageIdIndex];
|
|
53
|
+
if (!imageId) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const distance = Math.abs(currentImageIdIndex - imageIdIndex);
|
|
57
|
+
const imageCached = distance < 6
|
|
58
|
+
? cache.getImageLoadObject(imageId)
|
|
59
|
+
: cache.isLoaded(imageId);
|
|
60
|
+
if (imageCached) {
|
|
61
|
+
removeFromList(imageIdIndex);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (!stackPrefetch.indicesToRequest.length) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!configuration.preserveExistingPool) {
|
|
68
|
+
imageLoadPoolManager.filterRequests(clearFromImageIds(stack));
|
|
69
|
+
}
|
|
70
|
+
function doneCallback(imageId) {
|
|
71
|
+
const imageIdIndex = stack.imageIds.indexOf(imageId);
|
|
72
|
+
removeFromList(imageIdIndex);
|
|
73
|
+
const image = cache.getCachedImageBasedOnImageURI(imageId);
|
|
74
|
+
const { stats } = stackPrefetch;
|
|
75
|
+
const decodeTimeInMS = image?.image?.decodeTimeInMS || 0;
|
|
76
|
+
if (decodeTimeInMS) {
|
|
77
|
+
stats.imageIds.set(imageId, decodeTimeInMS);
|
|
78
|
+
stats.decodeTimeInMS += decodeTimeInMS;
|
|
79
|
+
const loadTimeInMS = image?.image?.loadTimeInMS || 0;
|
|
80
|
+
stats.loadTimeInMS += loadTimeInMS;
|
|
81
|
+
}
|
|
82
|
+
if (!stackPrefetch.indicesToRequest.length) {
|
|
83
|
+
if (image?.sizeInBytes) {
|
|
84
|
+
const { sizeInBytes } = image;
|
|
85
|
+
const usage = cache.getMaxCacheSize() / 4 / sizeInBytes;
|
|
86
|
+
if (!stackPrefetch.cacheFill) {
|
|
87
|
+
stats.initialTime = Date.now() - stats.start;
|
|
88
|
+
stats.initialSize = stats.imageIds.size;
|
|
89
|
+
updateToolState(element, usage);
|
|
90
|
+
prefetch(element);
|
|
91
|
+
}
|
|
92
|
+
else if (stats.imageIds.size) {
|
|
93
|
+
stats.fillTime = Date.now() - stats.start;
|
|
94
|
+
const { size } = stats.imageIds;
|
|
95
|
+
stats.fillSize = size;
|
|
96
|
+
console.log('Done cache fill', stats.fillTime, 'ms', size, 'items', 'average total time', roundNumber(stats.fillTime / size), 'ms', 'average load', roundNumber(stats.loadTimeInMS / size), 'ms', 'average decode', roundNumber(stats.decodeTimeInMS / size), 'ms');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const requestFn = (imageId, options) => imageLoader
|
|
102
|
+
.loadAndCacheImage(imageId, options)
|
|
103
|
+
.then(() => doneCallback(imageId));
|
|
104
|
+
const { useNorm16Texture } = getCoreConfiguration().rendering;
|
|
105
|
+
indicesToRequestCopy.forEach((imageIdIndex) => {
|
|
106
|
+
const imageId = stack.imageIds[imageIdIndex];
|
|
107
|
+
const options = {
|
|
108
|
+
targetBuffer: {
|
|
109
|
+
type: useNorm16Texture ? undefined : 'Float32Array',
|
|
110
|
+
},
|
|
111
|
+
preScale: {
|
|
112
|
+
enabled: true,
|
|
113
|
+
},
|
|
114
|
+
requestType,
|
|
115
|
+
};
|
|
116
|
+
imageLoadPoolManager.addRequest(requestFn.bind(null, imageId, options), requestType, {
|
|
117
|
+
imageId,
|
|
118
|
+
}, priority);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function onImageUpdated(e) {
|
|
122
|
+
clearTimeout(resetPrefetchTimeout);
|
|
123
|
+
resetPrefetchTimeout = setTimeout(function () {
|
|
124
|
+
const element = e.target;
|
|
125
|
+
try {
|
|
126
|
+
updateToolState(element);
|
|
127
|
+
prefetch(element);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
}, resetPrefetchDelay);
|
|
133
|
+
}
|
|
134
|
+
const signum = (x) => (x < 0 ? -1 : 1);
|
|
135
|
+
const updateToolState = (element, usage) => {
|
|
136
|
+
const stack = getStackData(element);
|
|
137
|
+
if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
|
|
138
|
+
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const { currentImageIdIndex } = stack;
|
|
142
|
+
let { maxAfter = 2, minBefore = 2 } = configuration;
|
|
143
|
+
const { directionExtraImages = 10 } = configuration;
|
|
144
|
+
const stackPrefetchData = getToolState(element) || {
|
|
145
|
+
indicesToRequest: [],
|
|
146
|
+
currentImageIdIndex,
|
|
147
|
+
stackCount: 0,
|
|
148
|
+
enabled: true,
|
|
149
|
+
direction: 1,
|
|
150
|
+
stats: {
|
|
151
|
+
start: Date.now(),
|
|
152
|
+
imageIds: new Map(),
|
|
153
|
+
decodeTimeInMS: 0,
|
|
154
|
+
loadTimeInMS: 0,
|
|
155
|
+
totalBytes: 0,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const delta = currentImageIdIndex - stackPrefetchData.currentImageIdIndex;
|
|
159
|
+
stackPrefetchData.direction = signum(delta);
|
|
160
|
+
stackPrefetchData.currentImageIdIndex = currentImageIdIndex;
|
|
161
|
+
stackPrefetchData.enabled = true;
|
|
162
|
+
if (stackPrefetchData.stackCount < 100) {
|
|
163
|
+
stackPrefetchData.stackCount += directionExtraImages;
|
|
164
|
+
}
|
|
165
|
+
if (Math.abs(delta) > maxAfter || !delta) {
|
|
166
|
+
stackPrefetchData.stackCount = 0;
|
|
167
|
+
if (usage) {
|
|
168
|
+
const positionFraction = currentImageIdIndex / stack.imageIds.length;
|
|
169
|
+
minBefore = Math.ceil(usage * positionFraction);
|
|
170
|
+
maxAfter = Math.ceil(usage * (1 - positionFraction));
|
|
171
|
+
stackPrefetchData.cacheFill = true;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
stackPrefetchData.cacheFill = false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else if (delta < 0) {
|
|
178
|
+
minBefore += stackPrefetchData.stackCount;
|
|
179
|
+
maxAfter = 0;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
maxAfter += stackPrefetchData.stackCount;
|
|
183
|
+
minBefore = 0;
|
|
184
|
+
}
|
|
185
|
+
const minIndex = Math.max(0, currentImageIdIndex - minBefore);
|
|
186
|
+
const maxIndex = Math.min(stack.imageIds.length - 1, currentImageIdIndex + maxAfter);
|
|
187
|
+
const indicesToRequest = [];
|
|
188
|
+
for (let i = currentImageIdIndex + 1; i <= maxIndex; i++) {
|
|
189
|
+
indicesToRequest.push(i);
|
|
190
|
+
}
|
|
191
|
+
for (let i = currentImageIdIndex - 1; i >= minIndex; i--) {
|
|
192
|
+
indicesToRequest.push(i);
|
|
193
|
+
}
|
|
194
|
+
stackPrefetchData.indicesToRequest = indicesToRequest;
|
|
195
|
+
addToolState(element, stackPrefetchData);
|
|
196
|
+
};
|
|
197
|
+
function disable(element) {
|
|
198
|
+
clearTimeout(resetPrefetchTimeout);
|
|
199
|
+
element.removeEventListener(Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
200
|
+
const promiseRemovedHandler = getPromiseRemovedHandler(element);
|
|
201
|
+
eventTarget.removeEventListener(Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
202
|
+
const stackPrefetchData = getToolState(element);
|
|
203
|
+
if (stackPrefetchData && stackPrefetchData.data.length) {
|
|
204
|
+
stackPrefetchData.enabled = false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function getConfiguration() {
|
|
208
|
+
return configuration;
|
|
209
|
+
}
|
|
210
|
+
function setConfiguration(config) {
|
|
211
|
+
configuration = config;
|
|
212
|
+
}
|
|
213
|
+
const stackContextPrefetch = {
|
|
214
|
+
enable,
|
|
215
|
+
disable,
|
|
216
|
+
getConfiguration,
|
|
217
|
+
setConfiguration,
|
|
218
|
+
};
|
|
219
|
+
export default stackContextPrefetch;
|
|
220
|
+
//# sourceMappingURL=stackContextPrefetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackContextPrefetch.js","sourceRoot":"","sources":["../../../../src/utilities/stackPrefetch/stackContextPrefetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,10 @@ declare function getConfiguration(): {
|
|
|
5
5
|
preserveExistingPool: boolean;
|
|
6
6
|
};
|
|
7
7
|
declare function setConfiguration(config: any): void;
|
|
8
|
-
|
|
8
|
+
declare const stackPrefetch: {
|
|
9
|
+
enable: typeof enable;
|
|
10
|
+
disable: typeof disable;
|
|
11
|
+
getConfiguration: typeof getConfiguration;
|
|
12
|
+
setConfiguration: typeof setConfiguration;
|
|
13
|
+
};
|
|
14
|
+
export default stackPrefetch;
|
|
@@ -1,54 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { imageLoader, Enums, eventTarget, imageLoadPoolManager, cache, getConfiguration as getCoreConfiguration, } from '@cornerstonejs/core';
|
|
2
2
|
import { addToolState, getToolState } from './state';
|
|
3
|
-
|
|
4
|
-
const priority = 0;
|
|
5
|
-
const addToBeginning = true;
|
|
3
|
+
import { getStackData, requestType, priority, getPromiseRemovedHandler, nearestIndex, range, } from './stackPrefetchUtils';
|
|
6
4
|
let configuration = {
|
|
7
5
|
maxImagesToPrefetch: Infinity,
|
|
8
6
|
preserveExistingPool: true,
|
|
9
7
|
};
|
|
10
8
|
let resetPrefetchTimeout;
|
|
11
9
|
const resetPrefetchDelay = 10;
|
|
12
|
-
function range(lowEnd, highEnd) {
|
|
13
|
-
lowEnd = Math.round(lowEnd) || 0;
|
|
14
|
-
highEnd = Math.round(highEnd) || 0;
|
|
15
|
-
const arr = [];
|
|
16
|
-
let c = highEnd - lowEnd + 1;
|
|
17
|
-
if (c <= 0) {
|
|
18
|
-
return arr;
|
|
19
|
-
}
|
|
20
|
-
while (c--) {
|
|
21
|
-
arr[c] = highEnd--;
|
|
22
|
-
}
|
|
23
|
-
return arr;
|
|
24
|
-
}
|
|
25
|
-
function nearestIndex(arr, x) {
|
|
26
|
-
let low = 0;
|
|
27
|
-
let high = arr.length - 1;
|
|
28
|
-
arr.forEach((v, idx) => {
|
|
29
|
-
if (v < x) {
|
|
30
|
-
low = Math.max(idx, low);
|
|
31
|
-
}
|
|
32
|
-
else if (v > x) {
|
|
33
|
-
high = Math.min(idx, high);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
return { low, high };
|
|
37
|
-
}
|
|
38
|
-
function getStackData(element) {
|
|
39
|
-
const enabledElement = getEnabledElement(element);
|
|
40
|
-
if (!enabledElement) {
|
|
41
|
-
throw new Error('stackPrefetch: element must be a valid Cornerstone enabled element');
|
|
42
|
-
}
|
|
43
|
-
const { viewport } = enabledElement;
|
|
44
|
-
if (!(viewport instanceof StackViewport)) {
|
|
45
|
-
throw new Error('stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented');
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
currentImageIdIndex: viewport.getCurrentImageIdIndex(),
|
|
49
|
-
imageIds: viewport.getImageIds(),
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
10
|
function prefetch(element) {
|
|
53
11
|
const stackPrefetchData = getToolState(element);
|
|
54
12
|
if (!stackPrefetchData) {
|
|
@@ -56,14 +14,12 @@ function prefetch(element) {
|
|
|
56
14
|
}
|
|
57
15
|
const stackPrefetch = stackPrefetchData || {};
|
|
58
16
|
const stack = getStackData(element);
|
|
59
|
-
if (!stack
|
|
17
|
+
if (!stack?.imageIds?.length) {
|
|
60
18
|
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
61
19
|
return;
|
|
62
20
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
stackPrefetch.enabled = false;
|
|
66
|
-
}
|
|
21
|
+
const { currentImageIdIndex } = stack;
|
|
22
|
+
stackPrefetch.enabled &&= stackPrefetch.indicesToRequest?.length;
|
|
67
23
|
if (stackPrefetch.enabled === false) {
|
|
68
24
|
return;
|
|
69
25
|
}
|
|
@@ -80,8 +36,11 @@ function prefetch(element) {
|
|
|
80
36
|
if (!imageId) {
|
|
81
37
|
return;
|
|
82
38
|
}
|
|
83
|
-
const
|
|
84
|
-
|
|
39
|
+
const distance = Math.abs(currentImageIdIndex - imageIdIndex);
|
|
40
|
+
const imageCached = distance < 6
|
|
41
|
+
? cache.getImageLoadObject(imageId)
|
|
42
|
+
: cache.isLoaded(imageId);
|
|
43
|
+
if (imageCached) {
|
|
85
44
|
removeFromList(imageIdIndex);
|
|
86
45
|
}
|
|
87
46
|
});
|
|
@@ -143,33 +102,6 @@ function prefetch(element) {
|
|
|
143
102
|
}, priority);
|
|
144
103
|
});
|
|
145
104
|
}
|
|
146
|
-
function getPromiseRemovedHandler(element) {
|
|
147
|
-
return function (e) {
|
|
148
|
-
const eventData = e.detail;
|
|
149
|
-
let stackData;
|
|
150
|
-
try {
|
|
151
|
-
stackData = getStackData(element);
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
if (!stackData || !stackData.imageIds || stackData.imageIds.length === 0) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
const stack = stackData;
|
|
160
|
-
const imageIdIndex = stack.imageIds.indexOf(eventData.imageId);
|
|
161
|
-
if (imageIdIndex < 0) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
const stackPrefetchData = getToolState(element);
|
|
165
|
-
if (!stackPrefetchData ||
|
|
166
|
-
!stackPrefetchData.indicesToRequest ||
|
|
167
|
-
!stackPrefetchData.indicesToRequest.length) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
stackPrefetchData.indicesToRequest.push(imageIdIndex);
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
105
|
function onImageUpdated(e) {
|
|
174
106
|
clearTimeout(resetPrefetchTimeout);
|
|
175
107
|
resetPrefetchTimeout = setTimeout(function () {
|
|
@@ -220,5 +152,6 @@ function getConfiguration() {
|
|
|
220
152
|
function setConfiguration(config) {
|
|
221
153
|
configuration = config;
|
|
222
154
|
}
|
|
223
|
-
|
|
155
|
+
const stackPrefetch = { enable, disable, getConfiguration, setConfiguration };
|
|
156
|
+
export default stackPrefetch;
|
|
224
157
|
//# sourceMappingURL=stackPrefetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackPrefetch.js","sourceRoot":"","sources":["../../../../src/utilities/stackPrefetch/stackPrefetch.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"stackPrefetch.js","sourceRoot":"","sources":["../../../../src/utilities/stackPrefetch/stackPrefetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,KAAK,EACL,WAAW,EACX,oBAAoB,EACpB,KAAK,EACL,gBAAgB,IAAI,oBAAoB,GACzC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,wBAAwB,EACxB,YAAY,EACZ,KAAK,GACN,MAAM,sBAAsB,CAAC;AAE9B,IAAI,aAAa,GAAG;IAClB,mBAAmB,EAAE,QAAQ;IAO7B,oBAAoB,EAAE,IAAI;CAC3B,CAAC;AAEF,IAAI,oBAAoB,CAAC;AACzB,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,QAAQ,CAAC,OAAO;IAEvB,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO;KACR;IAED,MAAM,aAAa,GAAG,iBAAiB,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,OAAO;KACR;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IAGtC,aAAa,CAAC,OAAO,KAAK,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAGjE,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,EAAE;QACnC,OAAO;KACR;IAID,SAAS,cAAc,CAAC,YAAY;QAClC,MAAM,KAAK,GAAG,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEnE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YAEd,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACjD;IACH,CAAC;IAID,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAEpE,oBAAoB,CAAC,OAAO,CAAC,UAAU,YAAY;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,YAAY,CAAC,CAAC;QAO9D,MAAM,WAAW,GACf,QAAQ,GAAG,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,WAAW,EAAE;YAEf,cAAc,CAAC,YAAY,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;IAIH,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC1C,OAAO;KACR;IAGD,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;QACvC,oBAAoB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KACrD;IAGD,MAAM,OAAO,GAAG,YAAY,CAC1B,aAAa,CAAC,gBAAgB,EAC9B,KAAK,CAAC,mBAAmB,CAC1B,CAAC;IAEF,IAAI,OAAO,CAAC;IACZ,IAAI,gBAAgB,CAAC;IACrB,MAAM,YAAY,GAAG,KAAK,CAAC;IAE3B,SAAS,YAAY,CAAC,KAAK;QACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3D,cAAc,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAGD,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAC7B,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAE9B,OACE,UAAU,IAAI,CAAC;QACf,WAAW,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAM,EACnD;QACA,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAC/C,MAAM,eAAe,GACnB,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC;YACzD,aAAa,CAAC,mBAAmB,CAAC;QACpC,MAAM,gBAAgB,GACpB,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,YAAY;YAC1D,aAAa,CAAC,mBAAmB,CAAC;QAEpC,MAAM,eAAe,GAAG,CAAC,eAAe,IAAI,UAAU,IAAI,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GACpB,CAAC,gBAAgB,IAAI,WAAW,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAE3E,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe,EAAE;YACzC,MAAM;SACP;QAED,IAAI,eAAe,EAAE;YACnB,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;YAChE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3C,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClC;QAED,IAAI,gBAAgB,EAAE;YACpB,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;YACjE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3C,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClC;KACF;IAED,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACrC,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,EAAE,CAAC,SAAS,CAAC;IAE9D,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAGrC,MAAM,OAAO,GAAG;YACd,YAAY,EAAE;gBACZ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;aACpD;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;YACD,WAAW;SACZ,CAAC;QAEF,oBAAoB,CAAC,UAAU,CAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EACtC,WAAW,EAEX;YACE,OAAO;SACR,EACD,QAAQ,CAET,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,CAAC;IAGvB,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACnC,oBAAoB,GAAG,UAAU,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;QAIzB,IAAI;YACF,QAAQ,CAAC,OAAO,CAAC,CAAC;SACnB;QAAC,OAAO,KAAK,EAAE;YACd,OAAO;SACR;IACH,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,MAAM,CAAC,OAAO;IACrB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5D,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,OAAO;KACR;IAGD,MAAM,iBAAiB,GAAG;QACxB,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;KACb,CAAC;IAGF,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CACpE,KAAK,CAAC,mBAAmB,CAC1B,CAAC;IAEF,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAElE,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAEzC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAElB,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAEvE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEhE,WAAW,CAAC,mBAAmB,CAC7B,KAAK,CAAC,MAAM,CAAC,yBAAyB,EACtC,qBAAqB,CACtB,CAAC;IACF,WAAW,CAAC,gBAAgB,CAC1B,KAAK,CAAC,MAAM,CAAC,yBAAyB,EACtC,qBAAqB,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,OAAO;IACtB,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACnC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAE1E,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEhE,WAAW,CAAC,mBAAmB,CAC7B,KAAK,CAAC,MAAM,CAAC,yBAAyB,EACtC,qBAAqB,CACtB,CAAC;IAEF,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAGhD,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAClE,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;QAGlC,oBAAoB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KACrD;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAM;IAC9B,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AAE9E,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Enums } from '@cornerstonejs/core';
|
|
2
|
+
export declare const requestType = Enums.RequestType.Prefetch;
|
|
3
|
+
export declare const priority = 0;
|
|
4
|
+
export declare function range(lowEnd: any, highEnd: any): any[];
|
|
5
|
+
export declare function nearestIndex(arr: any, x: any): {
|
|
6
|
+
low: number;
|
|
7
|
+
high: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function getStackData(element: any): {
|
|
10
|
+
currentImageIdIndex: number;
|
|
11
|
+
imageIds: string[];
|
|
12
|
+
};
|
|
13
|
+
export declare function getPromiseRemovedHandler(element: any): (e: any) => void;
|
|
14
|
+
export declare const clearFromImageIds: (stack: any) => (requestDetails: any) => boolean;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { getEnabledElement, StackViewport, Enums } from '@cornerstonejs/core';
|
|
2
|
+
import { getToolState } from './state';
|
|
3
|
+
export const requestType = Enums.RequestType.Prefetch;
|
|
4
|
+
export const priority = 0;
|
|
5
|
+
export function range(lowEnd, highEnd) {
|
|
6
|
+
lowEnd = Math.round(lowEnd) || 0;
|
|
7
|
+
highEnd = Math.round(highEnd) || 0;
|
|
8
|
+
const arr = [];
|
|
9
|
+
let c = highEnd - lowEnd + 1;
|
|
10
|
+
if (c <= 0) {
|
|
11
|
+
return arr;
|
|
12
|
+
}
|
|
13
|
+
while (c--) {
|
|
14
|
+
arr[c] = highEnd--;
|
|
15
|
+
}
|
|
16
|
+
return arr;
|
|
17
|
+
}
|
|
18
|
+
export function nearestIndex(arr, x) {
|
|
19
|
+
let low = 0;
|
|
20
|
+
let high = arr.length - 1;
|
|
21
|
+
arr.forEach((v, idx) => {
|
|
22
|
+
if (v < x) {
|
|
23
|
+
low = Math.max(idx, low);
|
|
24
|
+
}
|
|
25
|
+
else if (v > x) {
|
|
26
|
+
high = Math.min(idx, high);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return { low, high };
|
|
30
|
+
}
|
|
31
|
+
export function getStackData(element) {
|
|
32
|
+
const enabledElement = getEnabledElement(element);
|
|
33
|
+
if (!enabledElement) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const { viewport } = enabledElement;
|
|
37
|
+
if (!(viewport instanceof StackViewport)) {
|
|
38
|
+
throw new Error('stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented');
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
currentImageIdIndex: viewport.getCurrentImageIdIndex(),
|
|
42
|
+
imageIds: viewport.getImageIds(),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function getPromiseRemovedHandler(element) {
|
|
46
|
+
return function (e) {
|
|
47
|
+
const eventData = e.detail;
|
|
48
|
+
let stackData;
|
|
49
|
+
try {
|
|
50
|
+
stackData = getStackData(element);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!stackData || !stackData.imageIds || stackData.imageIds.length === 0) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const stack = stackData;
|
|
59
|
+
const imageIdIndex = stack.imageIds.indexOf(eventData.imageId);
|
|
60
|
+
if (imageIdIndex < 0) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const stackPrefetchData = getToolState(element);
|
|
64
|
+
if (!stackPrefetchData ||
|
|
65
|
+
!stackPrefetchData.data ||
|
|
66
|
+
!stackPrefetchData.data.length) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
stackPrefetchData.indicesToRequest.push(imageIdIndex);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export const clearFromImageIds = (stack) => {
|
|
73
|
+
const imageIdSet = new Set(stack.imageIds);
|
|
74
|
+
return (requestDetails) => requestDetails.type !== requestType ||
|
|
75
|
+
!imageIdSet.has(requestDetails.additionalDetails.imageId);
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=stackPrefetchUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackPrefetchUtils.js","sourceRoot":"","sources":["../../../../src/utilities/stackPrefetch/stackPrefetchUtils.ts"],"names":[],"mappings":"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"}
|