@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
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getCurrentLabelmapImageIdForViewport(viewportId: string, segmentationId
|
|
1
|
+
export declare function getCurrentLabelmapImageIdForViewport(viewportId: string, segmentationId: string): string;
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
import type { SegmentationRepresentations } from '../../enums';
|
|
1
2
|
import type { SegmentationRepresentation } from '../../types/SegmentationStateTypes';
|
|
2
|
-
export declare function
|
|
3
|
+
export declare function getSegmentationRepresentations(viewportId: string, specifier?: {
|
|
4
|
+
segmentationId?: string;
|
|
5
|
+
type?: SegmentationRepresentations;
|
|
6
|
+
}): SegmentationRepresentation[] | [];
|
|
7
|
+
export declare function getSegmentationRepresentation(viewportId: string, specifier: {
|
|
8
|
+
segmentationId: string;
|
|
9
|
+
type: SegmentationRepresentations;
|
|
10
|
+
}): SegmentationRepresentation | undefined;
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { defaultSegmentationStateManager } from './SegmentationStateManager';
|
|
2
|
-
export function
|
|
2
|
+
export function getSegmentationRepresentations(viewportId, specifier = {}) {
|
|
3
3
|
const segmentationStateManager = defaultSegmentationStateManager;
|
|
4
|
-
return segmentationStateManager.
|
|
4
|
+
return segmentationStateManager.getSegmentationRepresentations(viewportId, specifier);
|
|
5
|
+
}
|
|
6
|
+
export function getSegmentationRepresentation(viewportId, specifier) {
|
|
7
|
+
const segmentationStateManager = defaultSegmentationStateManager;
|
|
8
|
+
if (!specifier.segmentationId || !specifier.type) {
|
|
9
|
+
throw new Error('getSegmentationRepresentation: No segmentationId or type provided, you need to provide at least one of them');
|
|
10
|
+
}
|
|
11
|
+
const representations = segmentationStateManager.getSegmentationRepresentations(viewportId, specifier);
|
|
12
|
+
return representations?.[0];
|
|
5
13
|
}
|
|
@@ -1 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { SegmentationRepresentations } from '../../enums';
|
|
2
|
+
export declare function getSegmentationRepresentationVisibility(viewportId: string, specifier: {
|
|
3
|
+
segmentationId: string;
|
|
4
|
+
type: SegmentationRepresentations;
|
|
5
|
+
}): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defaultSegmentationStateManager } from './SegmentationStateManager';
|
|
2
|
-
export function getSegmentationRepresentationVisibility(viewportId,
|
|
2
|
+
export function getSegmentationRepresentationVisibility(viewportId, specifier) {
|
|
3
3
|
const segmentationStateManager = defaultSegmentationStateManager;
|
|
4
|
-
return segmentationStateManager.getSegmentationRepresentationVisibility(viewportId,
|
|
4
|
+
return segmentationStateManager.getSegmentationRepresentationVisibility(viewportId, specifier);
|
|
5
5
|
}
|
|
@@ -2,9 +2,9 @@ import { defaultSegmentationStateManager } from './SegmentationStateManager';
|
|
|
2
2
|
export function getViewportIdsWithSegmentation(segmentationId) {
|
|
3
3
|
const segmentationStateManager = defaultSegmentationStateManager;
|
|
4
4
|
const state = segmentationStateManager.getState();
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
const viewportSegRepresentations = state.viewportSegRepresentations;
|
|
6
|
+
const viewportIdsWithSegmentation = Object.entries(viewportSegRepresentations)
|
|
7
|
+
.filter(([, viewportSegmentations]) => viewportSegmentations.some((segRep) => segRep.segmentationId === segmentationId))
|
|
8
|
+
.map(([viewportId]) => viewportId);
|
|
9
|
+
return viewportIdsWithSegmentation;
|
|
10
10
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getSegmentation } from './getSegmentation';
|
|
2
|
+
import { defaultSegmentationStateManager } from './SegmentationStateManager';
|
|
3
|
+
export function getViewportSegmentations(viewportId, type) {
|
|
4
|
+
const segmentationStateManager = defaultSegmentationStateManager;
|
|
5
|
+
const state = segmentationStateManager.getState();
|
|
6
|
+
const viewportRepresentations = state.viewportSegRepresentations[viewportId];
|
|
7
|
+
const segmentations = viewportRepresentations.map((representation) => {
|
|
8
|
+
if (type && representation.type === type) {
|
|
9
|
+
return getSegmentation(representation.segmentationId);
|
|
10
|
+
}
|
|
11
|
+
return getSegmentation(representation.segmentationId);
|
|
12
|
+
});
|
|
13
|
+
const filteredSegmentations = segmentations.filter((segmentation) => segmentation !== undefined);
|
|
14
|
+
return filteredSegmentations;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function clearSegmentValue(segmentationId: string, segmentIndex: number): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { cache } from '@cornerstonejs/core';
|
|
2
|
+
import { SegmentationRepresentations } from '../../../enums';
|
|
3
|
+
import { getSegmentation } from '../getSegmentation';
|
|
4
|
+
import { triggerSegmentationDataModified } from '../triggerSegmentationEvents';
|
|
5
|
+
export function clearSegmentValue(segmentationId, segmentIndex) {
|
|
6
|
+
const segmentation = getSegmentation(segmentationId);
|
|
7
|
+
if (segmentation.representationData.Labelmap) {
|
|
8
|
+
const { representationData } = segmentation;
|
|
9
|
+
const labelmapData = representationData.Labelmap;
|
|
10
|
+
if ('imageIds' in labelmapData || 'volumeId' in labelmapData) {
|
|
11
|
+
const items = 'imageIds' in labelmapData
|
|
12
|
+
? labelmapData.imageIds.map((imageId) => cache.getImage(imageId))
|
|
13
|
+
: [cache.getVolume(labelmapData.volumeId)];
|
|
14
|
+
items.forEach((item) => {
|
|
15
|
+
if (!item) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const { voxelManager } = item;
|
|
19
|
+
voxelManager.forEach(({ value, index }) => {
|
|
20
|
+
if (value === segmentIndex) {
|
|
21
|
+
voxelManager.setAtIndex(index, 0);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
triggerSegmentationDataModified(segmentationId);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new Error('Invalid segmentation type, only labelmap is supported right now');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -11,7 +11,6 @@ export type SurfaceClipResult = {
|
|
|
11
11
|
numberOfCells: number;
|
|
12
12
|
};
|
|
13
13
|
export type PolyDataClipCacheType = Map<string, Map<string, SurfaceClipResult>>;
|
|
14
|
-
export declare function clipAndCacheSurfacesForViewport(surfacesInfo: SurfacesInfo[], viewport: Types.IVolumeViewport,
|
|
15
|
-
export declare function getSurfaceActorUID(segmentationRepresentationUID: string, surfaceId: string): string;
|
|
14
|
+
export declare function clipAndCacheSurfacesForViewport(surfacesInfo: SurfacesInfo[], viewport: Types.IVolumeViewport, segmentationId: string): Promise<PolyDataClipCacheType>;
|
|
16
15
|
export declare function generateCacheId(viewport: any, viewPlaneNormal: any, sliceIndex: any): string;
|
|
17
16
|
export declare function updatePolyDataCache(actorUID: string, cacheId: string, polyDataResult: SurfaceClipResult): void;
|
|
@@ -2,6 +2,7 @@ import { Enums, getWebWorkerManager, eventTarget, triggerEvent, } from '@corners
|
|
|
2
2
|
import { WorkerTypes } from '../../../enums';
|
|
3
3
|
import { pointToString } from '../../../utilities/pointToString';
|
|
4
4
|
import { registerPolySegWorker } from '../polySeg/registerPolySegWorker';
|
|
5
|
+
import { getSurfaceActorUID } from './getSegmentationActor';
|
|
5
6
|
const workerManager = getWebWorkerManager();
|
|
6
7
|
const polyDataCache = new Map();
|
|
7
8
|
const surfacesAABBCache = new Map();
|
|
@@ -11,7 +12,7 @@ const triggerWorkerProgress = (eventTarget, progress) => {
|
|
|
11
12
|
type: WorkerTypes.SURFACE_CLIPPING,
|
|
12
13
|
});
|
|
13
14
|
};
|
|
14
|
-
export async function clipAndCacheSurfacesForViewport(surfacesInfo, viewport,
|
|
15
|
+
export async function clipAndCacheSurfacesForViewport(surfacesInfo, viewport, segmentationId) {
|
|
15
16
|
registerPolySegWorker();
|
|
16
17
|
const planesInfo = viewport.getSlicesClippingPlanes?.();
|
|
17
18
|
if (!planesInfo) {
|
|
@@ -41,8 +42,8 @@ export async function clipAndCacheSurfacesForViewport(surfacesInfo, viewport, se
|
|
|
41
42
|
triggerWorkerProgress(eventTarget, progress);
|
|
42
43
|
},
|
|
43
44
|
({ sliceIndex, polyDataResults }) => {
|
|
44
|
-
polyDataResults.forEach((polyDataResult
|
|
45
|
-
const actorUID =
|
|
45
|
+
polyDataResults.forEach((polyDataResult) => {
|
|
46
|
+
const actorUID = getSurfaceActorUID(segmentationId);
|
|
46
47
|
const cacheId = generateCacheId(viewport, camera.viewPlaneNormal, sliceIndex);
|
|
47
48
|
updatePolyDataCache(actorUID, cacheId, polyDataResult);
|
|
48
49
|
});
|
|
@@ -73,9 +74,6 @@ async function updateSurfacesAABBCache(surfacesInfo) {
|
|
|
73
74
|
surfacesAABBCache.set(id, aabb);
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
|
-
export function getSurfaceActorUID(segmentationRepresentationUID, surfaceId) {
|
|
77
|
-
return `${segmentationRepresentationUID}_${surfaceId}`;
|
|
78
|
-
}
|
|
79
77
|
export function generateCacheId(viewport, viewPlaneNormal, sliceIndex) {
|
|
80
78
|
return `${viewport.id}-${pointToString(viewPlaneNormal)}-${sliceIndex}`;
|
|
81
79
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function computeStackLabelmapFromVolume({ volumeId, }: {
|
|
2
2
|
volumeId: string;
|
|
3
3
|
}): Promise<{
|
|
4
4
|
imageIds: string[];
|
|
5
5
|
}>;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function convertVolumeToStackLabelmap({ segmentationId, options, }: {
|
|
7
7
|
segmentationId: string;
|
|
8
8
|
options?: {
|
|
9
9
|
viewportId: string;
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { cache } from '@cornerstonejs/core';
|
|
2
|
-
import { getSegmentation } from '
|
|
3
|
-
import { updateStackSegmentationState } from '
|
|
4
|
-
export async function
|
|
2
|
+
import { getSegmentation } from '../getSegmentation';
|
|
3
|
+
import { updateStackSegmentationState } from '../helpers/updateStackSegmentationState';
|
|
4
|
+
export async function computeStackLabelmapFromVolume({ volumeId, }) {
|
|
5
5
|
const segmentationVolume = cache.getVolume(volumeId);
|
|
6
6
|
return { imageIds: segmentationVolume.imageIds };
|
|
7
7
|
}
|
|
8
|
-
export
|
|
8
|
+
export function convertVolumeToStackLabelmap({ segmentationId, options, }) {
|
|
9
9
|
const segmentation = getSegmentation(segmentationId);
|
|
10
|
+
if (!segmentation) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
10
13
|
const { volumeId } = segmentation.representationData
|
|
11
14
|
.Labelmap;
|
|
12
15
|
const segmentationVolume = cache.getVolume(volumeId);
|
|
13
|
-
|
|
16
|
+
return updateStackSegmentationState({
|
|
14
17
|
segmentationId,
|
|
15
18
|
viewportId: options.viewportId,
|
|
16
19
|
imageIds: segmentationVolume.imageIds,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function convertStackToVolumeLabelmap(args: any): Promise<void>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { internalConvertStackToVolumeLabelmap } from '../SegmentationStateManager';
|
|
2
|
+
import { triggerSegmentationModified } from '../triggerSegmentationEvents';
|
|
3
|
+
export async function convertStackToVolumeLabelmap(args) {
|
|
4
|
+
const result = internalConvertStackToVolumeLabelmap(args);
|
|
5
|
+
triggerSegmentationModified(args.segmentationId);
|
|
6
|
+
return result;
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Types } from '@cornerstonejs/core';
|
|
2
|
+
import { SegmentationRepresentations } from '../../../enums';
|
|
3
|
+
export declare function getSegmentationActor(viewportId: string, specifier: {
|
|
4
|
+
segmentationId: string;
|
|
5
|
+
type: SegmentationRepresentations;
|
|
6
|
+
}): Types.VolumeActor | Types.ImageActor | undefined;
|
|
7
|
+
export declare function getLabelmapActorUID(segmentationId: string): string;
|
|
8
|
+
export declare function getSurfaceActorUID(segmentationId: string): string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getEnabledElementByViewportId } from '@cornerstonejs/core';
|
|
2
|
+
import { SegmentationRepresentations } from '../../../enums';
|
|
3
|
+
export function getSegmentationActor(viewportId, specifier) {
|
|
4
|
+
if (specifier.type === SegmentationRepresentations.Contour) {
|
|
5
|
+
throw new Error('Contours do not have actors');
|
|
6
|
+
}
|
|
7
|
+
const enabledElement = getEnabledElementByViewportId(viewportId);
|
|
8
|
+
const { renderingEngine, viewport } = enabledElement;
|
|
9
|
+
if (!renderingEngine || !viewport) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const actors = viewport.getActors();
|
|
13
|
+
const actorUID = specifier.type === SegmentationRepresentations.Labelmap
|
|
14
|
+
? getLabelmapActorUID(specifier.segmentationId)
|
|
15
|
+
: getSurfaceActorUID(specifier.segmentationId);
|
|
16
|
+
const actor = actors.find((actor) => actor.uid === actorUID);
|
|
17
|
+
if (!actor) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return actor.actor;
|
|
21
|
+
}
|
|
22
|
+
export function getLabelmapActorUID(segmentationId) {
|
|
23
|
+
return `${segmentationId}-${SegmentationRepresentations.Labelmap}`;
|
|
24
|
+
}
|
|
25
|
+
export function getSurfaceActorUID(segmentationId) {
|
|
26
|
+
return `${segmentationId}-${SegmentationRepresentations.Surface}`;
|
|
27
|
+
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { SegmentationRepresentations } from '../../../enums';
|
|
2
2
|
function normalizeSegmentationInput(segmentationInput) {
|
|
3
3
|
const { segmentationId, representation } = segmentationInput;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
data = !data && isContourRepresentation ? {} : data;
|
|
4
|
+
const { type, data: inputData } = representation;
|
|
5
|
+
const data = inputData ? { ...inputData } : {};
|
|
7
6
|
if (!data) {
|
|
8
7
|
throw new Error('Segmentation representation data may not be undefined');
|
|
9
8
|
}
|
|
10
|
-
if (
|
|
9
|
+
if (type === SegmentationRepresentations.Contour) {
|
|
11
10
|
const contourData = data;
|
|
12
11
|
contourData.geometryIds = contourData.geometryIds ?? [];
|
|
13
12
|
contourData.annotationUIDsMap = contourData.annotationUIDsMap ?? new Map();
|
|
@@ -18,10 +17,9 @@ function normalizeSegmentationInput(segmentationInput) {
|
|
|
18
17
|
segmentLabels: {},
|
|
19
18
|
label: null,
|
|
20
19
|
segmentsLocked: new Set(),
|
|
21
|
-
type: representation.type,
|
|
22
20
|
activeSegmentIndex: 1,
|
|
23
21
|
representationData: {
|
|
24
|
-
[
|
|
22
|
+
[type]: {
|
|
25
23
|
...data,
|
|
26
24
|
},
|
|
27
25
|
},
|
|
@@ -2,7 +2,7 @@ import { cache, eventTarget } from '@cornerstonejs/core';
|
|
|
2
2
|
import { Events, SegmentationRepresentations } from '../../../enums';
|
|
3
3
|
import { getSegmentation } from '../getSegmentation';
|
|
4
4
|
import { triggerSegmentationDataModified } from '../triggerSegmentationEvents';
|
|
5
|
-
import { addSegmentationRepresentations } from '../
|
|
5
|
+
import { addSegmentationRepresentations } from '../addSegmentationRepresentationsToViewport';
|
|
6
6
|
export async function updateStackSegmentationState({ segmentationId, viewportId, imageIds, options, }) {
|
|
7
7
|
const segmentation = getSegmentation(segmentationId);
|
|
8
8
|
if (options?.removeOriginal) {
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import removeSegmentationRepresentations from './removeSegmentationRepresentations';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import addRepresentationData from './addRepresentationData';
|
|
5
|
-
import { convertVolumeToStackSegmentation } from './convertVolumeToStackSegmentation';
|
|
1
|
+
import { removeContourRepresentation, removeLabelmapRepresentation, removeSegmentationRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, removeAllSegmentationRepresentations } from './removeSegmentationRepresentations';
|
|
2
|
+
import { addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations } from './addSegmentationRepresentationsToViewport';
|
|
3
|
+
import { addSegmentations } from './addSegmentations';
|
|
6
4
|
import * as activeSegmentation from './activeSegmentation';
|
|
7
5
|
import * as segmentLocking from './segmentLocking';
|
|
8
6
|
import * as state from './segmentationState';
|
|
9
7
|
import * as config from './config';
|
|
10
8
|
import * as segmentIndex from './segmentIndex';
|
|
11
9
|
import * as triggerSegmentationEvents from './triggerSegmentationEvents';
|
|
12
|
-
import {
|
|
10
|
+
import { convertStackToVolumeLabelmap } from './helpers/convertStackToVolumeLabelmap';
|
|
11
|
+
import { computeVolumeLabelmapFromStack } from './helpers/computeVolumeLabelmapFromStack';
|
|
13
12
|
import * as polySegManager from './polySeg';
|
|
14
|
-
|
|
13
|
+
import { clearSegmentValue } from './helpers/clearSegmentValue';
|
|
14
|
+
import { convertVolumeToStackLabelmap } from './helpers/computeStackLabelmapFromVolume';
|
|
15
|
+
declare const helpers: {
|
|
16
|
+
clearSegmentValue: typeof clearSegmentValue;
|
|
17
|
+
convertStackToVolumeLabelmap: typeof convertStackToVolumeLabelmap;
|
|
18
|
+
computeVolumeLabelmapFromStack: typeof computeVolumeLabelmapFromStack;
|
|
19
|
+
convertVolumeToStackLabelmap: typeof convertVolumeToStackLabelmap;
|
|
20
|
+
};
|
|
21
|
+
export { removeSegmentationRepresentation, removeContourRepresentation, removeLabelmapRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations, removeAllSegmentationRepresentations, addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addSegmentations, state, activeSegmentation, segmentLocking, config, segmentIndex, triggerSegmentationEvents, helpers, polySegManager as polySeg, };
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import removeSegmentationRepresentations from './removeSegmentationRepresentations';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import addRepresentationData from './addRepresentationData';
|
|
5
|
-
import { convertVolumeToStackSegmentation } from './convertVolumeToStackSegmentation';
|
|
1
|
+
import { removeContourRepresentation, removeLabelmapRepresentation, removeSegmentationRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, removeAllSegmentationRepresentations, } from './removeSegmentationRepresentations';
|
|
2
|
+
import { addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations, } from './addSegmentationRepresentationsToViewport';
|
|
3
|
+
import { addSegmentations } from './addSegmentations';
|
|
6
4
|
import * as activeSegmentation from './activeSegmentation';
|
|
7
5
|
import * as segmentLocking from './segmentLocking';
|
|
8
6
|
import * as state from './segmentationState';
|
|
9
7
|
import * as config from './config';
|
|
10
8
|
import * as segmentIndex from './segmentIndex';
|
|
11
9
|
import * as triggerSegmentationEvents from './triggerSegmentationEvents';
|
|
12
|
-
import {
|
|
10
|
+
import { convertStackToVolumeLabelmap } from './helpers/convertStackToVolumeLabelmap';
|
|
11
|
+
import { computeVolumeLabelmapFromStack } from './helpers/computeVolumeLabelmapFromStack';
|
|
13
12
|
import * as polySegManager from './polySeg';
|
|
14
|
-
|
|
13
|
+
import { clearSegmentValue } from './helpers/clearSegmentValue';
|
|
14
|
+
import { convertVolumeToStackLabelmap } from './helpers/computeStackLabelmapFromVolume';
|
|
15
|
+
const helpers = {
|
|
16
|
+
clearSegmentValue,
|
|
17
|
+
convertStackToVolumeLabelmap,
|
|
18
|
+
computeVolumeLabelmapFromStack,
|
|
19
|
+
convertVolumeToStackLabelmap,
|
|
20
|
+
};
|
|
21
|
+
export { removeSegmentationRepresentation, removeContourRepresentation, removeLabelmapRepresentation, removeSurfaceRepresentation, removeSegmentationRepresentations, addLabelmapRepresentationToViewport, addLabelmapRepresentationToViewportMap, addSegmentationRepresentations, removeAllSegmentationRepresentations, addContourRepresentationToViewport, addContourRepresentationToViewportMap, addSurfaceRepresentationToViewport, addSurfaceRepresentationToViewportMap, addSegmentations, state, activeSegmentation, segmentLocking, config, segmentIndex, triggerSegmentationEvents, helpers, polySegManager as polySeg, };
|
|
@@ -8,5 +8,5 @@ type AddRepresentationData = {
|
|
|
8
8
|
type: SegmentationRepresentations;
|
|
9
9
|
data: SegmentationData;
|
|
10
10
|
};
|
|
11
|
-
declare function
|
|
12
|
-
export default
|
|
11
|
+
declare function internalAddRepresentationData({ segmentationId, type, data, }: AddRepresentationData): void;
|
|
12
|
+
export default internalAddRepresentationData;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { getSegmentation } from './getSegmentation';
|
|
2
2
|
import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
|
|
3
|
-
function
|
|
3
|
+
function internalAddRepresentationData({ segmentationId, type, data, }) {
|
|
4
4
|
const segmentation = getSegmentation(segmentationId);
|
|
5
|
+
if (!segmentation) {
|
|
6
|
+
throw new Error(`Segmentation ${segmentationId} not found`);
|
|
7
|
+
}
|
|
5
8
|
if (segmentation.representationData[type]) {
|
|
6
9
|
console.warn(`Representation data of type ${type} already exists for segmentation ${segmentationId}, overwriting it.`);
|
|
7
10
|
}
|
|
@@ -26,4 +29,4 @@ function addRepresentationData({ segmentationId, type, data, }) {
|
|
|
26
29
|
throw new Error(`Invalid representation type ${type}`);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
|
-
export default
|
|
32
|
+
export default internalAddRepresentationData;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { RepresentationPublicInput } from '../../types/SegmentationStateTypes';
|
|
2
|
-
declare function internalAddSegmentationRepresentation(viewportId: string, representationInput: RepresentationPublicInput):
|
|
2
|
+
declare function internalAddSegmentationRepresentation(viewportId: string, representationInput: RepresentationPublicInput): void;
|
|
3
3
|
export { internalAddSegmentationRepresentation };
|
|
@@ -1,73 +1,33 @@
|
|
|
1
|
-
import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
|
|
2
|
-
import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
|
|
3
|
-
import { utilities } from '@cornerstonejs/core';
|
|
4
1
|
import CORNERSTONE_COLOR_LUT from '../../constants/COLOR_LUT';
|
|
5
2
|
import { triggerAnnotationRenderForViewportIds } from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
6
3
|
import { SegmentationRepresentations } from '../../enums';
|
|
7
4
|
import { triggerSegmentationModified } from './triggerSegmentationEvents';
|
|
8
5
|
import { addColorLUT } from './addColorLUT';
|
|
9
6
|
import { getNextColorLUTIndex } from './getNextColorLUTIndex';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
function
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
ofun,
|
|
18
|
-
cfun,
|
|
7
|
+
import { defaultSegmentationStateManager } from './SegmentationStateManager';
|
|
8
|
+
import { getColorLUT } from './getColorLUT';
|
|
9
|
+
function internalAddSegmentationRepresentation(viewportId, representationInput) {
|
|
10
|
+
const { segmentationId, config } = representationInput;
|
|
11
|
+
const renderingConfig = {
|
|
12
|
+
colorLUTIndex: getColorLUTIndex(config),
|
|
19
13
|
};
|
|
20
|
-
|
|
21
|
-
async function internalAddSegmentationRepresentation(viewportId, representationInput) {
|
|
22
|
-
const { segmentationId, options = {} } = representationInput;
|
|
23
|
-
const segmentationRepresentationUID = representationInput.options?.segmentationRepresentationUID ||
|
|
24
|
-
utilities.uuidv4();
|
|
25
|
-
const colorLUTIndexToUse = getColorLUTIndex(options);
|
|
26
|
-
const { type } = representationInput;
|
|
27
|
-
let renderingConfig;
|
|
28
|
-
if (type === SegmentationRepresentations.Labelmap) {
|
|
29
|
-
renderingConfig = getLabelmapSegmentationRepresentationRenderingConfig();
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
renderingConfig = {};
|
|
33
|
-
}
|
|
34
|
-
const representation = {
|
|
35
|
-
segmentationId,
|
|
36
|
-
segmentationRepresentationUID,
|
|
37
|
-
type: representationInput.type,
|
|
38
|
-
colorLUTIndex: colorLUTIndexToUse,
|
|
39
|
-
rendering: renderingConfig,
|
|
40
|
-
polySeg: options.polySeg,
|
|
41
|
-
config: {
|
|
42
|
-
allSegments: {},
|
|
43
|
-
perSegment: {},
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
addSegmentationRepresentationState(viewportId, representation);
|
|
47
|
-
const initialConfig = representationInput.config;
|
|
48
|
-
if (initialConfig) {
|
|
49
|
-
setSegmentationRepresentationConfig(segmentationRepresentationUID, initialConfig);
|
|
50
|
-
}
|
|
14
|
+
defaultSegmentationStateManager.addSegmentationRepresentation(viewportId, segmentationId, representationInput.type, renderingConfig);
|
|
51
15
|
if (representationInput.type === SegmentationRepresentations.Contour) {
|
|
52
16
|
triggerAnnotationRenderForViewportIds([viewportId]);
|
|
53
17
|
}
|
|
54
18
|
triggerSegmentationModified(segmentationId);
|
|
55
|
-
return segmentationRepresentationUID;
|
|
56
19
|
}
|
|
57
|
-
function getColorLUTIndex(
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
: CORNERSTONE_COLOR_LUT;
|
|
68
|
-
addColorLUT(colorLUTToAdd, nextIndex);
|
|
69
|
-
colorLUTIndexToUse = nextIndex;
|
|
20
|
+
function getColorLUTIndex(config) {
|
|
21
|
+
const colorLUT = config?.colorLUT;
|
|
22
|
+
const nextIndex = getNextColorLUTIndex();
|
|
23
|
+
const colorLUTToAdd = Array.isArray(colorLUT)
|
|
24
|
+
? colorLUT
|
|
25
|
+
: CORNERSTONE_COLOR_LUT;
|
|
26
|
+
addColorLUT(colorLUTToAdd, nextIndex);
|
|
27
|
+
const colorLUTIndex = nextIndex;
|
|
28
|
+
if (!getColorLUT(colorLUTIndex)) {
|
|
29
|
+
throw new Error(`Color LUT with index ${colorLUTIndex} not found`);
|
|
70
30
|
}
|
|
71
|
-
return
|
|
31
|
+
return colorLUTIndex;
|
|
72
32
|
}
|
|
73
33
|
export { internalAddSegmentationRepresentation };
|
package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js
CHANGED
|
@@ -5,7 +5,8 @@ import { clipAndCacheSurfacesForViewport } from '../../helpers/clipAndCacheSurfa
|
|
|
5
5
|
import { extractContourData } from './utils/extractContourData';
|
|
6
6
|
import { createAndAddContourSegmentationsFromClippedSurfaces } from './utils/createAndAddContourSegmentationsFromClippedSurfaces';
|
|
7
7
|
import { getSegmentation } from '../../getSegmentation';
|
|
8
|
-
import {
|
|
8
|
+
import { segmentationStyle } from '../../SegmentationStyle';
|
|
9
|
+
import { SegmentationRepresentations } from '../../../../enums';
|
|
9
10
|
export async function computeContourData(segmentationId, options = {}) {
|
|
10
11
|
const segmentIndices = options.segmentIndices?.length
|
|
11
12
|
? options.segmentIndices
|
|
@@ -34,12 +35,10 @@ export async function computeContourData(segmentationId, options = {}) {
|
|
|
34
35
|
if (!rawContourData) {
|
|
35
36
|
throw new Error('Not enough data to convert to contour, currently only support converting volume labelmap to contour if available');
|
|
36
37
|
}
|
|
37
|
-
const { viewport
|
|
38
|
+
const { viewport } = options;
|
|
38
39
|
const annotationUIDsMap = createAndAddContourSegmentationsFromClippedSurfaces(rawContourData, viewport, segmentationId);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
fillAlpha: 0,
|
|
42
|
-
},
|
|
40
|
+
segmentationStyle.setSegmentationSpecificStyle({ segmentationId, type: SegmentationRepresentations.Contour }, {
|
|
41
|
+
fillAlpha: 0,
|
|
43
42
|
});
|
|
44
43
|
return {
|
|
45
44
|
annotationUIDsMap,
|
|
@@ -54,7 +53,7 @@ async function computeContourFromLabelmapSegmentation(segmentationId, options =
|
|
|
54
53
|
console.error('Failed to convert labelmap to surface or labelmap is empty');
|
|
55
54
|
return;
|
|
56
55
|
}
|
|
57
|
-
const { viewport
|
|
56
|
+
const { viewport } = options;
|
|
58
57
|
const pointsAndPolys = results.map((surface) => {
|
|
59
58
|
return {
|
|
60
59
|
id: surface.segmentIndex.toString(),
|
|
@@ -63,7 +62,7 @@ async function computeContourFromLabelmapSegmentation(segmentationId, options =
|
|
|
63
62
|
segmentIndex: surface.segmentIndex,
|
|
64
63
|
};
|
|
65
64
|
});
|
|
66
|
-
const polyDataCache = await clipAndCacheSurfacesForViewport(pointsAndPolys, viewport,
|
|
65
|
+
const polyDataCache = await clipAndCacheSurfacesForViewport(pointsAndPolys, viewport, segmentationId);
|
|
67
66
|
const rawResults = extractContourData(polyDataCache);
|
|
68
67
|
return rawResults;
|
|
69
68
|
}
|
|
@@ -71,7 +70,7 @@ async function computeContourFromSurfaceSegmentation(segmentationId, options = {
|
|
|
71
70
|
if (!options.viewport) {
|
|
72
71
|
throw new Error('Viewport is required to compute contour from surface');
|
|
73
72
|
}
|
|
74
|
-
const { viewport
|
|
73
|
+
const { viewport } = options;
|
|
75
74
|
const segmentIndices = options.segmentIndices?.length
|
|
76
75
|
? options.segmentIndices
|
|
77
76
|
: getUniqueSegmentIndices(segmentationId);
|
|
@@ -96,7 +95,7 @@ async function computeContourFromSurfaceSegmentation(segmentationId, options = {
|
|
|
96
95
|
segmentIndexToSurfaceId.forEach((surfaceId, segmentIndex) => {
|
|
97
96
|
surfaceIdToSegmentIndex.set(surfaceId, segmentIndex);
|
|
98
97
|
});
|
|
99
|
-
const polyDataCache = await clipAndCacheSurfacesForViewport(surfacesInfo, viewport,
|
|
98
|
+
const polyDataCache = await clipAndCacheSurfacesForViewport(surfacesInfo, viewport, segmentationId);
|
|
100
99
|
const rawResults = extractContourData(polyDataCache, surfaceIdToSegmentIndex);
|
|
101
100
|
return rawResults;
|
|
102
101
|
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
export function extractContourData(polyDataCache, segmentIndexMap) {
|
|
2
2
|
const rawResults = new Map();
|
|
3
3
|
for (const [cacheId, intersectionInfo] of polyDataCache) {
|
|
4
|
-
|
|
4
|
+
let segmentIndex;
|
|
5
|
+
const surfaceId = cacheId.split('-')[1];
|
|
6
|
+
if (!segmentIndexMap) {
|
|
7
|
+
segmentIndex = Number(surfaceId.split('_')[1]);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
segmentIndex = segmentIndexMap.get(surfaceId.split('_')[1]);
|
|
11
|
+
}
|
|
5
12
|
for (const [_, result] of intersectionInfo) {
|
|
6
13
|
if (!result) {
|
|
7
14
|
continue;
|
|
8
15
|
}
|
|
9
|
-
const segmentIndex = Number(surfaceId) || segmentIndexMap?.get(surfaceId);
|
|
10
|
-
if (!segmentIndex) {
|
|
11
|
-
continue;
|
|
12
|
-
}
|
|
13
16
|
if (!rawResults.has(segmentIndex)) {
|
|
14
17
|
rawResults.set(segmentIndex, []);
|
|
15
18
|
}
|