@cornerstonejs/tools 2.0.0-beta.2 → 2.0.0-beta.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.
- 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/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/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +35 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.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/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/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/types/EventTypes.d.ts +9 -1
- package/dist/cjs/types/IToolGroup.d.ts +3 -0
- 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/ToolSpecificAnnotationTypes.d.ts +55 -0
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/utilities/getModalityUnit.js +5 -2
- package/dist/cjs/utilities/getModalityUnit.js.map +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/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/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/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +35 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.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/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/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/types/EventTypes.d.ts +9 -1
- package/dist/esm/types/IToolGroup.d.ts +3 -0
- 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/ToolSpecificAnnotationTypes.d.ts +55 -0
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/esm/utilities/getModalityUnit.js +5 -2
- package/dist/esm/utilities/getModalityUnit.js.map +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/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/mouse/mouseDownListener.ts +7 -1
- package/src/eventListeners/mouse/mouseMoveListener.ts +7 -1
- package/src/index.ts +6 -0
- package/src/store/ToolGroupManager/ToolGroup.ts +79 -2
- 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/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
|
@@ -21,7 +21,10 @@ function _handlePTModality(imageId, options) {
|
|
|
21
21
|
if (options.isSuvScaled) {
|
|
22
22
|
return 'SUV';
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
24
|
+
const generalSeriesModule = core_1.metaData.get('generalSeriesModule', imageId);
|
|
25
|
+
if ((generalSeriesModule === null || generalSeriesModule === void 0 ? void 0 : generalSeriesModule.modality) === 'PT') {
|
|
26
|
+
const petSeriesModule = core_1.metaData.get('petSeriesModule', imageId);
|
|
27
|
+
return (petSeriesModule === null || petSeriesModule === void 0 ? void 0 : petSeriesModule.units) || 'unitless';
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
//# sourceMappingURL=getModalityUnit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getModalityUnit.js","sourceRoot":"","sources":["../../../src/utilities/getModalityUnit.ts"],"names":[],"mappings":";;;AAAA,8CAA+C;AAO/C,SAAS,eAAe,CACtB,QAAgB,EAChB,OAAe,EACf,OAA4B;IAE5B,IAAI,QAAQ,KAAK,IAAI,EAAE;QACrB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE;QAC5B,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC5C;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"getModalityUnit.js","sourceRoot":"","sources":["../../../src/utilities/getModalityUnit.ts"],"names":[],"mappings":";;;AAAA,8CAA+C;AAO/C,SAAS,eAAe,CACtB,QAAgB,EAChB,OAAe,EACf,OAA4B;IAE5B,IAAI,QAAQ,KAAK,IAAI,EAAE;QACrB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE;QAC5B,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC5C;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAqBQ,0CAAe;AAnBxB,SAAS,iBAAiB,CAAC,OAAe,EAAE,OAA4B;IACtE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,mBAAmB,GAAG,eAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAIzE,IAAI,CAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,MAAK,IAAI,EAAE;QAC1C,MAAM,eAAe,GAAG,eAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,KAAI,UAAU,CAAC;KAC7C;AACH,CAAC"}
|
|
@@ -21,9 +21,9 @@ import * as cine from './cine';
|
|
|
21
21
|
import * as boundingBox from './boundingBox';
|
|
22
22
|
import * as planarFreehandROITool from './planarFreehandROITool';
|
|
23
23
|
import * as rectangleROITool from './rectangleROITool';
|
|
24
|
-
import
|
|
24
|
+
import { stackPrefetch, stackContextPrefetch } from './stackPrefetch';
|
|
25
25
|
import * as viewport from './viewport';
|
|
26
26
|
import * as touch from './touch';
|
|
27
27
|
import * as dynamicVolume from './dynamicVolume';
|
|
28
28
|
import { triggerEvent } from '@cornerstonejs/core';
|
|
29
|
-
export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, scroll, roundNumber, };
|
|
29
|
+
export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, triggerAnnotationRender, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, };
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.roundNumber = exports.scroll = exports.stackPrefetch = exports.planarFreehandROITool = exports.rectangleROITool = exports.boundingBox = exports.clip = exports.cine = exports.viewport = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRender = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.touch = exports.isObject = exports.orientation = exports.throttle = exports.dynamicVolume = exports.debounce = exports.drawing = exports.viewportFilters = exports.planar = exports.math = void 0;
|
|
29
|
+
exports.roundNumber = exports.scroll = exports.stackContextPrefetch = exports.stackPrefetch = exports.planarFreehandROITool = exports.rectangleROITool = exports.boundingBox = exports.clip = exports.cine = exports.viewport = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRender = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.touch = exports.isObject = exports.orientation = exports.throttle = exports.dynamicVolume = exports.debounce = exports.drawing = exports.viewportFilters = exports.planar = exports.math = void 0;
|
|
30
30
|
const getAnnotationNearPoint_1 = require("./getAnnotationNearPoint");
|
|
31
31
|
Object.defineProperty(exports, "getAnnotationNearPoint", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPoint; } });
|
|
32
32
|
Object.defineProperty(exports, "getAnnotationNearPointOnEnabledElement", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPointOnEnabledElement; } });
|
|
@@ -74,8 +74,9 @@ const planarFreehandROITool = __importStar(require("./planarFreehandROITool"));
|
|
|
74
74
|
exports.planarFreehandROITool = planarFreehandROITool;
|
|
75
75
|
const rectangleROITool = __importStar(require("./rectangleROITool"));
|
|
76
76
|
exports.rectangleROITool = rectangleROITool;
|
|
77
|
-
const
|
|
78
|
-
exports
|
|
77
|
+
const stackPrefetch_1 = require("./stackPrefetch");
|
|
78
|
+
Object.defineProperty(exports, "stackPrefetch", { enumerable: true, get: function () { return stackPrefetch_1.stackPrefetch; } });
|
|
79
|
+
Object.defineProperty(exports, "stackContextPrefetch", { enumerable: true, get: function () { return stackPrefetch_1.stackContextPrefetch; } });
|
|
79
80
|
const viewport = __importStar(require("./viewport"));
|
|
80
81
|
exports.viewport = viewport;
|
|
81
82
|
const touch = __importStar(require("./touch"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;AAsDhC,uGAxDA,+CAAsB,OAwDA;AACtB,uHAxDA,+DAAsC,OAwDA;AApDxC,0DAAkC;AAsChC,mBAtCK,kBAAQ,CAsCL;AArCV,0DAAkC;AAuChC,mBAvCK,kBAAQ,CAuCL;AAtCV,0DAAkC;AAwChC,mBAxCK,kBAAQ,CAwCL;AAvCV,kDAA0B;AAqDxB,eArDK,cAAI,CAqDL;AApDN,oFAA4D;AAyC1D,gCAzCK,+BAAqB,CAyCL;AAxCvB,oHAA4F;AA0C1F,gDA1CK,+CAAqC,CA0CL;AAzCvC,wFAAgE;AA0C9D,kCA1CK,iCAAuB,CA0CL;AAzCzB,yEAAiD;AA8C/C,sBA9CK,qBAAW,CA8CL;AA5Cb,kFAA0D;AAwCxD,+BAxCK,8BAAoB,CAwCL;AAvCtB,0GAAkF;AAwChF,2CAxCK,0CAAgC,CAwCL;AAvClC,sDAA8B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;AAsDhC,uGAxDA,+CAAsB,OAwDA;AACtB,uHAxDA,+DAAsC,OAwDA;AApDxC,0DAAkC;AAsChC,mBAtCK,kBAAQ,CAsCL;AArCV,0DAAkC;AAuChC,mBAvCK,kBAAQ,CAuCL;AAtCV,0DAAkC;AAwChC,mBAxCK,kBAAQ,CAwCL;AAvCV,kDAA0B;AAqDxB,eArDK,cAAI,CAqDL;AApDN,oFAA4D;AAyC1D,gCAzCK,+BAAqB,CAyCL;AAxCvB,oHAA4F;AA0C1F,gDA1CK,+CAAqC,CA0CL;AAzCvC,wFAAgE;AA0C9D,kCA1CK,iCAAuB,CA0CL;AAzCzB,yEAAiD;AA8C/C,sBA9CK,qBAAW,CA8CL;AA5Cb,kFAA0D;AAwCxD,+BAxCK,8BAAoB,CAwCL;AAvCtB,0GAAkF;AAwChF,2CAxCK,0CAAgC,CAwCL;AAvClC,sDAA8B;AAmD5B,iBAnDK,gBAAM,CAmDL;AAlDR,gEAAwC;AAmDtC,sBAnDK,qBAAW,CAmDL;AAhDb,6DAA+C;AA+B7C,oCAAY;AA9Bd,mDAAqC;AAqBnC,0BAAO;AApBT,6CAA+B;AAiB7B,oBAAI;AAhBN,iDAAmC;AAiBjC,wBAAM;AAhBR,mEAAqD;AAiBnD,0CAAe;AAhBjB,2DAA6C;AAqB3C,kCAAW;AApBb,6CAA+B;AAkC7B,oBAAI;AAjCN,2DAA6C;AAmC3C,kCAAW;AAlCb,+EAAiE;AAoC/D,sDAAqB;AAnCvB,qEAAuD;AAkCrD,4CAAgB;AAjClB,mDAAsE;AAmCpE,8FAnCO,6BAAa,OAmCP;AACb,qGApCsB,oCAAoB,OAoCtB;AAnCtB,qDAAuC;AA4BrC,4BAAQ;AA3BV,+CAAiC;AAgB/B,sBAAK;AAfP,+DAAiD;AAW/C,sCAAa;AARf,8CAAmD;AAajD,6FAbO,mBAAY,OAaP"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
declare type
|
|
2
|
+
declare type Line2D = [Types.Point2, Types.Point2];
|
|
3
|
+
declare type Line3D = [Types.Point3, Types.Point3];
|
|
4
|
+
declare type Line = Line2D | Line3D;
|
|
3
5
|
export default function angleBetweenLines(line1: Line, line2: Line): number;
|
|
4
6
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const gl_matrix_1 = require("gl-matrix");
|
|
4
|
-
function
|
|
4
|
+
function angleBetween3DLines(line1, line2) {
|
|
5
5
|
const [p1, p2] = line1;
|
|
6
6
|
const [p3, p4] = line2;
|
|
7
7
|
const v1 = gl_matrix_1.vec3.sub(gl_matrix_1.vec3.create(), p2, p1);
|
|
@@ -13,5 +13,22 @@ function angleBetweenLines(line1, line2) {
|
|
|
13
13
|
const radian = Math.acos(cos);
|
|
14
14
|
return (radian * 180) / Math.PI;
|
|
15
15
|
}
|
|
16
|
+
function angleBetween2DLines(line1, line2) {
|
|
17
|
+
const [p1, p2] = line1;
|
|
18
|
+
const [p3, p4] = line2;
|
|
19
|
+
const v1 = gl_matrix_1.vec2.sub(gl_matrix_1.vec2.create(), p2, p1);
|
|
20
|
+
const v2 = gl_matrix_1.vec2.sub(gl_matrix_1.vec2.create(), p3, p4);
|
|
21
|
+
const dot = gl_matrix_1.vec2.dot(v1, v2);
|
|
22
|
+
const v1Length = gl_matrix_1.vec2.length(v1);
|
|
23
|
+
const v2Length = gl_matrix_1.vec2.length(v2);
|
|
24
|
+
const cos = dot / (v1Length * v2Length);
|
|
25
|
+
return Math.acos(cos) * (180 / Math.PI);
|
|
26
|
+
}
|
|
27
|
+
function angleBetweenLines(line1, line2) {
|
|
28
|
+
const is3D = line1[0].length === 3;
|
|
29
|
+
return is3D
|
|
30
|
+
? angleBetween3DLines(line1, line2)
|
|
31
|
+
: angleBetween2DLines(line1, line2);
|
|
32
|
+
}
|
|
16
33
|
exports.default = angleBetweenLines;
|
|
17
34
|
//# sourceMappingURL=angleBetweenLines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angleBetweenLines.js","sourceRoot":"","sources":["../../../../../src/utilities/math/angle/angleBetweenLines.ts"],"names":[],"mappings":";;AACA,
|
|
1
|
+
{"version":3,"file":"angleBetweenLines.js","sourceRoot":"","sources":["../../../../../src/utilities/math/angle/angleBetweenLines.ts"],"names":[],"mappings":";;AACA,yCAAuC;AASvC,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa;IACvD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IAEvB,MAAM,EAAE,GAAG,gBAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,gBAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,gBAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAE7B,MAAM,QAAQ,GAAG,gBAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,gBAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEjC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9B,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAClC,CAAC;AAKD,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa;IACvD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IAEvB,MAAM,EAAE,GAAG,gBAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,gBAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,gBAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,gBAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,gBAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEjC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAUD,SAAwB,iBAAiB,CAAC,KAAW,EAAE,KAAW;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACnC,OAAO,IAAI;QACT,CAAC,CAAC,mBAAmB,CAAC,KAAe,EAAE,KAAe,CAAC;QACvD,CAAC,CAAC,mBAAmB,CAAC,KAAe,EAAE,KAAe,CAAC,CAAC;AAC5D,CAAC;AALD,oCAKC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import stackPrefetch from './stackPrefetch';
|
|
2
|
+
import stackContextPrefetch from './stackContextPrefetch';
|
|
3
|
+
export { stackPrefetch, stackContextPrefetch };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const stackPrefetch_1 = require("./stackPrefetch");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "getConfiguration", { enumerable: true, get: function () { return stackPrefetch_1.getConfiguration; } });
|
|
6
|
+
exports.stackContextPrefetch = exports.stackPrefetch = void 0;
|
|
7
|
+
const stackPrefetch_1 = __importDefault(require("./stackPrefetch"));
|
|
8
|
+
exports.stackPrefetch = stackPrefetch_1.default;
|
|
9
|
+
const stackContextPrefetch_1 = __importDefault(require("./stackContextPrefetch"));
|
|
10
|
+
exports.stackContextPrefetch = stackContextPrefetch_1.default;
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/stackPrefetch/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/stackPrefetch/index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAGnC,wBAHF,uBAAa,CAGE;AAFtB,kFAA0D;AAElC,+BAFjB,8BAAoB,CAEiB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare function disable(element: any): void;
|
|
2
|
+
declare function getConfiguration(): {
|
|
3
|
+
maxImagesToPrefetch: number;
|
|
4
|
+
minBefore: number;
|
|
5
|
+
maxAfter: number;
|
|
6
|
+
directionExtraImages: number;
|
|
7
|
+
preserveExistingPool: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare function setConfiguration(config: any): void;
|
|
10
|
+
declare const stackContextPrefetch: {
|
|
11
|
+
enable: (element: any) => void;
|
|
12
|
+
disable: typeof disable;
|
|
13
|
+
getConfiguration: typeof getConfiguration;
|
|
14
|
+
setConfiguration: typeof setConfiguration;
|
|
15
|
+
};
|
|
16
|
+
export default stackContextPrefetch;
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const core_1 = require("@cornerstonejs/core");
|
|
7
|
+
const state_1 = require("./state");
|
|
8
|
+
const stackPrefetchUtils_1 = require("./stackPrefetchUtils");
|
|
9
|
+
const roundNumber_1 = __importDefault(require("../roundNumber"));
|
|
10
|
+
let configuration = {
|
|
11
|
+
maxImagesToPrefetch: Infinity,
|
|
12
|
+
minBefore: 2,
|
|
13
|
+
maxAfter: 2,
|
|
14
|
+
directionExtraImages: 10,
|
|
15
|
+
preserveExistingPool: false,
|
|
16
|
+
};
|
|
17
|
+
let resetPrefetchTimeout;
|
|
18
|
+
const resetPrefetchDelay = 5;
|
|
19
|
+
const enable = (element) => {
|
|
20
|
+
const stack = (0, stackPrefetchUtils_1.getStackData)(element);
|
|
21
|
+
if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
|
|
22
|
+
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
updateToolState(element);
|
|
26
|
+
prefetch(element);
|
|
27
|
+
element.removeEventListener(core_1.Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
28
|
+
element.addEventListener(core_1.Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
29
|
+
const promiseRemovedHandler = (0, stackPrefetchUtils_1.getPromiseRemovedHandler)(element);
|
|
30
|
+
core_1.eventTarget.removeEventListener(core_1.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
31
|
+
core_1.eventTarget.addEventListener(core_1.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
32
|
+
};
|
|
33
|
+
function prefetch(element) {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
const stack = (0, stackPrefetchUtils_1.getStackData)(element);
|
|
36
|
+
if (!((_a = stack === null || stack === void 0 ? void 0 : stack.imageIds) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
37
|
+
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const stackPrefetchData = (0, state_1.getToolState)(element);
|
|
41
|
+
if (!stackPrefetchData) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const stackPrefetch = stackPrefetchData || {};
|
|
45
|
+
stackPrefetch.enabled && (stackPrefetch.enabled = (_b = stackPrefetch.indicesToRequest) === null || _b === void 0 ? void 0 : _b.length);
|
|
46
|
+
if (stackPrefetch.enabled === false) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
function removeFromList(imageIdIndex) {
|
|
50
|
+
const index = stackPrefetch.indicesToRequest.indexOf(imageIdIndex);
|
|
51
|
+
if (index > -1) {
|
|
52
|
+
stackPrefetch.indicesToRequest.splice(index, 1);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const indicesToRequestCopy = stackPrefetch.indicesToRequest.slice();
|
|
56
|
+
const { currentImageIdIndex } = stack;
|
|
57
|
+
indicesToRequestCopy.forEach((imageIdIndex) => {
|
|
58
|
+
const imageId = stack.imageIds[imageIdIndex];
|
|
59
|
+
if (!imageId) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const distance = Math.abs(currentImageIdIndex - imageIdIndex);
|
|
63
|
+
const imageCached = distance < 6
|
|
64
|
+
? core_1.cache.getImageLoadObject(imageId)
|
|
65
|
+
: core_1.cache.isLoaded(imageId);
|
|
66
|
+
if (imageCached) {
|
|
67
|
+
removeFromList(imageIdIndex);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
if (!stackPrefetch.indicesToRequest.length) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (!configuration.preserveExistingPool) {
|
|
74
|
+
core_1.imageLoadPoolManager.filterRequests((0, stackPrefetchUtils_1.clearFromImageIds)(stack));
|
|
75
|
+
}
|
|
76
|
+
function doneCallback(imageId) {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
const imageIdIndex = stack.imageIds.indexOf(imageId);
|
|
79
|
+
removeFromList(imageIdIndex);
|
|
80
|
+
const image = core_1.cache.getCachedImageBasedOnImageURI(imageId);
|
|
81
|
+
const { stats } = stackPrefetch;
|
|
82
|
+
const decodeTimeInMS = ((_a = image === null || image === void 0 ? void 0 : image.image) === null || _a === void 0 ? void 0 : _a.decodeTimeInMS) || 0;
|
|
83
|
+
if (decodeTimeInMS) {
|
|
84
|
+
stats.imageIds.set(imageId, decodeTimeInMS);
|
|
85
|
+
stats.decodeTimeInMS += decodeTimeInMS;
|
|
86
|
+
const loadTimeInMS = ((_b = image === null || image === void 0 ? void 0 : image.image) === null || _b === void 0 ? void 0 : _b.loadTimeInMS) || 0;
|
|
87
|
+
stats.loadTimeInMS += loadTimeInMS;
|
|
88
|
+
}
|
|
89
|
+
if (!stackPrefetch.indicesToRequest.length) {
|
|
90
|
+
if (image === null || image === void 0 ? void 0 : image.sizeInBytes) {
|
|
91
|
+
const { sizeInBytes } = image;
|
|
92
|
+
const usage = core_1.cache.getMaxCacheSize() / 4 / sizeInBytes;
|
|
93
|
+
if (!stackPrefetch.cacheFill) {
|
|
94
|
+
stats.initialTime = Date.now() - stats.start;
|
|
95
|
+
stats.initialSize = stats.imageIds.size;
|
|
96
|
+
updateToolState(element, usage);
|
|
97
|
+
prefetch(element);
|
|
98
|
+
}
|
|
99
|
+
else if (stats.imageIds.size) {
|
|
100
|
+
stats.fillTime = Date.now() - stats.start;
|
|
101
|
+
const { size } = stats.imageIds;
|
|
102
|
+
stats.fillSize = size;
|
|
103
|
+
console.log('Done cache fill', stats.fillTime, 'ms', size, 'items', 'average total time', (0, roundNumber_1.default)(stats.fillTime / size), 'ms', 'average load', (0, roundNumber_1.default)(stats.loadTimeInMS / size), 'ms', 'average decode', (0, roundNumber_1.default)(stats.decodeTimeInMS / size), 'ms');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const requestFn = (imageId, options) => core_1.imageLoader
|
|
109
|
+
.loadAndCacheImage(imageId, options)
|
|
110
|
+
.then(() => doneCallback(imageId));
|
|
111
|
+
const { useNorm16Texture } = (0, core_1.getConfiguration)().rendering;
|
|
112
|
+
indicesToRequestCopy.forEach((imageIdIndex) => {
|
|
113
|
+
const imageId = stack.imageIds[imageIdIndex];
|
|
114
|
+
const options = {
|
|
115
|
+
targetBuffer: {
|
|
116
|
+
type: useNorm16Texture ? undefined : 'Float32Array',
|
|
117
|
+
},
|
|
118
|
+
preScale: {
|
|
119
|
+
enabled: true,
|
|
120
|
+
},
|
|
121
|
+
requestType: stackPrefetchUtils_1.requestType,
|
|
122
|
+
};
|
|
123
|
+
core_1.imageLoadPoolManager.addRequest(requestFn.bind(null, imageId, options), stackPrefetchUtils_1.requestType, {
|
|
124
|
+
imageId,
|
|
125
|
+
}, stackPrefetchUtils_1.priority);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function onImageUpdated(e) {
|
|
129
|
+
clearTimeout(resetPrefetchTimeout);
|
|
130
|
+
resetPrefetchTimeout = setTimeout(function () {
|
|
131
|
+
const element = e.target;
|
|
132
|
+
try {
|
|
133
|
+
updateToolState(element);
|
|
134
|
+
prefetch(element);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}, resetPrefetchDelay);
|
|
140
|
+
}
|
|
141
|
+
const signum = (x) => (x < 0 ? -1 : 1);
|
|
142
|
+
const updateToolState = (element, usage) => {
|
|
143
|
+
const stack = (0, stackPrefetchUtils_1.getStackData)(element);
|
|
144
|
+
if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
|
|
145
|
+
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const { currentImageIdIndex } = stack;
|
|
149
|
+
let { maxAfter = 2, minBefore = 2 } = configuration;
|
|
150
|
+
const { directionExtraImages = 10 } = configuration;
|
|
151
|
+
const stackPrefetchData = (0, state_1.getToolState)(element) || {
|
|
152
|
+
indicesToRequest: [],
|
|
153
|
+
currentImageIdIndex,
|
|
154
|
+
stackCount: 0,
|
|
155
|
+
enabled: true,
|
|
156
|
+
direction: 1,
|
|
157
|
+
stats: {
|
|
158
|
+
start: Date.now(),
|
|
159
|
+
imageIds: new Map(),
|
|
160
|
+
decodeTimeInMS: 0,
|
|
161
|
+
loadTimeInMS: 0,
|
|
162
|
+
totalBytes: 0,
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
const delta = currentImageIdIndex - stackPrefetchData.currentImageIdIndex;
|
|
166
|
+
stackPrefetchData.direction = signum(delta);
|
|
167
|
+
stackPrefetchData.currentImageIdIndex = currentImageIdIndex;
|
|
168
|
+
stackPrefetchData.enabled = true;
|
|
169
|
+
if (stackPrefetchData.stackCount < 100) {
|
|
170
|
+
stackPrefetchData.stackCount += directionExtraImages;
|
|
171
|
+
}
|
|
172
|
+
if (Math.abs(delta) > maxAfter || !delta) {
|
|
173
|
+
stackPrefetchData.stackCount = 0;
|
|
174
|
+
if (usage) {
|
|
175
|
+
const positionFraction = currentImageIdIndex / stack.imageIds.length;
|
|
176
|
+
minBefore = Math.ceil(usage * positionFraction);
|
|
177
|
+
maxAfter = Math.ceil(usage * (1 - positionFraction));
|
|
178
|
+
stackPrefetchData.cacheFill = true;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
stackPrefetchData.cacheFill = false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else if (delta < 0) {
|
|
185
|
+
minBefore += stackPrefetchData.stackCount;
|
|
186
|
+
maxAfter = 0;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
maxAfter += stackPrefetchData.stackCount;
|
|
190
|
+
minBefore = 0;
|
|
191
|
+
}
|
|
192
|
+
const minIndex = Math.max(0, currentImageIdIndex - minBefore);
|
|
193
|
+
const maxIndex = Math.min(stack.imageIds.length - 1, currentImageIdIndex + maxAfter);
|
|
194
|
+
const indicesToRequest = [];
|
|
195
|
+
for (let i = currentImageIdIndex + 1; i <= maxIndex; i++) {
|
|
196
|
+
indicesToRequest.push(i);
|
|
197
|
+
}
|
|
198
|
+
for (let i = currentImageIdIndex - 1; i >= minIndex; i--) {
|
|
199
|
+
indicesToRequest.push(i);
|
|
200
|
+
}
|
|
201
|
+
stackPrefetchData.indicesToRequest = indicesToRequest;
|
|
202
|
+
(0, state_1.addToolState)(element, stackPrefetchData);
|
|
203
|
+
};
|
|
204
|
+
function disable(element) {
|
|
205
|
+
clearTimeout(resetPrefetchTimeout);
|
|
206
|
+
element.removeEventListener(core_1.Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
207
|
+
const promiseRemovedHandler = (0, stackPrefetchUtils_1.getPromiseRemovedHandler)(element);
|
|
208
|
+
core_1.eventTarget.removeEventListener(core_1.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
209
|
+
const stackPrefetchData = (0, state_1.getToolState)(element);
|
|
210
|
+
if (stackPrefetchData && stackPrefetchData.data.length) {
|
|
211
|
+
stackPrefetchData.enabled = false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function getConfiguration() {
|
|
215
|
+
return configuration;
|
|
216
|
+
}
|
|
217
|
+
function setConfiguration(config) {
|
|
218
|
+
configuration = config;
|
|
219
|
+
}
|
|
220
|
+
const stackContextPrefetch = {
|
|
221
|
+
enable,
|
|
222
|
+
disable,
|
|
223
|
+
getConfiguration,
|
|
224
|
+
setConfiguration,
|
|
225
|
+
};
|
|
226
|
+
exports.default = stackContextPrefetch;
|
|
227
|
+
//# 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,72 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setConfiguration = exports.getConfiguration = exports.disable = exports.enable = void 0;
|
|
4
3
|
const core_1 = require("@cornerstonejs/core");
|
|
5
4
|
const state_1 = require("./state");
|
|
6
|
-
const
|
|
7
|
-
const priority = 0;
|
|
8
|
-
const addToBeginning = true;
|
|
5
|
+
const stackPrefetchUtils_1 = require("./stackPrefetchUtils");
|
|
9
6
|
let configuration = {
|
|
10
7
|
maxImagesToPrefetch: Infinity,
|
|
11
8
|
preserveExistingPool: true,
|
|
12
9
|
};
|
|
13
10
|
let resetPrefetchTimeout;
|
|
14
11
|
const resetPrefetchDelay = 10;
|
|
15
|
-
function range(lowEnd, highEnd) {
|
|
16
|
-
lowEnd = Math.round(lowEnd) || 0;
|
|
17
|
-
highEnd = Math.round(highEnd) || 0;
|
|
18
|
-
const arr = [];
|
|
19
|
-
let c = highEnd - lowEnd + 1;
|
|
20
|
-
if (c <= 0) {
|
|
21
|
-
return arr;
|
|
22
|
-
}
|
|
23
|
-
while (c--) {
|
|
24
|
-
arr[c] = highEnd--;
|
|
25
|
-
}
|
|
26
|
-
return arr;
|
|
27
|
-
}
|
|
28
|
-
function nearestIndex(arr, x) {
|
|
29
|
-
let low = 0;
|
|
30
|
-
let high = arr.length - 1;
|
|
31
|
-
arr.forEach((v, idx) => {
|
|
32
|
-
if (v < x) {
|
|
33
|
-
low = Math.max(idx, low);
|
|
34
|
-
}
|
|
35
|
-
else if (v > x) {
|
|
36
|
-
high = Math.min(idx, high);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return { low, high };
|
|
40
|
-
}
|
|
41
|
-
function getStackData(element) {
|
|
42
|
-
const enabledElement = (0, core_1.getEnabledElement)(element);
|
|
43
|
-
if (!enabledElement) {
|
|
44
|
-
throw new Error('stackPrefetch: element must be a valid Cornerstone enabled element');
|
|
45
|
-
}
|
|
46
|
-
const { viewport } = enabledElement;
|
|
47
|
-
if (!(viewport instanceof core_1.StackViewport)) {
|
|
48
|
-
throw new Error('stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented');
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
currentImageIdIndex: viewport.getCurrentImageIdIndex(),
|
|
52
|
-
imageIds: viewport.getImageIds(),
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
12
|
function prefetch(element) {
|
|
13
|
+
var _a, _b;
|
|
56
14
|
const stackPrefetchData = (0, state_1.getToolState)(element);
|
|
57
15
|
if (!stackPrefetchData) {
|
|
58
16
|
return;
|
|
59
17
|
}
|
|
60
18
|
const stackPrefetch = stackPrefetchData || {};
|
|
61
|
-
const stack = getStackData(element);
|
|
62
|
-
if (!stack ||
|
|
19
|
+
const stack = (0, stackPrefetchUtils_1.getStackData)(element);
|
|
20
|
+
if (!((_a = stack === null || stack === void 0 ? void 0 : stack.imageIds) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
63
21
|
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
64
22
|
return;
|
|
65
23
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
stackPrefetch.enabled = false;
|
|
69
|
-
}
|
|
24
|
+
const { currentImageIdIndex } = stack;
|
|
25
|
+
stackPrefetch.enabled && (stackPrefetch.enabled = (_b = stackPrefetch.indicesToRequest) === null || _b === void 0 ? void 0 : _b.length);
|
|
70
26
|
if (stackPrefetch.enabled === false) {
|
|
71
27
|
return;
|
|
72
28
|
}
|
|
@@ -83,8 +39,11 @@ function prefetch(element) {
|
|
|
83
39
|
if (!imageId) {
|
|
84
40
|
return;
|
|
85
41
|
}
|
|
86
|
-
const
|
|
87
|
-
|
|
42
|
+
const distance = Math.abs(currentImageIdIndex - imageIdIndex);
|
|
43
|
+
const imageCached = distance < 6
|
|
44
|
+
? core_1.cache.getImageLoadObject(imageId)
|
|
45
|
+
: core_1.cache.isLoaded(imageId);
|
|
46
|
+
if (imageCached) {
|
|
88
47
|
removeFromList(imageIdIndex);
|
|
89
48
|
}
|
|
90
49
|
});
|
|
@@ -92,9 +51,9 @@ function prefetch(element) {
|
|
|
92
51
|
return;
|
|
93
52
|
}
|
|
94
53
|
if (!configuration.preserveExistingPool) {
|
|
95
|
-
core_1.imageLoadPoolManager.clearRequestStack(requestType);
|
|
54
|
+
core_1.imageLoadPoolManager.clearRequestStack(stackPrefetchUtils_1.requestType);
|
|
96
55
|
}
|
|
97
|
-
const nearest = nearestIndex(stackPrefetch.indicesToRequest, stack.currentImageIdIndex);
|
|
56
|
+
const nearest = (0, stackPrefetchUtils_1.nearestIndex)(stackPrefetch.indicesToRequest, stack.currentImageIdIndex);
|
|
98
57
|
let imageId;
|
|
99
58
|
let nextImageIdIndex;
|
|
100
59
|
const preventCache = false;
|
|
@@ -139,40 +98,13 @@ function prefetch(element) {
|
|
|
139
98
|
preScale: {
|
|
140
99
|
enabled: true,
|
|
141
100
|
},
|
|
142
|
-
requestType,
|
|
101
|
+
requestType: stackPrefetchUtils_1.requestType,
|
|
143
102
|
};
|
|
144
|
-
core_1.imageLoadPoolManager.addRequest(requestFn.bind(null, imageId, options), requestType, {
|
|
103
|
+
core_1.imageLoadPoolManager.addRequest(requestFn.bind(null, imageId, options), stackPrefetchUtils_1.requestType, {
|
|
145
104
|
imageId,
|
|
146
|
-
}, priority);
|
|
105
|
+
}, stackPrefetchUtils_1.priority);
|
|
147
106
|
});
|
|
148
107
|
}
|
|
149
|
-
function getPromiseRemovedHandler(element) {
|
|
150
|
-
return function (e) {
|
|
151
|
-
const eventData = e.detail;
|
|
152
|
-
let stackData;
|
|
153
|
-
try {
|
|
154
|
-
stackData = getStackData(element);
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
if (!stackData || !stackData.imageIds || stackData.imageIds.length === 0) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
const stack = stackData;
|
|
163
|
-
const imageIdIndex = stack.imageIds.indexOf(eventData.imageId);
|
|
164
|
-
if (imageIdIndex < 0) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
const stackPrefetchData = (0, state_1.getToolState)(element);
|
|
168
|
-
if (!stackPrefetchData ||
|
|
169
|
-
!stackPrefetchData.indicesToRequest ||
|
|
170
|
-
!stackPrefetchData.indicesToRequest.length) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
stackPrefetchData.indicesToRequest.push(imageIdIndex);
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
108
|
function onImageUpdated(e) {
|
|
177
109
|
clearTimeout(resetPrefetchTimeout);
|
|
178
110
|
resetPrefetchTimeout = setTimeout(function () {
|
|
@@ -186,13 +118,13 @@ function onImageUpdated(e) {
|
|
|
186
118
|
}, resetPrefetchDelay);
|
|
187
119
|
}
|
|
188
120
|
function enable(element) {
|
|
189
|
-
const stack = getStackData(element);
|
|
121
|
+
const stack = (0, stackPrefetchUtils_1.getStackData)(element);
|
|
190
122
|
if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
|
|
191
123
|
console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
|
|
192
124
|
return;
|
|
193
125
|
}
|
|
194
126
|
const stackPrefetchData = {
|
|
195
|
-
indicesToRequest: range(0, stack.imageIds.length - 1),
|
|
127
|
+
indicesToRequest: (0, stackPrefetchUtils_1.range)(0, stack.imageIds.length - 1),
|
|
196
128
|
enabled: true,
|
|
197
129
|
direction: 1,
|
|
198
130
|
};
|
|
@@ -202,29 +134,27 @@ function enable(element) {
|
|
|
202
134
|
prefetch(element);
|
|
203
135
|
element.removeEventListener(core_1.Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
204
136
|
element.addEventListener(core_1.Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
205
|
-
const promiseRemovedHandler = getPromiseRemovedHandler(element);
|
|
137
|
+
const promiseRemovedHandler = (0, stackPrefetchUtils_1.getPromiseRemovedHandler)(element);
|
|
206
138
|
core_1.eventTarget.removeEventListener(core_1.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
207
139
|
core_1.eventTarget.addEventListener(core_1.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
208
140
|
}
|
|
209
|
-
exports.enable = enable;
|
|
210
141
|
function disable(element) {
|
|
211
142
|
clearTimeout(resetPrefetchTimeout);
|
|
212
143
|
element.removeEventListener(core_1.Enums.Events.STACK_NEW_IMAGE, onImageUpdated);
|
|
213
|
-
const promiseRemovedHandler = getPromiseRemovedHandler(element);
|
|
144
|
+
const promiseRemovedHandler = (0, stackPrefetchUtils_1.getPromiseRemovedHandler)(element);
|
|
214
145
|
core_1.eventTarget.removeEventListener(core_1.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED, promiseRemovedHandler);
|
|
215
146
|
const stackPrefetchData = (0, state_1.getToolState)(element);
|
|
216
147
|
if (stackPrefetchData && stackPrefetchData.indicesToRequest.length) {
|
|
217
148
|
stackPrefetchData.enabled = false;
|
|
218
|
-
core_1.imageLoadPoolManager.clearRequestStack(requestType);
|
|
149
|
+
core_1.imageLoadPoolManager.clearRequestStack(stackPrefetchUtils_1.requestType);
|
|
219
150
|
}
|
|
220
151
|
}
|
|
221
|
-
exports.disable = disable;
|
|
222
152
|
function getConfiguration() {
|
|
223
153
|
return configuration;
|
|
224
154
|
}
|
|
225
|
-
exports.getConfiguration = getConfiguration;
|
|
226
155
|
function setConfiguration(config) {
|
|
227
156
|
configuration = config;
|
|
228
157
|
}
|
|
229
|
-
|
|
158
|
+
const stackPrefetch = { enable, disable, getConfiguration, setConfiguration };
|
|
159
|
+
exports.default = stackPrefetch;
|
|
230
160
|
//# sourceMappingURL=stackPrefetch.js.map
|