@cornerstonejs/tools 2.0.0-beta.21 → 2.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/cursors/elementCursor.d.ts +1 -1
- package/dist/esm/cursors/elementCursor.js +1 -1
- package/dist/esm/drawingSvg/getSvgDrawingHelper.js +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +2 -2
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyUp.js +2 -2
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDown.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownActivate.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDownAnnotationAction.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseDrag.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseMove.js +1 -1
- package/dist/esm/eventDispatchers/mouseEventHandlers/mouseWheel.js +1 -1
- package/dist/esm/eventDispatchers/shared/customCallbackHandler.js +3 -2
- package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getActiveToolForMouseEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getActiveToolForTouchEvent.js +3 -3
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +2 -2
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getToolsWithModesForMouseEvent.js +2 -2
- package/dist/esm/eventDispatchers/shared/getToolsWithModesForTouchEvent.js +2 -2
- package/dist/esm/eventDispatchers/touchEventHandlers/touchDrag.js +1 -1
- package/dist/esm/eventDispatchers/touchEventHandlers/touchStart.js +1 -1
- package/dist/esm/eventDispatchers/touchEventHandlers/touchStartActivate.js +1 -1
- package/dist/esm/eventListeners/annotations/annotationSelectionListener.js +1 -1
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +21 -20
- package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +8 -6
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.js +1 -1
- package/dist/esm/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.js +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/init.js +2 -2
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +0 -2
- package/dist/esm/stateManagement/annotation/annotationSelection.js +1 -1
- package/dist/esm/stateManagement/annotation/annotationState.d.ts +2 -2
- package/dist/esm/stateManagement/annotation/annotationState.js +4 -6
- package/dist/esm/stateManagement/annotation/annotationVisibility.js +1 -1
- package/dist/esm/stateManagement/annotation/getAnnotation.d.ts +2 -0
- package/dist/esm/stateManagement/annotation/getAnnotation.js +6 -0
- package/dist/esm/stateManagement/index.d.ts +0 -2
- package/dist/esm/stateManagement/index.js +2 -1
- package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.d.ts +3 -1
- package/dist/esm/stateManagement/segmentation/SegmentationRenderingEngine.js +13 -6
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.d.ts +17 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +46 -4
- package/dist/esm/stateManagement/segmentation/activeSegmentation.js +6 -4
- package/dist/esm/stateManagement/segmentation/addColorLUT.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/addColorLUT.js +5 -0
- package/dist/esm/stateManagement/segmentation/addRepresentationData.js +1 -1
- package/dist/esm/stateManagement/segmentation/addSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/addSegmentation.js +11 -0
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js +29 -8
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentationState.js +10 -0
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -6
- package/dist/esm/stateManagement/segmentation/config/segmentationConfig.js +14 -9
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +8 -5
- package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +0 -8
- package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +3 -33
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationDataModified.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationDataModified.js +11 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationModified.js +18 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRemoved.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRemoved.js +8 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationModified.js +8 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/events/triggerSegmentationRepresentationRemoved.js +8 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentIndex.js +7 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getActiveSegmentationRepresentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getAllSegmentationRepresentations.js +6 -0
- package/dist/esm/stateManagement/segmentation/getColorLUT.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getColorLUT.js +5 -0
- package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getCurrentLabelmapImageIdForViewport.js +5 -0
- package/dist/esm/stateManagement/segmentation/getGlobalConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getGlobalConfig.js +5 -0
- package/dist/esm/stateManagement/segmentation/getNextColorLUTIndex.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getNextColorLUTIndex.js +5 -0
- package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getPerSegmentConfig.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationConfig.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.d.ts +7 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationViewportStates.js +6 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationVisibility.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentations.js +12 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentationRepresentationsForSegmentation.js +5 -0
- package/dist/esm/stateManagement/segmentation/getSegmentations.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/getSegmentations.js +6 -0
- package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/getViewportIdsWithSegmentation.js +10 -0
- package/dist/esm/stateManagement/segmentation/helpers/clipAndCacheSurfacesForViewport.js +1 -1
- package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.d.ts +8 -0
- package/dist/esm/stateManagement/segmentation/helpers/updateStackSegmentationState.js +31 -0
- package/dist/esm/stateManagement/segmentation/index.d.ts +1 -1
- package/dist/esm/stateManagement/segmentation/index.js +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/contourComputationStrategies.js +3 -2
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/utils/createAndAddContourSegmentationsFromClippedSurfaces.js +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +3 -3
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +2 -3
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +2 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +2 -2
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +2 -3
- package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +3 -2
- package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +1 -1
- package/dist/esm/stateManagement/segmentation/removeColorLUT.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/removeColorLUT.js +5 -0
- package/dist/esm/stateManagement/segmentation/removeRepresentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/removeRepresentation.js +9 -0
- package/dist/esm/stateManagement/segmentation/removeSegmentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/removeSegmentation.js +7 -0
- package/dist/esm/stateManagement/segmentation/removeSegmentationRepresentations.js +2 -2
- package/dist/esm/stateManagement/segmentation/segmentIndex.d.ts +2 -2
- package/dist/esm/stateManagement/segmentation/segmentIndex.js +5 -9
- package/dist/esm/stateManagement/segmentation/segmentLocking.js +1 -1
- package/dist/esm/stateManagement/segmentation/segmentationState.d.ts +29 -38
- package/dist/esm/stateManagement/segmentation/segmentationState.js +29 -157
- package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/setActiveSegmentationRepresentation.js +9 -0
- package/dist/esm/stateManagement/segmentation/setGlobalConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/setGlobalConfig.js +9 -0
- package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/setPerSegmentConfig.js +9 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.d.ts +2 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationConfig.js +9 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/setSegmentationRepresentationVisibility.js +5 -0
- package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.d.ts +5 -5
- package/dist/esm/stateManagement/segmentation/triggerSegmentationEvents.js +5 -45
- package/dist/esm/stateManagement/segmentation/updateLabelmapSegmentationImageReferences.d.ts +1 -0
- package/dist/esm/stateManagement/segmentation/updateLabelmapSegmentationImageReferences.js +5 -0
- package/dist/esm/store/SynchronizerManager/createSynchronizer.js +1 -1
- package/dist/esm/store/SynchronizerManager/destroy.js +1 -1
- package/dist/esm/store/SynchronizerManager/destroySynchronizer.js +1 -1
- package/dist/esm/store/SynchronizerManager/getAllSynchronizers.js +1 -1
- package/dist/esm/store/SynchronizerManager/getSynchronizer.js +1 -1
- package/dist/esm/store/SynchronizerManager/getSynchronizersForViewport.js +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +7 -6
- package/dist/esm/store/ToolGroupManager/createToolGroup.js +1 -1
- package/dist/esm/store/ToolGroupManager/destroy.js +3 -3
- package/dist/esm/store/ToolGroupManager/destroyToolGroup.js +1 -2
- package/dist/esm/store/ToolGroupManager/getAllToolGroups.js +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroup.js +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroupForViewport.js +1 -1
- package/dist/esm/store/ToolGroupManager/getToolGroupsWithToolName.js +1 -1
- package/dist/esm/store/addTool.d.ts +1 -0
- package/dist/esm/store/addTool.js +3 -0
- package/dist/esm/store/index.d.ts +1 -2
- package/dist/esm/store/index.js +1 -2
- package/dist/esm/tools/AdvancedMagnifyTool.d.ts +93 -2
- package/dist/esm/tools/AdvancedMagnifyTool.js +506 -4
- package/dist/esm/tools/AnnotationEraserTool.js +2 -2
- package/dist/esm/tools/CrosshairsTool.js +1 -1
- package/dist/esm/tools/MagnifyTool.js +1 -1
- package/dist/esm/tools/SculptorTool.js +3 -3
- package/dist/esm/tools/WindowLevelRegionTool.js +1 -1
- package/dist/esm/tools/annotation/AngleTool.js +4 -3
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +2 -3
- package/dist/esm/tools/annotation/CircleROITool.js +7 -8
- package/dist/esm/tools/annotation/CobbAngleTool.js +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +5 -6
- package/dist/esm/tools/annotation/HeightTool.js +2 -3
- package/dist/esm/tools/annotation/KeyImageTool.js +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +2 -3
- package/dist/esm/tools/annotation/LivewireContourTool.js +3 -2
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +7 -7
- package/dist/esm/tools/annotation/ProbeTool.js +3 -4
- package/dist/esm/tools/annotation/RectangleROITool.js +5 -6
- package/dist/esm/tools/annotation/SplineROITool.js +7 -4
- package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +6 -7
- package/dist/esm/tools/annotation/VideoRedactionTool.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -2
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +1 -1
- package/dist/esm/tools/base/ContourBaseTool.js +2 -2
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +24 -15
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +9 -8
- package/dist/esm/tools/displayTools/Contour/contourHandler/handleContourSegmentation.js +3 -3
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +2 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.d.ts +1 -8
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +19 -25
- package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +10 -7
- package/dist/esm/tools/segmentation/BrushTool.js +10 -8
- package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +4 -5
- package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +7 -9
- package/dist/esm/tools/segmentation/SegmentSelectTool.js +1 -1
- package/dist/esm/tools/segmentation/strategies/compositions/preview.js +4 -4
- package/dist/esm/utilities/annotationHydration.js +1 -1
- package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +1 -1
- package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +2 -2
- package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +1 -1
- package/dist/esm/utilities/contours/getContourHolesDataWorld.js +1 -1
- package/dist/esm/utilities/contours/index.d.ts +1 -2
- package/dist/esm/utilities/contours/index.js +1 -2
- package/dist/esm/utilities/contours/updateContourPolyline.js +1 -1
- package/dist/esm/utilities/getToolsWithModesForElement.js +2 -2
- package/dist/esm/utilities/index.d.ts +1 -2
- package/dist/esm/utilities/index.js +1 -2
- package/dist/esm/utilities/math/line/distanceToPointSquaredInfo.js +3 -3
- package/dist/esm/utilities/math/polyline/isClosed.js +2 -2
- package/dist/esm/utilities/planarFreehandROITool/smoothAnnotation.js +3 -3
- package/dist/esm/utilities/segmentation/brushSizeForToolGroup.js +1 -1
- package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +1 -1
- package/dist/esm/utilities/segmentation/getBrushToolInstances.d.ts +1 -0
- package/dist/esm/utilities/segmentation/getBrushToolInstances.js +17 -0
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.d.ts +0 -2
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +3 -22
- package/dist/esm/utilities/segmentation/index.d.ts +2 -2
- package/dist/esm/utilities/segmentation/index.js +2 -2
- package/dist/esm/utilities/segmentation/invalidateBrushCursor.js +1 -4
- package/dist/esm/utilities/segmentation/rectangleROIThresholdVolumeByRange.js +2 -1
- package/dist/esm/utilities/segmentation/segmentContourAction.js +5 -5
- package/dist/esm/utilities/segmentation/utilities.d.ts +4 -1
- package/dist/esm/utilities/segmentation/utilities.js +23 -17
- package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +2 -2
- package/dist/umd/985.index.js.map +1 -1
- package/dist/umd/index.js +2 -1
- package/dist/umd/index.js.LICENSE.txt +6 -0
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -4
- package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +0 -17
- package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +0 -50
- package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.d.ts +0 -2
- package/dist/esm/stateManagement/segmentation/helpers/getSegmentationRepresentationRenderingConfig.js +0 -11
- package/dist/esm/tools/AdvancedMagnifyViewport.d.ts +0 -76
- package/dist/esm/tools/AdvancedMagnifyViewport.js +0 -351
- package/dist/esm/tools/AdvancedMagnifyViewportManager.d.ts +0 -38
- package/dist/esm/tools/AdvancedMagnifyViewportManager.js +0 -161
- package/dist/esm/utilities/contours/interpolation/index.d.ts +0 -2
- package/dist/esm/utilities/contours/interpolation/index.js +0 -2
- package/dist/esm/utilities/segmentation/triggerSegmentationRender.d.ts +0 -3
- package/dist/esm/utilities/segmentation/triggerSegmentationRender.js +0 -8
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getEnabledElement, addVolumesToViewports, addImageSlicesToViewports, Enums, } from '@cornerstonejs/core';
|
|
2
2
|
import { isVolumeSegmentation } from '../../segmentation/strategies/utils/stackVolumeCheck';
|
|
3
|
-
import {
|
|
3
|
+
import { getSegmentationRepresentation } from '../../../stateManagement/segmentation/getSegmentationRepresentation';
|
|
4
|
+
import { getCurrentLabelmapImageIdForViewport } from '../../../stateManagement/segmentation/getCurrentLabelmapImageIdForViewport';
|
|
4
5
|
async function addLabelmapToElement(element, labelMapData, segmentationRepresentationUID) {
|
|
5
6
|
const enabledElement = getEnabledElement(element);
|
|
6
7
|
const { renderingEngine, viewport } = enabledElement;
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
|
|
2
|
-
import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
|
|
3
1
|
import type { Types } from '@cornerstonejs/core';
|
|
4
2
|
import type { LabelmapRepresentation } from '../../../types/SegmentationStateTypes';
|
|
5
|
-
declare function getSegmentationRepresentationRenderingConfig(): {
|
|
6
|
-
ofun: vtkPiecewiseFunction;
|
|
7
|
-
cfun: vtkColorTransferFunction;
|
|
8
|
-
};
|
|
9
3
|
declare function removeRepresentation(viewportId: string, segmentationRepresentationUID: string, renderImmediate?: boolean): void;
|
|
10
4
|
declare function render(viewport: Types.IStackViewport | Types.IVolumeViewport, representation: LabelmapRepresentation): Promise<void>;
|
|
11
5
|
declare const _default: {
|
|
12
|
-
getSegmentationRepresentationRenderingConfig: typeof getSegmentationRepresentationRenderingConfig;
|
|
13
6
|
render: typeof render;
|
|
14
7
|
removeRepresentation: typeof removeRepresentation;
|
|
15
8
|
};
|
|
16
9
|
export default _default;
|
|
17
|
-
export {
|
|
10
|
+
export { render, removeRepresentation };
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction';
|
|
2
|
-
import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
|
|
3
1
|
import { cache, getEnabledElementByViewportId, StackViewport, VolumeViewport, } from '@cornerstonejs/core';
|
|
4
2
|
import Representations from '../../../enums/SegmentationRepresentations';
|
|
5
|
-
import * as SegmentationState from '../../../stateManagement/segmentation/segmentationState';
|
|
6
3
|
import addLabelmapToElement from './addLabelmapToElement';
|
|
7
4
|
import removeLabelmapFromElement from './removeLabelmapFromElement';
|
|
8
5
|
import { isVolumeSegmentation } from '../../segmentation/strategies/utils/stackVolumeCheck';
|
|
9
|
-
import { polySeg } from '../../../stateManagement/segmentation';
|
|
10
6
|
import { getHiddenSegmentIndices } from '../../../stateManagement/segmentation/config/segmentationVisibility';
|
|
7
|
+
import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
|
|
8
|
+
import { getActiveSegmentationRepresentation } from '../../../stateManagement/segmentation/getActiveSegmentationRepresentation';
|
|
9
|
+
import { getColorLUT } from '../../../stateManagement/segmentation/getColorLUT';
|
|
10
|
+
import { getCurrentLabelmapImageIdForViewport } from '../../../stateManagement/segmentation/getCurrentLabelmapImageIdForViewport';
|
|
11
|
+
import { getGlobalConfig } from '../../../stateManagement/segmentation/getGlobalConfig';
|
|
12
|
+
import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
|
|
13
|
+
import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
|
|
14
|
+
import { computeAndAddLabelmapRepresentation } from '../../../stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation';
|
|
11
15
|
const MAX_NUMBER_COLORS = 255;
|
|
12
16
|
const labelMapConfigCache = new Map();
|
|
13
|
-
function getSegmentationRepresentationRenderingConfig() {
|
|
14
|
-
const cfun = vtkColorTransferFunction.newInstance();
|
|
15
|
-
const ofun = vtkPiecewiseFunction.newInstance();
|
|
16
|
-
ofun.addPoint(0, 0);
|
|
17
|
-
return {
|
|
18
|
-
ofun,
|
|
19
|
-
cfun,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
17
|
let polySegConversionInProgress = false;
|
|
23
18
|
function removeRepresentation(viewportId, segmentationRepresentationUID, renderImmediate = false) {
|
|
24
19
|
const enabledElement = getEnabledElementByViewportId(viewportId);
|
|
@@ -27,7 +22,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
|
|
|
27
22
|
}
|
|
28
23
|
const { viewport } = enabledElement;
|
|
29
24
|
removeLabelmapFromElement(viewport.element, segmentationRepresentationUID);
|
|
30
|
-
|
|
25
|
+
_removeRepresentation(segmentationRepresentationUID);
|
|
31
26
|
if (!renderImmediate) {
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
@@ -55,7 +50,7 @@ function isSameFrameOfReference(viewport, referencedVolumeId) {
|
|
|
55
50
|
}
|
|
56
51
|
async function render(viewport, representation) {
|
|
57
52
|
const { segmentationId, segmentationRepresentationUID } = representation;
|
|
58
|
-
const segmentation =
|
|
53
|
+
const segmentation = getSegmentation(segmentationId);
|
|
59
54
|
if (!segmentation) {
|
|
60
55
|
console.warn('No segmentation found for segmentationId: ', segmentationId);
|
|
61
56
|
return;
|
|
@@ -63,10 +58,10 @@ async function render(viewport, representation) {
|
|
|
63
58
|
let labelmapData = segmentation.representationData[Representations.Labelmap];
|
|
64
59
|
let actorEntry = viewport.getActor(segmentationRepresentationUID);
|
|
65
60
|
if (!labelmapData &&
|
|
66
|
-
|
|
61
|
+
canComputeRequestedRepresentation(segmentationRepresentationUID) &&
|
|
67
62
|
!polySegConversionInProgress) {
|
|
68
63
|
polySegConversionInProgress = true;
|
|
69
|
-
labelmapData = await
|
|
64
|
+
labelmapData = await computeAndAddLabelmapRepresentation(segmentationId, {
|
|
70
65
|
segmentationRepresentationUID,
|
|
71
66
|
viewport,
|
|
72
67
|
});
|
|
@@ -99,7 +94,7 @@ async function render(viewport, representation) {
|
|
|
99
94
|
if (viewport instanceof VolumeViewport) {
|
|
100
95
|
return;
|
|
101
96
|
}
|
|
102
|
-
const labelmapImageId =
|
|
97
|
+
const labelmapImageId = getCurrentLabelmapImageIdForViewport(viewport.id, segmentationId);
|
|
103
98
|
if (!labelmapImageId) {
|
|
104
99
|
return;
|
|
105
100
|
}
|
|
@@ -115,19 +110,19 @@ async function render(viewport, representation) {
|
|
|
115
110
|
}
|
|
116
111
|
function _setLabelmapColorAndOpacity(viewportId, actorEntry, segmentationRepresentation) {
|
|
117
112
|
const { rendering, config, colorLUTIndex } = segmentationRepresentation;
|
|
118
|
-
const activeSegRep =
|
|
113
|
+
const activeSegRep = getActiveSegmentationRepresentation(viewportId);
|
|
119
114
|
const isActiveLabelmap = activeSegRep === segmentationRepresentation;
|
|
120
115
|
const { cfun, ofun } = rendering;
|
|
121
116
|
const { allSegments, perSegment } = config;
|
|
122
|
-
const globalLabelmapConfig =
|
|
123
|
-
const globalConfig =
|
|
117
|
+
const globalLabelmapConfig = getGlobalConfig().representations[Representations.Labelmap];
|
|
118
|
+
const globalConfig = getGlobalConfig();
|
|
124
119
|
const renderInactiveRepresentations = globalConfig.renderInactiveRepresentations;
|
|
125
120
|
const configToUse = {
|
|
126
121
|
...globalLabelmapConfig,
|
|
127
122
|
...allSegments[Representations.Labelmap],
|
|
128
123
|
};
|
|
129
124
|
const labelmapConfig = configToUse;
|
|
130
|
-
const colorLUT =
|
|
125
|
+
const colorLUT = getColorLUT(colorLUTIndex);
|
|
131
126
|
const numColors = Math.min(256, colorLUT.length);
|
|
132
127
|
const { uid: actorUID } = actorEntry;
|
|
133
128
|
const { outlineWidth, renderOutline, outlineOpacity, activeSegmentOutlineWidthDelta, } = _getLabelmapConfig(labelmapConfig, isActiveLabelmap);
|
|
@@ -167,7 +162,7 @@ function _setLabelmapColorAndOpacity(viewportId, actorEntry, segmentationReprese
|
|
|
167
162
|
actor.getProperty().setInterpolationTypeToNearest();
|
|
168
163
|
actor.getProperty().setUseLabelOutline(renderOutline);
|
|
169
164
|
actor.getProperty().setLabelOutlineOpacity(outlineOpacity);
|
|
170
|
-
const { activeSegmentIndex } =
|
|
165
|
+
const { activeSegmentIndex } = getSegmentation(segmentationRepresentation.segmentationId);
|
|
171
166
|
const outlineWidths = new Array(numColors - 1);
|
|
172
167
|
for (let i = 1; i < numColors; i++) {
|
|
173
168
|
const isHidden = segmentsHidden.has(i);
|
|
@@ -256,8 +251,7 @@ async function _addLabelmapToViewport(viewport, labelmapData, segmentationRepres
|
|
|
256
251
|
await addLabelmapToElement(viewport.element, labelmapData, segmentationRepresentationUID);
|
|
257
252
|
}
|
|
258
253
|
export default {
|
|
259
|
-
getSegmentationRepresentationRenderingConfig,
|
|
260
254
|
render,
|
|
261
255
|
removeRepresentation,
|
|
262
256
|
};
|
|
263
|
-
export {
|
|
257
|
+
export { render, removeRepresentation };
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { cache, getEnabledElementByViewportId, VolumeViewport3D, } from '@cornerstonejs/core';
|
|
2
|
-
import * as SegmentationState from '../../../stateManagement/segmentation/segmentationState';
|
|
3
2
|
import Representations from '../../../enums/SegmentationRepresentations';
|
|
3
|
+
import { removeRepresentation as _removeRepresentation } from '../../../stateManagement/segmentation/removeRepresentation';
|
|
4
4
|
import removeSurfaceFromElement from './removeSurfaceFromElement';
|
|
5
5
|
import addOrUpdateSurfaceToElement from './addOrUpdateSurfaceToElement';
|
|
6
|
-
import {
|
|
6
|
+
import { getSegmentation } from '../../../stateManagement/segmentation/getSegmentation';
|
|
7
|
+
import { getColorLUT } from '../../../stateManagement/segmentation/getColorLUT';
|
|
8
|
+
import { canComputeRequestedRepresentation } from '../../../stateManagement/segmentation/polySeg/canComputeRequestedRepresentation';
|
|
9
|
+
import { computeAndAddSurfaceRepresentation } from '../../../stateManagement/segmentation/polySeg';
|
|
7
10
|
function removeRepresentation(viewportId, segmentationRepresentationUID, renderImmediate = false) {
|
|
8
11
|
const enabledElement = getEnabledElementByViewportId(viewportId);
|
|
9
12
|
if (!enabledElement) {
|
|
@@ -11,7 +14,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
|
|
|
11
14
|
}
|
|
12
15
|
const { viewport } = enabledElement;
|
|
13
16
|
removeSurfaceFromElement(viewport.element, segmentationRepresentationUID);
|
|
14
|
-
|
|
17
|
+
_removeRepresentation(segmentationRepresentationUID);
|
|
15
18
|
if (!renderImmediate) {
|
|
16
19
|
return;
|
|
17
20
|
}
|
|
@@ -19,7 +22,7 @@ function removeRepresentation(viewportId, segmentationRepresentationUID, renderI
|
|
|
19
22
|
}
|
|
20
23
|
async function render(viewport, representation) {
|
|
21
24
|
const { colorLUTIndex, segmentationId, segmentationRepresentationUID } = representation;
|
|
22
|
-
const segmentation =
|
|
25
|
+
const segmentation = getSegmentation(segmentationId);
|
|
23
26
|
if (!segmentation) {
|
|
24
27
|
return;
|
|
25
28
|
}
|
|
@@ -28,8 +31,8 @@ async function render(viewport, representation) {
|
|
|
28
31
|
}
|
|
29
32
|
let SurfaceData = segmentation.representationData[Representations.Surface];
|
|
30
33
|
if (!SurfaceData &&
|
|
31
|
-
|
|
32
|
-
SurfaceData = await
|
|
34
|
+
canComputeRequestedRepresentation(segmentationRepresentationUID)) {
|
|
35
|
+
SurfaceData = await computeAndAddSurfaceRepresentation(segmentationId, {
|
|
33
36
|
segmentationRepresentationUID,
|
|
34
37
|
});
|
|
35
38
|
if (!SurfaceData) {
|
|
@@ -40,7 +43,7 @@ async function render(viewport, representation) {
|
|
|
40
43
|
if (!geometryIds?.size) {
|
|
41
44
|
console.warn(`No Surfaces found for segmentationId ${segmentationId}. Skipping render.`);
|
|
42
45
|
}
|
|
43
|
-
const colorLUT =
|
|
46
|
+
const colorLUT = getColorLUT(colorLUTIndex);
|
|
44
47
|
const surfaces = [];
|
|
45
48
|
geometryIds.forEach((geometryId, segmentIndex) => {
|
|
46
49
|
const geometry = cache.getGeometry(geometryId);
|
|
@@ -9,9 +9,11 @@ import { Events, ToolModes, SegmentationRepresentations, StrategyCallbacks, } fr
|
|
|
9
9
|
import { drawCircle as drawCircleSvg } from '../../drawingSvg';
|
|
10
10
|
import { resetElementCursor, hideElementCursor, } from '../../cursors/elementCursor';
|
|
11
11
|
import triggerAnnotationRenderForViewportUIDs from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
12
|
-
import { config as segmentationConfig, segmentLocking, segmentIndex as segmentIndexController, state as segmentationState, activeSegmentation, } from '../../stateManagement/segmentation';
|
|
13
12
|
import { isVolumeSegmentation } from './strategies/utils/stackVolumeCheck';
|
|
14
|
-
import { getCurrentLabelmapImageIdForViewport } from '../../stateManagement/segmentation/segmentationState';
|
|
13
|
+
import { getActiveSegmentationRepresentation, getCurrentLabelmapImageIdForViewport, getSegmentation, } from '../../stateManagement/segmentation/segmentationState';
|
|
14
|
+
import { getLockedSegmentIndices } from '../../stateManagement/segmentation/segmentLocking';
|
|
15
|
+
import { getActiveSegmentIndex } from '../../stateManagement/segmentation/getActiveSegmentIndex';
|
|
16
|
+
import { getSegmentIndexColor } from '../../stateManagement/segmentation/config/segmentationColor';
|
|
15
17
|
class BrushTool extends BaseTool {
|
|
16
18
|
constructor(toolProps = {}, defaultToolProps = {
|
|
17
19
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
@@ -192,7 +194,7 @@ class BrushTool extends BaseTool {
|
|
|
192
194
|
createEditData(element) {
|
|
193
195
|
const enabledElement = getEnabledElement(element);
|
|
194
196
|
const { viewport } = enabledElement;
|
|
195
|
-
const activeRepresentation =
|
|
197
|
+
const activeRepresentation = getActiveSegmentationRepresentation(viewport.id);
|
|
196
198
|
if (!activeRepresentation) {
|
|
197
199
|
throw new Error('No active segmentation detected, create a segmentation representation before using the brush tool');
|
|
198
200
|
}
|
|
@@ -200,8 +202,8 @@ class BrushTool extends BaseTool {
|
|
|
200
202
|
if (type === SegmentationRepresentations.Contour) {
|
|
201
203
|
throw new Error('Not implemented yet');
|
|
202
204
|
}
|
|
203
|
-
const segmentsLocked =
|
|
204
|
-
const { representationData } =
|
|
205
|
+
const segmentsLocked = getLockedSegmentIndices(segmentationId);
|
|
206
|
+
const { representationData } = getSegmentation(segmentationId);
|
|
205
207
|
const labelmapData = representationData[SegmentationRepresentations.Labelmap];
|
|
206
208
|
if (isVolumeSegmentation(labelmapData, viewport)) {
|
|
207
209
|
const { volumeId } = representationData[type];
|
|
@@ -272,14 +274,14 @@ class BrushTool extends BaseTool {
|
|
|
272
274
|
}
|
|
273
275
|
getActiveSegmentationData(viewport) {
|
|
274
276
|
const viewportId = viewport.id;
|
|
275
|
-
const activeRepresentation =
|
|
277
|
+
const activeRepresentation = getActiveSegmentationRepresentation(viewportId);
|
|
276
278
|
if (!activeRepresentation) {
|
|
277
279
|
console.warn('No active segmentation detected, create one before using the brush tool');
|
|
278
280
|
return;
|
|
279
281
|
}
|
|
280
282
|
const { segmentationId, segmentationRepresentationUID } = activeRepresentation;
|
|
281
|
-
const segmentIndex =
|
|
282
|
-
const segmentColor =
|
|
283
|
+
const segmentIndex = getActiveSegmentIndex(segmentationId);
|
|
284
|
+
const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
|
|
283
285
|
return {
|
|
284
286
|
segmentIndex,
|
|
285
287
|
segmentationId,
|
|
@@ -16,7 +16,6 @@ import { getCanvasCircleCorners, getCanvasCircleRadius, } from '../../utilities/
|
|
|
16
16
|
import { getCalibratedLengthUnitsAndScale, getCalibratedAspect, } from '../../utilities/getCalibratedUnits';
|
|
17
17
|
import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
|
|
18
18
|
import { pointInEllipse } from '../../utilities/math/ellipse';
|
|
19
|
-
import { roundNumber } from '../../utilities';
|
|
20
19
|
import { BasicStatsCalculator } from '../../utilities/math/basic';
|
|
21
20
|
import cloneDeep from 'lodash.clonedeep';
|
|
22
21
|
import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
|
|
@@ -462,10 +461,10 @@ function defaultGetTextLines(data) {
|
|
|
462
461
|
return;
|
|
463
462
|
}
|
|
464
463
|
const textLines = [];
|
|
465
|
-
textLines.push(`Area: ${roundNumber(area)} ${areaUnits}`);
|
|
466
|
-
textLines.push(`Mean: ${roundNumber(mean)} ${pixelValueUnits}`);
|
|
467
|
-
textLines.push(`Max: ${roundNumber(max)} ${pixelValueUnits}`);
|
|
468
|
-
textLines.push(`Std Dev: ${roundNumber(stdDev)} ${pixelValueUnits}`);
|
|
464
|
+
textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnits}`);
|
|
465
|
+
textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${pixelValueUnits}`);
|
|
466
|
+
textLines.push(`Max: ${csUtils.roundNumber(max)} ${pixelValueUnits}`);
|
|
467
|
+
textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${pixelValueUnits}`);
|
|
469
468
|
return textLines;
|
|
470
469
|
}
|
|
471
470
|
CircleROIStartEndThresholdTool.toolName = 'CircleROIStartEndThreshold';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getEnabledElement, cache, StackViewport, utilities as csUtils, } from '@cornerstonejs/core';
|
|
2
|
-
import { utilities as coreUtils } from '@cornerstonejs/core';
|
|
3
2
|
import { getCalibratedLengthUnitsAndScale } from '../../utilities/getCalibratedUnits';
|
|
4
3
|
import { vec3 } from 'gl-matrix';
|
|
5
4
|
import { addAnnotation, getAnnotations, removeAnnotation, } from '../../stateManagement';
|
|
@@ -14,7 +13,6 @@ import { hideElementCursor, resetElementCursor, } from '../../cursors/elementCur
|
|
|
14
13
|
import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
|
|
15
14
|
import { triggerAnnotationCompleted, triggerAnnotationModified, } from '../../stateManagement/annotation/helpers/state';
|
|
16
15
|
import RectangleROITool from '../annotation/RectangleROITool';
|
|
17
|
-
import { roundNumber } from '../../utilities/';
|
|
18
16
|
import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
|
|
19
17
|
import { BasicStatsCalculator } from '../../utilities/math/basic';
|
|
20
18
|
import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
|
|
@@ -178,10 +176,10 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool {
|
|
|
178
176
|
if (Array.isArray(endCoordinate)) {
|
|
179
177
|
endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
|
|
180
178
|
}
|
|
181
|
-
const roundedStartCoord =
|
|
182
|
-
const roundedEndCoord =
|
|
179
|
+
const roundedStartCoord = csUtils.roundToPrecision(startCoord);
|
|
180
|
+
const roundedEndCoord = csUtils.roundToPrecision(endCoord);
|
|
183
181
|
const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
|
|
184
|
-
const roundedCoord =
|
|
182
|
+
const roundedCoord = csUtils.roundToPrecision(coord);
|
|
185
183
|
if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
|
|
186
184
|
roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
|
|
187
185
|
continue;
|
|
@@ -417,10 +415,10 @@ function defaultGetTextLines(data) {
|
|
|
417
415
|
return;
|
|
418
416
|
}
|
|
419
417
|
const textLines = [];
|
|
420
|
-
textLines.push(`Area: ${roundNumber(area)} ${areaUnits}`);
|
|
421
|
-
textLines.push(`Mean: ${roundNumber(mean)} ${pixelValueUnits}`);
|
|
422
|
-
textLines.push(`Max: ${roundNumber(max)} ${pixelValueUnits}`);
|
|
423
|
-
textLines.push(`Std Dev: ${roundNumber(stdDev)} ${pixelValueUnits}`);
|
|
418
|
+
textLines.push(`Area: ${csUtils.roundNumber(area)} ${areaUnits}`);
|
|
419
|
+
textLines.push(`Mean: ${csUtils.roundNumber(mean)} ${pixelValueUnits}`);
|
|
420
|
+
textLines.push(`Max: ${csUtils.roundNumber(max)} ${pixelValueUnits}`);
|
|
421
|
+
textLines.push(`Std Dev: ${csUtils.roundNumber(stdDev)} ${pixelValueUnits}`);
|
|
424
422
|
return textLines;
|
|
425
423
|
}
|
|
426
424
|
RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
|
|
@@ -6,7 +6,7 @@ import { getActiveSegmentationRepresentation } from '../../stateManagement/segme
|
|
|
6
6
|
import RepresentationTypes from '../../enums/SegmentationRepresentations';
|
|
7
7
|
import { setActiveSegmentIndex } from '../../stateManagement/segmentation/segmentIndex';
|
|
8
8
|
import { getHoveredContourSegmentationAnnotation, getSegmentIndexAtLabelmapBorder, getSegmentIndexAtWorldPoint, } from '../../utilities/segmentation';
|
|
9
|
-
import { state } from '../../store';
|
|
9
|
+
import { state } from '../../store/state';
|
|
10
10
|
import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
|
|
11
11
|
class SegmentSelectTool extends BaseTool {
|
|
12
12
|
static { this.SelectMode = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/
|
|
2
|
-
import { config as segmentationConfig } from '../../../../stateManagement/segmentation';
|
|
1
|
+
import { triggerSegmentationDataModified } from '../../../../stateManagement/segmentation/events/triggerSegmentationDataModified';
|
|
3
2
|
import StrategyCallbacks from '../../../../enums/StrategyCallbacks';
|
|
3
|
+
import { getSegmentIndexColor, setSegmentIndexColor, } from '../../../../stateManagement/segmentation/config/segmentationColor';
|
|
4
4
|
function lightenColor(r, g, b, a, factor = 0.4) {
|
|
5
5
|
return [
|
|
6
6
|
Math.round(r + (255 - r) * factor),
|
|
@@ -42,12 +42,12 @@ export default {
|
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
44
|
const configColor = previewColors?.[segmentIndex];
|
|
45
|
-
const segmentColor =
|
|
45
|
+
const segmentColor = getSegmentIndexColor(segmentationRepresentationUID, segmentIndex);
|
|
46
46
|
if (!configColor && !segmentColor) {
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
const previewColor = configColor || lightenColor(...segmentColor);
|
|
50
|
-
|
|
50
|
+
setSegmentIndexColor(segmentationRepresentationUID, previewSegmentIndex, previewColor);
|
|
51
51
|
},
|
|
52
52
|
[StrategyCallbacks.AcceptPreview]: (operationData) => {
|
|
53
53
|
const { segmentationVoxelManager, previewVoxelManager: previewVoxelManager, previewSegmentIndex, preview, } = operationData || {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { utilities, BaseVolumeViewport, StackViewport, cache, metaData, } from '@cornerstonejs/core';
|
|
2
|
-
import { addAnnotation } from '../stateManagement';
|
|
2
|
+
import { addAnnotation } from '../stateManagement/annotation/annotationState';
|
|
3
3
|
import { vec3 } from 'gl-matrix';
|
|
4
4
|
function annotationHydration(viewport, toolName, worldPoints, options) {
|
|
5
5
|
const viewReference = viewport.getViewReference();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getSegmentation } from '../../stateManagement/segmentation/
|
|
1
|
+
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
2
2
|
export function addContourSegmentationAnnotation(annotation) {
|
|
3
3
|
if (annotation.parentAnnotationUID) {
|
|
4
4
|
return;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
2
2
|
export function removeContourSegmentationAnnotation(annotation) {
|
|
3
3
|
if (!annotation.data.segmentation) {
|
|
4
4
|
throw new Error('removeContourSegmentationAnnotation: annotation does not have a segmentation data');
|
|
5
5
|
}
|
|
6
6
|
const { segmentationId, segmentIndex } = annotation.data.segmentation;
|
|
7
|
-
const segmentation =
|
|
7
|
+
const segmentation = getSegmentation(segmentationId);
|
|
8
8
|
const { annotationUIDsMap } = segmentation?.representationData.CONTOUR || {};
|
|
9
9
|
const annotationsUIDsSet = annotationUIDsMap?.get(segmentIndex);
|
|
10
10
|
if (!annotationsUIDsSet) {
|
|
@@ -2,7 +2,7 @@ import { cache as cornerstoneCache } from '@cornerstonejs/core';
|
|
|
2
2
|
import vtkImageMarchingSquares from '@kitware/vtk.js/Filters/General/ImageMarchingSquares';
|
|
3
3
|
import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
|
|
4
4
|
import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
|
|
5
|
-
import { getDeduplicatedVTKPolyDataPoints } from '
|
|
5
|
+
import { getDeduplicatedVTKPolyDataPoints } from './getDeduplicatedVTKPolyDataPoints';
|
|
6
6
|
import { findContoursFromReducedSet } from './contourFinder';
|
|
7
7
|
import SegmentationRepresentations from '../../enums/SegmentationRepresentations';
|
|
8
8
|
const { Labelmap } = SegmentationRepresentations;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAnnotation } from '../../stateManagement';
|
|
1
|
+
import { getAnnotation } from '../../stateManagement/annotation/annotationState';
|
|
2
2
|
export default function getContourHolesDataWorld(annotation) {
|
|
3
3
|
const childAnnotationUIDs = annotation.childAnnotationUIDs ?? [];
|
|
4
4
|
return childAnnotationUIDs.map((uid) => getAnnotation(uid).data.contour.polyline);
|
|
@@ -8,7 +8,6 @@ import getContourHolesDataWorld from './getContourHolesDataWorld';
|
|
|
8
8
|
import getContourHolesDataCanvas from './getContourHolesDataCanvas';
|
|
9
9
|
import updateContourPolyline from './updateContourPolyline';
|
|
10
10
|
import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
|
|
11
|
-
import * as interpolation from './interpolation';
|
|
12
11
|
import findHandlePolylineIndex from './findHandlePolylineIndex';
|
|
13
12
|
import calculatePerimeter from './calculatePerimeter';
|
|
14
|
-
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline,
|
|
13
|
+
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
|
|
@@ -8,7 +8,6 @@ import getContourHolesDataWorld from './getContourHolesDataWorld';
|
|
|
8
8
|
import getContourHolesDataCanvas from './getContourHolesDataCanvas';
|
|
9
9
|
import updateContourPolyline from './updateContourPolyline';
|
|
10
10
|
import acceptAutogeneratedInterpolations from './interpolation/acceptAutogeneratedInterpolations';
|
|
11
|
-
import * as interpolation from './interpolation';
|
|
12
11
|
import findHandlePolylineIndex from './findHandlePolylineIndex';
|
|
13
12
|
import calculatePerimeter from './calculatePerimeter';
|
|
14
|
-
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline,
|
|
13
|
+
export { areCoplanarContours, contourFinder, getDeduplicatedVTKPolyDataPoints, detectContourHoles, generateContourSetsFromLabelmap, AnnotationToPointData, getContourHolesDataWorld, getContourHolesDataCanvas, updateContourPolyline, acceptAutogeneratedInterpolations, findHandlePolylineIndex, calculatePerimeter, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { utilities as csUtils } from '@cornerstonejs/core';
|
|
2
2
|
import * as math from '../math';
|
|
3
|
-
import { getParentAnnotation, invalidateAnnotation, } from '../../stateManagement';
|
|
3
|
+
import { getParentAnnotation, invalidateAnnotation, } from '../../stateManagement/annotation/annotationState';
|
|
4
4
|
export default function updateContourPolyline(annotation, polylineData, transforms, options) {
|
|
5
5
|
const { canvasToWorld, worldToCanvas } = transforms;
|
|
6
6
|
const { data } = annotation;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ToolGroupManager } from '../store';
|
|
2
1
|
import { getEnabledElement } from '@cornerstonejs/core';
|
|
2
|
+
import { getToolGroupForViewport } from '../store/ToolGroupManager';
|
|
3
3
|
export default function getToolsWithModesForElement(element, modesFilter) {
|
|
4
4
|
const enabledElement = getEnabledElement(element);
|
|
5
5
|
const { renderingEngineId, viewportId } = enabledElement;
|
|
6
|
-
const toolGroup =
|
|
6
|
+
const toolGroup = getToolGroupForViewport(viewportId, renderingEngineId);
|
|
7
7
|
if (!toolGroup) {
|
|
8
8
|
return [];
|
|
9
9
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { utilities } from '@cornerstonejs/core';
|
|
1
|
+
import { utilities, triggerEvent } from '@cornerstonejs/core';
|
|
2
2
|
import { getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement } from './getAnnotationNearPoint';
|
|
3
3
|
import debounce from './debounce';
|
|
4
4
|
import throttle from './throttle';
|
|
@@ -35,5 +35,4 @@ import * as polyDataUtils from './polyData/utils';
|
|
|
35
35
|
import * as voi from './voi';
|
|
36
36
|
import * as contourSegmentation from './contourSegmentation';
|
|
37
37
|
declare const roundNumber: typeof utilities.roundNumber;
|
|
38
|
-
import { triggerEvent } from '@cornerstonejs/core';
|
|
39
38
|
export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnitsAndScale, getCalibratedProbeUnitsAndValue, getCalibratedAspect, segmentation, contours, triggerAnnotationRenderForViewportIds, triggerAnnotationRenderForToolGroupIds, triggerAnnotationRender, getSphereBoundsInfo, getAnnotationNearPoint, getViewportForAnnotation, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, contourSegmentation, annotationHydration, getClosestImageIdForStackViewport, };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { utilities } from '@cornerstonejs/core';
|
|
1
|
+
import { utilities, triggerEvent } from '@cornerstonejs/core';
|
|
2
2
|
import { getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, } from './getAnnotationNearPoint';
|
|
3
3
|
import debounce from './debounce';
|
|
4
4
|
import throttle from './throttle';
|
|
@@ -35,5 +35,4 @@ import * as polyDataUtils from './polyData/utils';
|
|
|
35
35
|
import * as voi from './voi';
|
|
36
36
|
import * as contourSegmentation from './contourSegmentation';
|
|
37
37
|
const roundNumber = utilities.roundNumber;
|
|
38
|
-
import { triggerEvent } from '@cornerstonejs/core';
|
|
39
38
|
export { math, planar, viewportFilters, drawing, debounce, dynamicVolume, throttle, orientation, isObject, touch, triggerEvent, calibrateImageSpacing, getCalibratedLengthUnitsAndScale, getCalibratedProbeUnitsAndValue, getCalibratedAspect, segmentation, contours, triggerAnnotationRenderForViewportIds, triggerAnnotationRenderForToolGroupIds, triggerAnnotationRender, getSphereBoundsInfo, getAnnotationNearPoint, getViewportForAnnotation, getAnnotationNearPointOnEnabledElement, jumpToSlice, viewport, cine, clip, boundingBox, rectangleROITool, planarFreehandROITool, stackPrefetch, stackContextPrefetch, scroll, roundNumber, pointToString, polyDataUtils, voi, annotationFrameRange, contourSegmentation, annotationHydration, getClosestImageIdForStackViewport, };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { distanceToPointSquared } from '../point';
|
|
2
2
|
export default function distanceToPointSquaredInfo(lineStart, lineEnd, point) {
|
|
3
3
|
let closestPoint;
|
|
4
|
-
const distanceSquared =
|
|
4
|
+
const distanceSquared = distanceToPointSquared(lineStart, lineEnd);
|
|
5
5
|
if (lineStart[0] === lineEnd[0] && lineStart[1] === lineEnd[1]) {
|
|
6
6
|
closestPoint = lineStart;
|
|
7
7
|
}
|
|
@@ -24,6 +24,6 @@ export default function distanceToPointSquaredInfo(lineStart, lineEnd, point) {
|
|
|
24
24
|
}
|
|
25
25
|
return {
|
|
26
26
|
point: [...closestPoint],
|
|
27
|
-
distanceSquared:
|
|
27
|
+
distanceSquared: distanceToPointSquared(point, closestPoint),
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { glMatrix } from 'gl-matrix';
|
|
2
|
-
import
|
|
2
|
+
import { distanceToPointSquared } from '../point';
|
|
3
3
|
export default function isClosed(polyline) {
|
|
4
4
|
if (polyline.length < 3) {
|
|
5
5
|
return false;
|
|
@@ -7,6 +7,6 @@ export default function isClosed(polyline) {
|
|
|
7
7
|
const numPolylinePoints = polyline.length;
|
|
8
8
|
const firstPoint = polyline[0];
|
|
9
9
|
const lastPoint = polyline[numPolylinePoints - 1];
|
|
10
|
-
const distFirstToLastPoints =
|
|
10
|
+
const distFirstToLastPoints = distanceToPointSquared(firstPoint, lastPoint);
|
|
11
11
|
return glMatrix.equals(0, distFirstToLastPoints);
|
|
12
12
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ToolGroupManager } from '../../store';
|
|
1
|
+
import PlanarFreehandROITool from '../../tools/annotation/PlanarFreehandROITool';
|
|
3
2
|
import interpolateSegmentPoints from './interpolation/interpolateSegmentPoints';
|
|
3
|
+
import { getToolGroupForViewport } from '../../store/ToolGroupManager';
|
|
4
4
|
function shouldPreventInterpolation(enabledElement, annotation, knotsRatioPercentage) {
|
|
5
5
|
if (!annotation?.data?.polyline || knotsRatioPercentage <= 0) {
|
|
6
6
|
return true;
|
|
@@ -9,7 +9,7 @@ function shouldPreventInterpolation(enabledElement, annotation, knotsRatioPercen
|
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
11
|
const { renderingEngineId, viewportId, FrameOfReferenceUID } = enabledElement;
|
|
12
|
-
const toolGroup =
|
|
12
|
+
const toolGroup = getToolGroupForViewport(viewportId, renderingEngineId);
|
|
13
13
|
if (annotation.metadata.FrameOfReferenceUID !== FrameOfReferenceUID) {
|
|
14
14
|
return true;
|
|
15
15
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getToolGroup } from '../../store/ToolGroupManager';
|
|
2
2
|
import triggerAnnotationRenderForViewportIds from '../triggerAnnotationRenderForViewportIds';
|
|
3
3
|
import { getRenderingEngine } from '@cornerstonejs/core';
|
|
4
|
-
import { getBrushToolInstances } from './
|
|
4
|
+
import { getBrushToolInstances } from './getBrushToolInstances';
|
|
5
5
|
export function setBrushSizeForToolGroup(toolGroupId, brushSize, toolName) {
|
|
6
6
|
const toolGroup = getToolGroup(toolGroupId);
|
|
7
7
|
if (toolGroup === undefined) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getToolGroup } from '../../store/ToolGroupManager';
|
|
2
2
|
import triggerAnnotationRenderForViewportIds from '../triggerAnnotationRenderForViewportIds';
|
|
3
3
|
import { getRenderingEngine } from '@cornerstonejs/core';
|
|
4
|
-
import { getBrushToolInstances } from './
|
|
4
|
+
import { getBrushToolInstances } from './getBrushToolInstances';
|
|
5
5
|
export function setBrushThresholdForToolGroup(toolGroupId, threshold, otherArgs = { isDynamic: false }) {
|
|
6
6
|
const toolGroup = getToolGroup(toolGroupId);
|
|
7
7
|
if (toolGroup === undefined) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getBrushToolInstances(toolGroupId: string, toolName?: string): any[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getToolGroup } from '../../store/ToolGroupManager';
|
|
2
|
+
import BrushTool from '../../tools/segmentation/BrushTool';
|
|
3
|
+
export function getBrushToolInstances(toolGroupId, toolName) {
|
|
4
|
+
const toolGroup = getToolGroup(toolGroupId);
|
|
5
|
+
if (toolGroup === undefined) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const toolInstances = toolGroup._toolInstances;
|
|
9
|
+
if (!Object.keys(toolInstances).length) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (toolName && toolInstances[toolName]) {
|
|
13
|
+
return [toolInstances[toolName]];
|
|
14
|
+
}
|
|
15
|
+
const brushBasedToolInstances = Object.values(toolInstances).filter((toolInstance) => toolInstance instanceof BrushTool);
|
|
16
|
+
return brushBasedToolInstances;
|
|
17
|
+
}
|
|
@@ -1,27 +1,8 @@
|
|
|
1
1
|
import { cache } from '@cornerstonejs/core';
|
|
2
|
-
import { getSegmentation } from '../../stateManagement/segmentation/segmentationState';
|
|
3
2
|
import { isVolumeSegmentation } from '../../tools/segmentation/strategies/utils/stackVolumeCheck';
|
|
4
3
|
import { SegmentationRepresentations } from '../../enums';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const cached = segmentIndicesCache.get(segmentationId);
|
|
8
|
-
if (cached) {
|
|
9
|
-
cached.isDirty = true;
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
export const setSegmentationClean = (segmentationId) => {
|
|
13
|
-
const cached = segmentIndicesCache.get(segmentationId);
|
|
14
|
-
if (cached) {
|
|
15
|
-
cached.isDirty = false;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
function getCachedSegmentIndices(segmentationId) {
|
|
19
|
-
const cached = segmentIndicesCache.get(segmentationId);
|
|
20
|
-
if (cached && !cached.isDirty) {
|
|
21
|
-
return cached.indices;
|
|
22
|
-
}
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
4
|
+
import { getCachedSegmentIndices, setCachedSegmentIndices } from './utilities';
|
|
5
|
+
import { getSegmentation } from '../../stateManagement/segmentation/getSegmentation';
|
|
25
6
|
function getUniqueSegmentIndices(segmentationId) {
|
|
26
7
|
const cachedResult = getCachedSegmentIndices(segmentationId);
|
|
27
8
|
if (cachedResult) {
|
|
@@ -45,7 +26,7 @@ function getUniqueSegmentIndices(segmentationId) {
|
|
|
45
26
|
default:
|
|
46
27
|
throw new Error(`Unsupported segmentation type: ${segmentation.type}`);
|
|
47
28
|
}
|
|
48
|
-
|
|
29
|
+
setCachedSegmentIndices(segmentationId, indices);
|
|
49
30
|
return indices;
|
|
50
31
|
}
|
|
51
32
|
function handleLabelmapSegmentation(segmentation, segmentationId) {
|