@cornerstonejs/tools 2.0.0-beta.21 → 2.0.0-beta.22
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/esm/cursors/elementCursor.d.ts +1 -1
- package/dist/esm/cursors/elementCursor.js +1 -1
- package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +2 -2
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyUp.js +2 -2
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownActivate.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDrag.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseMove.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseWheel.js +1 -1
- package/dist/esm/eventDispatchers/shared/customCallbackHandler.js +3 -2
- package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getActiveToolForTouchEvent.js +3 -3
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +2 -2
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.js +2 -2
- package/dist/esm/eventDispatchers/touchEventHandlers/touchDrag.js +1 -1
- package/dist/esm/eventDispatchers/touchEventHandlers/touchStart.js +1 -1
- package/dist/esm/eventDispatchers/touchEventHandlers/touchStartActivate.js +1 -1
- package/dist/esm/eventListeners/annotations/annotationSelectionListener.js +1 -1
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +21 -20
- package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +8 -6
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/init.js +2 -2
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +0 -2
- package/dist/esm/stateManagement/annotation/annotationSelection.js +1 -1
- package/dist/esm/stateManagement/annotation/annotationState.d.ts +2 -2
- package/dist/esm/stateManagement/annotation/annotationState.js +4 -6
- package/dist/esm/stateManagement/annotation/annotationVisibility.js +1 -1
- package/dist/esm/stateManagement/annotation/getAnnotation.d.ts +2 -0
- package/dist/esm/stateManagement/annotation/getAnnotation.js +6 -0
- package/dist/esm/stateManagement/index.d.ts +0 -2
- package/dist/esm/stateManagement/index.js +2 -1
- package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.d.ts +3 -1
- package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +13 -6
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +17 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +46 -4
- package/dist/esm/stateManagement/segmentation/activeSegmentation.js +6 -4
- package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/addColorLUT.js +5 -0
- package/dist/esm/stateManagement/segmentation/addRepresentationData.js +1 -1
- package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/addSegmentation.js +11 -0
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js +29 -8
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +10 -0
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -6
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +14 -9
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +8 -5
- package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +0 -8
- package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +3 -33
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationDataModified.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationDataModified.js +11 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.js +18 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRemoved.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRemoved.js +8 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +8 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +8 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.js +7 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +6 -0
- package/dist/esm/stateManagement/segmentation/getColorLUT.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getColorLUT.js +5 -0
- package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.js +5 -0
- package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getGlobalConfig.js +5 -0
- package/dist/esm/stateManagement/segmentation/getNextColorLUTIndex.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getNextColorLUTIndex.js +5 -0
- package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +7 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +6 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +12 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentations.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentations.js +6 -0
- package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +10 -0
- package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +1 -1
- package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.d.ts +8 -0
- package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +31 -0
- package/dist/esm/stateManagement/segmentation/index.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/index.js +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +3 -2
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/createAndAddContourSegmentationsFromClippedSurfaces.js +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +3 -3
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +2 -3
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +2 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +2 -2
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +2 -3
- package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -2
- package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +1 -1
- package/dist/esm/stateManagement/segmentation/removeColorLUT.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/removeColorLUT.js +5 -0
- package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/removeRepresentation.js +9 -0
- package/dist/esm/stateManagement/segmentation/removeSegmentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/removeSegmentation.js +7 -0
- package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +2 -2
- package/dist/esm/stateManagement/segmentation/segmentIndex.d.ts +2 -2
- package/dist/esm/stateManagement/segmentation/segmentIndex.js +5 -9
- package/dist/esm/stateManagement/segmentation/segmentLocking.js +1 -1
- package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +29 -38
- package/dist/esm/stateManagement/segmentation/segmentationState.js +29 -157
- package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +9 -0
- package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +9 -0
- package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +9 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +9 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +5 -0
- package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +5 -5
- package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +5 -45
- package/dist/esm/stateManagement/segmentation/updateLabelmapSegmentationImageReferences.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/updateLabelmapSegmentationImageReferences.js +5 -0
- package/dist/esm/store/SynchronizerManager/createSynchronizer.js +1 -1
- package/dist/esm/store/SynchronizerManager/destroy.js +1 -1
- package/dist/esm/store/SynchronizerManager/destroySynchronizer.js +1 -1
- package/dist/esm/store/SynchronizerManager/getAllSynchronizers.js +1 -1
- package/dist/esm/store/SynchronizerManager/getSynchronizer.js +1 -1
- package/dist/esm/store/SynchronizerManager/getSynchronizersForViewport.js +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +7 -6
- package/dist/esm/store/ToolGroupManager/createToolGroup.js +1 -1
- package/dist/esm/store/ToolGroupManager/destroy.js +3 -3
- package/dist/esm/store/ToolGroupManager/destroyToolGroup.js +1 -2
- package/dist/esm/store/ToolGroupManager/getAllToolGroups.js +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroup.js +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroupForViewport.js +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +1 -1
- package/dist/esm/store/addTool.d.ts +1 -0
- package/dist/esm/store/addTool.js +3 -0
- package/dist/esm/store/index.d.ts +1 -2
- package/dist/esm/store/index.js +1 -2
- package/dist/esm/tools/AdvancedMagnifyTool.d.ts +93 -2
- package/dist/esm/tools/AdvancedMagnifyTool.js +506 -4
- package/dist/esm/tools/AnnotationEraserTool.js +2 -2
- package/dist/esm/tools/CrosshairsTool.js +1 -1
- package/dist/esm/tools/MagnifyTool.js +1 -1
- package/dist/esm/tools/SculptorTool.js +3 -3
- package/dist/esm/tools/WindowLevelRegionTool.js +1 -1
- package/dist/esm/tools/annotation/AngleTool.js +4 -3
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +2 -3
- package/dist/esm/tools/annotation/CircleROITool.js +7 -8
- package/dist/esm/tools/annotation/CobbAngleTool.js +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +5 -6
- package/dist/esm/tools/annotation/HeightTool.js +2 -3
- package/dist/esm/tools/annotation/KeyImageTool.js +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +2 -3
- package/dist/esm/tools/annotation/LivewireContourTool.js +3 -2
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +7 -7
- package/dist/esm/tools/annotation/ProbeTool.js +3 -4
- package/dist/esm/tools/annotation/RectangleROITool.js +5 -6
- package/dist/esm/tools/annotation/SplineROITool.js +7 -4
- package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +6 -7
- package/dist/esm/tools/annotation/VideoRedactionTool.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -2
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +1 -1
- package/dist/esm/tools/base/ContourBaseTool.js +2 -2
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +24 -15
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +9 -8
- package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +3 -3
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +2 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -8
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +19 -25
- package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +10 -7
- package/dist/esm/tools/segmentation/BrushTool.js +10 -8
- package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +4 -5
- package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +7 -9
- package/dist/esm/tools/segmentation/SegmentSelectTool.js +1 -1
- package/dist/esm/tools/segmentation/strategies/compositions/preview.js +4 -4
- package/dist/esm/utilities/annotationHydration.js +1 -1
- package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +1 -1
- package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +2 -2
- package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +1 -1
- package/dist/esm/utilities/contours/getContourHolesDataWorld.js +1 -1
- package/dist/esm/utilities/contours/index.d.ts +1 -2
- package/dist/esm/utilities/contours/index.js +1 -2
- package/dist/esm/utilities/contours/updateContourPolyline.js +1 -1
- package/dist/esm/utilities/getToolsWithModesForElement.js +2 -2
- package/dist/esm/utilities/index.d.ts +1 -2
- package/dist/esm/utilities/index.js +1 -2
- package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +3 -3
- package/dist/esm/utilities/math/polyline/isClosed.js +2 -2
- package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.js +3 -3
- package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +1 -1
- package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +1 -1
- package/dist/esm/utilities/segmentation/getBrushToolInstances.d.ts +1 -0
- package/dist/esm/utilities/segmentation/getBrushToolInstances.js +17 -0
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.d.ts +0 -2
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +3 -22
- package/dist/esm/utilities/segmentation/index.d.ts +2 -2
- package/dist/esm/utilities/segmentation/index.js +2 -2
- package/dist/esm/utilities/segmentation/invalidateBrushCursor.js +1 -4
- package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.js +2 -1
- package/dist/esm/utilities/segmentation/segmentContourAction.js +5 -5
- package/dist/esm/utilities/segmentation/utilities.d.ts +4 -1
- package/dist/esm/utilities/segmentation/utilities.js +23 -17
- package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +2 -2
- package/dist/umd/985.index.js.map +1 -1
- package/dist/umd/index.js +2 -1
- package/dist/umd/index.js.LICENSE.txt +6 -0
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -4
- package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +0 -17
- package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +0 -50
- package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.js +0 -11
- package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +0 -76
- package/dist/esm/tools/AdvancedMagnifyViewport.js +0 -351
- package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +0 -38
- package/dist/esm/tools/AdvancedMagnifyViewportManager.js +0 -161
- package/dist/esm/utilities/contours/interpolation/index.d.ts +0 -2
- package/dist/esm/utilities/contours/interpolation/index.js +0 -2
- package/dist/esm/utilities/segmentation/triggerSegmentationRender.d.ts +0 -3
- package/dist/esm/utilities/segmentation/triggerSegmentationRender.js +0 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/tools",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.22",
|
|
4
4
|
"description": "Cornerstone3D Tools",
|
|
5
5
|
"main": "dist/umd/index.js",
|
|
6
6
|
"types": "dist/esm/index.d.ts",
|
|
@@ -25,16 +25,17 @@
|
|
|
25
25
|
"build:umd": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js",
|
|
26
26
|
"build:all": "yarn run build:umd && yarn run build:esm",
|
|
27
27
|
"build": "yarn run build:all",
|
|
28
|
-
"api-check": "api-extractor --debug run",
|
|
29
28
|
"clean": "rm -rf node_modules/.cache/storybook && shx rm -rf dist",
|
|
30
29
|
"clean:deep": "yarn run clean && shx rm -rf node_modules",
|
|
31
30
|
"dev": "tsc --project ./tsconfig.esm.json --watch",
|
|
32
31
|
"build:update-api": "yarn run build:esm && api-extractor run --local",
|
|
32
|
+
"format-check": "npx eslint ./src --quiet",
|
|
33
|
+
"api-check": "api-extractor --debug run ",
|
|
33
34
|
"prepublishOnly": "yarn run build",
|
|
34
35
|
"webpack:watch": "webpack --mode development --progress --watch --config ./.webpack/webpack.dev.js"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
|
-
"@cornerstonejs/core": "^2.0.0-beta.
|
|
38
|
+
"@cornerstonejs/core": "^2.0.0-beta.22",
|
|
38
39
|
"@types/offscreencanvas": "2019.7.3",
|
|
39
40
|
"comlink": "^4.4.1",
|
|
40
41
|
"lodash.get": "^4.4.2"
|
|
@@ -61,5 +62,5 @@
|
|
|
61
62
|
"type": "individual",
|
|
62
63
|
"url": "https://ohif.org/donate"
|
|
63
64
|
},
|
|
64
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "2728527bed3e9fba859b637cb87671da16b79c07"
|
|
65
66
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
declare function computeVolumeSegmentationFromStack({ imageIds, options, }: {
|
|
2
|
-
imageIds: string[];
|
|
3
|
-
options?: {
|
|
4
|
-
volumeId?: string;
|
|
5
|
-
};
|
|
6
|
-
}): Promise<{
|
|
7
|
-
volumeId: string;
|
|
8
|
-
}>;
|
|
9
|
-
declare function convertStackToVolumeSegmentation({ segmentationId, options, }: {
|
|
10
|
-
segmentationId: string;
|
|
11
|
-
options?: {
|
|
12
|
-
viewportId: string;
|
|
13
|
-
volumeId?: string;
|
|
14
|
-
removeOriginal?: boolean;
|
|
15
|
-
};
|
|
16
|
-
}): Promise<void>;
|
|
17
|
-
export { convertStackToVolumeSegmentation, computeVolumeSegmentationFromStack };
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { volumeLoader, utilities as csUtils, eventTarget, cache, } from '@cornerstonejs/core';
|
|
2
|
-
import { Events, SegmentationRepresentations } from '../../enums';
|
|
3
|
-
import addSegmentationRepresentations from './addSegmentationRepresentations';
|
|
4
|
-
import { triggerSegmentationRender } from '../../utilities/segmentation';
|
|
5
|
-
import { getSegmentation } from './segmentationState';
|
|
6
|
-
import { triggerSegmentationDataModified } from './triggerSegmentationEvents';
|
|
7
|
-
async function computeVolumeSegmentationFromStack({ imageIds, options, }) {
|
|
8
|
-
const segmentationImageIds = imageIds;
|
|
9
|
-
const volumeId = options?.volumeId ?? csUtils.uuidv4();
|
|
10
|
-
await volumeLoader.createAndCacheVolumeFromImages(volumeId, segmentationImageIds);
|
|
11
|
-
return { volumeId };
|
|
12
|
-
}
|
|
13
|
-
async function convertStackToVolumeSegmentation({ segmentationId, options, }) {
|
|
14
|
-
const segmentation = getSegmentation(segmentationId);
|
|
15
|
-
const data = segmentation.representationData
|
|
16
|
-
.LABELMAP;
|
|
17
|
-
const { volumeId } = await computeVolumeSegmentationFromStack({
|
|
18
|
-
imageIds: data.imageIds,
|
|
19
|
-
options,
|
|
20
|
-
});
|
|
21
|
-
await updateSegmentationState({
|
|
22
|
-
segmentationId,
|
|
23
|
-
viewportId: options.viewportId,
|
|
24
|
-
options,
|
|
25
|
-
volumeId,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
async function updateSegmentationState({ segmentationId, viewportId, volumeId, options, }) {
|
|
29
|
-
const segmentation = getSegmentation(segmentationId);
|
|
30
|
-
if (options?.removeOriginal) {
|
|
31
|
-
const data = segmentation.representationData
|
|
32
|
-
.LABELMAP;
|
|
33
|
-
const { imageIds } = data;
|
|
34
|
-
imageIds.forEach((imageId) => {
|
|
35
|
-
cache.removeImageLoadObject(imageId);
|
|
36
|
-
});
|
|
37
|
-
segmentation.representationData.LABELMAP = {
|
|
38
|
-
volumeId,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
segmentation.representationData.LABELMAP = {
|
|
43
|
-
...segmentation.representationData.LABELMAP,
|
|
44
|
-
volumeId,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
triggerSegmentationRender(viewportId);
|
|
48
|
-
eventTarget.addEventListenerOnce(Events.SEGMENTATION_RENDERED, () => triggerSegmentationDataModified(segmentationId));
|
|
49
|
-
}
|
|
50
|
-
export { convertStackToVolumeSegmentation, computeVolumeSegmentationFromStack };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import SegmentationRepresentations from '../../../enums/SegmentationRepresentations';
|
|
2
|
-
import { getSegmentationRepresentationRenderingConfig as getLabelmapRenderingConfig } from '../../../tools/displayTools/Labelmap/labelmapDisplay';
|
|
3
|
-
export function getSegmentationRepresentationRenderingConfig(representationInput) {
|
|
4
|
-
const { type } = representationInput;
|
|
5
|
-
if (type === SegmentationRepresentations.Labelmap) {
|
|
6
|
-
return getLabelmapRenderingConfig();
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
return {};
|
|
10
|
-
}
|
|
11
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
export type AutoPanCallbackData = {
|
|
3
|
-
points: {
|
|
4
|
-
currentPosition: {
|
|
5
|
-
canvas: Types.Point2;
|
|
6
|
-
world: Types.Point3;
|
|
7
|
-
};
|
|
8
|
-
newPosition: {
|
|
9
|
-
canvas: Types.Point2;
|
|
10
|
-
world: Types.Point3;
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
delta: {
|
|
14
|
-
canvas: Types.Point2;
|
|
15
|
-
world: Types.Point3;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
export type AutoPanCallback = (data: AutoPanCallbackData) => void;
|
|
19
|
-
declare class AdvancedMagnifyViewport {
|
|
20
|
-
private _viewportId;
|
|
21
|
-
private _sourceEnabledElement;
|
|
22
|
-
private _enabledElement;
|
|
23
|
-
private _sourceToolGroup;
|
|
24
|
-
private _magnifyToolGroup;
|
|
25
|
-
private _isViewportReady;
|
|
26
|
-
private _radius;
|
|
27
|
-
private _resized;
|
|
28
|
-
private _resizeViewportAsync;
|
|
29
|
-
private _canAutoPan;
|
|
30
|
-
private _autoPan;
|
|
31
|
-
position: Types.Point2;
|
|
32
|
-
zoomFactor: number;
|
|
33
|
-
visible: boolean;
|
|
34
|
-
constructor({ magnifyViewportId, sourceEnabledElement, radius, position, zoomFactor, autoPan, }: {
|
|
35
|
-
magnifyViewportId?: string;
|
|
36
|
-
sourceEnabledElement: Types.IEnabledElement;
|
|
37
|
-
radius?: number;
|
|
38
|
-
position?: Types.Point2;
|
|
39
|
-
zoomFactor: number;
|
|
40
|
-
autoPan: {
|
|
41
|
-
enabled: boolean;
|
|
42
|
-
padding: number;
|
|
43
|
-
callback: AutoPanCallback;
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
get sourceEnabledElement(): Types.IEnabledElement;
|
|
47
|
-
get viewportId(): string;
|
|
48
|
-
get radius(): number;
|
|
49
|
-
set radius(radius: number);
|
|
50
|
-
update(): void;
|
|
51
|
-
dispose(): void;
|
|
52
|
-
private _handleToolModeChanged;
|
|
53
|
-
private _inheritBorderRadius;
|
|
54
|
-
private _createViewportNode;
|
|
55
|
-
private _convertZoomFactorToParallelScale;
|
|
56
|
-
private _isStackViewport;
|
|
57
|
-
private _isVolumeViewport;
|
|
58
|
-
private _cloneToolGroups;
|
|
59
|
-
private _cloneStack;
|
|
60
|
-
private _cloneVolumes;
|
|
61
|
-
private _cloneViewport;
|
|
62
|
-
private _cancelMouseEventCallback;
|
|
63
|
-
private _browserMouseUpCallback;
|
|
64
|
-
private _browserMouseDownCallback;
|
|
65
|
-
private _mouseDragCallback;
|
|
66
|
-
private _addBrowserEventListeners;
|
|
67
|
-
private _removeBrowserEventListeners;
|
|
68
|
-
private _addEventListeners;
|
|
69
|
-
private _removeEventListeners;
|
|
70
|
-
private _initialize;
|
|
71
|
-
private _syncViewportsCameras;
|
|
72
|
-
private _syncStackViewports;
|
|
73
|
-
private _syncViewports;
|
|
74
|
-
private _resizeViewport;
|
|
75
|
-
}
|
|
76
|
-
export { AdvancedMagnifyViewport as default, AdvancedMagnifyViewport };
|
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
import { vec2, vec3 } from 'gl-matrix';
|
|
2
|
-
import { getEnabledElement, eventTarget, utilities as csUtils, } from '@cornerstonejs/core';
|
|
3
|
-
import { SegmentationRepresentations, ToolModes, Events as cstEvents, } from '../enums';
|
|
4
|
-
import { ToolGroupManager, state } from '../store';
|
|
5
|
-
import { debounce } from '../utilities';
|
|
6
|
-
import { segmentation } from '..';
|
|
7
|
-
import { AnnotationTool, AdvancedMagnifyTool } from './';
|
|
8
|
-
import { distanceToPoint } from '../utilities/math/point';
|
|
9
|
-
const MAGNIFY_CLASSNAME = 'advancedMagnifyTool';
|
|
10
|
-
const MAGNIFY_VIEWPORT_INITIAL_RADIUS = 125;
|
|
11
|
-
const isSegmentation = (actor) => actor.uid !== actor.referencedId;
|
|
12
|
-
class AdvancedMagnifyViewport {
|
|
13
|
-
constructor({ magnifyViewportId, sourceEnabledElement, radius = MAGNIFY_VIEWPORT_INITIAL_RADIUS, position = [0, 0], zoomFactor, autoPan, }) {
|
|
14
|
-
this._enabledElement = null;
|
|
15
|
-
this._sourceToolGroup = null;
|
|
16
|
-
this._magnifyToolGroup = null;
|
|
17
|
-
this._isViewportReady = false;
|
|
18
|
-
this._radius = 0;
|
|
19
|
-
this._resized = false;
|
|
20
|
-
this._canAutoPan = false;
|
|
21
|
-
this._viewportId = magnifyViewportId ?? csUtils.uuidv4();
|
|
22
|
-
this._sourceEnabledElement = sourceEnabledElement;
|
|
23
|
-
this._autoPan = autoPan;
|
|
24
|
-
this.radius = radius;
|
|
25
|
-
this.position = position;
|
|
26
|
-
this.zoomFactor = zoomFactor;
|
|
27
|
-
this.visible = true;
|
|
28
|
-
this._browserMouseDownCallback = this._browserMouseDownCallback.bind(this);
|
|
29
|
-
this._browserMouseUpCallback = this._browserMouseUpCallback.bind(this);
|
|
30
|
-
this._handleToolModeChanged = this._handleToolModeChanged.bind(this);
|
|
31
|
-
this._mouseDragCallback = this._mouseDragCallback.bind(this);
|
|
32
|
-
this._resizeViewportAsync = (debounce(this._resizeViewport.bind(this), 1));
|
|
33
|
-
this._initialize();
|
|
34
|
-
}
|
|
35
|
-
get sourceEnabledElement() {
|
|
36
|
-
return this._sourceEnabledElement;
|
|
37
|
-
}
|
|
38
|
-
get viewportId() {
|
|
39
|
-
return this._viewportId;
|
|
40
|
-
}
|
|
41
|
-
get radius() {
|
|
42
|
-
return this._radius;
|
|
43
|
-
}
|
|
44
|
-
set radius(radius) {
|
|
45
|
-
if (Math.abs(this._radius - radius) > 0.00001) {
|
|
46
|
-
this._radius = radius;
|
|
47
|
-
this._resized = true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
update() {
|
|
51
|
-
const { radius, position, visible } = this;
|
|
52
|
-
const { viewport } = this._enabledElement;
|
|
53
|
-
const { element } = viewport;
|
|
54
|
-
const size = 2 * radius;
|
|
55
|
-
const [x, y] = position;
|
|
56
|
-
if (this._resized) {
|
|
57
|
-
this._resizeViewportAsync();
|
|
58
|
-
this._resized = false;
|
|
59
|
-
}
|
|
60
|
-
Object.assign(element.style, {
|
|
61
|
-
display: visible ? 'block' : 'hidden',
|
|
62
|
-
width: `${size}px`,
|
|
63
|
-
height: `${size}px`,
|
|
64
|
-
left: `${-radius}px`,
|
|
65
|
-
top: `${-radius}px`,
|
|
66
|
-
transform: `translate(${x}px, ${y}px)`,
|
|
67
|
-
});
|
|
68
|
-
if (this._isViewportReady) {
|
|
69
|
-
this._syncViewports();
|
|
70
|
-
viewport.render();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
dispose() {
|
|
74
|
-
const { viewport } = this._enabledElement;
|
|
75
|
-
const { element } = viewport;
|
|
76
|
-
const renderingEngine = viewport.getRenderingEngine();
|
|
77
|
-
this._removeEventListeners(element);
|
|
78
|
-
renderingEngine.disableElement(viewport.id);
|
|
79
|
-
if (element.parentNode) {
|
|
80
|
-
element.parentNode.removeChild(element);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
_handleToolModeChanged(evt) {
|
|
84
|
-
const { _magnifyToolGroup: magnifyToolGroup } = this;
|
|
85
|
-
const { toolGroupId, toolName, mode, toolBindingsOptions } = evt.detail;
|
|
86
|
-
if (this._sourceToolGroup?.id !== toolGroupId) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
switch (mode) {
|
|
90
|
-
case ToolModes.Active:
|
|
91
|
-
magnifyToolGroup.setToolActive(toolName, toolBindingsOptions);
|
|
92
|
-
break;
|
|
93
|
-
case ToolModes.Passive:
|
|
94
|
-
magnifyToolGroup.setToolPassive(toolName);
|
|
95
|
-
break;
|
|
96
|
-
case ToolModes.Enabled:
|
|
97
|
-
magnifyToolGroup.setToolEnabled(toolName);
|
|
98
|
-
break;
|
|
99
|
-
case ToolModes.Disabled:
|
|
100
|
-
magnifyToolGroup.setToolDisabled(toolName);
|
|
101
|
-
break;
|
|
102
|
-
default:
|
|
103
|
-
throw new Error(`Unknow tool mode (${mode})`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
_inheritBorderRadius(magnifyElement) {
|
|
107
|
-
const viewport = magnifyElement.querySelector('.viewport-element');
|
|
108
|
-
const canvas = magnifyElement.querySelector('.cornerstone-canvas');
|
|
109
|
-
viewport.style.borderRadius = 'inherit';
|
|
110
|
-
canvas.style.borderRadius = 'inherit';
|
|
111
|
-
}
|
|
112
|
-
_createViewportNode() {
|
|
113
|
-
const magnifyElement = document.createElement('div');
|
|
114
|
-
const { radius } = this;
|
|
115
|
-
const size = radius * 2;
|
|
116
|
-
magnifyElement.classList.add(MAGNIFY_CLASSNAME);
|
|
117
|
-
Object.assign(magnifyElement.style, {
|
|
118
|
-
display: 'block',
|
|
119
|
-
width: `${size}px`,
|
|
120
|
-
height: `${size}px`,
|
|
121
|
-
position: 'absolute',
|
|
122
|
-
overflow: 'hidden',
|
|
123
|
-
borderRadius: '50%',
|
|
124
|
-
boxSizing: 'border-box',
|
|
125
|
-
left: `${-radius}px`,
|
|
126
|
-
top: `${-radius}px`,
|
|
127
|
-
transform: `translate(-1000px, -1000px)`,
|
|
128
|
-
});
|
|
129
|
-
return magnifyElement;
|
|
130
|
-
}
|
|
131
|
-
_convertZoomFactorToParallelScale(viewport, magnifyViewport, zoomFactor) {
|
|
132
|
-
const { parallelScale } = viewport.getCamera();
|
|
133
|
-
const canvasRatio = magnifyViewport.canvas.offsetWidth / viewport.canvas.offsetWidth;
|
|
134
|
-
return parallelScale * (1 / zoomFactor) * canvasRatio;
|
|
135
|
-
}
|
|
136
|
-
_isStackViewport(viewport) {
|
|
137
|
-
return 'setStack' in viewport;
|
|
138
|
-
}
|
|
139
|
-
_isVolumeViewport(viewport) {
|
|
140
|
-
return 'addVolumes' in viewport;
|
|
141
|
-
}
|
|
142
|
-
_cloneToolGroups(sourceViewport, magnifyViewport) {
|
|
143
|
-
const sourceActors = sourceViewport.getActors();
|
|
144
|
-
const magnifyToolGroupId = `${magnifyViewport.id}-toolGroup`;
|
|
145
|
-
const sourceToolGroup = ToolGroupManager.getToolGroupForViewport(sourceViewport.id, sourceViewport.renderingEngineId);
|
|
146
|
-
const magnifyToolGroup = sourceToolGroup.clone(magnifyToolGroupId, (toolName) => {
|
|
147
|
-
const toolInstance = sourceToolGroup.getToolInstance(toolName);
|
|
148
|
-
const isAnnotationTool = toolInstance instanceof AnnotationTool &&
|
|
149
|
-
!(toolInstance instanceof AdvancedMagnifyTool);
|
|
150
|
-
return isAnnotationTool;
|
|
151
|
-
});
|
|
152
|
-
magnifyToolGroup.addViewport(magnifyViewport.id, magnifyViewport.renderingEngineId);
|
|
153
|
-
sourceActors.filter(isSegmentation).forEach((actor) => {
|
|
154
|
-
segmentation.addSegmentationRepresentations(this.viewportId, [
|
|
155
|
-
{
|
|
156
|
-
segmentationId: actor.referencedId,
|
|
157
|
-
type: SegmentationRepresentations.Labelmap,
|
|
158
|
-
},
|
|
159
|
-
]);
|
|
160
|
-
});
|
|
161
|
-
return { sourceToolGroup, magnifyToolGroup };
|
|
162
|
-
}
|
|
163
|
-
_cloneStack(sourceViewport, magnifyViewport) {
|
|
164
|
-
const imageIds = sourceViewport.getImageIds();
|
|
165
|
-
magnifyViewport.setStack(imageIds).then(() => {
|
|
166
|
-
this._isViewportReady = true;
|
|
167
|
-
this.update();
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
_cloneVolumes(sourceViewport, magnifyViewport) {
|
|
171
|
-
const actors = sourceViewport.getActors();
|
|
172
|
-
const volumeInputArray = actors
|
|
173
|
-
.filter((actor) => !isSegmentation(actor))
|
|
174
|
-
.map((actor) => ({ volumeId: actor.uid }));
|
|
175
|
-
magnifyViewport.setVolumes(volumeInputArray).then(() => {
|
|
176
|
-
this._isViewportReady = true;
|
|
177
|
-
this.update();
|
|
178
|
-
});
|
|
179
|
-
return magnifyViewport;
|
|
180
|
-
}
|
|
181
|
-
_cloneViewport(sourceViewport, magnifyElement) {
|
|
182
|
-
const { viewportId: magnifyViewportId } = this;
|
|
183
|
-
const renderingEngine = sourceViewport.getRenderingEngine();
|
|
184
|
-
const { options: sourceViewportOptions } = sourceViewport;
|
|
185
|
-
const viewportInput = {
|
|
186
|
-
element: magnifyElement,
|
|
187
|
-
viewportId: magnifyViewportId,
|
|
188
|
-
type: sourceViewport.type,
|
|
189
|
-
defaultOptions: { ...sourceViewportOptions },
|
|
190
|
-
};
|
|
191
|
-
renderingEngine.enableElement(viewportInput);
|
|
192
|
-
const magnifyViewport = (renderingEngine.getViewport(magnifyViewportId));
|
|
193
|
-
if (this._isStackViewport(sourceViewport)) {
|
|
194
|
-
this._cloneStack(sourceViewport, magnifyViewport);
|
|
195
|
-
}
|
|
196
|
-
else if (this._isVolumeViewport(sourceViewport)) {
|
|
197
|
-
this._cloneVolumes(sourceViewport, magnifyViewport);
|
|
198
|
-
}
|
|
199
|
-
this._inheritBorderRadius(magnifyElement);
|
|
200
|
-
const toolGroups = this._cloneToolGroups(sourceViewport, magnifyViewport);
|
|
201
|
-
this._sourceToolGroup = toolGroups.sourceToolGroup;
|
|
202
|
-
this._magnifyToolGroup = toolGroups.magnifyToolGroup;
|
|
203
|
-
}
|
|
204
|
-
_cancelMouseEventCallback(evt) {
|
|
205
|
-
evt.stopPropagation();
|
|
206
|
-
evt.preventDefault();
|
|
207
|
-
}
|
|
208
|
-
_browserMouseUpCallback(evt) {
|
|
209
|
-
const { element } = this._enabledElement.viewport;
|
|
210
|
-
document.removeEventListener('mouseup', this._browserMouseUpCallback);
|
|
211
|
-
element.addEventListener('mouseup', this._cancelMouseEventCallback);
|
|
212
|
-
element.addEventListener('mousemove', this._cancelMouseEventCallback);
|
|
213
|
-
}
|
|
214
|
-
_browserMouseDownCallback(evt) {
|
|
215
|
-
const { element } = this._enabledElement.viewport;
|
|
216
|
-
this._canAutoPan = !!evt.target?.closest('.advancedMagnifyTool');
|
|
217
|
-
document.addEventListener('mouseup', this._browserMouseUpCallback);
|
|
218
|
-
element.removeEventListener('mouseup', this._cancelMouseEventCallback);
|
|
219
|
-
element.removeEventListener('mousemove', this._cancelMouseEventCallback);
|
|
220
|
-
}
|
|
221
|
-
_mouseDragCallback(evt) {
|
|
222
|
-
if (!state.isInteractingWithTool) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
const { _autoPan: autoPan } = this;
|
|
226
|
-
if (!autoPan.enabled || !this._canAutoPan) {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
const { currentPoints } = evt.detail;
|
|
230
|
-
const { viewport } = this._enabledElement;
|
|
231
|
-
const { canvasToWorld } = viewport;
|
|
232
|
-
const { canvas: canvasCurrent } = currentPoints;
|
|
233
|
-
const { radius: magnifyRadius } = this;
|
|
234
|
-
const canvasCenter = [magnifyRadius, magnifyRadius];
|
|
235
|
-
const dist = distanceToPoint(canvasCenter, canvasCurrent);
|
|
236
|
-
const maxDist = magnifyRadius - autoPan.padding;
|
|
237
|
-
if (dist <= maxDist) {
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
const panDist = dist - maxDist;
|
|
241
|
-
const canvasDeltaPos = vec2.sub(vec2.create(), canvasCurrent, canvasCenter);
|
|
242
|
-
vec2.normalize(canvasDeltaPos, canvasDeltaPos);
|
|
243
|
-
vec2.scale(canvasDeltaPos, canvasDeltaPos, panDist);
|
|
244
|
-
const newCanvasPosition = vec2.add(vec2.create(), this.position, canvasDeltaPos);
|
|
245
|
-
const currentWorldPos = canvasToWorld(this.position);
|
|
246
|
-
const newWorldPos = canvasToWorld(newCanvasPosition);
|
|
247
|
-
const worldDeltaPos = vec3.sub(vec3.create(), newWorldPos, currentWorldPos);
|
|
248
|
-
const autoPanCallbackData = {
|
|
249
|
-
points: {
|
|
250
|
-
currentPosition: {
|
|
251
|
-
canvas: this.position,
|
|
252
|
-
world: currentWorldPos,
|
|
253
|
-
},
|
|
254
|
-
newPosition: {
|
|
255
|
-
canvas: newCanvasPosition,
|
|
256
|
-
world: newWorldPos,
|
|
257
|
-
},
|
|
258
|
-
},
|
|
259
|
-
delta: {
|
|
260
|
-
canvas: canvasDeltaPos,
|
|
261
|
-
world: worldDeltaPos,
|
|
262
|
-
},
|
|
263
|
-
};
|
|
264
|
-
autoPan.callback(autoPanCallbackData);
|
|
265
|
-
}
|
|
266
|
-
_addBrowserEventListeners(element) {
|
|
267
|
-
document.addEventListener('mousedown', this._browserMouseDownCallback, true);
|
|
268
|
-
element.addEventListener('mousedown', this._cancelMouseEventCallback);
|
|
269
|
-
element.addEventListener('mouseup', this._cancelMouseEventCallback);
|
|
270
|
-
element.addEventListener('mousemove', this._cancelMouseEventCallback);
|
|
271
|
-
element.addEventListener('dblclick', this._cancelMouseEventCallback);
|
|
272
|
-
}
|
|
273
|
-
_removeBrowserEventListeners(element) {
|
|
274
|
-
document.removeEventListener('mousedown', this._browserMouseDownCallback, true);
|
|
275
|
-
document.removeEventListener('mouseup', this._browserMouseUpCallback);
|
|
276
|
-
element.removeEventListener('mousedown', this._cancelMouseEventCallback);
|
|
277
|
-
element.removeEventListener('mouseup', this._cancelMouseEventCallback);
|
|
278
|
-
element.removeEventListener('mousemove', this._cancelMouseEventCallback);
|
|
279
|
-
element.removeEventListener('dblclick', this._cancelMouseEventCallback);
|
|
280
|
-
}
|
|
281
|
-
_addEventListeners(element) {
|
|
282
|
-
eventTarget.addEventListener(cstEvents.TOOL_MODE_CHANGED, this._handleToolModeChanged);
|
|
283
|
-
element.addEventListener(cstEvents.MOUSE_MOVE, this._mouseDragCallback);
|
|
284
|
-
element.addEventListener(cstEvents.MOUSE_DRAG, this._mouseDragCallback);
|
|
285
|
-
this._addBrowserEventListeners(element);
|
|
286
|
-
}
|
|
287
|
-
_removeEventListeners(element) {
|
|
288
|
-
eventTarget.removeEventListener(cstEvents.TOOL_MODE_CHANGED, this._handleToolModeChanged);
|
|
289
|
-
element.addEventListener(cstEvents.MOUSE_MOVE, this._mouseDragCallback);
|
|
290
|
-
element.addEventListener(cstEvents.MOUSE_DRAG, this._mouseDragCallback);
|
|
291
|
-
this._removeBrowserEventListeners(element);
|
|
292
|
-
}
|
|
293
|
-
_initialize() {
|
|
294
|
-
const { _sourceEnabledElement: sourceEnabledElement } = this;
|
|
295
|
-
const { viewport: sourceViewport } = sourceEnabledElement;
|
|
296
|
-
const { canvas: sourceCanvas } = sourceViewport;
|
|
297
|
-
const magnifyElement = this._createViewportNode();
|
|
298
|
-
sourceCanvas.parentNode.appendChild(magnifyElement);
|
|
299
|
-
this._addEventListeners(magnifyElement);
|
|
300
|
-
this._cloneViewport(sourceViewport, magnifyElement);
|
|
301
|
-
this._enabledElement = getEnabledElement(magnifyElement);
|
|
302
|
-
}
|
|
303
|
-
_syncViewportsCameras(sourceViewport, magnifyViewport) {
|
|
304
|
-
const worldPos = sourceViewport.canvasToWorld(this.position);
|
|
305
|
-
const parallelScale = this._convertZoomFactorToParallelScale(sourceViewport, magnifyViewport, this.zoomFactor);
|
|
306
|
-
const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
|
|
307
|
-
const distance = Math.sqrt(Math.pow(focalPoint[0] - position[0], 2) +
|
|
308
|
-
Math.pow(focalPoint[1] - position[1], 2) +
|
|
309
|
-
Math.pow(focalPoint[2] - position[2], 2));
|
|
310
|
-
const updatedFocalPoint = [
|
|
311
|
-
worldPos[0],
|
|
312
|
-
worldPos[1],
|
|
313
|
-
worldPos[2],
|
|
314
|
-
];
|
|
315
|
-
const updatedPosition = [
|
|
316
|
-
updatedFocalPoint[0] + distance * viewPlaneNormal[0],
|
|
317
|
-
updatedFocalPoint[1] + distance * viewPlaneNormal[1],
|
|
318
|
-
updatedFocalPoint[2] + distance * viewPlaneNormal[2],
|
|
319
|
-
];
|
|
320
|
-
magnifyViewport.setCamera({
|
|
321
|
-
parallelScale,
|
|
322
|
-
focalPoint: updatedFocalPoint,
|
|
323
|
-
position: updatedPosition,
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
_syncStackViewports(sourceViewport, magnifyViewport) {
|
|
327
|
-
magnifyViewport.setImageIdIndex(sourceViewport.getCurrentImageIdIndex());
|
|
328
|
-
}
|
|
329
|
-
_syncViewports() {
|
|
330
|
-
const { viewport: sourceViewport } = this._sourceEnabledElement;
|
|
331
|
-
const { viewport: magnifyViewport } = this._enabledElement;
|
|
332
|
-
const sourceProperties = sourceViewport.getProperties();
|
|
333
|
-
const imageData = magnifyViewport.getImageData();
|
|
334
|
-
if (!imageData) {
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
magnifyViewport.setProperties(sourceProperties);
|
|
338
|
-
this._syncViewportsCameras(sourceViewport, magnifyViewport);
|
|
339
|
-
if (this._isStackViewport(sourceViewport)) {
|
|
340
|
-
this._syncStackViewports(sourceViewport, magnifyViewport);
|
|
341
|
-
}
|
|
342
|
-
this._syncViewportsCameras(sourceViewport, magnifyViewport);
|
|
343
|
-
magnifyViewport.render();
|
|
344
|
-
}
|
|
345
|
-
_resizeViewport() {
|
|
346
|
-
const { viewport } = this._enabledElement;
|
|
347
|
-
const renderingEngine = viewport.getRenderingEngine();
|
|
348
|
-
renderingEngine.resize();
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
export { AdvancedMagnifyViewport as default, AdvancedMagnifyViewport };
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
import type { AutoPanCallback } from './AdvancedMagnifyViewport';
|
|
3
|
-
import { AdvancedMagnifyViewport } from './AdvancedMagnifyViewport';
|
|
4
|
-
import type { AdvancedMagnifyAnnotation } from '../types/ToolSpecificAnnotationTypes';
|
|
5
|
-
export type MagnifyViewportInfo = {
|
|
6
|
-
magnifyViewportId?: string;
|
|
7
|
-
sourceEnabledElement: Types.IEnabledElement;
|
|
8
|
-
position: Types.Point2;
|
|
9
|
-
radius: number;
|
|
10
|
-
zoomFactor: number;
|
|
11
|
-
autoPan: {
|
|
12
|
-
enabled: boolean;
|
|
13
|
-
padding: number;
|
|
14
|
-
callback: AutoPanCallback;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
declare class AdvancedMagnifyViewportManager {
|
|
18
|
-
private static _singleton;
|
|
19
|
-
private _magnifyViewportsMap;
|
|
20
|
-
constructor();
|
|
21
|
-
static getInstance(): AdvancedMagnifyViewportManager;
|
|
22
|
-
createViewport: (annotation: AdvancedMagnifyAnnotation, viewportInfo: MagnifyViewportInfo) => AdvancedMagnifyViewport;
|
|
23
|
-
getViewport(magnifyViewportId: string): AdvancedMagnifyViewport;
|
|
24
|
-
dispose(): void;
|
|
25
|
-
destroyViewport(magnifyViewportId: string): void;
|
|
26
|
-
private _destroyViewports;
|
|
27
|
-
private _annotationRemovedCallback;
|
|
28
|
-
private _getMagnifyViewportsMapEntriesBySourceViewportId;
|
|
29
|
-
private _newStackImageCallback;
|
|
30
|
-
private _newVolumeImageCallback;
|
|
31
|
-
private _reset;
|
|
32
|
-
private _addEventListeners;
|
|
33
|
-
private _removeEventListeners;
|
|
34
|
-
private _addSourceElementEventListener;
|
|
35
|
-
private _removeSourceElementEventListener;
|
|
36
|
-
private _initialize;
|
|
37
|
-
}
|
|
38
|
-
export { AdvancedMagnifyViewportManager as default, AdvancedMagnifyViewportManager, };
|