@cornerstonejs/tools 2.0.0-beta.21 → 2.0.0-beta.23
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 +4 -3
- package/dist/esm/index.js +4 -3
- 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 +2 -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 +7 -8
- package/dist/esm/tools/annotation/CircleROITool.js +15 -16
- package/dist/esm/tools/annotation/CobbAngleTool.js +1 -1
- package/dist/esm/tools/annotation/DragProbeTool.js +2 -2
- package/dist/esm/tools/annotation/EllipticalROITool.js +12 -13
- package/dist/esm/tools/annotation/HeightTool.js +5 -6
- package/dist/esm/tools/annotation/KeyImageTool.js +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +5 -6
- 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.d.ts +4 -4
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +20 -20
- package/dist/esm/tools/annotation/ProbeTool.js +9 -10
- package/dist/esm/tools/annotation/RectangleROITool.js +12 -13
- package/dist/esm/tools/annotation/SplineROITool.js +12 -9
- 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/index.d.ts +1 -3
- package/dist/esm/tools/index.js +1 -3
- package/dist/esm/tools/segmentation/BrushTool.js +10 -8
- package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +8 -9
- package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +11 -13
- package/dist/esm/tools/segmentation/SegmentSelectTool.js +1 -1
- package/dist/esm/tools/segmentation/strategies/compositions/preview.js +4 -4
- package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +2 -2
- 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/getCalibratedUnits.d.ts +2 -2
- package/dist/esm/utilities/getCalibratedUnits.js +13 -13
- 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/tools/StackScrollToolMouseWheelTool.d.ts +0 -16
- package/dist/esm/tools/StackScrollToolMouseWheelTool.js +0 -33
- 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
|
@@ -5,7 +5,6 @@ import WindowLevelTool from './WindowLevelTool';
|
|
|
5
5
|
import WindowLevelRegionTool from './WindowLevelRegionTool';
|
|
6
6
|
import StackScrollTool from './StackScrollTool';
|
|
7
7
|
import PlanarRotateTool from './PlanarRotateTool';
|
|
8
|
-
import StackScrollMouseWheelTool from './StackScrollToolMouseWheelTool';
|
|
9
8
|
import ZoomTool from './ZoomTool';
|
|
10
9
|
import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
|
|
11
10
|
import MIPJumpToClickTool from './MIPJumpToClickTool';
|
|
@@ -16,7 +15,6 @@ import ReferenceLinesTool from './ReferenceLinesTool';
|
|
|
16
15
|
import OverlayGridTool from './OverlayGridTool';
|
|
17
16
|
import SegmentationIntersectionTool from './SegmentationIntersectionTool';
|
|
18
17
|
import ReferenceCursors from './ReferenceCursors';
|
|
19
|
-
import ReferenceLines from './ReferenceLinesTool';
|
|
20
18
|
import ScaleOverlayTool from './ScaleOverlayTool';
|
|
21
19
|
import SculptorTool from './SculptorTool';
|
|
22
20
|
import BidirectionalTool from './annotation/BidirectionalTool';
|
|
@@ -49,4 +47,4 @@ import BrushTool from './segmentation/BrushTool';
|
|
|
49
47
|
import PaintFillTool from './segmentation/PaintFillTool';
|
|
50
48
|
import OrientationMarkerTool from './OrientationMarkerTool';
|
|
51
49
|
import SegmentSelectTool from './segmentation/SegmentSelectTool';
|
|
52
|
-
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool,
|
|
50
|
+
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, HeightTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
|
package/dist/esm/tools/index.js
CHANGED
|
@@ -5,7 +5,6 @@ import WindowLevelTool from './WindowLevelTool';
|
|
|
5
5
|
import WindowLevelRegionTool from './WindowLevelRegionTool';
|
|
6
6
|
import StackScrollTool from './StackScrollTool';
|
|
7
7
|
import PlanarRotateTool from './PlanarRotateTool';
|
|
8
|
-
import StackScrollMouseWheelTool from './StackScrollToolMouseWheelTool';
|
|
9
8
|
import ZoomTool from './ZoomTool';
|
|
10
9
|
import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
|
|
11
10
|
import MIPJumpToClickTool from './MIPJumpToClickTool';
|
|
@@ -16,7 +15,6 @@ import ReferenceLinesTool from './ReferenceLinesTool';
|
|
|
16
15
|
import OverlayGridTool from './OverlayGridTool';
|
|
17
16
|
import SegmentationIntersectionTool from './SegmentationIntersectionTool';
|
|
18
17
|
import ReferenceCursors from './ReferenceCursors';
|
|
19
|
-
import ReferenceLines from './ReferenceLinesTool';
|
|
20
18
|
import ScaleOverlayTool from './ScaleOverlayTool';
|
|
21
19
|
import SculptorTool from './SculptorTool';
|
|
22
20
|
import BidirectionalTool from './annotation/BidirectionalTool';
|
|
@@ -49,4 +47,4 @@ import BrushTool from './segmentation/BrushTool';
|
|
|
49
47
|
import PaintFillTool from './segmentation/PaintFillTool';
|
|
50
48
|
import OrientationMarkerTool from './OrientationMarkerTool';
|
|
51
49
|
import SegmentSelectTool from './segmentation/SegmentSelectTool';
|
|
52
|
-
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool,
|
|
50
|
+
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, ReferenceCursors, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, SegmentationIntersectionTool, BidirectionalTool, LengthTool, HeightTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, SplineROITool, PlanarFreehandROITool, PlanarFreehandContourSegmentationTool, LivewireContourTool, LivewireContourSegmentationTool, ArrowAnnotateTool, AngleTool, CobbAngleTool, UltrasoundDirectionalTool, KeyImageTool, AnnotationEraserTool as EraserTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, CircleROIStartEndThresholdTool, SplineContourSegmentationTool, BrushTool, MagnifyTool, AdvancedMagnifyTool, PaintFillTool, ScaleOverlayTool, OrientationMarkerTool, SculptorTool, SegmentSelectTool, };
|
|
@@ -9,9 +9,11 @@ import { Events, ToolModes, SegmentationRepresentations, StrategyCallbacks, } fr
|
|
|
9
9
|
import { drawCircle as drawCircleSvg } from '../../drawingSvg';
|
|
10
10
|
import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
|
|
11
11
|
import triggerAnnotationRenderForViewportUIDs from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
12
|
-
import { config as segmentationConfig, segmentLocking, segmentIndex as segmentIndexController, state as segmentationState, activeSegmentation, } from '../../stateManagement/segmentation';
|
|
13
12
|
import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
|
|
14
|
-
import { getCurrentLabelmapImageIdForViewport } from '../../stateManagement/segmentation/segmentationState';
|
|
13
|
+
import { getActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
|
|
14
|
+
import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
|
|
15
|
+
import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
|
|
16
|
+
import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
|
|
15
17
|
class BrushTool extends BaseTool {
|
|
16
18
|
constructor(toolProps = {}, defaultToolProps = {
|
|
17
19
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
@@ -192,7 +194,7 @@ class BrushTool extends BaseTool {
|
|
|
192
194
|
createEditData(element) {
|
|
193
195
|
const enabledElement = getEnabledElement(element);
|
|
194
196
|
const { viewport } = enabledElement;
|
|
195
|
-
const activeRepresentation =
|
|
197
|
+
const activeRepresentation = getActiveSegmentationRepresentation(viewport.id);
|
|
196
198
|
if (!activeRepresentation) {
|
|
197
199
|
throw new Error('No active segmentation detected, create a segmentation representation before using the brush tool');
|
|
198
200
|
}
|
|
@@ -200,8 +202,8 @@ class BrushTool extends BaseTool {
|
|
|
200
202
|
if (type === SegmentationRepresentations.Contour) {
|
|
201
203
|
throw new Error('Not implemented yet');
|
|
202
204
|
}
|
|
203
|
-
const segmentsLocked =
|
|
204
|
-
const { representationData } =
|
|
205
|
+
const segmentsLocked = getLockedSegmentIndices(segmentationId);
|
|
206
|
+
const { representationData } = getSegmentation(segmentationId);
|
|
205
207
|
const labelmapData = representationData[SegmentationRepresentations.Labelmap];
|
|
206
208
|
if (isVolumeSegmentation(labelmapData, viewport)) {
|
|
207
209
|
const { volumeId } = representationData[type];
|
|
@@ -272,14 +274,14 @@ class BrushTool extends BaseTool {
|
|
|
272
274
|
}
|
|
273
275
|
getActiveSegmentationData(viewport) {
|
|
274
276
|
const viewportId = viewport.id;
|
|
275
|
-
const activeRepresentation =
|
|
277
|
+
const activeRepresentation = getActiveSegmentationRepresentation(viewportId);
|
|
276
278
|
if (!activeRepresentation) {
|
|
277
279
|
console.warn('No active segmentation detected, create one before using the brush tool');
|
|
278
280
|
return;
|
|
279
281
|
}
|
|
280
282
|
const { segmentationId, segmentationRepresentationUID } = activeRepresentation;
|
|
281
|
-
const segmentIndex =
|
|
282
|
-
const segmentColor =
|
|
283
|
+
const segmentIndex = getActiveSegmentIndex(segmentationId);
|
|
284
|
+
const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
|
|
283
285
|
return {
|
|
284
286
|
segmentIndex,
|
|
285
287
|
segmentationId,
|
|
@@ -16,7 +16,6 @@ import { getCanvasCircleCorners, getCanvasCircleRadius, } from '../../utilities/
|
|
|
16
16
|
import { getCalibratedLengthUnitsAndScale, getCalibratedAspect, } from '../../utilities/getCalibratedUnits';
|
|
17
17
|
import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
|
|
18
18
|
import { pointInEllipse } from '../../utilities/math/ellipse';
|
|
19
|
-
import { roundNumber } from '../../utilities';
|
|
20
19
|
import { BasicStatsCalculator } from '../../utilities/math/basic';
|
|
21
20
|
import cloneDeep from 'lodash.clonedeep';
|
|
22
21
|
import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
|
|
@@ -346,7 +345,7 @@ class CircleROIStartEndThresholdTool extends CircleROITool {
|
|
|
346
345
|
isPreScaled: isViewportPreScaled(viewport, targetId),
|
|
347
346
|
isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
|
|
348
347
|
};
|
|
349
|
-
const
|
|
348
|
+
const modalityUnit = getPixelValueUnits(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
|
|
350
349
|
for (let i = 0; i < projectionPoints.length; i++) {
|
|
351
350
|
if (!imageVolume) {
|
|
352
351
|
continue;
|
|
@@ -410,8 +409,8 @@ class CircleROIStartEndThresholdTool extends CircleROITool {
|
|
|
410
409
|
stdDev: stats.stdDev?.value,
|
|
411
410
|
max: stats.max?.value,
|
|
412
411
|
statsArray: stats.array,
|
|
413
|
-
|
|
414
|
-
|
|
412
|
+
areaUnit: measureInfo.areaUnit,
|
|
413
|
+
modalityUnit,
|
|
415
414
|
};
|
|
416
415
|
}
|
|
417
416
|
_calculateCachedStatsTool(annotation, enabledElement) {
|
|
@@ -457,15 +456,15 @@ class CircleROIStartEndThresholdTool extends CircleROITool {
|
|
|
457
456
|
}
|
|
458
457
|
function defaultGetTextLines(data) {
|
|
459
458
|
const cachedVolumeStats = data.cachedStats.statistics;
|
|
460
|
-
const { area, mean, max, stdDev,
|
|
459
|
+
const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
|
|
461
460
|
if (mean === undefined) {
|
|
462
461
|
return;
|
|
463
462
|
}
|
|
464
463
|
const textLines = [];
|
|
465
|
-
textLines.push(`Area: ${roundNumber(area)} ${
|
|
466
|
-
textLines.push(`Mean: ${roundNumber(mean)} ${
|
|
467
|
-
textLines.push(`Max: ${roundNumber(max)} ${
|
|
468
|
-
textLines.push(`Std Dev: ${roundNumber(stdDev)} ${
|
|
464
|
+
textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnit}`);
|
|
465
|
+
textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${modalityUnit}`);
|
|
466
|
+
textLines.push(`Max: ${csUtils.roundNumber(max)} ${modalityUnit}`);
|
|
467
|
+
textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${modalityUnit}`);
|
|
469
468
|
return textLines;
|
|
470
469
|
}
|
|
471
470
|
CircleROIStartEndThresholdTool.toolName = 'CircleROIStartEndThreshold';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getEnabledElement, cache, StackViewport, utilities as csUtils, } from '@cornerstonejs/core';
|
|
2
|
-
import { utilities as coreUtils } from '@cornerstonejs/core';
|
|
3
2
|
import { getCalibratedLengthUnitsAndScale } from '../../utilities/getCalibratedUnits';
|
|
4
3
|
import { vec3 } from 'gl-matrix';
|
|
5
4
|
import { addAnnotation, getAnnotations, removeAnnotation, } from '../../stateManagement';
|
|
@@ -14,7 +13,6 @@ import { hideElementCursor, resetElementCursor, } from '../../cursors/elementCur
|
|
|
14
13
|
import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
15
14
|
import { triggerAnnotationCompleted, triggerAnnotationModified, } from '../../stateManagement/annotation/helpers/state';
|
|
16
15
|
import RectangleROITool from '../annotation/RectangleROITool';
|
|
17
|
-
import { roundNumber } from '../../utilities/';
|
|
18
16
|
import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
|
|
19
17
|
import { BasicStatsCalculator } from '../../utilities/math/basic';
|
|
20
18
|
import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
|
|
@@ -178,10 +176,10 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
|
|
|
178
176
|
if (Array.isArray(endCoordinate)) {
|
|
179
177
|
endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
|
|
180
178
|
}
|
|
181
|
-
const roundedStartCoord =
|
|
182
|
-
const roundedEndCoord =
|
|
179
|
+
const roundedStartCoord = csUtils.roundToPrecision(startCoord);
|
|
180
|
+
const roundedEndCoord = csUtils.roundToPrecision(endCoord);
|
|
183
181
|
const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
|
|
184
|
-
const roundedCoord =
|
|
182
|
+
const roundedCoord = csUtils.roundToPrecision(coord);
|
|
185
183
|
if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
|
|
186
184
|
roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
|
|
187
185
|
continue;
|
|
@@ -318,7 +316,7 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
|
|
|
318
316
|
isPreScaled: isViewportPreScaled(viewport, targetId),
|
|
319
317
|
isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
|
|
320
318
|
};
|
|
321
|
-
const
|
|
319
|
+
const modalityUnit = getPixelValueUnits(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
|
|
322
320
|
for (let i = 0; i < projectionPoints.length; i++) {
|
|
323
321
|
if (!imageVolume) {
|
|
324
322
|
continue;
|
|
@@ -369,8 +367,8 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
|
|
|
369
367
|
stdDev: stats.stdDev?.value,
|
|
370
368
|
max: stats.max?.value,
|
|
371
369
|
statsArray: stats.array,
|
|
372
|
-
|
|
373
|
-
|
|
370
|
+
areaUnit: measureInfo.areaUnit,
|
|
371
|
+
modalityUnit,
|
|
374
372
|
};
|
|
375
373
|
}
|
|
376
374
|
_calculateCachedStatsTool(annotation, enabledElement) {
|
|
@@ -412,15 +410,15 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
|
|
|
412
410
|
}
|
|
413
411
|
function defaultGetTextLines(data) {
|
|
414
412
|
const cachedVolumeStats = data.cachedStats.statistics;
|
|
415
|
-
const { area, mean, max, stdDev,
|
|
413
|
+
const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
|
|
416
414
|
if (mean === undefined) {
|
|
417
415
|
return;
|
|
418
416
|
}
|
|
419
417
|
const textLines = [];
|
|
420
|
-
textLines.push(`Area: ${roundNumber(area)} ${
|
|
421
|
-
textLines.push(`Mean: ${roundNumber(mean)} ${
|
|
422
|
-
textLines.push(`Max: ${roundNumber(max)} ${
|
|
423
|
-
textLines.push(`Std Dev: ${roundNumber(stdDev)} ${
|
|
418
|
+
textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnit}`);
|
|
419
|
+
textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${modalityUnit}`);
|
|
420
|
+
textLines.push(`Max: ${csUtils.roundNumber(max)} ${modalityUnit}`);
|
|
421
|
+
textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${modalityUnit}`);
|
|
424
422
|
return textLines;
|
|
425
423
|
}
|
|
426
424
|
RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
|
|
@@ -6,7 +6,7 @@ import { getActiveSegmentationRepresentation } from '../../stateManagement/segme
|
|
|
6
6
|
import RepresentationTypes from '../../enums/SegmentationRepresentations';
|
|
7
7
|
import { setActiveSegmentIndex } from '../../stateManagement/segmentation/segmentIndex';
|
|
8
8
|
import { getHoveredContourSegmentationAnnotation, getSegmentIndexAtLabelmapBorder, getSegmentIndexAtWorldPoint, } from '../../utilities/segmentation';
|
|
9
|
-
import { state } from '../../store';
|
|
9
|
+
import { state } from '../../store/state';
|
|
10
10
|
import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
|
|
11
11
|
class SegmentSelectTool extends BaseTool {
|
|
12
12
|
static { this.SelectMode = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/
|
|
2
|
-
import { config as segmentationConfig } from '../../../../stateManagement/segmentation';
|
|
1
|
+
import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/events/triggerSegmentationDataModified';
|
|
3
2
|
import StrategyCallbacks from '../../../../enums/StrategyCallbacks';
|
|
3
|
+
import { getSegmentIndexColor, setSegmentIndexColor, } from '../../../../stateManagement/segmentation/config/segmentationColor';
|
|
4
4
|
function lightenColor(r, g, b, a, factor = 0.4) {
|
|
5
5
|
return [
|
|
6
6
|
Math.round(r + (255 - r) * factor),
|
|
@@ -42,12 +42,12 @@ export default {
|
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
44
|
const configColor = previewColors?.[segmentIndex];
|
|
45
|
-
const segmentColor =
|
|
45
|
+
const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
|
|
46
46
|
if (!configColor && !segmentColor) {
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
const previewColor = configColor || lightenColor(...segmentColor);
|
|
50
|
-
|
|
50
|
+
setSegmentIndexColor(segmentationRepresentationUID, previewSegmentIndex, previewColor);
|
|
51
51
|
},
|
|
52
52
|
[StrategyCallbacks.AcceptPreview]: (operationData) => {
|
|
53
53
|
const { segmentationVoxelManager, previewVoxelManager: previewVoxelManager, previewSegmentIndex, preview, } = operationData || {};
|
|
@@ -7,7 +7,7 @@ export interface ROICachedStats {
|
|
|
7
7
|
[targetId: string]: {
|
|
8
8
|
Modality: string;
|
|
9
9
|
area: number;
|
|
10
|
-
|
|
10
|
+
areaUnit: string;
|
|
11
11
|
max: number;
|
|
12
12
|
mean: number;
|
|
13
13
|
stdDev: number;
|
|
@@ -130,7 +130,7 @@ export type SplineROIAnnotation = ContourAnnotation & {
|
|
|
130
130
|
[targetId: string]: {
|
|
131
131
|
Modality: string;
|
|
132
132
|
area: number;
|
|
133
|
-
|
|
133
|
+
areaUnit: string;
|
|
134
134
|
};
|
|
135
135
|
};
|
|
136
136
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { utilities, BaseVolumeViewport, StackViewport, cache, metaData, } from '@cornerstonejs/core';
|
|
2
|
-
import { addAnnotation } from '../stateManagement';
|
|
2
|
+
import { addAnnotation } from '../stateManagement/annotation/annotationState';
|
|
3
3
|
import { vec3 } from 'gl-matrix';
|
|
4
4
|
function annotationHydration(viewport, toolName, worldPoints, options) {
|
|
5
5
|
const viewReference = viewport.getViewReference();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getSegmentation } from '../../stateManagement/segmentation/
|
|
1
|
+
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
2
2
|
export function addContourSegmentationAnnotation(annotation) {
|
|
3
3
|
if (annotation.parentAnnotationUID) {
|
|
4
4
|
return;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
2
2
|
export function removeContourSegmentationAnnotation(annotation) {
|
|
3
3
|
if (!annotation.data.segmentation) {
|
|
4
4
|
throw new Error('removeContourSegmentationAnnotation: annotation does not have a segmentation data');
|
|
5
5
|
}
|
|
6
6
|
const { segmentationId, segmentIndex } = annotation.data.segmentation;
|
|
7
|
-
const segmentation =
|
|
7
|
+
const segmentation = getSegmentation(segmentationId);
|
|
8
8
|
const { annotationUIDsMap } = segmentation?.representationData.CONTOUR || {};
|
|
9
9
|
const annotationsUIDsSet = annotationUIDsMap?.get(segmentIndex);
|
|
10
10
|
if (!annotationsUIDsSet) {
|
|
@@ -2,7 +2,7 @@ import { cache as cornerstoneCache } from '@cornerstonejs/core';
|
|
|
2
2
|
import vtkImageMarchingSquares from '@kitware/vtk.js/Filters/General/ImageMarchingSquares';
|
|
3
3
|
import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
|
|
4
4
|
import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
|
|
5
|
-
import { getDeduplicatedVTKPolyDataPoints } from '
|
|
5
|
+
import { getDeduplicatedVTKPolyDataPoints } from './getDeduplicatedVTKPolyDataPoints';
|
|
6
6
|
import { findContoursFromReducedSet } from './contourFinder';
|
|
7
7
|
import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
|
|
8
8
|
const { Labelmap } = SegmentationRepresentations;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAnnotation } from '../../stateManagement';
|
|
1
|
+
import { getAnnotation } from '../../stateManagement/annotation/annotationState';
|
|
2
2
|
export default function getContourHolesDataWorld(annotation) {
|
|
3
3
|
const childAnnotationUIDs = annotation.childAnnotationUIDs ?? [];
|
|
4
4
|
return childAnnotationUIDs.map((uid) => getAnnotation(uid).data.contour.polyline);
|
|
@@ -8,7 +8,6 @@ import getContourHolesDataWorld from './getContourHolesDataWorld';
|
|
|
8
8
|
import getContourHolesDataCanvas from './getContourHolesDataCanvas';
|
|
9
9
|
import updateContourPolyline from './updateContourPolyline';
|
|
10
10
|
import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
|
|
11
|
-
import * as interpolation from './interpolation';
|
|
12
11
|
import findHandlePolylineIndex from './findHandlePolylineIndex';
|
|
13
12
|
import calculatePerimeter from './calculatePerimeter';
|
|
14
|
-
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline,
|
|
13
|
+
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
|
|
@@ -8,7 +8,6 @@ import getContourHolesDataWorld from './getContourHolesDataWorld';
|
|
|
8
8
|
import getContourHolesDataCanvas from './getContourHolesDataCanvas';
|
|
9
9
|
import updateContourPolyline from './updateContourPolyline';
|
|
10
10
|
import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
|
|
11
|
-
import * as interpolation from './interpolation';
|
|
12
11
|
import findHandlePolylineIndex from './findHandlePolylineIndex';
|
|
13
12
|
import calculatePerimeter from './calculatePerimeter';
|
|
14
|
-
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline,
|
|
13
|
+
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { utilities as csUtils } from '@cornerstonejs/core';
|
|
2
2
|
import * as math from '../math';
|
|
3
|
-
import { getParentAnnotation, invalidateAnnotation, } from '../../stateManagement';
|
|
3
|
+
import { getParentAnnotation, invalidateAnnotation, } from '../../stateManagement/annotation/annotationState';
|
|
4
4
|
export default function updateContourPolyline(annotation, polylineData, transforms, options) {
|
|
5
5
|
const { canvasToWorld, worldToCanvas } = transforms;
|
|
6
6
|
const { data } = annotation;
|
|
@@ -27,16 +27,16 @@ const EPS = 1e-3;
|
|
|
27
27
|
const SQUARE = '\xb2';
|
|
28
28
|
const getCalibratedLengthUnitsAndScale = (image, handles) => {
|
|
29
29
|
const { calibration, hasPixelSpacing } = image;
|
|
30
|
-
let
|
|
31
|
-
let
|
|
30
|
+
let unit = hasPixelSpacing ? 'mm' : PIXEL_UNITS;
|
|
31
|
+
let areaUnit = unit + SQUARE;
|
|
32
32
|
let scale = 1;
|
|
33
33
|
let calibrationType = '';
|
|
34
34
|
if (!calibration ||
|
|
35
35
|
(!calibration.type && !calibration.sequenceOfUltrasoundRegions)) {
|
|
36
|
-
return {
|
|
36
|
+
return { unit, areaUnit, scale };
|
|
37
37
|
}
|
|
38
38
|
if (calibration.type === CalibrationTypes.UNCALIBRATED) {
|
|
39
|
-
return {
|
|
39
|
+
return { unit: PIXEL_UNITS, areaUnit: PIXEL_UNITS + SQUARE, scale };
|
|
40
40
|
}
|
|
41
41
|
if (calibration.sequenceOfUltrasoundRegions) {
|
|
42
42
|
let imageIndex1, imageIndex2;
|
|
@@ -57,14 +57,14 @@ const getCalibratedLengthUnitsAndScale = (image, handles) => {
|
|
|
57
57
|
imageIndex2[1] >= region.regionLocationMinY0 &&
|
|
58
58
|
imageIndex2[1] <= region.regionLocationMaxY1);
|
|
59
59
|
if (!regions?.length) {
|
|
60
|
-
return {
|
|
60
|
+
return { unit, areaUnit, scale };
|
|
61
61
|
}
|
|
62
62
|
regions = regions.filter((region) => SUPPORTED_REGION_DATA_TYPES.includes(region.regionDataType) &&
|
|
63
63
|
SUPPORTED_LENGTH_VARIANT.includes(`${region.physicalUnitsXDirection},${region.physicalUnitsYDirection}`));
|
|
64
64
|
if (!regions.length) {
|
|
65
65
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
unit: PIXEL_UNITS,
|
|
67
|
+
areaUnit: PIXEL_UNITS + SQUARE,
|
|
68
68
|
scale,
|
|
69
69
|
};
|
|
70
70
|
}
|
|
@@ -75,13 +75,13 @@ const getCalibratedLengthUnitsAndScale = (image, handles) => {
|
|
|
75
75
|
if (isSamePhysicalDelta) {
|
|
76
76
|
scale = 1 / physicalDeltaX;
|
|
77
77
|
calibrationType = 'US Region';
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
unit = UNIT_MAPPING[region.physicalUnitsXDirection] || 'unknown';
|
|
79
|
+
areaUnit = unit + SQUARE;
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
82
|
return {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
unit: PIXEL_UNITS,
|
|
84
|
+
areaUnit: PIXEL_UNITS + SQUARE,
|
|
85
85
|
scale,
|
|
86
86
|
};
|
|
87
87
|
}
|
|
@@ -99,8 +99,8 @@ const getCalibratedLengthUnitsAndScale = (image, handles) => {
|
|
|
99
99
|
calibrationType = calibration.type;
|
|
100
100
|
}
|
|
101
101
|
return {
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
unit: unit + (calibrationType ? ` ${calibrationType}` : ''),
|
|
103
|
+
areaUnit: areaUnit + (calibrationType ? ` ${calibrationType}` : ''),
|
|
104
104
|
scale,
|
|
105
105
|
};
|
|
106
106
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ToolGroupManager } from '../store';
|
|
2
1
|
import { getEnabledElement } from '@cornerstonejs/core';
|
|
2
|
+
import { getToolGroupForViewport } from '../store/ToolGroupManager';
|
|
3
3
|
export default function getToolsWithModesForElement(element, modesFilter) {
|
|
4
4
|
const enabledElement = getEnabledElement(element);
|
|
5
5
|
const { renderingEngineId, viewportId } = enabledElement;
|
|
6
|
-
const toolGroup =
|
|
6
|
+
const toolGroup = getToolGroupForViewport(viewportId, renderingEngineId);
|
|
7
7
|
if (!toolGroup) {
|
|
8
8
|
return [];
|
|
9
9
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { utilities } from '@cornerstonejs/core';
|
|
1
|
+
import { utilities, triggerEvent } from '@cornerstonejs/core';
|
|
2
2
|
import { getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement } from './getAnnotationNearPoint';
|
|
3
3
|
import debounce from './debounce';
|
|
4
4
|
import throttle from './throttle';
|
|
@@ -35,5 +35,4 @@ import * as polyDataUtils from './polyData/utils';
|
|
|
35
35
|
import * as voi from './voi';
|
|
36
36
|
import * as contourSegmentation from './contourSegmentation';
|
|
37
37
|
declare const roundNumber: typeof utilities.roundNumber;
|
|
38
|
-
import { triggerEvent } from '@cornerstonejs/core';
|
|
39
38
|
export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnitsAndScale, getCalibratedProbeUnitsAndValue, getCalibratedAspect, segmentation, contours, triggerAnnotationRenderForViewportIds, triggerAnnotationRenderForToolGroupIds, triggerAnnotationRender, getSphereBoundsInfo, getAnnotationNearPoint, getViewportForAnnotation, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, contourSegmentation, annotationHydration, getClosestImageIdForStackViewport, };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { utilities } from '@cornerstonejs/core';
|
|
1
|
+
import { utilities, triggerEvent } from '@cornerstonejs/core';
|
|
2
2
|
import { getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, } from './getAnnotationNearPoint';
|
|
3
3
|
import debounce from './debounce';
|
|
4
4
|
import throttle from './throttle';
|
|
@@ -35,5 +35,4 @@ import * as polyDataUtils from './polyData/utils';
|
|
|
35
35
|
import * as voi from './voi';
|
|
36
36
|
import * as contourSegmentation from './contourSegmentation';
|
|
37
37
|
const roundNumber = utilities.roundNumber;
|
|
38
|
-
import { triggerEvent } from '@cornerstonejs/core';
|
|
39
38
|
export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnitsAndScale, getCalibratedProbeUnitsAndValue, getCalibratedAspect, segmentation, contours, triggerAnnotationRenderForViewportIds, triggerAnnotationRenderForToolGroupIds, triggerAnnotationRender, getSphereBoundsInfo, getAnnotationNearPoint, getViewportForAnnotation, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, contourSegmentation, annotationHydration, getClosestImageIdForStackViewport, };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { distanceToPointSquared } from '../point';
|
|
2
2
|
export default function distanceToPointSquaredInfo(lineStart, lineEnd, point) {
|
|
3
3
|
let closestPoint;
|
|
4
|
-
const distanceSquared =
|
|
4
|
+
const distanceSquared = distanceToPointSquared(lineStart, lineEnd);
|
|
5
5
|
if (lineStart[0] === lineEnd[0] && lineStart[1] === lineEnd[1]) {
|
|
6
6
|
closestPoint = lineStart;
|
|
7
7
|
}
|
|
@@ -24,6 +24,6 @@ export default function distanceToPointSquaredInfo(lineStart, lineEnd, point) {
|
|
|
24
24
|
}
|
|
25
25
|
return {
|
|
26
26
|
point: [...closestPoint],
|
|
27
|
-
distanceSquared:
|
|
27
|
+
distanceSquared: distanceToPointSquared(point, closestPoint),
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { glMatrix } from 'gl-matrix';
|
|
2
|
-
import
|
|
2
|
+
import { distanceToPointSquared } from '../point';
|
|
3
3
|
export default function isClosed(polyline) {
|
|
4
4
|
if (polyline.length < 3) {
|
|
5
5
|
return false;
|
|
@@ -7,6 +7,6 @@ export default function isClosed(polyline) {
|
|
|
7
7
|
const numPolylinePoints = polyline.length;
|
|
8
8
|
const firstPoint = polyline[0];
|
|
9
9
|
const lastPoint = polyline[numPolylinePoints - 1];
|
|
10
|
-
const distFirstToLastPoints =
|
|
10
|
+
const distFirstToLastPoints = distanceToPointSquared(firstPoint, lastPoint);
|
|
11
11
|
return glMatrix.equals(0, distFirstToLastPoints);
|
|
12
12
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ToolGroupManager } from '../../store';
|
|
1
|
+
import PlanarFreehandROITool from '../../tools/annotation/PlanarFreehandROITool';
|
|
3
2
|
import interpolateSegmentPoints from './interpolation/interpolateSegmentPoints';
|
|
3
|
+
import { getToolGroupForViewport } from '../../store/ToolGroupManager';
|
|
4
4
|
function shouldPreventInterpolation(enabledElement, annotation, knotsRatioPercentage) {
|
|
5
5
|
if (!annotation?.data?.polyline || knotsRatioPercentage <= 0) {
|
|
6
6
|
return true;
|
|
@@ -9,7 +9,7 @@ function shouldPreventInterpolation(enabledElement, annotation, knotsRatioPercen
|
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
11
|
const { renderingEngineId, viewportId, FrameOfReferenceUID } = enabledElement;
|
|
12
|
-
const toolGroup =
|
|
12
|
+
const toolGroup = getToolGroupForViewport(viewportId, renderingEngineId);
|
|
13
13
|
if (annotation.metadata.FrameOfReferenceUID !== FrameOfReferenceUID) {
|
|
14
14
|
return true;
|
|
15
15
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getToolGroup } from '../../store/ToolGroupManager';
|
|
2
2
|
import triggerAnnotationRenderForViewportIds from '../triggerAnnotationRenderForViewportIds';
|
|
3
3
|
import { getRenderingEngine } from '@cornerstonejs/core';
|
|
4
|
-
import { getBrushToolInstances } from './
|
|
4
|
+
import { getBrushToolInstances } from './getBrushToolInstances';
|
|
5
5
|
export function setBrushSizeForToolGroup(toolGroupId, brushSize, toolName) {
|
|
6
6
|
const toolGroup = getToolGroup(toolGroupId);
|
|
7
7
|
if (toolGroup === undefined) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getToolGroup } from '../../store/ToolGroupManager';
|
|
2
2
|
import triggerAnnotationRenderForViewportIds from '../triggerAnnotationRenderForViewportIds';
|
|
3
3
|
import { getRenderingEngine } from '@cornerstonejs/core';
|
|
4
|
-
import { getBrushToolInstances } from './
|
|
4
|
+
import { getBrushToolInstances } from './getBrushToolInstances';
|
|
5
5
|
export function setBrushThresholdForToolGroup(toolGroupId, threshold, otherArgs = { isDynamic: false }) {
|
|
6
6
|
const toolGroup = getToolGroup(toolGroupId);
|
|
7
7
|
if (toolGroup === undefined) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getBrushToolInstances(toolGroupId: string, toolName?: string): any[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getToolGroup } from '../../store/ToolGroupManager';
|
|
2
|
+
import BrushTool from '../../tools/segmentation/BrushTool';
|
|
3
|
+
export function getBrushToolInstances(toolGroupId, toolName) {
|
|
4
|
+
const toolGroup = getToolGroup(toolGroupId);
|
|
5
|
+
if (toolGroup === undefined) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const toolInstances = toolGroup._toolInstances;
|
|
9
|
+
if (!Object.keys(toolInstances).length) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (toolName && toolInstances[toolName]) {
|
|
13
|
+
return [toolInstances[toolName]];
|
|
14
|
+
}
|
|
15
|
+
const brushBasedToolInstances = Object.values(toolInstances).filter((toolInstance) => toolInstance instanceof BrushTool);
|
|
16
|
+
return brushBasedToolInstances;
|
|
17
|
+
}
|
|
@@ -1,27 +1,8 @@
|
|
|
1
1
|
import { cache } from '@cornerstonejs/core';
|
|
2
|
-
import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
|
|
3
2
|
import { isVolumeSegmentation } from '../../tools/segmentation/strategies/utils/stackVolumeCheck';
|
|
4
3
|
import { SegmentationRepresentations } from '../../enums';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const cached = segmentIndicesCache.get(segmentationId);
|
|
8
|
-
if (cached) {
|
|
9
|
-
cached.isDirty = true;
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
export const setSegmentationClean = (segmentationId) => {
|
|
13
|
-
const cached = segmentIndicesCache.get(segmentationId);
|
|
14
|
-
if (cached) {
|
|
15
|
-
cached.isDirty = false;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
function getCachedSegmentIndices(segmentationId) {
|
|
19
|
-
const cached = segmentIndicesCache.get(segmentationId);
|
|
20
|
-
if (cached && !cached.isDirty) {
|
|
21
|
-
return cached.indices;
|
|
22
|
-
}
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
4
|
+
import { getCachedSegmentIndices, setCachedSegmentIndices } from './utilities';
|
|
5
|
+
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
25
6
|
function getUniqueSegmentIndices(segmentationId) {
|
|
26
7
|
const cachedResult = getCachedSegmentIndices(segmentationId);
|
|
27
8
|
if (cachedResult) {
|
|
@@ -45,7 +26,7 @@ function getUniqueSegmentIndices(segmentationId) {
|
|
|
45
26
|
default:
|
|
46
27
|
throw new Error(`Unsupported segmentation type: ${segmentation.type}`);
|
|
47
28
|
}
|
|
48
|
-
|
|
29
|
+
setCachedSegmentIndices(segmentationId, indices);
|
|
49
30
|
return indices;
|
|
50
31
|
}
|
|
51
32
|
function handleLabelmapSegmentation(segmentation, segmentationId) {
|