@cornerstonejs/tools 2.0.0-beta.26 → 2.0.0-beta.28
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/eventListeners/index.d.ts +2 -2
- package/dist/esm/eventListeners/index.js +2 -2
- package/dist/esm/eventListeners/mouse/mouseDownListener.js +8 -0
- package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +18 -12
- package/dist/esm/eventListeners/segmentation/index.d.ts +1 -3
- package/dist/esm/eventListeners/segmentation/index.js +1 -3
- package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +13 -10
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +2 -3
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/init.js +1 -5
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +2 -0
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +6 -5
- package/dist/esm/stateManagement/annotation/annotationState.js +11 -2
- package/dist/esm/stateManagement/index.d.ts +1 -4
- package/dist/esm/stateManagement/index.js +1 -3
- package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +9 -6
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +43 -25
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +207 -162
- package/dist/esm/stateManagement/segmentation/SegmentationStyle.d.ts +42 -0
- package/dist/esm/stateManagement/segmentation/SegmentationStyle.js +162 -0
- package/dist/esm/stateManagement/segmentation/activeSegmentation.d.ts +4 -5
- package/dist/esm/stateManagement/segmentation/activeSegmentation.js +10 -14
- package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -2
- package/dist/esm/stateManagement/segmentation/addColorLUT.js +15 -1
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.d.ts +15 -0
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationsToViewport.js +49 -0
- package/dist/esm/stateManagement/segmentation/addSegmentations.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/addSegmentations.js +11 -7
- package/dist/esm/stateManagement/segmentation/config/index.d.ts +2 -2
- package/dist/esm/stateManagement/segmentation/config/index.js +2 -2
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.d.ts +4 -4
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +24 -24
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.d.ts +22 -7
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +29 -29
- package/dist/esm/stateManagement/segmentation/config/styleHelpers.d.ts +39 -0
- package/dist/esm/stateManagement/segmentation/config/styleHelpers.js +48 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/{getGlobalConfig.js → getActiveSegmentation.js} +2 -2
- package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/getGlobalStyle.d.ts +3 -0
- package/dist/esm/stateManagement/segmentation/getGlobalStyle.js +4 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +9 -1
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +10 -2
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +5 -1
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +2 -2
- package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +5 -5
- package/dist/esm/stateManagement/segmentation/getViewportSegmentations.d.ts +3 -0
- package/dist/esm/stateManagement/segmentation/getViewportSegmentations.js +15 -0
- package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/helpers/clearSegmentValue.js +31 -0
- package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.d.ts +1 -2
- package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +4 -6
- package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.d.ts → helpers/computeStackLabelmapFromVolume.d.ts} +2 -2
- package/dist/esm/stateManagement/segmentation/{convertVolumeToStackSegmentation.js → helpers/computeStackLabelmapFromVolume.js} +8 -5
- package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.d.ts +3 -0
- package/dist/esm/stateManagement/segmentation/helpers/computeVolumeLabelmapFromStack.js +4 -0
- package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/helpers/convertStackToVolumeLabelmap.js +7 -0
- package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.d.ts +8 -0
- package/dist/esm/stateManagement/segmentation/helpers/getSegmentationActor.js +27 -0
- package/dist/esm/stateManagement/segmentation/helpers/index.d.ts +2 -1
- package/dist/esm/stateManagement/segmentation/helpers/index.js +2 -1
- package/dist/esm/stateManagement/segmentation/helpers/normalizeSegmentationInput.js +4 -6
- package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +1 -1
- package/dist/esm/stateManagement/segmentation/index.d.ts +14 -7
- package/dist/esm/stateManagement/segmentation/index.js +14 -7
- package/dist/esm/stateManagement/segmentation/{addRepresentationData.d.ts → internalAddRepresentationData.d.ts} +2 -2
- package/dist/esm/stateManagement/segmentation/{addRepresentationData.js → internalAddRepresentationData.js} +5 -2
- package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/internalAddSegmentationRepresentation.js +18 -58
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +9 -10
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/extractContourData.js +8 -5
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +9 -2
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +2 -2
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +4 -6
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +4 -4
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +1 -7
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +1 -3
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +9 -8
- package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -1
- package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -9
- package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +7 -5
- package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.d.ts +14 -2
- package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +69 -19
- package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +6 -18
- package/dist/esm/stateManagement/segmentation/segmentationState.js +9 -18
- package/dist/esm/stateManagement/segmentation/setActiveSegmentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/setActiveSegmentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/setGlobalStyle.d.ts +3 -0
- package/dist/esm/stateManagement/segmentation/setGlobalStyle.js +8 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +5 -1
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +2 -2
- package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +1 -3
- package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +1 -3
- package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +23 -9
- package/dist/esm/store/ToolGroupManager/createToolGroup.d.ts +1 -1
- package/dist/esm/store/ToolGroupManager/createToolGroup.js +3 -3
- package/dist/esm/tools/AdvancedMagnifyTool.js +1 -1
- package/dist/esm/tools/CrosshairsTool.js +1 -2
- package/dist/esm/tools/MIPJumpToClickTool.js +1 -1
- package/dist/esm/tools/ReferenceLinesTool.js +5 -2
- package/dist/esm/tools/StackScrollTool.d.ts +4 -0
- package/dist/esm/tools/StackScrollTool.js +104 -15
- package/dist/esm/tools/WindowLevelTool.js +3 -2
- package/dist/esm/tools/annotation/AngleTool.js +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +1 -1
- package/dist/esm/tools/annotation/CircleROITool.js +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +1 -1
- package/dist/esm/tools/annotation/HeightTool.js +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +1 -1
- package/dist/esm/tools/annotation/LivewireContourTool.js +3 -3
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +1 -1
- package/dist/esm/tools/annotation/ProbeTool.js +2 -2
- package/dist/esm/tools/annotation/RectangleROITool.js +1 -1
- package/dist/esm/tools/annotation/SplineROITool.js +2 -3
- package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +1 -1
- package/dist/esm/tools/base/BaseTool.d.ts +1 -2
- package/dist/esm/tools/base/BaseTool.js +5 -18
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +28 -25
- package/dist/esm/tools/displayTools/Contour/contourConfig.d.ts +3 -3
- package/dist/esm/tools/displayTools/Contour/contourConfig.js +2 -2
- package/dist/esm/tools/displayTools/Contour/contourDisplay.d.ts +1 -1
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +4 -7
- package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +26 -57
- package/dist/esm/tools/displayTools/Contour/removeContourFromElement.d.ts +1 -1
- package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js +2 -4
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.d.ts +1 -1
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +39 -10
- package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.d.ts +3 -5
- package/dist/esm/tools/displayTools/Labelmap/labelmapConfig.js +3 -16
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +86 -90
- package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.d.ts +1 -1
- package/dist/esm/tools/displayTools/Labelmap/removeLabelmapFromElement.js +3 -2
- package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +1 -1
- package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +3 -3
- package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.d.ts +2 -2
- package/dist/esm/tools/displayTools/Surface/removeSurfaceFromElement.js +5 -3
- package/dist/esm/tools/displayTools/Surface/surfaceConfig.d.ts +3 -3
- package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +2 -2
- package/dist/esm/tools/displayTools/Surface/surfaceDisplay.d.ts +1 -1
- package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +7 -8
- package/dist/esm/tools/index.d.ts +1 -2
- package/dist/esm/tools/index.js +1 -2
- package/dist/esm/tools/segmentation/BrushTool.d.ts +0 -4
- package/dist/esm/tools/segmentation/BrushTool.js +23 -22
- package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +2 -2
- package/dist/esm/tools/segmentation/CircleScissorsTool.d.ts +1 -1
- package/dist/esm/tools/segmentation/CircleScissorsTool.js +11 -10
- package/dist/esm/tools/segmentation/PaintFillTool.js +5 -7
- package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +2 -2
- package/dist/esm/tools/segmentation/RectangleScissorsTool.d.ts +0 -1
- package/dist/esm/tools/segmentation/RectangleScissorsTool.js +9 -10
- package/dist/esm/tools/segmentation/SegmentSelectTool.d.ts +2 -2
- package/dist/esm/tools/segmentation/SegmentSelectTool.js +17 -26
- package/dist/esm/tools/segmentation/SphereScissorsTool.d.ts +0 -1
- package/dist/esm/tools/segmentation/SphereScissorsTool.js +6 -9
- package/dist/esm/tools/segmentation/strategies/BrushStrategy.d.ts +2 -0
- package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +2 -0
- package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +1 -2
- package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +1 -1
- package/dist/esm/tools/segmentation/strategies/compositions/preview.js +3 -3
- package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +4 -4
- package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +1 -1
- package/dist/esm/tools/segmentation/strategies/fillCircle.js +3 -3
- package/dist/esm/tools/segmentation/strategies/fillSphere.js +3 -3
- package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +21 -6
- package/dist/esm/types/AnnotationGroupSelector.js +0 -1
- package/dist/esm/types/AnnotationRenderContext.js +0 -1
- package/dist/esm/types/AnnotationStyle.js +0 -1
- package/dist/esm/types/AnnotationTypes.js +0 -1
- package/dist/esm/types/BoundsIJK.js +0 -1
- package/dist/esm/types/CINETypes.js +0 -1
- package/dist/esm/types/CalculatorTypes.js +0 -1
- package/dist/esm/types/CardinalSplineProps.js +0 -1
- package/dist/esm/types/ClosestControlPoint.js +0 -1
- package/dist/esm/types/ClosestPoint.js +0 -1
- package/dist/esm/types/ClosestSplinePoint.js +0 -1
- package/dist/esm/types/ContourSegmentationAnnotation.js +0 -1
- package/dist/esm/types/ContourTypes.d.ts +1 -2
- package/dist/esm/types/ContourTypes.js +0 -1
- package/dist/esm/types/ControlPointInfo.js +0 -1
- package/dist/esm/types/CursorTypes.js +0 -1
- package/dist/esm/types/EventTypes.d.ts +2 -2
- package/dist/esm/types/EventTypes.js +0 -1
- package/dist/esm/types/FloodFillTypes.js +0 -1
- package/dist/esm/types/IAnnotationManager.js +0 -1
- package/dist/esm/types/IBaseTool.js +0 -1
- package/dist/esm/types/IDistance.js +0 -1
- package/dist/esm/types/IPoints.js +0 -1
- package/dist/esm/types/ISculptToolShape.js +0 -1
- package/dist/esm/types/ISetToolModeOptions.js +0 -1
- package/dist/esm/types/ISpline.js +0 -1
- package/dist/esm/types/ISynchronizerEventHandler.js +0 -1
- package/dist/esm/types/IToolClassReference.js +0 -1
- package/dist/esm/types/IToolGroup.js +0 -1
- package/dist/esm/types/ITouchPoints.js +0 -1
- package/dist/esm/types/InteractionTypes.js +0 -1
- package/dist/esm/types/InternalToolTypes.js +0 -1
- package/dist/esm/types/InterpolationTypes.js +0 -1
- package/dist/esm/types/JumpToSliceOptions.js +0 -1
- package/dist/esm/types/LabelmapToolOperationData.d.ts +0 -1
- package/dist/esm/types/LabelmapToolOperationData.js +0 -1
- package/dist/esm/types/LabelmapTypes.d.ts +3 -7
- package/dist/esm/types/LabelmapTypes.js +0 -1
- package/dist/esm/types/PlanarBoundingBox.js +0 -1
- package/dist/esm/types/PolySeg.d.ts +1 -1
- package/dist/esm/types/PolySeg.js +0 -1
- package/dist/esm/types/SVGDrawingHelper.js +0 -1
- package/dist/esm/types/ScrollOptions.js +0 -1
- package/dist/esm/types/SegmentationStateTypes.d.ts +35 -56
- package/dist/esm/types/SegmentationStateTypes.js +0 -1
- package/dist/esm/types/SplineCurveSegment.js +0 -1
- package/dist/esm/types/SplineLineSegment.js +0 -1
- package/dist/esm/types/SplineProps.js +0 -1
- package/dist/esm/types/SurfaceTypes.d.ts +1 -1
- package/dist/esm/types/SurfaceTypes.js +0 -1
- package/dist/esm/types/ToolAction.js +0 -1
- package/dist/esm/types/ToolHandle.js +0 -1
- package/dist/esm/types/ToolProps.js +0 -1
- package/dist/esm/types/ToolSpecificAnnotationTypes.js +0 -1
- package/dist/esm/types/index.d.ts +2 -2
- package/dist/esm/types/index.js +0 -1
- package/dist/esm/utilities/cine/playClip.js +1 -1
- package/dist/esm/utilities/contours/updateContourPolyline.js +3 -0
- package/dist/esm/utilities/index.d.ts +2 -1
- package/dist/esm/utilities/index.js +2 -1
- package/dist/esm/utilities/math/circle/_types.js +0 -1
- package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.js +0 -1
- package/dist/esm/utilities/pointInSurroundingSphereCallback.d.ts +8 -0
- package/dist/esm/utilities/pointInSurroundingSphereCallback.js +71 -0
- package/dist/esm/utilities/segmentation/createLabelmapVolumeForViewport.js +2 -2
- package/dist/esm/utilities/segmentation/getSegmentIndexAtLabelmapBorder.js +10 -9
- package/dist/esm/utilities/segmentation/getSegmentIndexAtWorldPoint.js +9 -8
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +14 -16
- package/dist/esm/utilities/segmentation/index.d.ts +1 -3
- package/dist/esm/utilities/segmentation/index.js +1 -3
- package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +3 -0
- package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +1 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +0 -1
- package/dist/esm/utilities/voi/colorbar/types/index.js +0 -1
- package/dist/esm/widgets/types/WidgetProps.js +0 -1
- package/dist/esm/widgets/types/WidgetSize.js +0 -1
- package/dist/esm/widgets/types/index.js +0 -1
- package/dist/esm/workers/polySegConverters.js +4 -3
- package/package.json +73 -20
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.d.ts +0 -3
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +0 -14
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.d.ts +0 -3
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +0 -8
- package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/addSegmentation.js +0 -11
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +0 -10
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.d.ts +0 -8
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentations.js +0 -19
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.d.ts +0 -14
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +0 -54
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +0 -1
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +0 -8
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +0 -1
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +0 -8
- package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +0 -5
- package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +0 -6
- package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +0 -5
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +0 -5
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +0 -7
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +0 -6
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +0 -12
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +0 -5
- package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +0 -1
- package/dist/esm/stateManagement/segmentation/removeRepresentation.js +0 -9
- package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +0 -1
- package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +0 -9
- package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +0 -9
- package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +0 -9
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +0 -9
- package/dist/esm/tools/VolumeRotateMouseWheelTool.d.ts +0 -9
- package/dist/esm/tools/VolumeRotateMouseWheelTool.js +0 -52
- package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.d.ts +0 -9
- package/dist/esm/tools/displayTools/Contour/contourHandler/contourConfigCache.js +0 -10
- package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +0 -5
- package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +0 -13
- package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.d.ts +0 -2
- package/dist/esm/utilities/segmentation/getDefaultRepresentationConfig.js +0 -11
- package/dist/esm/utilities/segmentation/isValidRepresentationConfig.d.ts +0 -2
- package/dist/esm/utilities/segmentation/isValidRepresentationConfig.js +0 -10
- package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
- package/dist/umd/78.index.js +0 -3
- package/dist/umd/78.index.js.LICENSE.txt +0 -5
- package/dist/umd/78.index.js.map +0 -1
- package/dist/umd/985.index.js +0 -2
- package/dist/umd/985.index.js.map +0 -1
- package/dist/umd/index.js +0 -3
- package/dist/umd/index.js.LICENSE.txt +0 -6
- package/dist/umd/index.js.map +0 -1
|
@@ -15,7 +15,7 @@ import { vec2, vec3 } from 'gl-matrix';
|
|
|
15
15
|
import { getToolGroupForViewport } from '../store/ToolGroupManager';
|
|
16
16
|
import debounce from '../utilities/debounce';
|
|
17
17
|
import { distanceToPoint } from '../utilities/math/point';
|
|
18
|
-
import { addSegmentationRepresentations } from '../stateManagement';
|
|
18
|
+
import { addSegmentationRepresentations } from '../stateManagement/segmentation';
|
|
19
19
|
const MAGNIFY_CLASSNAME = 'advancedMagnifyTool';
|
|
20
20
|
const MAGNIFY_VIEWPORT_INITIAL_RADIUS = 125;
|
|
21
21
|
const { Events: csEvents } = Enums;
|
|
@@ -2,7 +2,7 @@ import { vec2, vec3 } from 'gl-matrix';
|
|
|
2
2
|
import vtkMath from '@kitware/vtk.js/Common/Core/Math';
|
|
3
3
|
import vtkMatrixBuilder from '@kitware/vtk.js/Common/Core/MatrixBuilder';
|
|
4
4
|
import { AnnotationTool } from './base';
|
|
5
|
-
import { getEnabledElementByIds, getEnabledElement, utilities as csUtils, Enums, } from '@cornerstonejs/core';
|
|
5
|
+
import { getEnabledElementByIds, getEnabledElement, utilities as csUtils, Enums, CONSTANTS, } from '@cornerstonejs/core';
|
|
6
6
|
import { getToolGroup, getToolGroupForViewport, } from '../store/ToolGroupManager';
|
|
7
7
|
import { addAnnotation, getAnnotations, removeAnnotation, } from '../stateManagement/annotation/annotationState';
|
|
8
8
|
import { drawCircle as drawCircleSvg, drawHandles as drawHandlesSvg, drawLine as drawLineSvg, } from '../drawingSvg';
|
|
@@ -14,7 +14,6 @@ import liangBarksyClip from '../utilities/math/vec2/liangBarksyClip';
|
|
|
14
14
|
import * as lineSegment from '../utilities/math/line';
|
|
15
15
|
import { isAnnotationLocked } from '../stateManagement/annotation/annotationLocking';
|
|
16
16
|
import triggerAnnotationRenderForViewportIds from '../utilities/triggerAnnotationRenderForViewportIds';
|
|
17
|
-
import { CONSTANTS } from '@cornerstonejs/core';
|
|
18
17
|
const { RENDERING_DEFAULTS } = CONSTANTS;
|
|
19
18
|
function defaultReferenceLineColor() {
|
|
20
19
|
return 'rgb(0, 200, 0)';
|
|
@@ -17,7 +17,7 @@ class MIPJumpToClickTool extends BaseTool {
|
|
|
17
17
|
const { element, currentPoints } = evt.detail;
|
|
18
18
|
const enabledElement = getEnabledElement(element);
|
|
19
19
|
const { viewport, renderingEngine } = enabledElement;
|
|
20
|
-
const volumeId =
|
|
20
|
+
const volumeId = viewport.getVolumeId();
|
|
21
21
|
if (!volumeId) {
|
|
22
22
|
throw new Error(`MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId`);
|
|
23
23
|
}
|
|
@@ -32,7 +32,7 @@ class ReferenceLines extends AnnotationDisplayTool {
|
|
|
32
32
|
const { element } = sourceViewport;
|
|
33
33
|
const { viewUp, viewPlaneNormal } = sourceViewport.getCamera();
|
|
34
34
|
const sourceViewportCanvasCornersInWorld = csUtils.getViewportImageCornersInWorld(sourceViewport);
|
|
35
|
-
let annotation = this.editData
|
|
35
|
+
let annotation = this.editData?.annotation;
|
|
36
36
|
const FrameOfReferenceUID = sourceViewport.getFrameOfReferenceUID();
|
|
37
37
|
if (!annotation) {
|
|
38
38
|
const newAnnotation = {
|
|
@@ -78,6 +78,9 @@ class ReferenceLines extends AnnotationDisplayTool {
|
|
|
78
78
|
};
|
|
79
79
|
this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
|
|
80
80
|
const { viewport: targetViewport } = enabledElement;
|
|
81
|
+
if (!this.editData) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
81
84
|
const { annotation, sourceViewportId } = this.editData;
|
|
82
85
|
let renderStatus = false;
|
|
83
86
|
const { viewport: sourceViewport } = getEnabledElementByViewportId(sourceViewportId) || {};
|
|
@@ -153,7 +156,7 @@ class ReferenceLines extends AnnotationDisplayTool {
|
|
|
153
156
|
handleFullDimension(targetViewport, lineStartWorld, viewPlaneNormal, viewUp, lineEndWorld, canvasCoordinates) {
|
|
154
157
|
const renderingEngine = targetViewport.getRenderingEngine();
|
|
155
158
|
const targetId = this.getTargetId(targetViewport);
|
|
156
|
-
const targetImage = this.
|
|
159
|
+
const targetImage = this.getTargetImageData(targetId);
|
|
157
160
|
const referencedImageId = this.getReferencedImageId(targetViewport, lineStartWorld, viewPlaneNormal, viewUp);
|
|
158
161
|
if (referencedImageId && targetImage) {
|
|
159
162
|
try {
|
|
@@ -8,6 +8,10 @@ declare class StackScrollTool extends BaseTool {
|
|
|
8
8
|
mouseDragCallback(evt: EventTypes.InteractionEventType): void;
|
|
9
9
|
touchDragCallback(evt: EventTypes.InteractionEventType): void;
|
|
10
10
|
_dragCallback(evt: EventTypes.InteractionEventType): void;
|
|
11
|
+
_rotateDrag(evt: EventTypes.InteractionEventType): void;
|
|
12
|
+
_scrollDrag(evt: EventTypes.InteractionEventType): void;
|
|
13
|
+
_rotate(evt: any): void;
|
|
14
|
+
_scroll(evt: EventTypes.MouseWheelEventType): void;
|
|
11
15
|
_getPixelPerImage(viewport: any): number;
|
|
12
16
|
}
|
|
13
17
|
export default StackScrollTool;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import { getEnabledElementByIds, getEnabledElement, VolumeViewport, } from '@cornerstonejs/core';
|
|
1
|
+
import { getEnabledElementByIds, getEnabledElement, VolumeViewport, BaseVolumeViewport, } from '@cornerstonejs/core';
|
|
2
2
|
import { BaseTool } from './base';
|
|
3
3
|
import { scroll } from '../utilities';
|
|
4
|
+
import { mat4, vec3 } from 'gl-matrix';
|
|
5
|
+
const DIRECTIONS = {
|
|
6
|
+
X: [1, 0, 0],
|
|
7
|
+
Y: [0, 1, 0],
|
|
8
|
+
Z: [0, 0, 1],
|
|
9
|
+
CUSTOM: [],
|
|
10
|
+
};
|
|
4
11
|
class StackScrollTool extends BaseTool {
|
|
5
12
|
constructor(toolProps = {}, defaultToolProps = {
|
|
6
13
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
@@ -8,25 +15,23 @@ class StackScrollTool extends BaseTool {
|
|
|
8
15
|
invert: false,
|
|
9
16
|
debounceIfNotLoaded: true,
|
|
10
17
|
loop: false,
|
|
18
|
+
rotate: {
|
|
19
|
+
enabled: false,
|
|
20
|
+
direction: DIRECTIONS.Z,
|
|
21
|
+
rotateIncrementDegrees: 30,
|
|
22
|
+
},
|
|
11
23
|
},
|
|
12
24
|
}) {
|
|
13
25
|
super(toolProps, defaultToolProps);
|
|
14
26
|
this.deltaY = 1;
|
|
15
27
|
}
|
|
16
28
|
mouseWheelCallback(evt) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
scroll(viewport, {
|
|
24
|
-
delta,
|
|
25
|
-
debounceLoading: this.configuration.debounceIfNotLoaded,
|
|
26
|
-
loop: this.configuration.loop,
|
|
27
|
-
volumeId,
|
|
28
|
-
scrollSlabs: this.configuration.scrollSlabs,
|
|
29
|
-
});
|
|
29
|
+
if (this.configuration.rotate.enabled) {
|
|
30
|
+
this._rotate(evt);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this._scroll(evt);
|
|
34
|
+
}
|
|
30
35
|
}
|
|
31
36
|
mouseDragCallback(evt) {
|
|
32
37
|
this._dragCallback(evt);
|
|
@@ -35,13 +40,51 @@ class StackScrollTool extends BaseTool {
|
|
|
35
40
|
this._dragCallback(evt);
|
|
36
41
|
}
|
|
37
42
|
_dragCallback(evt) {
|
|
43
|
+
if (this.configuration.rotate.enabled) {
|
|
44
|
+
this._rotateDrag(evt);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this._scrollDrag(evt);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
_rotateDrag(evt) {
|
|
51
|
+
const { deltaPoints, element } = evt.detail;
|
|
52
|
+
const enabledElement = getEnabledElement(element);
|
|
53
|
+
const { viewport } = enabledElement;
|
|
54
|
+
const { direction, rotateIncrementDegrees } = this.configuration.rotate;
|
|
55
|
+
const camera = viewport.getCamera();
|
|
56
|
+
const { viewUp, position, focalPoint } = camera;
|
|
57
|
+
const deltaY = deltaPoints.canvas[1];
|
|
58
|
+
const [cx, cy, cz] = focalPoint;
|
|
59
|
+
const [ax, ay, az] = direction;
|
|
60
|
+
const angle = (deltaY * (rotateIncrementDegrees * Math.PI)) / 180;
|
|
61
|
+
const newPosition = [0, 0, 0];
|
|
62
|
+
const newFocalPoint = [0, 0, 0];
|
|
63
|
+
const newViewUp = [0, 0, 0];
|
|
64
|
+
const transform = mat4.identity(new Float32Array(16));
|
|
65
|
+
mat4.translate(transform, transform, [cx, cy, cz]);
|
|
66
|
+
mat4.rotate(transform, transform, angle, [ax, ay, az]);
|
|
67
|
+
mat4.translate(transform, transform, [-cx, -cy, -cz]);
|
|
68
|
+
vec3.transformMat4(newPosition, position, transform);
|
|
69
|
+
vec3.transformMat4(newFocalPoint, focalPoint, transform);
|
|
70
|
+
mat4.identity(transform);
|
|
71
|
+
mat4.rotate(transform, transform, angle, [ax, ay, az]);
|
|
72
|
+
vec3.transformMat4(newViewUp, viewUp, transform);
|
|
73
|
+
viewport.setCamera({
|
|
74
|
+
position: newPosition,
|
|
75
|
+
viewUp: newViewUp,
|
|
76
|
+
focalPoint: newFocalPoint,
|
|
77
|
+
});
|
|
78
|
+
viewport.render();
|
|
79
|
+
}
|
|
80
|
+
_scrollDrag(evt) {
|
|
38
81
|
const { deltaPoints, viewportId, renderingEngineId } = evt.detail;
|
|
39
82
|
const { viewport } = getEnabledElementByIds(viewportId, renderingEngineId);
|
|
40
83
|
const { debounceIfNotLoaded, invert, loop } = this.configuration;
|
|
41
84
|
const deltaPointY = deltaPoints.canvas[1];
|
|
42
85
|
let volumeId;
|
|
43
86
|
if (viewport instanceof VolumeViewport) {
|
|
44
|
-
volumeId =
|
|
87
|
+
volumeId = viewport.getVolumeId();
|
|
45
88
|
}
|
|
46
89
|
const pixelsPerImage = this._getPixelPerImage(viewport);
|
|
47
90
|
const deltaY = deltaPointY + this.deltaY;
|
|
@@ -62,6 +105,52 @@ class StackScrollTool extends BaseTool {
|
|
|
62
105
|
this.deltaY = deltaY;
|
|
63
106
|
}
|
|
64
107
|
}
|
|
108
|
+
_rotate(evt) {
|
|
109
|
+
const { element, wheel } = evt.detail;
|
|
110
|
+
const enabledElement = getEnabledElement(element);
|
|
111
|
+
const { viewport } = enabledElement;
|
|
112
|
+
const { direction, rotateIncrementDegrees } = this.configuration.rotate;
|
|
113
|
+
const camera = viewport.getCamera();
|
|
114
|
+
const { viewUp, position, focalPoint } = camera;
|
|
115
|
+
const { direction: deltaY } = wheel;
|
|
116
|
+
const [cx, cy, cz] = focalPoint;
|
|
117
|
+
const [ax, ay, az] = direction;
|
|
118
|
+
const angle = (deltaY * (rotateIncrementDegrees * Math.PI)) / 180;
|
|
119
|
+
const newPosition = [0, 0, 0];
|
|
120
|
+
const newFocalPoint = [0, 0, 0];
|
|
121
|
+
const newViewUp = [0, 0, 0];
|
|
122
|
+
const transform = mat4.identity(new Float32Array(16));
|
|
123
|
+
mat4.translate(transform, transform, [cx, cy, cz]);
|
|
124
|
+
mat4.rotate(transform, transform, angle, [ax, ay, az]);
|
|
125
|
+
mat4.translate(transform, transform, [-cx, -cy, -cz]);
|
|
126
|
+
vec3.transformMat4(newPosition, position, transform);
|
|
127
|
+
vec3.transformMat4(newFocalPoint, focalPoint, transform);
|
|
128
|
+
mat4.identity(transform);
|
|
129
|
+
mat4.rotate(transform, transform, angle, [ax, ay, az]);
|
|
130
|
+
vec3.transformMat4(newViewUp, viewUp, transform);
|
|
131
|
+
viewport.setCamera({
|
|
132
|
+
position: newPosition,
|
|
133
|
+
viewUp: newViewUp,
|
|
134
|
+
focalPoint: newFocalPoint,
|
|
135
|
+
});
|
|
136
|
+
viewport.render();
|
|
137
|
+
}
|
|
138
|
+
_scroll(evt) {
|
|
139
|
+
const { wheel, element } = evt.detail;
|
|
140
|
+
const { direction } = wheel;
|
|
141
|
+
const { invert } = this.configuration;
|
|
142
|
+
const { viewport } = getEnabledElement(element);
|
|
143
|
+
const delta = direction * (invert ? -1 : 1);
|
|
144
|
+
scroll(viewport, {
|
|
145
|
+
delta,
|
|
146
|
+
debounceLoading: this.configuration.debounceIfNotLoaded,
|
|
147
|
+
loop: this.configuration.loop,
|
|
148
|
+
volumeId: viewport instanceof BaseVolumeViewport
|
|
149
|
+
? viewport.getVolumeId()
|
|
150
|
+
: undefined,
|
|
151
|
+
scrollSlabs: this.configuration.scrollSlabs,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
65
154
|
_getPixelPerImage(viewport) {
|
|
66
155
|
const { element } = viewport;
|
|
67
156
|
const numberOfSlices = viewport.getNumberOfSlices();
|
|
@@ -47,8 +47,9 @@ class WindowLevelTool extends BaseTool {
|
|
|
47
47
|
let isPreScaled = false;
|
|
48
48
|
const properties = viewport.getProperties();
|
|
49
49
|
if (viewport instanceof VolumeViewport) {
|
|
50
|
-
volumeId =
|
|
51
|
-
viewportsContainingVolumeUID =
|
|
50
|
+
volumeId = viewport.getVolumeId();
|
|
51
|
+
viewportsContainingVolumeUID =
|
|
52
|
+
utilities.getViewportsWithVolumeId(volumeId);
|
|
52
53
|
({ lower, upper } = properties.voiRange);
|
|
53
54
|
const volume = cache.getVolume(volumeId);
|
|
54
55
|
if (!volume) {
|
|
@@ -418,7 +418,7 @@ class AngleTool extends AnnotationTool {
|
|
|
418
418
|
for (let i = 0; i < targetIds.length; i++) {
|
|
419
419
|
const targetId = targetIds[i];
|
|
420
420
|
const angle = angleBetweenLines([worldPos1, worldPos2], [worldPos2, worldPos3]);
|
|
421
|
-
const { dimensions, imageData } = this.
|
|
421
|
+
const { dimensions, imageData } = this.getTargetImageData(targetId);
|
|
422
422
|
this.isHandleOutsideImage = [worldPos1, worldPos2, worldPos3]
|
|
423
423
|
.map((worldPos) => csUtils.transformWorldToIndex(imageData, worldPos))
|
|
424
424
|
.some((index) => !csUtils.indexWithinDimensions(index, dimensions));
|
|
@@ -597,7 +597,7 @@ class BidirectionalTool extends AnnotationTool {
|
|
|
597
597
|
const targetIds = Object.keys(cachedStats);
|
|
598
598
|
for (let i = 0; i < targetIds.length; i++) {
|
|
599
599
|
const targetId = targetIds[i];
|
|
600
|
-
const image = this.
|
|
600
|
+
const image = this.getTargetImageData(targetId);
|
|
601
601
|
if (!image) {
|
|
602
602
|
continue;
|
|
603
603
|
}
|
|
@@ -468,7 +468,7 @@ class CircleROITool extends AnnotationTool {
|
|
|
468
468
|
const worldPos2 = bottomRightWorld;
|
|
469
469
|
for (let i = 0; i < targetIds.length; i++) {
|
|
470
470
|
const targetId = targetIds[i];
|
|
471
|
-
const image = this.
|
|
471
|
+
const image = this.getTargetImageData(targetId);
|
|
472
472
|
if (!image) {
|
|
473
473
|
continue;
|
|
474
474
|
}
|
|
@@ -548,7 +548,7 @@ class EllipticalROITool extends AnnotationTool {
|
|
|
548
548
|
const worldPos2 = bottomRightWorld;
|
|
549
549
|
for (let i = 0; i < targetIds.length; i++) {
|
|
550
550
|
const targetId = targetIds[i];
|
|
551
|
-
const image = this.
|
|
551
|
+
const image = this.getTargetImageData(targetId);
|
|
552
552
|
if (!image) {
|
|
553
553
|
continue;
|
|
554
554
|
}
|
|
@@ -395,7 +395,7 @@ class HeightTool extends AnnotationTool {
|
|
|
395
395
|
const targetIds = Object.keys(cachedStats);
|
|
396
396
|
for (let i = 0; i < targetIds.length; i++) {
|
|
397
397
|
const targetId = targetIds[i];
|
|
398
|
-
const image = this.
|
|
398
|
+
const image = this.getTargetImageData(targetId);
|
|
399
399
|
if (!image) {
|
|
400
400
|
continue;
|
|
401
401
|
}
|
|
@@ -386,7 +386,7 @@ class LengthTool extends AnnotationTool {
|
|
|
386
386
|
const targetIds = Object.keys(cachedStats);
|
|
387
387
|
for (let i = 0; i < targetIds.length; i++) {
|
|
388
388
|
const targetId = targetIds[i];
|
|
389
|
-
const image = this.
|
|
389
|
+
const image = this.getTargetImageData(targetId);
|
|
390
390
|
if (!image) {
|
|
391
391
|
continue;
|
|
392
392
|
}
|
|
@@ -319,7 +319,7 @@ class LivewireContourTool extends ContourSegmentationBaseTool {
|
|
|
319
319
|
const targetIds = Object.keys(cachedStats);
|
|
320
320
|
for (let i = 0; i < targetIds.length; i++) {
|
|
321
321
|
const targetId = targetIds[i];
|
|
322
|
-
const image = this.
|
|
322
|
+
const image = this.getTargetImageData(targetId);
|
|
323
323
|
if (!image) {
|
|
324
324
|
continue;
|
|
325
325
|
}
|
|
@@ -414,8 +414,7 @@ class LivewireContourTool extends ContourSegmentationBaseTool {
|
|
|
414
414
|
let width;
|
|
415
415
|
let height;
|
|
416
416
|
let scalarData;
|
|
417
|
-
if (!(viewport instanceof VolumeViewport)
|
|
418
|
-
({ scalarData } = viewportImageData);
|
|
417
|
+
if (!(viewport instanceof VolumeViewport)) {
|
|
419
418
|
width = viewportImageData.dimensions[0];
|
|
420
419
|
height = viewportImageData.dimensions[1];
|
|
421
420
|
worldToSlice = (point) => {
|
|
@@ -423,6 +422,7 @@ class LivewireContourTool extends ContourSegmentationBaseTool {
|
|
|
423
422
|
return [ijkPoint[0], ijkPoint[1]];
|
|
424
423
|
};
|
|
425
424
|
sliceToWorld = (point) => csUtils.transformIndexToWorld(vtkImageData, [point[0], point[1], 0]);
|
|
425
|
+
scalarData = viewportImageData.scalarData;
|
|
426
426
|
}
|
|
427
427
|
else if (viewport instanceof VolumeViewport) {
|
|
428
428
|
const sliceImageData = csUtils.getCurrentVolumeViewportSlice(viewport);
|
|
@@ -138,7 +138,7 @@ class PlanarFreehandROITool extends ContourSegmentationBaseTool {
|
|
|
138
138
|
const targetIds = Object.keys(cachedStats);
|
|
139
139
|
for (let i = 0; i < targetIds.length; i++) {
|
|
140
140
|
const targetId = targetIds[i];
|
|
141
|
-
const image = this.
|
|
141
|
+
const image = this.getTargetImageData(targetId);
|
|
142
142
|
if (!image) {
|
|
143
143
|
continue;
|
|
144
144
|
}
|
|
@@ -260,7 +260,7 @@ class ProbeTool extends AnnotationTool {
|
|
|
260
260
|
isPreScaled: isViewportPreScaled(viewport, targetId),
|
|
261
261
|
isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
|
|
262
262
|
};
|
|
263
|
-
const image = this.
|
|
263
|
+
const image = this.getTargetImageData(targetId);
|
|
264
264
|
if (!image) {
|
|
265
265
|
continue;
|
|
266
266
|
}
|
|
@@ -274,7 +274,7 @@ class ProbeTool extends AnnotationTool {
|
|
|
274
274
|
if (targetId.startsWith('imageId:')) {
|
|
275
275
|
const imageId = targetId.split('imageId:')[1];
|
|
276
276
|
const imageURI = csUtils.imageIdToURI(imageId);
|
|
277
|
-
const viewports = csUtils.getViewportsWithImageURI(imageURI
|
|
277
|
+
const viewports = csUtils.getViewportsWithImageURI(imageURI);
|
|
278
278
|
const viewport = viewports[0];
|
|
279
279
|
ijk[2] = viewport.getCurrentImageIdIndex();
|
|
280
280
|
}
|
|
@@ -459,7 +459,7 @@ class RectangleROITool extends AnnotationTool {
|
|
|
459
459
|
const targetIds = Object.keys(cachedStats);
|
|
460
460
|
for (let i = 0; i < targetIds.length; i++) {
|
|
461
461
|
const targetId = targetIds[i];
|
|
462
|
-
const image = this.
|
|
462
|
+
const image = this.getTargetImageData(targetId);
|
|
463
463
|
if (!image) {
|
|
464
464
|
continue;
|
|
465
465
|
}
|
|
@@ -160,8 +160,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
|
|
|
160
160
|
this._deactivateDraw(element);
|
|
161
161
|
resetElementCursor(element);
|
|
162
162
|
const enabledElement = getEnabledElement(element);
|
|
163
|
-
const
|
|
164
|
-
const image = this.getTargetIdImage(this.getTargetId(enabledElement.viewport), enabledElement.renderingEngine);
|
|
163
|
+
const image = this.getTargetImageData(this.getTargetId(enabledElement.viewport));
|
|
165
164
|
const { imageData, dimensions } = image;
|
|
166
165
|
this.isHandleOutsideImage = data.handles.points
|
|
167
166
|
.map((p) => utilities.transformWorldToIndex(imageData, p))
|
|
@@ -433,7 +432,7 @@ class SplineROITool extends ContourSegmentationBaseTool {
|
|
|
433
432
|
const targetIds = Object.keys(cachedStats);
|
|
434
433
|
for (let i = 0; i < targetIds.length; i++) {
|
|
435
434
|
const targetId = targetIds[i];
|
|
436
|
-
const image = this.
|
|
435
|
+
const image = this.getTargetImageData(targetId);
|
|
437
436
|
if (!image) {
|
|
438
437
|
continue;
|
|
439
438
|
}
|
|
@@ -389,7 +389,7 @@ class UltrasoundDirectionalTool extends AnnotationTool {
|
|
|
389
389
|
const targetIds = Object.keys(cachedStats);
|
|
390
390
|
for (let i = 0; i < targetIds.length; i++) {
|
|
391
391
|
const targetId = targetIds[i];
|
|
392
|
-
const image = this.
|
|
392
|
+
const image = this.getTargetImageData(targetId);
|
|
393
393
|
if (!image) {
|
|
394
394
|
continue;
|
|
395
395
|
}
|
|
@@ -14,8 +14,7 @@ declare abstract class BaseTool {
|
|
|
14
14
|
applyActiveStrategyCallback(enabledElement: Types.IEnabledElement, operationData: unknown, callbackType: StrategyCallbacks | string): any;
|
|
15
15
|
setConfiguration(newConfiguration: Record<string, any>): void;
|
|
16
16
|
setActiveStrategy(strategyName: string): void;
|
|
17
|
-
protected
|
|
18
|
-
protected getTargetIdImage(targetId: string, renderingEngine: Types.IRenderingEngine): Types.IImageData | Types.CPUIImageData | Types.IImageVolume;
|
|
17
|
+
protected getTargetImageData(targetId: string): Types.IImageData | Types.CPUIImageData;
|
|
19
18
|
protected getTargetId(viewport: Types.IViewport): string | undefined;
|
|
20
19
|
}
|
|
21
20
|
export default BaseTool;
|
|
@@ -35,21 +35,11 @@ class BaseTool {
|
|
|
35
35
|
setActiveStrategy(strategyName) {
|
|
36
36
|
this.setConfiguration({ activeStrategy: strategyName });
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
if (this.configuration.volumeId) {
|
|
40
|
-
return this.configuration.volumeId;
|
|
41
|
-
}
|
|
42
|
-
const actorEntries = viewport.getActors();
|
|
43
|
-
if (!actorEntries) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
return actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')?.uid;
|
|
47
|
-
}
|
|
48
|
-
getTargetIdImage(targetId, renderingEngine) {
|
|
38
|
+
getTargetImageData(targetId) {
|
|
49
39
|
if (targetId.startsWith('imageId:')) {
|
|
50
40
|
const imageId = targetId.split('imageId:')[1];
|
|
51
41
|
const imageURI = utilities.imageIdToURI(imageId);
|
|
52
|
-
let viewports = utilities.getViewportsWithImageURI(imageURI
|
|
42
|
+
let viewports = utilities.getViewportsWithImageURI(imageURI);
|
|
53
43
|
if (!viewports || !viewports.length) {
|
|
54
44
|
return;
|
|
55
45
|
}
|
|
@@ -63,7 +53,7 @@ class BaseTool {
|
|
|
63
53
|
}
|
|
64
54
|
else if (targetId.startsWith('volumeId:')) {
|
|
65
55
|
const volumeId = utilities.getVolumeId(targetId);
|
|
66
|
-
const viewports = utilities.getViewportsWithVolumeId(volumeId
|
|
56
|
+
const viewports = utilities.getViewportsWithVolumeId(volumeId);
|
|
67
57
|
if (!viewports || !viewports.length) {
|
|
68
58
|
return;
|
|
69
59
|
}
|
|
@@ -71,7 +61,7 @@ class BaseTool {
|
|
|
71
61
|
}
|
|
72
62
|
else if (targetId.startsWith('videoId:')) {
|
|
73
63
|
const imageURI = utilities.imageIdToURI(targetId);
|
|
74
|
-
const viewports = utilities.getViewportsWithImageURI(imageURI
|
|
64
|
+
const viewports = utilities.getViewportsWithImageURI(imageURI);
|
|
75
65
|
if (!viewports || !viewports.length) {
|
|
76
66
|
return;
|
|
77
67
|
}
|
|
@@ -86,10 +76,7 @@ class BaseTool {
|
|
|
86
76
|
if (targetId) {
|
|
87
77
|
return targetId;
|
|
88
78
|
}
|
|
89
|
-
|
|
90
|
-
return `volumeId:${this.getTargetVolumeId(viewport)}`;
|
|
91
|
-
}
|
|
92
|
-
throw new Error('getTargetId: viewport must have a getReferenceId method');
|
|
79
|
+
throw new Error('getTargetId: viewport must have a getViewReferenceId method');
|
|
93
80
|
}
|
|
94
81
|
}
|
|
95
82
|
BaseTool.toolName = 'BaseTool';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getEnabledElement, utilities } from '@cornerstonejs/core';
|
|
2
|
-
import { getGlobalConfig, getSegmentationRepresentationConfig, getSegmentIndexConfig, } from '../../stateManagement/segmentation/config/segmentationConfig';
|
|
3
2
|
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
4
3
|
import { SegmentationRepresentations } from '../../enums';
|
|
5
4
|
import ContourBaseTool from './ContourBaseTool';
|
|
@@ -9,14 +8,14 @@ import { addContourSegmentationAnnotation, removeContourSegmentationAnnotation,
|
|
|
9
8
|
import { triggerAnnotationRenderForToolGroupIds } from '../../utilities/triggerAnnotationRenderForToolGroupIds';
|
|
10
9
|
import { getToolGroupForViewport } from '../../store/ToolGroupManager';
|
|
11
10
|
import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
|
|
12
|
-
import { getSegmentationRepresentations } from '../../stateManagement/segmentation/
|
|
13
|
-
import {
|
|
14
|
-
import { getActiveSegmentationRepresentation } from '../../stateManagement/segmentation/getActiveSegmentationRepresentation';
|
|
11
|
+
import { getSegmentationRepresentations } from '../../stateManagement/segmentation/getSegmentationRepresentation';
|
|
12
|
+
import { getActiveSegmentation } from '../../stateManagement/segmentation/getActiveSegmentation';
|
|
15
13
|
import { getSegmentationRepresentationVisibility } from '../../stateManagement/segmentation/getSegmentationRepresentationVisibility';
|
|
16
14
|
import { getViewportIdsWithSegmentation } from '../../stateManagement/segmentation/getViewportIdsWithSegmentation';
|
|
17
15
|
import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
|
|
18
16
|
import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
|
|
19
17
|
import { getSegmentIndexVisibility } from '../../stateManagement/segmentation/config/segmentationVisibility';
|
|
18
|
+
import { segmentationStyle } from '../../stateManagement/segmentation/SegmentationStyle';
|
|
20
19
|
class ContourSegmentationBaseTool extends ContourBaseTool {
|
|
21
20
|
constructor(toolProps, defaultToolProps) {
|
|
22
21
|
super(toolProps, defaultToolProps);
|
|
@@ -39,12 +38,11 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
|
|
|
39
38
|
if (!this.isContourSegmentationTool()) {
|
|
40
39
|
return contourAnnotation;
|
|
41
40
|
}
|
|
42
|
-
const activeSeg =
|
|
41
|
+
const activeSeg = getActiveSegmentation(viewport.id);
|
|
43
42
|
if (!activeSeg) {
|
|
44
43
|
throw new Error('No active segmentation detected, create one before using scissors tool');
|
|
45
44
|
}
|
|
46
|
-
|
|
47
|
-
if (segmentationType !== SegmentationRepresentations.Contour) {
|
|
45
|
+
if (!activeSeg.representationData.Contour) {
|
|
48
46
|
throw new Error(`A contour segmentation must be active`);
|
|
49
47
|
}
|
|
50
48
|
const { segmentationId } = activeSeg;
|
|
@@ -100,35 +98,36 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
|
|
|
100
98
|
const annotation = context.annotation;
|
|
101
99
|
const { segmentationId, segmentIndex } = annotation.data.segmentation;
|
|
102
100
|
const segmentation = getSegmentation(segmentationId);
|
|
103
|
-
const
|
|
101
|
+
const { viewportId } = context.styleSpecifier;
|
|
102
|
+
const segmentationRepresentations = getSegmentationRepresentations(viewportId, { segmentationId });
|
|
104
103
|
if (!segmentationRepresentations?.length) {
|
|
105
104
|
return {};
|
|
106
105
|
}
|
|
107
|
-
const allUIDs = segmentationRepresentations.map((rep) => rep.segmentationRepresentationUID);
|
|
108
106
|
let segmentationRepresentation;
|
|
109
107
|
if (segmentationRepresentations.length > 1) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
allUIDs.includes(rep.segmentationRepresentationUID));
|
|
108
|
+
segmentationRepresentation = segmentationRepresentations.find((rep) => rep.segmentationId === segmentationId &&
|
|
109
|
+
rep.type === SegmentationRepresentations.Contour);
|
|
113
110
|
}
|
|
114
111
|
else {
|
|
115
112
|
segmentationRepresentation = segmentationRepresentations[0];
|
|
116
113
|
}
|
|
117
|
-
const { segmentationRepresentationUID } = segmentationRepresentation;
|
|
118
114
|
const { autoGenerated } = annotation;
|
|
119
115
|
const segmentsLocked = getLockedSegmentIndices(segmentationId);
|
|
120
116
|
const annotationLocked = segmentsLocked.includes(segmentIndex);
|
|
121
|
-
const segmentColor = getSegmentIndexColor(
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
117
|
+
const segmentColor = getSegmentIndexColor(context.styleSpecifier.viewportId, segmentationId, segmentIndex);
|
|
118
|
+
const segmentationVisible = getSegmentationRepresentationVisibility(viewportId, {
|
|
119
|
+
segmentationId,
|
|
120
|
+
type: SegmentationRepresentations.Contour,
|
|
121
|
+
});
|
|
122
|
+
const activeSegmentation = getActiveSegmentation(viewportId);
|
|
123
|
+
const isActive = activeSegmentation?.segmentationId === segmentationId;
|
|
124
|
+
const { style } = segmentationStyle.getStyle({
|
|
125
|
+
viewportId,
|
|
126
|
+
segmentationId,
|
|
127
|
+
type: SegmentationRepresentations.Contour,
|
|
128
|
+
segmentIndex,
|
|
129
|
+
});
|
|
130
|
+
const mergedConfig = style;
|
|
132
131
|
let lineWidth = 1;
|
|
133
132
|
let lineDash = undefined;
|
|
134
133
|
let lineOpacity = 1;
|
|
@@ -167,7 +166,11 @@ class ContourSegmentationBaseTool extends ContourBaseTool {
|
|
|
167
166
|
textbox: {
|
|
168
167
|
color,
|
|
169
168
|
},
|
|
170
|
-
visibility: segmentationVisible &&
|
|
169
|
+
visibility: segmentationVisible &&
|
|
170
|
+
getSegmentIndexVisibility(viewportId, {
|
|
171
|
+
segmentationId,
|
|
172
|
+
type: SegmentationRepresentations.Contour,
|
|
173
|
+
}, segmentIndex),
|
|
171
174
|
locked: annotationLocked,
|
|
172
175
|
};
|
|
173
176
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function
|
|
3
|
-
export default
|
|
1
|
+
import type { ContourStyle } from '../../../types/ContourTypes';
|
|
2
|
+
declare function getDefaultContourStyle(): ContourStyle;
|
|
3
|
+
export default getDefaultContourStyle;
|
|
@@ -14,7 +14,7 @@ const defaultContourConfig = {
|
|
|
14
14
|
fillAlphaInactive: 0.3,
|
|
15
15
|
fillAlphaAutoGenerated: 0.3,
|
|
16
16
|
};
|
|
17
|
-
function
|
|
17
|
+
function getDefaultContourStyle() {
|
|
18
18
|
return defaultContourConfig;
|
|
19
19
|
}
|
|
20
|
-
export default
|
|
20
|
+
export default getDefaultContourStyle;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StackViewport, Types } from '@cornerstonejs/core';
|
|
2
2
|
import type { ContourRepresentation } from '../../../types/SegmentationStateTypes';
|
|
3
|
-
declare function removeRepresentation(viewportId: string,
|
|
3
|
+
declare function removeRepresentation(viewportId: string, segmentationId: string, renderImmediate?: boolean): void;
|
|
4
4
|
declare function render(viewport: StackViewport | Types.IVolumeViewport, contourRepresentation: ContourRepresentation): Promise<void>;
|
|
5
5
|
declare const _default: {
|
|
6
6
|
render: typeof render;
|