@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
|
@@ -3,9 +3,9 @@ import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
|
|
|
3
3
|
import vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
|
|
4
4
|
import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
|
|
5
5
|
import vtkCellArray from '@kitware/vtk.js/Common/Core/CellArray';
|
|
6
|
-
import { getSurfaceActorUID } from '../../../stateManagement/segmentation/helpers/
|
|
7
|
-
function addOrUpdateSurfaceToElement(element, surface,
|
|
8
|
-
const actorUID = getSurfaceActorUID(
|
|
6
|
+
import { getSurfaceActorUID } from '../../../stateManagement/segmentation/helpers/getSegmentationActor';
|
|
7
|
+
function addOrUpdateSurfaceToElement(element, surface, segmentationId) {
|
|
8
|
+
const actorUID = getSurfaceActorUID(segmentationId);
|
|
9
9
|
const enabledElement = getEnabledElement(element);
|
|
10
10
|
const { viewport } = enabledElement;
|
|
11
11
|
const surfaceActor = viewport.getActor(actorUID)?.actor;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare function
|
|
2
|
-
export default
|
|
1
|
+
declare function removeSurfaceFromElement(element: HTMLDivElement, segmentationId: string): void;
|
|
2
|
+
export default removeSurfaceFromElement;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { getEnabledElement } from '@cornerstonejs/core';
|
|
2
|
-
|
|
2
|
+
import { getSurfaceActorUID } from '../../../stateManagement/segmentation/helpers/getSegmentationActor';
|
|
3
|
+
function removeSurfaceFromElement(element, segmentationId) {
|
|
3
4
|
const enabledElement = getEnabledElement(element);
|
|
4
5
|
const { viewport } = enabledElement;
|
|
5
6
|
const actorEntries = viewport.getActors();
|
|
7
|
+
const actorUID = getSurfaceActorUID(segmentationId);
|
|
6
8
|
const actorUIDsToRemove = actorEntries
|
|
7
|
-
.map(({ uid }) => uid.startsWith(
|
|
9
|
+
.map(({ uid }) => (uid.startsWith(actorUID) ? uid : undefined))
|
|
8
10
|
.filter(Boolean);
|
|
9
11
|
viewport.removeActors(actorUIDsToRemove);
|
|
10
12
|
}
|
|
11
|
-
export default
|
|
13
|
+
export default removeSurfaceFromElement;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function
|
|
3
|
-
export default
|
|
1
|
+
import type { SurfaceStyle } from '../../../types/SurfaceTypes';
|
|
2
|
+
declare function getDefaultSurfaceStyle(): SurfaceStyle;
|
|
3
|
+
export default getDefaultSurfaceStyle;
|
|
@@ -2,7 +2,7 @@ const defaultSurfaceConfig = {
|
|
|
2
2
|
renderFill: true,
|
|
3
3
|
fillAlpha: 1,
|
|
4
4
|
};
|
|
5
|
-
function
|
|
5
|
+
function getDefaultSurfaceStyle() {
|
|
6
6
|
return defaultSurfaceConfig;
|
|
7
7
|
}
|
|
8
|
-
export default
|
|
8
|
+
export default getDefaultSurfaceStyle;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
2
|
import type { SegmentationRepresentation } 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: Types.IVolumeViewport | Types.IStackViewport, representation: SegmentationRepresentation): Promise<void>;
|
|
5
5
|
declare const _default: {
|
|
6
6
|
render: typeof render;
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import { cache, getEnabledElementByViewportId, VolumeViewport3D, } from '@cornerstonejs/core';
|
|
2
2
|
import Representations from '../../../enums/SegmentationRepresentations';
|
|
3
|
-
import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
|
|
4
3
|
import removeSurfaceFromElement from './removeSurfaceFromElement';
|
|
5
4
|
import addOrUpdateSurfaceToElement from './addOrUpdateSurfaceToElement';
|
|
6
5
|
import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
|
|
7
6
|
import { getColorLUT } from '../../../stateManagement/segmentation/getColorLUT';
|
|
8
7
|
import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
|
|
9
8
|
import { computeAndAddSurfaceRepresentation } from '../../../stateManagement/segmentation/polySeg';
|
|
10
|
-
function removeRepresentation(viewportId,
|
|
9
|
+
function removeRepresentation(viewportId, segmentationId, renderImmediate = false) {
|
|
11
10
|
const enabledElement = getEnabledElementByViewportId(viewportId);
|
|
12
11
|
if (!enabledElement) {
|
|
13
12
|
return;
|
|
14
13
|
}
|
|
15
14
|
const { viewport } = enabledElement;
|
|
16
|
-
removeSurfaceFromElement(viewport.element,
|
|
17
|
-
_removeRepresentation(segmentationRepresentationUID);
|
|
15
|
+
removeSurfaceFromElement(viewport.element, segmentationId);
|
|
18
16
|
if (!renderImmediate) {
|
|
19
17
|
return;
|
|
20
18
|
}
|
|
21
19
|
viewport.render();
|
|
22
20
|
}
|
|
23
21
|
async function render(viewport, representation) {
|
|
24
|
-
const {
|
|
22
|
+
const { segmentationId } = representation;
|
|
25
23
|
const segmentation = getSegmentation(segmentationId);
|
|
26
24
|
if (!segmentation) {
|
|
27
25
|
return;
|
|
@@ -31,9 +29,9 @@ async function render(viewport, representation) {
|
|
|
31
29
|
}
|
|
32
30
|
let SurfaceData = segmentation.representationData[Representations.Surface];
|
|
33
31
|
if (!SurfaceData &&
|
|
34
|
-
canComputeRequestedRepresentation(
|
|
32
|
+
canComputeRequestedRepresentation(segmentationId, Representations.Surface)) {
|
|
35
33
|
SurfaceData = await computeAndAddSurfaceRepresentation(segmentationId, {
|
|
36
|
-
|
|
34
|
+
viewport,
|
|
37
35
|
});
|
|
38
36
|
if (!SurfaceData) {
|
|
39
37
|
throw new Error(`No Surface data found for segmentationId ${segmentationId}.`);
|
|
@@ -43,6 +41,7 @@ async function render(viewport, representation) {
|
|
|
43
41
|
if (!geometryIds?.size) {
|
|
44
42
|
console.warn(`No Surfaces found for segmentationId ${segmentationId}. Skipping render.`);
|
|
45
43
|
}
|
|
44
|
+
const colorLUTIndex = representation.config?.colorLUTIndex;
|
|
46
45
|
const colorLUT = getColorLUT(colorLUTIndex);
|
|
47
46
|
const surfaces = [];
|
|
48
47
|
geometryIds.forEach((geometryId, segmentIndex) => {
|
|
@@ -54,7 +53,7 @@ async function render(viewport, representation) {
|
|
|
54
53
|
const surface = geometry.data;
|
|
55
54
|
const color = colorLUT[segmentIndex];
|
|
56
55
|
surface.setColor(color.slice(0, 3));
|
|
57
|
-
addOrUpdateSurfaceToElement(viewport.element, surface,
|
|
56
|
+
addOrUpdateSurfaceToElement(viewport.element, surface, segmentationId);
|
|
58
57
|
surfaces.push(surface);
|
|
59
58
|
});
|
|
60
59
|
viewport.render();
|
|
@@ -6,7 +6,6 @@ import WindowLevelRegionTool from './WindowLevelRegionTool';
|
|
|
6
6
|
import StackScrollTool from './StackScrollTool';
|
|
7
7
|
import PlanarRotateTool from './PlanarRotateTool';
|
|
8
8
|
import ZoomTool from './ZoomTool';
|
|
9
|
-
import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
|
|
10
9
|
import MIPJumpToClickTool from './MIPJumpToClickTool';
|
|
11
10
|
import CrosshairsTool from './CrosshairsTool';
|
|
12
11
|
import MagnifyTool from './MagnifyTool';
|
|
@@ -47,4 +46,4 @@ import BrushTool from './segmentation/BrushTool';
|
|
|
47
46
|
import PaintFillTool from './segmentation/PaintFillTool';
|
|
48
47
|
import OrientationMarkerTool from './OrientationMarkerTool';
|
|
49
48
|
import SegmentSelectTool from './segmentation/SegmentSelectTool';
|
|
50
|
-
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool,
|
|
49
|
+
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, 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
|
@@ -6,7 +6,6 @@ import WindowLevelRegionTool from './WindowLevelRegionTool';
|
|
|
6
6
|
import StackScrollTool from './StackScrollTool';
|
|
7
7
|
import PlanarRotateTool from './PlanarRotateTool';
|
|
8
8
|
import ZoomTool from './ZoomTool';
|
|
9
|
-
import VolumeRotateMouseWheelTool from './VolumeRotateMouseWheelTool';
|
|
10
9
|
import MIPJumpToClickTool from './MIPJumpToClickTool';
|
|
11
10
|
import CrosshairsTool from './CrosshairsTool';
|
|
12
11
|
import MagnifyTool from './MagnifyTool';
|
|
@@ -47,4 +46,4 @@ import BrushTool from './segmentation/BrushTool';
|
|
|
47
46
|
import PaintFillTool from './segmentation/PaintFillTool';
|
|
48
47
|
import OrientationMarkerTool from './OrientationMarkerTool';
|
|
49
48
|
import SegmentSelectTool from './segmentation/SegmentSelectTool';
|
|
50
|
-
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool,
|
|
49
|
+
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, WindowLevelRegionTool, StackScrollTool, PlanarRotateTool, ZoomTool, 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, };
|
|
@@ -56,7 +56,6 @@ declare class BrushTool extends BaseTool {
|
|
|
56
56
|
viewPlaneNormal: any;
|
|
57
57
|
toolGroupId: string;
|
|
58
58
|
segmentationId: string;
|
|
59
|
-
segmentationRepresentationUID: string;
|
|
60
59
|
viewUp: any;
|
|
61
60
|
strategySpecificConfiguration: any;
|
|
62
61
|
preview: unknown;
|
|
@@ -76,7 +75,6 @@ declare class BrushTool extends BaseTool {
|
|
|
76
75
|
viewPlaneNormal: any;
|
|
77
76
|
toolGroupId: string;
|
|
78
77
|
segmentationId: string;
|
|
79
|
-
segmentationRepresentationUID: string;
|
|
80
78
|
viewUp: any;
|
|
81
79
|
strategySpecificConfiguration: any;
|
|
82
80
|
preview: unknown;
|
|
@@ -92,7 +90,6 @@ declare class BrushTool extends BaseTool {
|
|
|
92
90
|
viewPlaneNormal: any;
|
|
93
91
|
toolGroupId: string;
|
|
94
92
|
segmentationId: string;
|
|
95
|
-
segmentationRepresentationUID: string;
|
|
96
93
|
viewUp: any;
|
|
97
94
|
strategySpecificConfiguration: any;
|
|
98
95
|
preview: unknown;
|
|
@@ -108,7 +105,6 @@ declare class BrushTool extends BaseTool {
|
|
|
108
105
|
viewPlaneNormal: any;
|
|
109
106
|
toolGroupId: string;
|
|
110
107
|
segmentationId: string;
|
|
111
|
-
segmentationRepresentationUID: string;
|
|
112
108
|
viewUp: any;
|
|
113
109
|
strategySpecificConfiguration: any;
|
|
114
110
|
preview: unknown;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { utilities as csUtils, cache, getEnabledElement, StackViewport, eventTarget, Enums, } from '@cornerstonejs/core';
|
|
1
|
+
import { utilities as csUtils, cache, getEnabledElement, StackViewport, eventTarget, Enums, BaseVolumeViewport, } from '@cornerstonejs/core';
|
|
2
2
|
import { vec3, vec2 } from 'gl-matrix';
|
|
3
3
|
import { BaseTool } from '../base';
|
|
4
4
|
import { fillInsideSphere, thresholdInsideSphere, } from './strategies/fillSphere';
|
|
@@ -9,12 +9,12 @@ 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 {
|
|
13
|
-
import { getActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, getSegmentation, getStackSegmentationImageIdsForViewport, } from '../../stateManagement/segmentation/segmentationState';
|
|
12
|
+
import { getCurrentLabelmapImageIdForViewport, getSegmentation, getStackSegmentationImageIdsForViewport, } from '../../stateManagement/segmentation/segmentationState';
|
|
14
13
|
import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
|
|
15
14
|
import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
|
|
16
15
|
import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
|
|
17
16
|
import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
|
|
17
|
+
import { getActiveSegmentation } from '../../stateManagement/segmentation/getActiveSegmentation';
|
|
18
18
|
class BrushTool extends BaseTool {
|
|
19
19
|
constructor(toolProps = {}, defaultToolProps = {
|
|
20
20
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
@@ -194,19 +194,23 @@ class BrushTool extends BaseTool {
|
|
|
194
194
|
createEditData(element) {
|
|
195
195
|
const enabledElement = getEnabledElement(element);
|
|
196
196
|
const { viewport } = enabledElement;
|
|
197
|
-
const
|
|
198
|
-
if (!
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
197
|
+
const activeSegmentation = getActiveSegmentation(viewport.id);
|
|
198
|
+
if (!activeSegmentation) {
|
|
199
|
+
const event = new CustomEvent(Enums.Events.ERROR_EVENT, {
|
|
200
|
+
detail: {
|
|
201
|
+
type: 'Segmentation',
|
|
202
|
+
message: 'No active segmentation detected, create a segmentation representation before using the brush tool',
|
|
203
|
+
},
|
|
204
|
+
cancelable: true,
|
|
205
|
+
});
|
|
206
|
+
eventTarget.dispatchEvent(event);
|
|
207
|
+
return null;
|
|
204
208
|
}
|
|
209
|
+
const { segmentationId } = activeSegmentation;
|
|
205
210
|
const segmentsLocked = getLockedSegmentIndices(segmentationId);
|
|
206
211
|
const { representationData } = getSegmentation(segmentationId);
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const { volumeId } = representationData[type];
|
|
212
|
+
if (viewport instanceof BaseVolumeViewport) {
|
|
213
|
+
const { volumeId } = representationData[SegmentationRepresentations.Labelmap];
|
|
210
214
|
const actors = viewport.getActors();
|
|
211
215
|
const isStackViewport = viewport instanceof StackViewport;
|
|
212
216
|
if (isStackViewport) {
|
|
@@ -220,7 +224,7 @@ class BrushTool extends BaseTool {
|
|
|
220
224
|
eventTarget.dispatchEvent(event);
|
|
221
225
|
return null;
|
|
222
226
|
}
|
|
223
|
-
const volumes = actors.map((actorEntry) => cache.getVolume(actorEntry.referencedId));
|
|
227
|
+
const volumes = actors.map((actorEntry) => cache.getVolume(actorEntry.referencedId ?? actorEntry.uid));
|
|
224
228
|
const segmentationVolume = cache.getVolume(volumeId);
|
|
225
229
|
const referencedVolumeIdToThreshold = volumes.find((volume) => csUtils.isEqual(volume.dimensions, segmentationVolume.dimensions))?.volumeId || volumes[0]?.volumeId;
|
|
226
230
|
return {
|
|
@@ -282,7 +286,7 @@ class BrushTool extends BaseTool {
|
|
|
282
286
|
const camera = viewport.getCamera();
|
|
283
287
|
const { viewPlaneNormal, viewUp } = camera;
|
|
284
288
|
const viewportIdsToRender = [viewport.id];
|
|
285
|
-
const { segmentIndex, segmentationId,
|
|
289
|
+
const { segmentIndex, segmentationId, segmentColor } = this.getActiveSegmentationData(viewport) || {};
|
|
286
290
|
const brushCursor = {
|
|
287
291
|
metadata: {
|
|
288
292
|
viewPlaneNormal: [...viewPlaneNormal],
|
|
@@ -300,25 +304,23 @@ class BrushTool extends BaseTool {
|
|
|
300
304
|
segmentIndex,
|
|
301
305
|
viewport,
|
|
302
306
|
segmentationId,
|
|
303
|
-
segmentationRepresentationUID,
|
|
304
307
|
segmentColor,
|
|
305
308
|
viewportIdsToRender,
|
|
306
309
|
};
|
|
307
310
|
}
|
|
308
311
|
getActiveSegmentationData(viewport) {
|
|
309
312
|
const viewportId = viewport.id;
|
|
310
|
-
const activeRepresentation =
|
|
313
|
+
const activeRepresentation = getActiveSegmentation(viewportId);
|
|
311
314
|
if (!activeRepresentation) {
|
|
312
315
|
console.warn('No active segmentation detected, create one before using the brush tool');
|
|
313
316
|
return;
|
|
314
317
|
}
|
|
315
|
-
const { segmentationId
|
|
318
|
+
const { segmentationId } = activeRepresentation;
|
|
316
319
|
const segmentIndex = getActiveSegmentIndex(segmentationId);
|
|
317
|
-
const segmentColor = getSegmentIndexColor(
|
|
320
|
+
const segmentColor = getSegmentIndexColor(viewportId, segmentationId, segmentIndex);
|
|
318
321
|
return {
|
|
319
322
|
segmentIndex,
|
|
320
323
|
segmentationId,
|
|
321
|
-
segmentationRepresentationUID,
|
|
322
324
|
segmentColor,
|
|
323
325
|
};
|
|
324
326
|
}
|
|
@@ -336,7 +338,7 @@ class BrushTool extends BaseTool {
|
|
|
336
338
|
}
|
|
337
339
|
getOperationData(element) {
|
|
338
340
|
const editData = this._editData || this.createEditData(element);
|
|
339
|
-
const { segmentIndex, segmentationId,
|
|
341
|
+
const { segmentIndex, segmentationId, brushCursor } = this._hoverData || this.createHoverData(element);
|
|
340
342
|
const { data, metadata = {} } = brushCursor || {};
|
|
341
343
|
const { viewPlaneNormal, viewUp } = metadata;
|
|
342
344
|
const operationData = {
|
|
@@ -349,7 +351,6 @@ class BrushTool extends BaseTool {
|
|
|
349
351
|
viewPlaneNormal,
|
|
350
352
|
toolGroupId: this.toolGroupId,
|
|
351
353
|
segmentationId,
|
|
352
|
-
segmentationRepresentationUID,
|
|
353
354
|
viewUp,
|
|
354
355
|
strategySpecificConfiguration: this.configuration.strategySpecificConfiguration,
|
|
355
356
|
preview: this._previewData?.preview,
|
|
@@ -332,10 +332,10 @@ class CircleROIStartEndThresholdTool extends CircleROITool {
|
|
|
332
332
|
_computePointsInsideVolume(annotation, imageVolume, targetId, enabledElement) {
|
|
333
333
|
const { data, metadata } = annotation;
|
|
334
334
|
const { viewPlaneNormal, viewUp } = metadata;
|
|
335
|
-
const { viewport
|
|
335
|
+
const { viewport } = enabledElement;
|
|
336
336
|
const projectionPoints = data.cachedStats.projectionPoints;
|
|
337
337
|
const pointsInsideVolume = [[]];
|
|
338
|
-
const image = this.
|
|
338
|
+
const image = this.getTargetImageData(targetId);
|
|
339
339
|
const canvasCoordinates = data.handles.points.map((p) => viewport.worldToCanvas(p));
|
|
340
340
|
const [topLeftCanvas, bottomRightCanvas] = (getCanvasCircleCorners(canvasCoordinates));
|
|
341
341
|
const pos1 = viewport.canvasToWorld(topLeftCanvas);
|
|
@@ -16,8 +16,8 @@ declare class CircleScissorsTool extends BaseTool {
|
|
|
16
16
|
movingTextBox: boolean;
|
|
17
17
|
newAnnotation?: boolean;
|
|
18
18
|
hasMoved?: boolean;
|
|
19
|
+
imageId: string;
|
|
19
20
|
centerCanvas?: Array<number>;
|
|
20
|
-
segmentationRepresentationUID?: string;
|
|
21
21
|
} | null;
|
|
22
22
|
isDrawing: boolean;
|
|
23
23
|
isHandleOutsideImage: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cache, getEnabledElement } from '@cornerstonejs/core';
|
|
1
|
+
import { BaseVolumeViewport, cache, getEnabledElement, } from '@cornerstonejs/core';
|
|
2
2
|
import { BaseTool } from '../base';
|
|
3
3
|
import { fillInsideCircle } from './strategies/fillCircle';
|
|
4
4
|
import { eraseInsideCircle } from './strategies/eraseCircle';
|
|
@@ -7,8 +7,7 @@ import { drawCircle as drawCircleSvg } from '../../drawingSvg';
|
|
|
7
7
|
import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
|
|
8
8
|
import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
9
9
|
import { segmentLocking, activeSegmentation, segmentIndex as segmentIndexController, config as segmentationConfig, } from '../../stateManagement/segmentation';
|
|
10
|
-
import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
|
|
11
|
-
import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
|
|
10
|
+
import { getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
|
|
12
11
|
class CircleScissorsTool extends BaseTool {
|
|
13
12
|
constructor(toolProps = {}, defaultToolProps = {
|
|
14
13
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
@@ -35,16 +34,16 @@ class CircleScissorsTool extends BaseTool {
|
|
|
35
34
|
this.isDrawing = true;
|
|
36
35
|
const camera = viewport.getCamera();
|
|
37
36
|
const { viewPlaneNormal, viewUp } = camera;
|
|
38
|
-
const
|
|
39
|
-
if (!
|
|
37
|
+
const activeLabelmapSegmentation = activeSegmentation.getActiveSegmentation(viewport.id);
|
|
38
|
+
if (!activeLabelmapSegmentation) {
|
|
40
39
|
throw new Error('No active segmentation detected, create one before using scissors tool');
|
|
41
40
|
}
|
|
42
|
-
const {
|
|
41
|
+
const { segmentationId } = activeLabelmapSegmentation;
|
|
43
42
|
const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
|
|
44
43
|
const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
|
|
45
|
-
const segmentColor = segmentationConfig.color.getSegmentIndexColor(
|
|
44
|
+
const segmentColor = segmentationConfig.color.getSegmentIndexColor(viewport.id, segmentationId, segmentIndex);
|
|
46
45
|
const { representationData } = getSegmentation(segmentationId);
|
|
47
|
-
const labelmapData = representationData
|
|
46
|
+
const labelmapData = representationData.Labelmap;
|
|
48
47
|
if (!labelmapData) {
|
|
49
48
|
throw new Error('No labelmap data found for the active segmentation, create one before using scissors tool');
|
|
50
49
|
}
|
|
@@ -86,11 +85,11 @@ class CircleScissorsTool extends BaseTool {
|
|
|
86
85
|
movingTextBox: false,
|
|
87
86
|
newAnnotation: true,
|
|
88
87
|
hasMoved: false,
|
|
89
|
-
segmentationRepresentationUID,
|
|
90
88
|
volumeId: null,
|
|
91
89
|
referencedVolumeId: null,
|
|
90
|
+
imageId: null,
|
|
92
91
|
};
|
|
93
|
-
if (
|
|
92
|
+
if (viewport instanceof BaseVolumeViewport) {
|
|
94
93
|
const { volumeId } = labelmapData;
|
|
95
94
|
const segmentation = cache.getVolume(volumeId);
|
|
96
95
|
this.editData = {
|
|
@@ -100,8 +99,10 @@ class CircleScissorsTool extends BaseTool {
|
|
|
100
99
|
};
|
|
101
100
|
}
|
|
102
101
|
else {
|
|
102
|
+
const segmentationImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
|
|
103
103
|
this.editData = {
|
|
104
104
|
...this.editData,
|
|
105
|
+
imageId: segmentationImageId,
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
108
|
this._activateDraw(element);
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { cache, getEnabledElement, utilities as csUtils, } from '@cornerstonejs/core';
|
|
1
|
+
import { cache, getEnabledElement, utilities as csUtils, BaseVolumeViewport, } from '@cornerstonejs/core';
|
|
2
2
|
import { BaseTool } from '../base';
|
|
3
3
|
import { SegmentationRepresentations } from '../../enums';
|
|
4
4
|
import { triggerSegmentationDataModified } from '../../stateManagement/segmentation/triggerSegmentationEvents';
|
|
5
5
|
import { segmentLocking, activeSegmentation, segmentIndex as segmentIndexController, } from '../../stateManagement/segmentation';
|
|
6
6
|
import floodFill from '../../utilities/segmentation/floodFill';
|
|
7
7
|
import { getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
|
|
8
|
-
import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
|
|
9
8
|
const { transformWorldToIndex, isEqual } = csUtils;
|
|
10
9
|
class PaintFillTool extends BaseTool {
|
|
11
10
|
constructor(toolProps = {}, defaultToolProps = {
|
|
@@ -20,22 +19,21 @@ class PaintFillTool extends BaseTool {
|
|
|
20
19
|
const { viewport } = enabledElement;
|
|
21
20
|
const camera = viewport.getCamera();
|
|
22
21
|
const { viewPlaneNormal } = camera;
|
|
23
|
-
const activeSegmentationRepresentation = activeSegmentation.
|
|
22
|
+
const activeSegmentationRepresentation = activeSegmentation.getActiveSegmentation(viewport.id);
|
|
24
23
|
if (!activeSegmentationRepresentation) {
|
|
25
24
|
throw new Error('No active segmentation detected, create one before using scissors tool');
|
|
26
25
|
}
|
|
27
|
-
const { segmentationId
|
|
26
|
+
const { segmentationId } = activeSegmentationRepresentation;
|
|
28
27
|
const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
|
|
29
28
|
const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
|
|
30
29
|
const { representationData } = getSegmentation(segmentationId);
|
|
31
|
-
const labelmapData = representationData[SegmentationRepresentations.Labelmap];
|
|
32
30
|
let dimensions;
|
|
33
31
|
let direction;
|
|
34
32
|
let scalarData;
|
|
35
33
|
let index;
|
|
36
34
|
let voxelManager;
|
|
37
|
-
if (
|
|
38
|
-
const { volumeId } = representationData[
|
|
35
|
+
if (viewport instanceof BaseVolumeViewport) {
|
|
36
|
+
const { volumeId } = representationData[SegmentationRepresentations.Labelmap];
|
|
39
37
|
const segmentation = cache.getVolume(volumeId);
|
|
40
38
|
({ dimensions, direction } = segmentation);
|
|
41
39
|
voxelManager = segmentation.voxelManager;
|
|
@@ -308,10 +308,10 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
|
|
|
308
308
|
_computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement) {
|
|
309
309
|
const { data, metadata } = annotation;
|
|
310
310
|
const { viewPlaneNormal, viewUp } = metadata;
|
|
311
|
-
const { viewport
|
|
311
|
+
const { viewport } = enabledElement;
|
|
312
312
|
const projectionPoints = data.cachedStats.projectionPoints;
|
|
313
313
|
const pointsInsideVolume = [[]];
|
|
314
|
-
const image = this.
|
|
314
|
+
const image = this.getTargetImageData(targetId);
|
|
315
315
|
const worldPos1 = data.handles.points[0];
|
|
316
316
|
const worldPos2 = data.handles.points[3];
|
|
317
317
|
const { worldWidth, worldHeight } = getWorldWidthAndHeightFromCorners(viewPlaneNormal, viewUp, worldPos1, worldPos2);
|
|
@@ -12,7 +12,6 @@ declare class RectangleScissorsTool extends BaseTool {
|
|
|
12
12
|
segmentationId: string;
|
|
13
13
|
segmentIndex: number;
|
|
14
14
|
segmentsLocked: number[];
|
|
15
|
-
segmentationRepresentationUID: string;
|
|
16
15
|
segmentColor: [number, number, number, number];
|
|
17
16
|
viewportIdsToRender: string[];
|
|
18
17
|
handleIndex?: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cache, getEnabledElement,
|
|
1
|
+
import { BaseVolumeViewport, cache, getEnabledElement, } from '@cornerstonejs/core';
|
|
2
2
|
import { BaseTool } from '../base';
|
|
3
3
|
import { fillInsideRectangle } from './strategies/fillRectangle';
|
|
4
4
|
import { eraseInsideRectangle } from './strategies/eraseRectangle';
|
|
@@ -8,8 +8,7 @@ import { drawRect as drawRectSvg } from '../../drawingSvg';
|
|
|
8
8
|
import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
|
|
9
9
|
import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
10
10
|
import { config as segmentationConfig, segmentLocking, segmentIndex as segmentIndexController, activeSegmentation, } from '../../stateManagement/segmentation';
|
|
11
|
-
import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
|
|
12
|
-
import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
|
|
11
|
+
import { getCurrentLabelmapImageIdForViewport, getSegmentation, getStackSegmentationImageIdsForViewport, } from '../../stateManagement/segmentation/segmentationState';
|
|
13
12
|
class RectangleScissorsTool extends BaseTool {
|
|
14
13
|
constructor(toolProps = {}, defaultToolProps = {
|
|
15
14
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
@@ -35,14 +34,14 @@ class RectangleScissorsTool extends BaseTool {
|
|
|
35
34
|
this.isDrawing = true;
|
|
36
35
|
const camera = viewport.getCamera();
|
|
37
36
|
const { viewPlaneNormal, viewUp } = camera;
|
|
38
|
-
const
|
|
39
|
-
if (!
|
|
37
|
+
const activeLabelmapSegmentation = activeSegmentation.getActiveSegmentation(viewport.id);
|
|
38
|
+
if (!activeLabelmapSegmentation) {
|
|
40
39
|
throw new Error('No active segmentation detected, create one before using scissors tool');
|
|
41
40
|
}
|
|
42
|
-
const {
|
|
41
|
+
const { segmentationId } = activeLabelmapSegmentation;
|
|
43
42
|
const segmentIndex = segmentIndexController.getActiveSegmentIndex(segmentationId);
|
|
44
43
|
const segmentsLocked = segmentLocking.getLockedSegmentIndices(segmentationId);
|
|
45
|
-
const segmentColor = segmentationConfig.color.getSegmentIndexColor(
|
|
44
|
+
const segmentColor = segmentationConfig.color.getSegmentIndexColor(viewport.id, segmentationId, segmentIndex);
|
|
46
45
|
const { representationData } = getSegmentation(segmentationId);
|
|
47
46
|
const labelmapData = representationData[SegmentationRepresentations.Labelmap];
|
|
48
47
|
const annotation = {
|
|
@@ -80,12 +79,11 @@ class RectangleScissorsTool extends BaseTool {
|
|
|
80
79
|
movingTextBox: false,
|
|
81
80
|
newAnnotation: true,
|
|
82
81
|
hasMoved: false,
|
|
83
|
-
segmentationRepresentationUID,
|
|
84
82
|
volumeId: null,
|
|
85
83
|
referencedVolumeId: null,
|
|
86
84
|
imageId: null,
|
|
87
85
|
};
|
|
88
|
-
if (
|
|
86
|
+
if (viewport instanceof BaseVolumeViewport) {
|
|
89
87
|
const { volumeId } = labelmapData;
|
|
90
88
|
const segmentation = cache.getVolume(volumeId);
|
|
91
89
|
this.editData = {
|
|
@@ -95,8 +93,10 @@ class RectangleScissorsTool extends BaseTool {
|
|
|
95
93
|
};
|
|
96
94
|
}
|
|
97
95
|
else {
|
|
96
|
+
const segmentationImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
|
|
98
97
|
this.editData = {
|
|
99
98
|
...this.editData,
|
|
99
|
+
imageId: segmentationImageId,
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
this._activateDraw(element);
|
|
@@ -154,7 +154,6 @@ class RectangleScissorsTool extends BaseTool {
|
|
|
154
154
|
}
|
|
155
155
|
annotation.invalidated = true;
|
|
156
156
|
this.editData.hasMoved = true;
|
|
157
|
-
const { renderingEngine } = enabledElement;
|
|
158
157
|
triggerAnnotationRenderForViewportIds(viewportIdsToRender);
|
|
159
158
|
};
|
|
160
159
|
this._endCallback = (evt) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
2
|
import { BaseTool } from '../base';
|
|
3
3
|
import type { PublicToolProps, ToolProps, EventTypes } from '../../types';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Segmentation } from '../../types/SegmentationStateTypes';
|
|
5
5
|
declare class SegmentSelectTool extends BaseTool {
|
|
6
6
|
static toolName: any;
|
|
7
7
|
private hoverTimer;
|
|
@@ -15,6 +15,6 @@ declare class SegmentSelectTool extends BaseTool {
|
|
|
15
15
|
onSetToolActive: () => void;
|
|
16
16
|
onSetToolDisabled: () => void;
|
|
17
17
|
_setActiveSegment(evt?: EventTypes.InteractionEventType): void;
|
|
18
|
-
_setActiveSegmentForType(
|
|
18
|
+
_setActiveSegmentForType(activeSegmentation: Segmentation, worldPoint: Types.Point3, viewport: Types.IStackViewport | Types.IVolumeViewport): void;
|
|
19
19
|
}
|
|
20
20
|
export default SegmentSelectTool;
|
|
@@ -2,7 +2,7 @@ import { getEnabledElement } from '@cornerstonejs/core';
|
|
|
2
2
|
import { BaseTool } from '../base';
|
|
3
3
|
import { triggerSegmentationModified } from '../../stateManagement/segmentation/triggerSegmentationEvents';
|
|
4
4
|
import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
5
|
-
import {
|
|
5
|
+
import { getActiveSegmentation } from '../../stateManagement/segmentation/activeSegmentation';
|
|
6
6
|
import RepresentationTypes from '../../enums/SegmentationRepresentations';
|
|
7
7
|
import { setActiveSegmentIndex } from '../../stateManagement/segmentation/segmentIndex';
|
|
8
8
|
import { getHoveredContourSegmentationAnnotation, getSegmentIndexAtLabelmapBorder, getSegmentIndexAtWorldPoint, } from '../../utilities/segmentation';
|
|
@@ -54,27 +54,18 @@ class SegmentSelectTool extends BaseTool {
|
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
const { viewport } = enabledElement;
|
|
57
|
-
const
|
|
58
|
-
if (!
|
|
57
|
+
const activeSegmentation = getActiveSegmentation(viewport.id);
|
|
58
|
+
if (!activeSegmentation) {
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
RepresentationTypes.Labelmap,
|
|
63
|
-
RepresentationTypes.Contour,
|
|
64
|
-
];
|
|
65
|
-
if (supportedTypes.includes(activeSegmentationReps.type)) {
|
|
66
|
-
this._setActiveSegmentForType(activeSegmentationReps, worldPoint, viewport);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
console.warn('SegmentSelectTool does not support the current segmentation type.');
|
|
70
|
-
}
|
|
61
|
+
this._setActiveSegmentForType(activeSegmentation, worldPoint, viewport);
|
|
71
62
|
}
|
|
72
|
-
_setActiveSegmentForType(
|
|
63
|
+
_setActiveSegmentForType(activeSegmentation, worldPoint, viewport) {
|
|
73
64
|
const imageDataInfo = viewport.getImageData();
|
|
74
65
|
if (!imageDataInfo) {
|
|
75
66
|
return;
|
|
76
67
|
}
|
|
77
|
-
const { segmentationId,
|
|
68
|
+
const { segmentationId, representationData } = activeSegmentation;
|
|
78
69
|
let hoveredSegmentIndex;
|
|
79
70
|
if (this.configuration.mode === SegmentSelectTool.SelectMode.Inside) {
|
|
80
71
|
hoveredSegmentIndex = getSegmentIndexAtWorldPoint(segmentationId, worldPoint, {
|
|
@@ -82,17 +73,17 @@ class SegmentSelectTool extends BaseTool {
|
|
|
82
73
|
});
|
|
83
74
|
}
|
|
84
75
|
else {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
if (representationData.Labelmap) {
|
|
77
|
+
hoveredSegmentIndex = getSegmentIndexAtLabelmapBorder(segmentationId, worldPoint, {
|
|
78
|
+
viewport,
|
|
79
|
+
searchRadius: this.configuration.searchRadius,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else if (representationData.Contour) {
|
|
83
|
+
hoveredSegmentIndex =
|
|
84
|
+
getHoveredContourSegmentationAnnotation(segmentationId);
|
|
85
|
+
}
|
|
86
|
+
else if (representationData.Surface) {
|
|
96
87
|
}
|
|
97
88
|
}
|
|
98
89
|
if (!hoveredSegmentIndex || hoveredSegmentIndex === 0) {
|