@cornerstonejs/tools 1.53.0 → 1.54.0
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/cjs/enums/WorkerTypes.d.ts +8 -0
- package/dist/cjs/enums/WorkerTypes.js +12 -0
- package/dist/cjs/enums/WorkerTypes.js.map +1 -0
- package/dist/cjs/enums/index.d.ts +2 -1
- package/dist/cjs/enums/index.js +3 -1
- package/dist/cjs/enums/index.js.map +1 -1
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +6 -11
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -1
- package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js +4 -3
- package/dist/cjs/eventListeners/segmentation/imageChangeEventListener.js.map +1 -1
- package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +58 -47
- package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +1 -0
- package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +5 -0
- package/dist/cjs/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/annotationState.d.ts +2 -1
- package/dist/cjs/stateManagement/annotation/annotationState.js +6 -1
- package/dist/cjs/stateManagement/annotation/annotationState.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js +4 -1
- package/dist/cjs/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/addRepresentationData.d.ts +12 -0
- package/dist/cjs/stateManagement/segmentation/addRepresentationData.js +35 -0
- package/dist/cjs/stateManagement/segmentation/addRepresentationData.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentation.js +32 -14
- package/dist/cjs/stateManagement/segmentation/addSegmentationRepresentation.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js +3 -52
- package/dist/cjs/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +9 -2
- package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.js +44 -27
- package/dist/cjs/stateManagement/segmentation/convertStackToVolumeSegmentation.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +13 -0
- package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.js +52 -26
- package/dist/cjs/stateManagement/segmentation/convertVolumeToStackSegmentation.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.js +6 -9
- package/dist/cjs/stateManagement/segmentation/helpers/validateSegmentationInput.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/index.d.ts +3 -1
- package/dist/cjs/stateManagement/segmentation/index.js +5 -1
- package/dist/cjs/stateManagement/segmentation/index.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts +2 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js +8 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts +2 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +11 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts +7 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +162 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts +6 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js +71 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts +6 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +120 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts +4 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js +12 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts +3 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js +52 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +3 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +60 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts +5 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +56 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts +12 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +94 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +74 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +2 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +83 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +3 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +64 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/index.d.ts +5 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/index.js +12 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/index.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts +1 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/registerPolySegWorker.js +27 -0
- package/dist/cjs/stateManagement/segmentation/polySeg/registerPolySegWorker.js.map +1 -0
- package/dist/cjs/stateManagement/segmentation/segmentIndex.js +4 -0
- package/dist/cjs/stateManagement/segmentation/segmentIndex.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/segmentationState.d.ts +6 -1
- package/dist/cjs/stateManagement/segmentation/segmentationState.js +30 -1
- package/dist/cjs/stateManagement/segmentation/segmentationState.js.map +1 -1
- package/dist/cjs/tools/ScaleOverlayTool.js +2 -1
- package/dist/cjs/tools/ScaleOverlayTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js +0 -11
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +1 -2
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.js +3 -0
- package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.js +1 -1
- package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
- package/dist/cjs/tools/base/BaseTool.js.map +1 -1
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.d.ts +1 -2
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +24 -24
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -1
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js +9 -6
- package/dist/cjs/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/Contour/removeContourFromElement.js.map +1 -1
- package/dist/cjs/tools/displayTools/Contour/{addContourSetsToElement.d.ts → vtkContour/addContourSetsToElement.d.ts} +1 -1
- package/dist/cjs/tools/displayTools/Contour/vtkContour/addContourSetsToElement.js.map +1 -0
- package/dist/cjs/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.d.ts +3 -0
- package/dist/cjs/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.js +14 -0
- package/dist/cjs/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.js.map +1 -0
- package/dist/cjs/tools/displayTools/Contour/vtkContour/contourConfigCache.js.map +1 -0
- package/dist/cjs/tools/displayTools/Contour/vtkContour/updateVTKContourSets.d.ts +3 -0
- package/dist/cjs/tools/displayTools/Contour/{updateContourSets.js → vtkContour/updateVTKContourSets.js} +4 -4
- package/dist/cjs/tools/displayTools/Contour/vtkContour/updateVTKContourSets.js.map +1 -0
- package/dist/cjs/tools/displayTools/Contour/{utils.d.ts → vtkContour/utils.d.ts} +2 -2
- package/dist/cjs/tools/displayTools/Contour/vtkContour/utils.js.map +1 -0
- package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/index.d.ts +2 -1
- package/dist/cjs/tools/displayTools/Labelmap/index.js +4 -1
- package/dist/cjs/tools/displayTools/Labelmap/index.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js +20 -2
- package/dist/cjs/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/Labelmap/validateLabelmap.d.ts +4 -0
- package/dist/cjs/tools/displayTools/Labelmap/validateLabelmap.js +38 -0
- package/dist/cjs/tools/displayTools/Labelmap/validateLabelmap.js.map +1 -0
- package/dist/cjs/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +3 -0
- package/dist/cjs/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +112 -0
- package/dist/cjs/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js.map +1 -0
- package/dist/cjs/tools/displayTools/Surface/surfaceConfig.d.ts +3 -0
- package/dist/cjs/tools/displayTools/Surface/surfaceConfig.js +11 -0
- package/dist/cjs/tools/displayTools/Surface/surfaceConfig.js.map +1 -0
- package/dist/cjs/tools/displayTools/Surface/surfaceDisplay.d.ts +7 -0
- package/dist/cjs/tools/displayTools/Surface/surfaceDisplay.js +173 -27
- package/dist/cjs/tools/displayTools/Surface/surfaceDisplay.js.map +1 -1
- package/dist/cjs/tools/displayTools/registerDisplayToolsWorker.d.ts +1 -0
- package/dist/cjs/tools/displayTools/registerDisplayToolsWorker.js +27 -0
- package/dist/cjs/tools/displayTools/registerDisplayToolsWorker.js.map +1 -0
- package/dist/cjs/tools/segmentation/BrushTool.js +1 -1
- package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/CircleScissorsTool.js +1 -1
- package/dist/cjs/tools/segmentation/CircleScissorsTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/PaintFillTool.js +1 -1
- package/dist/cjs/tools/segmentation/PaintFillTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/RectangleScissorsTool.js +1 -1
- package/dist/cjs/tools/segmentation/RectangleScissorsTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/SegmentSelectTool.d.ts +6 -2
- package/dist/cjs/tools/segmentation/SegmentSelectTool.js +45 -35
- package/dist/cjs/tools/segmentation/SegmentSelectTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/SphereScissorsTool.js +1 -1
- package/dist/cjs/tools/segmentation/SphereScissorsTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js +7 -5
- package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js +1 -1
- package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillSphere.js +14 -5
- package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js +21 -9
- package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +5 -5
- package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.js +15 -8
- package/dist/cjs/tools/segmentation/strategies/utils/stackVolumeCheck.js.map +1 -1
- package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +0 -1
- package/dist/cjs/types/LabelmapTypes.d.ts +5 -1
- package/dist/cjs/types/PolySeg.d.ts +6 -0
- package/dist/cjs/types/PolySeg.js +3 -0
- package/dist/cjs/types/PolySeg.js.map +1 -0
- package/dist/cjs/types/SegmentationStateTypes.d.ts +12 -2
- package/dist/cjs/types/SurfaceTypes.d.ts +1 -1
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.js +6 -6
- package/dist/cjs/utilities/boundingBox/getBoundingBoxAroundShape.js.map +1 -1
- package/dist/cjs/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts +2 -0
- package/dist/cjs/utilities/contourSegmentation/addContourSegmentationAnnotation.js +20 -0
- package/dist/cjs/utilities/contourSegmentation/addContourSegmentationAnnotation.js.map +1 -0
- package/dist/cjs/utilities/contourSegmentation/areSameSegment.js +0 -2
- package/dist/cjs/utilities/contourSegmentation/areSameSegment.js.map +1 -1
- package/dist/cjs/utilities/contourSegmentation/index.d.ts +2 -0
- package/dist/cjs/utilities/contourSegmentation/index.js +5 -1
- package/dist/cjs/utilities/contourSegmentation/index.js.map +1 -1
- package/dist/cjs/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts +2 -0
- package/dist/cjs/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +19 -0
- package/dist/cjs/utilities/contourSegmentation/removeContourSegmentationAnnotation.js.map +1 -0
- package/dist/cjs/utilities/contours/detectContourHoles.js.map +1 -1
- package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.js +2 -2
- package/dist/cjs/utilities/contours/generateContourSetsFromLabelmap.js.map +1 -1
- package/dist/cjs/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts +11 -0
- package/dist/cjs/utilities/contours/getDeduplicatedVTKPolyDataPoints.js +50 -0
- package/dist/cjs/utilities/contours/getDeduplicatedVTKPolyDataPoints.js.map +1 -0
- package/dist/cjs/utilities/contours/index.d.ts +2 -2
- package/dist/cjs/utilities/contours/index.js +3 -3
- package/dist/cjs/utilities/contours/index.js.map +1 -1
- package/dist/cjs/utilities/index.d.ts +3 -1
- package/dist/cjs/utilities/index.js +5 -1
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/containsPoint.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/index.d.ts +2 -1
- package/dist/cjs/utilities/math/polyline/index.js +3 -1
- package/dist/cjs/utilities/math/polyline/index.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/isPointInsidePolyline3D.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/isPointInsidePolyline3D.js +34 -0
- package/dist/cjs/utilities/math/polyline/isPointInsidePolyline3D.js.map +1 -0
- package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.js +0 -1
- package/dist/cjs/utilities/segmentation/contourAndFindLargestBidirectional.js.map +1 -1
- package/dist/cjs/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts +1 -0
- package/dist/cjs/utilities/segmentation/getHoveredContourSegmentationAnnotation.js +18 -0
- package/dist/cjs/utilities/segmentation/getHoveredContourSegmentationAnnotation.js.map +1 -0
- package/dist/cjs/utilities/segmentation/getSegmentAtLabelmapBorder.d.ts +7 -0
- package/dist/cjs/utilities/segmentation/getSegmentAtLabelmapBorder.js +77 -0
- package/dist/cjs/utilities/segmentation/getSegmentAtLabelmapBorder.js.map +1 -0
- package/dist/cjs/utilities/segmentation/getSegmentAtWorldPoint.d.ts +11 -0
- package/dist/cjs/utilities/segmentation/getSegmentAtWorldPoint.js +82 -0
- package/dist/cjs/utilities/segmentation/getSegmentAtWorldPoint.js.map +1 -0
- package/dist/cjs/utilities/segmentation/getUniqueSegmentIndices.d.ts +2 -0
- package/dist/cjs/utilities/segmentation/getUniqueSegmentIndices.js +59 -0
- package/dist/cjs/utilities/segmentation/getUniqueSegmentIndices.js.map +1 -0
- package/dist/cjs/utilities/segmentation/index.d.ts +5 -1
- package/dist/cjs/utilities/segmentation/index.js +9 -1
- package/dist/cjs/utilities/segmentation/index.js.map +1 -1
- package/dist/cjs/utilities/triggerAnnotationRenderForToolGroupIds.d.ts +2 -0
- package/dist/cjs/utilities/triggerAnnotationRenderForToolGroupIds.js +32 -0
- package/dist/cjs/utilities/triggerAnnotationRenderForToolGroupIds.js.map +1 -0
- package/dist/cjs/workers/clippingPlaneWorker.d.ts +1 -0
- package/dist/cjs/workers/clippingPlaneWorker.js +63 -0
- package/dist/cjs/workers/clippingPlaneWorker.js.map +1 -0
- package/dist/cjs/workers/polySegConverters.d.ts +1 -0
- package/dist/cjs/workers/polySegConverters.js +267 -0
- package/dist/cjs/workers/polySegConverters.js.map +1 -0
- package/dist/esm/enums/WorkerTypes.js +10 -0
- package/dist/esm/enums/WorkerTypes.js.map +1 -0
- package/dist/esm/enums/index.js +2 -1
- package/dist/esm/enums/index.js.map +1 -1
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +7 -12
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -1
- package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js +3 -3
- package/dist/esm/eventListeners/segmentation/imageChangeEventListener.js.map +1 -1
- package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +59 -45
- package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -1
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js +5 -0
- package/dist/esm/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.js.map +1 -1
- package/dist/esm/stateManagement/annotation/annotationState.js +5 -1
- package/dist/esm/stateManagement/annotation/annotationState.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js +4 -1
- package/dist/esm/stateManagement/segmentation/SegmentationStateManager.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/addRepresentationData.js +30 -0
- package/dist/esm/stateManagement/segmentation/addRepresentationData.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js +32 -15
- package/dist/esm/stateManagement/segmentation/addSegmentationRepresentation.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js +1 -46
- package/dist/esm/stateManagement/segmentation/config/segmentationVisibility.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js +42 -27
- package/dist/esm/stateManagement/segmentation/convertStackToVolumeSegmentation.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js +49 -25
- package/dist/esm/stateManagement/segmentation/convertVolumeToStackSegmentation.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/helpers/validateSegmentationInput.js +6 -6
- package/dist/esm/stateManagement/segmentation/helpers/validateSegmentationInput.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/index.js +3 -1
- package/dist/esm/stateManagement/segmentation/index.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js +4 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js +7 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js +142 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js +53 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js +108 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js +8 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js +37 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js +45 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js +41 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js +78 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js +59 -0
- package/dist/esm/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js +68 -0
- package/dist/esm/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js +47 -0
- package/dist/esm/stateManagement/segmentation/polySeg/computeAndAddRepresentation.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/index.js +6 -0
- package/dist/esm/stateManagement/segmentation/polySeg/index.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/polySeg/registerPolySegWorker.js +23 -0
- package/dist/esm/stateManagement/segmentation/polySeg/registerPolySegWorker.js.map +1 -0
- package/dist/esm/stateManagement/segmentation/segmentIndex.js +4 -0
- package/dist/esm/stateManagement/segmentation/segmentIndex.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/segmentationState.js +28 -1
- package/dist/esm/stateManagement/segmentation/segmentationState.js.map +1 -1
- package/dist/esm/tools/ScaleOverlayTool.js +2 -1
- package/dist/esm/tools/ScaleOverlayTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +0 -11
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +1 -2
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/ProbeTool.js +3 -0
- package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.js +1 -1
- package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
- package/dist/esm/tools/base/BaseTool.js +1 -1
- package/dist/esm/tools/base/BaseTool.js.map +1 -1
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +24 -24
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -1
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js +10 -7
- package/dist/esm/tools/displayTools/Contour/contourDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/Contour/removeContourFromElement.js.map +1 -1
- package/dist/esm/tools/displayTools/Contour/vtkContour/addContourSetsToElement.js.map +1 -0
- package/dist/esm/tools/displayTools/Contour/{addOrUpdateContourSets.js → vtkContour/addOrUpdateVTKContourSets.js} +4 -4
- package/dist/esm/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.js.map +1 -0
- package/dist/esm/tools/displayTools/Contour/vtkContour/contourConfigCache.js.map +1 -0
- package/dist/esm/tools/displayTools/Contour/{updateContourSets.js → vtkContour/updateVTKContourSets.js} +2 -2
- package/dist/esm/tools/displayTools/Contour/vtkContour/updateVTKContourSets.js.map +1 -0
- package/dist/esm/tools/displayTools/Contour/vtkContour/utils.js.map +1 -0
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js +1 -1
- package/dist/esm/tools/displayTools/Labelmap/addLabelmapToElement.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/index.js +2 -1
- package/dist/esm/tools/displayTools/Labelmap/index.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js +20 -2
- package/dist/esm/tools/displayTools/Labelmap/labelmapDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/Labelmap/validateLabelmap.js +33 -0
- package/dist/esm/tools/displayTools/Labelmap/validateLabelmap.js.map +1 -0
- package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js +106 -0
- package/dist/esm/tools/displayTools/Surface/addOrUpdateSurfaceToElement.js.map +1 -0
- package/dist/esm/tools/displayTools/Surface/surfaceConfig.js +9 -0
- package/dist/esm/tools/displayTools/Surface/surfaceConfig.js.map +1 -0
- package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js +162 -28
- package/dist/esm/tools/displayTools/Surface/surfaceDisplay.js.map +1 -1
- package/dist/esm/tools/displayTools/registerDisplayToolsWorker.js +23 -0
- package/dist/esm/tools/displayTools/registerDisplayToolsWorker.js.map +1 -0
- package/dist/esm/tools/segmentation/BrushTool.js +1 -1
- package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
- package/dist/esm/tools/segmentation/CircleScissorsTool.js +1 -1
- package/dist/esm/tools/segmentation/CircleScissorsTool.js.map +1 -1
- package/dist/esm/tools/segmentation/PaintFillTool.js +1 -1
- package/dist/esm/tools/segmentation/PaintFillTool.js.map +1 -1
- package/dist/esm/tools/segmentation/RectangleScissorsTool.js +1 -1
- package/dist/esm/tools/segmentation/RectangleScissorsTool.js.map +1 -1
- package/dist/esm/tools/segmentation/SegmentSelectTool.js +47 -37
- package/dist/esm/tools/segmentation/SegmentSelectTool.js.map +1 -1
- package/dist/esm/tools/segmentation/SphereScissorsTool.js +1 -1
- package/dist/esm/tools/segmentation/SphereScissorsTool.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +7 -5
- package/dist/esm/tools/segmentation/strategies/BrushStrategy.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +1 -1
- package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/fillSphere.js +14 -5
- package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +21 -9
- package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js +15 -7
- package/dist/esm/tools/segmentation/strategies/utils/stackVolumeCheck.js.map +1 -1
- package/dist/esm/types/PolySeg.js +2 -0
- package/dist/esm/types/PolySeg.js.map +1 -0
- package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.js +3 -2
- package/dist/esm/utilities/boundingBox/getBoundingBoxAroundShape.js.map +1 -1
- package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js +16 -0
- package/dist/esm/utilities/contourSegmentation/addContourSegmentationAnnotation.js.map +1 -0
- package/dist/esm/utilities/contourSegmentation/areSameSegment.js +0 -2
- package/dist/esm/utilities/contourSegmentation/areSameSegment.js.map +1 -1
- package/dist/esm/utilities/contourSegmentation/index.js +2 -0
- package/dist/esm/utilities/contourSegmentation/index.js.map +1 -1
- package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js +15 -0
- package/dist/esm/utilities/contourSegmentation/removeContourSegmentationAnnotation.js.map +1 -0
- package/dist/esm/utilities/contours/detectContourHoles.js.map +1 -1
- package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js +2 -2
- package/dist/esm/utilities/contours/generateContourSetsFromLabelmap.js.map +1 -1
- package/dist/esm/utilities/contours/getDeduplicatedVTKPolyDataPoints.js +46 -0
- package/dist/esm/utilities/contours/getDeduplicatedVTKPolyDataPoints.js.map +1 -0
- package/dist/esm/utilities/contours/index.js +2 -2
- package/dist/esm/utilities/contours/index.js.map +1 -1
- package/dist/esm/utilities/index.js +3 -1
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/math/polyline/containsPoint.js.map +1 -1
- package/dist/esm/utilities/math/polyline/index.js +2 -1
- package/dist/esm/utilities/math/polyline/index.js.map +1 -1
- package/dist/esm/utilities/math/polyline/isPointInsidePolyline3D.js +27 -0
- package/dist/esm/utilities/math/polyline/isPointInsidePolyline3D.js.map +1 -0
- package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js +0 -1
- package/dist/esm/utilities/segmentation/contourAndFindLargestBidirectional.js.map +1 -1
- package/dist/esm/utilities/segmentation/getHoveredContourSegmentationAnnotation.js +14 -0
- package/dist/esm/utilities/segmentation/getHoveredContourSegmentationAnnotation.js.map +1 -0
- package/dist/esm/utilities/segmentation/getSegmentAtLabelmapBorder.js +73 -0
- package/dist/esm/utilities/segmentation/getSegmentAtLabelmapBorder.js.map +1 -0
- package/dist/esm/utilities/segmentation/getSegmentAtWorldPoint.js +75 -0
- package/dist/esm/utilities/segmentation/getSegmentAtWorldPoint.js.map +1 -0
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js +55 -0
- package/dist/esm/utilities/segmentation/getUniqueSegmentIndices.js.map +1 -0
- package/dist/esm/utilities/segmentation/index.js +5 -1
- package/dist/esm/utilities/segmentation/index.js.map +1 -1
- package/dist/esm/utilities/triggerAnnotationRenderForToolGroupIds.js +25 -0
- package/dist/esm/utilities/triggerAnnotationRenderForToolGroupIds.js.map +1 -0
- package/dist/esm/workers/clippingPlaneWorker.js +58 -0
- package/dist/esm/workers/clippingPlaneWorker.js.map +1 -0
- package/dist/esm/workers/polySegConverters.js +241 -0
- package/dist/esm/workers/polySegConverters.js.map +1 -0
- package/dist/types/enums/WorkerTypes.d.ts +9 -0
- package/dist/types/enums/WorkerTypes.d.ts.map +1 -0
- package/dist/types/enums/index.d.ts +2 -1
- package/dist/types/eventListeners/segmentation/imageChangeEventListener.d.ts.map +1 -1
- package/dist/types/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts.map +1 -1
- package/dist/types/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts +1 -0
- package/dist/types/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.d.ts.map +1 -1
- package/dist/types/stateManagement/annotation/annotationState.d.ts +2 -1
- package/dist/types/stateManagement/annotation/annotationState.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/SegmentationStateManager.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/addRepresentationData.d.ts +13 -0
- package/dist/types/stateManagement/segmentation/addRepresentationData.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/addSegmentationRepresentation.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/config/segmentationVisibility.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts +9 -2
- package/dist/types/stateManagement/segmentation/convertStackToVolumeSegmentation.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts +13 -0
- package/dist/types/stateManagement/segmentation/convertVolumeToStackSegmentation.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/helpers/validateSegmentationInput.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/index.d.ts +3 -1
- package/dist/types/stateManagement/segmentation/index.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts +3 -0
- package/dist/types/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts +3 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts +8 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts +7 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts +7 -0
- package/dist/types/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts +5 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts +4 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts +4 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts +6 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts +13 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts +2 -0
- package/dist/types/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts +3 -0
- package/dist/types/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts +4 -0
- package/dist/types/stateManagement/segmentation/polySeg/computeAndAddRepresentation.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/index.d.ts +6 -0
- package/dist/types/stateManagement/segmentation/polySeg/index.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts +2 -0
- package/dist/types/stateManagement/segmentation/polySeg/registerPolySegWorker.d.ts.map +1 -0
- package/dist/types/stateManagement/segmentation/segmentIndex.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/segmentationState.d.ts +6 -1
- package/dist/types/stateManagement/segmentation/segmentationState.d.ts.map +1 -1
- package/dist/types/tools/ScaleOverlayTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +1 -2
- package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/ProbeTool.d.ts.map +1 -1
- package/dist/types/tools/base/BaseTool.d.ts.map +1 -1
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts +1 -2
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -1
- package/dist/types/tools/displayTools/Contour/contourDisplay.d.ts.map +1 -1
- package/dist/types/tools/displayTools/Contour/removeContourFromElement.d.ts.map +1 -1
- package/dist/types/tools/displayTools/Contour/{addContourSetsToElement.d.ts → vtkContour/addContourSetsToElement.d.ts} +1 -1
- package/dist/types/tools/displayTools/Contour/vtkContour/addContourSetsToElement.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.d.ts +4 -0
- package/dist/types/tools/displayTools/Contour/vtkContour/addOrUpdateVTKContourSets.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Contour/vtkContour/contourConfigCache.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Contour/vtkContour/updateVTKContourSets.d.ts +4 -0
- package/dist/types/tools/displayTools/Contour/vtkContour/updateVTKContourSets.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Contour/{utils.d.ts → vtkContour/utils.d.ts} +2 -2
- package/dist/types/tools/displayTools/Contour/vtkContour/utils.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Labelmap/index.d.ts +2 -1
- package/dist/types/tools/displayTools/Labelmap/index.d.ts.map +1 -1
- package/dist/types/tools/displayTools/Labelmap/labelmapDisplay.d.ts.map +1 -1
- package/dist/types/tools/displayTools/Labelmap/validateLabelmap.d.ts +5 -0
- package/dist/types/tools/displayTools/Labelmap/validateLabelmap.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts +4 -0
- package/dist/types/tools/displayTools/Surface/addOrUpdateSurfaceToElement.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Surface/surfaceConfig.d.ts +4 -0
- package/dist/types/tools/displayTools/Surface/surfaceConfig.d.ts.map +1 -0
- package/dist/types/tools/displayTools/Surface/surfaceDisplay.d.ts +7 -0
- package/dist/types/tools/displayTools/Surface/surfaceDisplay.d.ts.map +1 -1
- package/dist/types/tools/displayTools/registerDisplayToolsWorker.d.ts +2 -0
- package/dist/types/tools/displayTools/registerDisplayToolsWorker.d.ts.map +1 -0
- package/dist/types/tools/segmentation/CircleScissorsTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/RectangleScissorsTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/SegmentSelectTool.d.ts +6 -2
- package/dist/types/tools/segmentation/SegmentSelectTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/SphereScissorsTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/BrushStrategy.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/fillSphere.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts +5 -5
- package/dist/types/tools/segmentation/strategies/utils/stackVolumeCheck.d.ts.map +1 -1
- package/dist/types/types/ContourSegmentationAnnotation.d.ts +0 -1
- package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -1
- package/dist/types/types/LabelmapTypes.d.ts +5 -1
- package/dist/types/types/LabelmapTypes.d.ts.map +1 -1
- package/dist/types/types/PolySeg.d.ts +7 -0
- package/dist/types/types/PolySeg.d.ts.map +1 -0
- package/dist/types/types/SegmentationStateTypes.d.ts +12 -2
- package/dist/types/types/SegmentationStateTypes.d.ts.map +1 -1
- package/dist/types/types/SurfaceTypes.d.ts +1 -1
- package/dist/types/types/SurfaceTypes.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +2 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utilities/boundingBox/getBoundingBoxAroundShape.d.ts.map +1 -1
- package/dist/types/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts +3 -0
- package/dist/types/utilities/contourSegmentation/addContourSegmentationAnnotation.d.ts.map +1 -0
- package/dist/types/utilities/contourSegmentation/areSameSegment.d.ts.map +1 -1
- package/dist/types/utilities/contourSegmentation/index.d.ts +2 -0
- package/dist/types/utilities/contourSegmentation/index.d.ts.map +1 -1
- package/dist/types/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts +3 -0
- package/dist/types/utilities/contourSegmentation/removeContourSegmentationAnnotation.d.ts.map +1 -0
- package/dist/types/utilities/contours/detectContourHoles.d.ts.map +1 -1
- package/dist/types/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts +12 -0
- package/dist/types/utilities/contours/getDeduplicatedVTKPolyDataPoints.d.ts.map +1 -0
- package/dist/types/utilities/contours/index.d.ts +2 -2
- package/dist/types/utilities/contours/index.d.ts.map +1 -1
- package/dist/types/utilities/index.d.ts +3 -1
- package/dist/types/utilities/index.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/containsPoint.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/index.d.ts +2 -1
- package/dist/types/utilities/math/polyline/index.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/isPointInsidePolyline3D.d.ts +3 -0
- package/dist/types/utilities/math/polyline/isPointInsidePolyline3D.d.ts.map +1 -0
- package/dist/types/utilities/segmentation/contourAndFindLargestBidirectional.d.ts.map +1 -1
- package/dist/types/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts +2 -0
- package/dist/types/utilities/segmentation/getHoveredContourSegmentationAnnotation.d.ts.map +1 -0
- package/dist/types/utilities/segmentation/getSegmentAtLabelmapBorder.d.ts +8 -0
- package/dist/types/utilities/segmentation/getSegmentAtLabelmapBorder.d.ts.map +1 -0
- package/dist/types/utilities/segmentation/getSegmentAtWorldPoint.d.ts +12 -0
- package/dist/types/utilities/segmentation/getSegmentAtWorldPoint.d.ts.map +1 -0
- package/dist/types/utilities/segmentation/getUniqueSegmentIndices.d.ts +3 -0
- package/dist/types/utilities/segmentation/getUniqueSegmentIndices.d.ts.map +1 -0
- package/dist/types/utilities/segmentation/index.d.ts +5 -1
- package/dist/types/utilities/segmentation/index.d.ts.map +1 -1
- package/dist/types/utilities/triggerAnnotationRenderForToolGroupIds.d.ts +3 -0
- package/dist/types/utilities/triggerAnnotationRenderForToolGroupIds.d.ts.map +1 -0
- package/dist/types/workers/clippingPlaneWorker.d.ts +2 -0
- package/dist/types/workers/clippingPlaneWorker.d.ts.map +1 -0
- package/dist/types/workers/polySegConverters.d.ts +2 -0
- package/dist/types/workers/polySegConverters.d.ts.map +1 -0
- package/dist/umd/17dd54813d5acc10bf8f.wasm +0 -0
- package/dist/umd/444.index.js +3 -0
- package/dist/umd/444.index.js.LICENSE.txt +5 -0
- package/dist/umd/444.index.js.map +1 -0
- package/dist/umd/78.index.js +3 -0
- package/dist/umd/78.index.js.LICENSE.txt +5 -0
- package/dist/umd/78.index.js.map +1 -0
- package/dist/umd/985.index.js +2 -0
- package/dist/umd/985.index.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -3
- package/src/enums/WorkerTypes.ts +16 -0
- package/src/enums/index.js +2 -0
- package/src/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.ts +10 -17
- package/src/eventListeners/segmentation/imageChangeEventListener.ts +3 -4
- package/src/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.ts +97 -69
- package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +11 -0
- package/src/stateManagement/annotation/annotationState.ts +6 -0
- package/src/stateManagement/segmentation/SegmentationStateManager.ts +4 -1
- package/src/stateManagement/segmentation/addRepresentationData.ts +71 -0
- package/src/stateManagement/segmentation/addSegmentationRepresentation.ts +39 -16
- package/src/stateManagement/segmentation/config/segmentationVisibility.ts +1 -59
- package/src/stateManagement/segmentation/convertStackToVolumeSegmentation.ts +74 -37
- package/src/stateManagement/segmentation/convertVolumeToStackSegmentation.ts +102 -38
- package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +13 -8
- package/src/stateManagement/segmentation/index.ts +9 -2
- package/src/stateManagement/segmentation/polySeg/Contour/computeAndAddContourRepresentation.ts +17 -0
- package/src/stateManagement/segmentation/polySeg/Labelmap/computeAndAddLabelmapRepresentation.ts +25 -0
- package/src/stateManagement/segmentation/polySeg/Labelmap/convertContourToLabelmap.ts +273 -0
- package/src/stateManagement/segmentation/polySeg/Labelmap/convertSurfaceToLabelmap.ts +89 -0
- package/src/stateManagement/segmentation/polySeg/Labelmap/labelmapComputationStrategies.ts +193 -0
- package/src/stateManagement/segmentation/polySeg/Surface/computeAndAddSurfaceRepresentation.ts +26 -0
- package/src/stateManagement/segmentation/polySeg/Surface/convertContourToSurface.ts +62 -0
- package/src/stateManagement/segmentation/polySeg/Surface/convertLabelmapToSurface.ts +81 -0
- package/src/stateManagement/segmentation/polySeg/Surface/createAndCacheSurfacesFromRaw.ts +81 -0
- package/src/stateManagement/segmentation/polySeg/Surface/surfaceComputationStrategies.ts +167 -0
- package/src/stateManagement/segmentation/polySeg/Surface/updateSurfaceData.ts +95 -0
- package/src/stateManagement/segmentation/polySeg/canComputeRequestedRepresentation.ts +123 -0
- package/src/stateManagement/segmentation/polySeg/computeAndAddRepresentation.ts +97 -0
- package/src/stateManagement/segmentation/polySeg/index.ts +12 -0
- package/src/stateManagement/segmentation/polySeg/registerPolySegWorker.ts +34 -0
- package/src/stateManagement/segmentation/segmentIndex.ts +5 -0
- package/src/stateManagement/segmentation/segmentationState.ts +62 -0
- package/src/tools/ScaleOverlayTool.ts +4 -1
- package/src/tools/annotation/PlanarFreehandContourSegmentationTool.ts +1 -22
- package/src/tools/annotation/PlanarFreehandROITool.ts +2 -4
- package/src/tools/annotation/ProbeTool.ts +4 -0
- package/src/tools/annotation/SplineROITool.ts +1 -1
- package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +2 -2
- package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +1 -1
- package/src/tools/base/AnnotationTool.ts +1 -1
- package/src/tools/base/BaseTool.ts +1 -6
- package/src/tools/base/ContourBaseTool.ts +1 -1
- package/src/tools/base/ContourSegmentationBaseTool.ts +45 -42
- package/src/tools/displayTools/Contour/contourDisplay.ts +82 -9
- package/src/tools/displayTools/Contour/removeContourFromElement.ts +2 -0
- package/src/tools/displayTools/Contour/{addContourSetsToElement.ts → vtkContour/addContourSetsToElement.ts} +1 -1
- package/src/tools/displayTools/Contour/{addOrUpdateContourSets.ts → vtkContour/addOrUpdateVTKContourSets.ts} +4 -4
- package/src/tools/displayTools/Contour/{updateContourSets.ts → vtkContour/updateVTKContourSets.ts} +2 -2
- package/src/tools/displayTools/Contour/{utils.ts → vtkContour/utils.ts} +1 -1
- package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +1 -1
- package/src/tools/displayTools/Labelmap/index.ts +10 -1
- package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +39 -4
- package/src/tools/displayTools/Labelmap/validateLabelmap.ts +71 -0
- package/src/tools/displayTools/Surface/addOrUpdateSurfaceToElement.ts +172 -0
- package/src/tools/displayTools/Surface/surfaceConfig.ts +12 -0
- package/src/tools/displayTools/Surface/surfaceDisplay.ts +275 -35
- package/src/tools/displayTools/registerDisplayToolsWorker.ts +34 -0
- package/src/tools/segmentation/BrushTool.ts +1 -1
- package/src/tools/segmentation/CircleScissorsTool.ts +3 -1
- package/src/tools/segmentation/PaintFillTool.ts +1 -1
- package/src/tools/segmentation/RectangleScissorsTool.ts +3 -1
- package/src/tools/segmentation/SegmentSelectTool.ts +70 -75
- package/src/tools/segmentation/SphereScissorsTool.ts +3 -1
- package/src/tools/segmentation/strategies/BrushStrategy.ts +12 -9
- package/src/tools/segmentation/strategies/compositions/regionFill.ts +1 -1
- package/src/tools/segmentation/strategies/fillSphere.ts +13 -5
- package/src/tools/segmentation/strategies/utils/getStrategyData.ts +30 -15
- package/src/tools/segmentation/strategies/utils/stackVolumeCheck.ts +24 -17
- package/src/types/ContourSegmentationAnnotation.ts +0 -1
- package/src/types/LabelmapTypes.ts +7 -1
- package/src/types/PolySeg.ts +7 -0
- package/src/types/SegmentationStateTypes.ts +20 -4
- package/src/types/SurfaceTypes.ts +1 -1
- package/src/types/index.ts +3 -0
- package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +4 -2
- package/src/utilities/contourSegmentation/addContourSegmentationAnnotation.ts +29 -0
- package/src/utilities/contourSegmentation/areSameSegment.ts +0 -2
- package/src/utilities/contourSegmentation/index.ts +2 -0
- package/src/utilities/contourSegmentation/removeContourSegmentationAnnotation.ts +30 -0
- package/src/utilities/contours/detectContourHoles.ts +2 -0
- package/src/utilities/contours/generateContourSetsFromLabelmap.ts +2 -2
- package/src/utilities/contours/getDeduplicatedVTKPolyDataPoints.ts +66 -0
- package/src/utilities/contours/index.ts +2 -2
- package/src/utilities/index.ts +4 -0
- package/src/utilities/math/polyline/containsPoint.ts +3 -1
- package/src/utilities/math/polyline/index.ts +2 -0
- package/src/utilities/math/polyline/isPointInsidePolyline3D.ts +56 -0
- package/src/utilities/segmentation/contourAndFindLargestBidirectional.ts +0 -1
- package/src/utilities/segmentation/getHoveredContourSegmentationAnnotation.ts +25 -0
- package/src/utilities/segmentation/getSegmentAtLabelmapBorder.ts +179 -0
- package/src/utilities/segmentation/getSegmentAtWorldPoint.ts +173 -0
- package/src/utilities/segmentation/getUniqueSegmentIndices.ts +76 -0
- package/src/utilities/segmentation/index.ts +8 -0
- package/src/utilities/triggerAnnotationRenderForToolGroupIds.ts +38 -0
- package/src/workers/clippingPlaneWorker.js +87 -0
- package/src/workers/polySegConverters.js +467 -0
- package/dist/cjs/tools/displayTools/Contour/addContourSetsToElement.js.map +0 -1
- package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.d.ts +0 -3
- package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.js +0 -14
- package/dist/cjs/tools/displayTools/Contour/addOrUpdateContourSets.js.map +0 -1
- package/dist/cjs/tools/displayTools/Contour/contourConfigCache.js.map +0 -1
- package/dist/cjs/tools/displayTools/Contour/updateContourSets.d.ts +0 -3
- package/dist/cjs/tools/displayTools/Contour/updateContourSets.js.map +0 -1
- package/dist/cjs/tools/displayTools/Contour/utils.js.map +0 -1
- package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.d.ts +0 -3
- package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js +0 -20
- package/dist/cjs/tools/displayTools/Labelmap/validateRepresentationData.js.map +0 -1
- package/dist/cjs/tools/displayTools/Surface/addSurfaceToElement.d.ts +0 -2
- package/dist/cjs/tools/displayTools/Surface/addSurfaceToElement.js +0 -84
- package/dist/cjs/tools/displayTools/Surface/addSurfaceToElement.js.map +0 -1
- package/dist/cjs/utilities/contours/mergePoints.d.ts +0 -8
- package/dist/cjs/utilities/contours/mergePoints.js +0 -77
- package/dist/cjs/utilities/contours/mergePoints.js.map +0 -1
- package/dist/esm/tools/displayTools/Contour/addContourSetsToElement.js.map +0 -1
- package/dist/esm/tools/displayTools/Contour/addOrUpdateContourSets.js.map +0 -1
- package/dist/esm/tools/displayTools/Contour/contourConfigCache.js.map +0 -1
- package/dist/esm/tools/displayTools/Contour/updateContourSets.js.map +0 -1
- package/dist/esm/tools/displayTools/Contour/utils.js.map +0 -1
- package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js +0 -18
- package/dist/esm/tools/displayTools/Labelmap/validateRepresentationData.js.map +0 -1
- package/dist/esm/tools/displayTools/Surface/addSurfaceToElement.js +0 -79
- package/dist/esm/tools/displayTools/Surface/addSurfaceToElement.js.map +0 -1
- package/dist/esm/utilities/contours/mergePoints.js +0 -73
- package/dist/esm/utilities/contours/mergePoints.js.map +0 -1
- package/dist/types/tools/displayTools/Contour/addContourSetsToElement.d.ts.map +0 -1
- package/dist/types/tools/displayTools/Contour/addOrUpdateContourSets.d.ts +0 -4
- package/dist/types/tools/displayTools/Contour/addOrUpdateContourSets.d.ts.map +0 -1
- package/dist/types/tools/displayTools/Contour/contourConfigCache.d.ts.map +0 -1
- package/dist/types/tools/displayTools/Contour/updateContourSets.d.ts +0 -4
- package/dist/types/tools/displayTools/Contour/updateContourSets.d.ts.map +0 -1
- package/dist/types/tools/displayTools/Contour/utils.d.ts.map +0 -1
- package/dist/types/tools/displayTools/Labelmap/validateRepresentationData.d.ts +0 -4
- package/dist/types/tools/displayTools/Labelmap/validateRepresentationData.d.ts.map +0 -1
- package/dist/types/tools/displayTools/Surface/addSurfaceToElement.d.ts +0 -3
- package/dist/types/tools/displayTools/Surface/addSurfaceToElement.d.ts.map +0 -1
- package/dist/types/utilities/contours/mergePoints.d.ts +0 -9
- package/dist/types/utilities/contours/mergePoints.d.ts.map +0 -1
- package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +0 -36
- package/src/tools/displayTools/Surface/addSurfaceToElement.ts +0 -115
- package/src/utilities/contours/mergePoints.ts +0 -108
- /package/dist/cjs/tools/displayTools/Contour/{addContourSetsToElement.js → vtkContour/addContourSetsToElement.js} +0 -0
- /package/dist/cjs/tools/displayTools/Contour/{contourConfigCache.d.ts → vtkContour/contourConfigCache.d.ts} +0 -0
- /package/dist/cjs/tools/displayTools/Contour/{contourConfigCache.js → vtkContour/contourConfigCache.js} +0 -0
- /package/dist/cjs/tools/displayTools/Contour/{utils.js → vtkContour/utils.js} +0 -0
- /package/dist/esm/tools/displayTools/Contour/{addContourSetsToElement.js → vtkContour/addContourSetsToElement.js} +0 -0
- /package/dist/esm/tools/displayTools/Contour/{contourConfigCache.js → vtkContour/contourConfigCache.js} +0 -0
- /package/dist/esm/tools/displayTools/Contour/{utils.js → vtkContour/utils.js} +0 -0
- /package/dist/types/tools/displayTools/Contour/{contourConfigCache.d.ts → vtkContour/contourConfigCache.d.ts} +0 -0
- /package/src/tools/displayTools/Contour/{contourConfigCache.ts → vtkContour/contourConfigCache.ts} +0 -0
|
@@ -23,9 +23,9 @@ import {
|
|
|
23
23
|
} from '../../../types/SegmentationStateTypes';
|
|
24
24
|
|
|
25
25
|
import addLabelmapToElement from './addLabelmapToElement';
|
|
26
|
-
|
|
27
26
|
import removeLabelmapFromElement from './removeLabelmapFromElement';
|
|
28
27
|
import { isVolumeSegmentation } from '../../segmentation/strategies/utils/stackVolumeCheck';
|
|
28
|
+
import { polySeg } from '../../../stateManagement/segmentation';
|
|
29
29
|
|
|
30
30
|
const MAX_NUMBER_COLORS = 255;
|
|
31
31
|
const labelMapConfigCache = new Map();
|
|
@@ -40,6 +40,8 @@ function getRepresentationRenderingConfig() {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
let polySegConversionInProgress = false;
|
|
44
|
+
|
|
43
45
|
/**
|
|
44
46
|
* For each viewport, and for each segmentation, set the segmentation for the viewport's enabled element
|
|
45
47
|
* Initializes the global and viewport specific state for the segmentation in the
|
|
@@ -136,11 +138,44 @@ async function render(
|
|
|
136
138
|
return;
|
|
137
139
|
}
|
|
138
140
|
|
|
139
|
-
|
|
140
|
-
segmentation.representationData[Representations.Labelmap];
|
|
141
|
+
let labelmapData = segmentation.representationData[Representations.Labelmap];
|
|
141
142
|
|
|
142
143
|
let actorEntry = viewport.getActor(segmentationRepresentationUID);
|
|
143
|
-
|
|
144
|
+
|
|
145
|
+
if (
|
|
146
|
+
!actorEntry &&
|
|
147
|
+
polySeg.canComputeRequestedRepresentation(segmentationRepresentationUID) &&
|
|
148
|
+
!polySegConversionInProgress
|
|
149
|
+
) {
|
|
150
|
+
// meaning the requested segmentation representationUID does not have
|
|
151
|
+
// labelmap data, BUT we might be able to request a conversion from
|
|
152
|
+
// another representation to labelmap
|
|
153
|
+
// we need to check if we can request polySEG to convert the other
|
|
154
|
+
// underlying representations to Surface
|
|
155
|
+
polySegConversionInProgress = true;
|
|
156
|
+
|
|
157
|
+
labelmapData = await polySeg.computeAndAddLabelmapRepresentation(
|
|
158
|
+
segmentationId,
|
|
159
|
+
{
|
|
160
|
+
segmentationRepresentationUID,
|
|
161
|
+
viewport,
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
if (!labelmapData) {
|
|
166
|
+
throw new Error(
|
|
167
|
+
`No labelmap data found for segmentationId ${segmentationId}.`
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
polySegConversionInProgress = false;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (!labelmapData) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (isVolumeSegmentation(labelmapData, viewport)) {
|
|
144
179
|
if (viewport instanceof StackViewport) {
|
|
145
180
|
return;
|
|
146
181
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { cache } from '@cornerstonejs/core';
|
|
2
|
+
import { SegmentationPublicInput } from '../../../types/SegmentationStateTypes';
|
|
3
|
+
import {
|
|
4
|
+
LabelmapSegmentationData,
|
|
5
|
+
LabelmapSegmentationDataStack,
|
|
6
|
+
LabelmapSegmentationDataVolume,
|
|
7
|
+
} from '../../../types/LabelmapTypes';
|
|
8
|
+
|
|
9
|
+
function validateRepresentationData(
|
|
10
|
+
segmentationRepresentationData: LabelmapSegmentationData
|
|
11
|
+
): void {
|
|
12
|
+
if ('volumeId' in segmentationRepresentationData) {
|
|
13
|
+
segmentationRepresentationData =
|
|
14
|
+
segmentationRepresentationData as LabelmapSegmentationDataVolume;
|
|
15
|
+
|
|
16
|
+
const cachedVolume = cache.getVolume(
|
|
17
|
+
segmentationRepresentationData.volumeId
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
if (!cachedVolume) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
`volumeId of ${segmentationRepresentationData.volumeId} not found in cache, you should load and cache volume before adding segmentation`
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
} else if ('imageIdReferenceMap' in segmentationRepresentationData) {
|
|
26
|
+
segmentationRepresentationData =
|
|
27
|
+
segmentationRepresentationData as LabelmapSegmentationDataStack;
|
|
28
|
+
|
|
29
|
+
if (!segmentationRepresentationData.imageIdReferenceMap) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
'The segmentationInput.representationData.imageIdReferenceMap is undefined, please provide a valid representationData.imageIdReferenceMap'
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
throw new Error(
|
|
36
|
+
'The segmentationInput.representationData is undefined, please provide a valid representationData'
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Validates the public segmentation input.
|
|
43
|
+
* Throws an error if the segmentation input is invalid.
|
|
44
|
+
*
|
|
45
|
+
* @param segmentationInput - The segmentation input to validate.
|
|
46
|
+
*/
|
|
47
|
+
export function validatePublic(
|
|
48
|
+
segmentationInput: SegmentationPublicInput
|
|
49
|
+
): void {
|
|
50
|
+
if (!segmentationInput.representation.data) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
'The segmentationInput.representationData.data is undefined, please provide a valid representationData.data'
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const representationData = segmentationInput.representation
|
|
57
|
+
.data as LabelmapSegmentationData;
|
|
58
|
+
|
|
59
|
+
validateRepresentationData(representationData);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Validates the given segmentation representation data.
|
|
64
|
+
*
|
|
65
|
+
* @param segmentationRepresentationData The segmentation representation data to validate.
|
|
66
|
+
*/
|
|
67
|
+
export function validate(
|
|
68
|
+
segmentationRepresentationData: LabelmapSegmentationData
|
|
69
|
+
) {
|
|
70
|
+
validateRepresentationData(segmentationRepresentationData);
|
|
71
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getEnabledElement,
|
|
3
|
+
Enums,
|
|
4
|
+
VolumeViewport3D,
|
|
5
|
+
} from '@cornerstonejs/core';
|
|
6
|
+
import type { Types } from '@cornerstonejs/core';
|
|
7
|
+
import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
|
|
8
|
+
import vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
|
|
9
|
+
import vtkClipClosedSurface from '@kitware/vtk.js/Filters/General/ClipClosedSurface';
|
|
10
|
+
import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
|
|
11
|
+
import vtkCellArray from '@kitware/vtk.js/Common/Core/CellArray';
|
|
12
|
+
import {
|
|
13
|
+
generateCacheId,
|
|
14
|
+
getOrCreatePolyData,
|
|
15
|
+
getSurfaceActorUID,
|
|
16
|
+
} from './surfaceDisplay';
|
|
17
|
+
|
|
18
|
+
function addOrUpdateSurfaceToElement(
|
|
19
|
+
element: HTMLDivElement,
|
|
20
|
+
surface: Types.ISurface,
|
|
21
|
+
segmentationRepresentationUID: string
|
|
22
|
+
): void {
|
|
23
|
+
const actorUID = getSurfaceActorUID(
|
|
24
|
+
segmentationRepresentationUID,
|
|
25
|
+
surface.id
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const enabledElement = getEnabledElement(element);
|
|
29
|
+
const { viewport } = enabledElement;
|
|
30
|
+
const surfaceActor = viewport.getActor(actorUID)?.actor as Types.Actor;
|
|
31
|
+
|
|
32
|
+
if (surfaceActor) {
|
|
33
|
+
// we already have an actor for this surface, we just need to update it
|
|
34
|
+
|
|
35
|
+
// Todo: figure out if the surface configuration has changed
|
|
36
|
+
|
|
37
|
+
const surfaceMapper = surfaceActor.getMapper();
|
|
38
|
+
const currentPolyData = surfaceMapper.getInputData();
|
|
39
|
+
|
|
40
|
+
// check if the new data is the same as the old data by checking the
|
|
41
|
+
// length of the points and the length of the polys
|
|
42
|
+
|
|
43
|
+
const newPoints = surface.getPoints();
|
|
44
|
+
const newPolys = surface.getPolys();
|
|
45
|
+
|
|
46
|
+
const currentPoints = currentPolyData.getPoints().getData();
|
|
47
|
+
const currentPolys = currentPolyData.getPolys().getData();
|
|
48
|
+
|
|
49
|
+
if (
|
|
50
|
+
newPoints.length === currentPoints.length &&
|
|
51
|
+
newPolys.length === currentPolys.length
|
|
52
|
+
) {
|
|
53
|
+
// the data is the same, we don't need to update the actor
|
|
54
|
+
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const polyData = vtkPolyData.newInstance();
|
|
59
|
+
polyData.getPoints().setData(newPoints, 3);
|
|
60
|
+
|
|
61
|
+
const triangles = vtkCellArray.newInstance({
|
|
62
|
+
values: Float32Array.from(newPolys),
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
polyData.setPolys(triangles);
|
|
66
|
+
|
|
67
|
+
surfaceMapper.setInputData(polyData);
|
|
68
|
+
surfaceMapper.modified();
|
|
69
|
+
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
viewport.getRenderer().resetCameraClippingRange();
|
|
72
|
+
}, 0);
|
|
73
|
+
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Default to true since we are setting a new segmentation, however,
|
|
78
|
+
// in the event listener, we will make other segmentations visible/invisible
|
|
79
|
+
// based on the config
|
|
80
|
+
const points = surface.getPoints();
|
|
81
|
+
const polys = surface.getPolys();
|
|
82
|
+
const color = surface.getColor();
|
|
83
|
+
|
|
84
|
+
const surfacePolyData = vtkPolyData.newInstance();
|
|
85
|
+
surfacePolyData.getPoints().setData(points, 3);
|
|
86
|
+
|
|
87
|
+
const triangles = vtkCellArray.newInstance({
|
|
88
|
+
values: Float32Array.from(polys),
|
|
89
|
+
});
|
|
90
|
+
surfacePolyData.setPolys(triangles);
|
|
91
|
+
|
|
92
|
+
const mapper = vtkMapper.newInstance({});
|
|
93
|
+
|
|
94
|
+
let clippingFilter;
|
|
95
|
+
if (!(viewport instanceof VolumeViewport3D)) {
|
|
96
|
+
clippingFilter = vtkClipClosedSurface.newInstance({
|
|
97
|
+
clippingPlanes: [],
|
|
98
|
+
activePlaneId: 2,
|
|
99
|
+
passPointData: false,
|
|
100
|
+
});
|
|
101
|
+
clippingFilter.setInputData(surfacePolyData);
|
|
102
|
+
clippingFilter.setGenerateOutline(true);
|
|
103
|
+
clippingFilter.setGenerateFaces(false);
|
|
104
|
+
clippingFilter.update();
|
|
105
|
+
const filteredData = clippingFilter.getOutputData();
|
|
106
|
+
mapper.setInputData(filteredData);
|
|
107
|
+
|
|
108
|
+
const evt = {
|
|
109
|
+
detail: {
|
|
110
|
+
actorEntry: {
|
|
111
|
+
actor: {
|
|
112
|
+
getMapper: () => mapper,
|
|
113
|
+
},
|
|
114
|
+
clippingFilter,
|
|
115
|
+
uid: actorUID,
|
|
116
|
+
},
|
|
117
|
+
// @ts-ignore
|
|
118
|
+
vtkPlanes: viewport.getClippingPlanesForActor?.(),
|
|
119
|
+
viewport,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
updateSurfacePlanes(evt);
|
|
124
|
+
|
|
125
|
+
element.addEventListener(
|
|
126
|
+
Enums.Events.CLIPPING_PLANES_UPDATED,
|
|
127
|
+
updateSurfacePlanes
|
|
128
|
+
);
|
|
129
|
+
} else {
|
|
130
|
+
mapper.setInputData(surfacePolyData);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const actor = vtkActor.newInstance();
|
|
134
|
+
actor.setMapper(mapper);
|
|
135
|
+
|
|
136
|
+
// sets the color of the surface actor
|
|
137
|
+
actor.getProperty().setColor(color[0] / 255, color[1] / 255, color[2] / 255);
|
|
138
|
+
|
|
139
|
+
// set line width
|
|
140
|
+
// Todo: make this configurable
|
|
141
|
+
actor.getProperty().setLineWidth(2);
|
|
142
|
+
|
|
143
|
+
viewport.addActor({
|
|
144
|
+
actor,
|
|
145
|
+
uid: actorUID,
|
|
146
|
+
clippingFilter,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
viewport.resetCamera();
|
|
150
|
+
|
|
151
|
+
setTimeout(() => {
|
|
152
|
+
viewport.getRenderer().resetCameraClippingRange();
|
|
153
|
+
}, 0);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Updates the clipping planes of a surface and caches the resulting poly data
|
|
158
|
+
*/
|
|
159
|
+
function updateSurfacePlanes(evt) {
|
|
160
|
+
const { actorEntry, vtkPlanes, viewport } = evt.detail;
|
|
161
|
+
if (!actorEntry?.clippingFilter) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const sliceIndex = viewport.getSliceIndex();
|
|
165
|
+
const mapper = actorEntry.actor.getMapper();
|
|
166
|
+
const { viewPlaneNormal } = viewport.getCamera();
|
|
167
|
+
const cacheId = generateCacheId(viewport, viewPlaneNormal, sliceIndex);
|
|
168
|
+
const polyData = getOrCreatePolyData(actorEntry, cacheId, vtkPlanes);
|
|
169
|
+
mapper.setInputData(polyData);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export default addOrUpdateSurfaceToElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SurfaceRenderingConfig } from '../../../types/SurfaceTypes';
|
|
2
|
+
|
|
3
|
+
const defaultSurfaceConfig: SurfaceRenderingConfig = {
|
|
4
|
+
renderFill: true,
|
|
5
|
+
fillAlpha: 1,
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
function getDefaultSurfaceConfig(): SurfaceRenderingConfig {
|
|
9
|
+
return defaultSurfaceConfig;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default getDefaultSurfaceConfig;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
|
|
2
|
+
import vtkCellArray from '@kitware/vtk.js/Common/Core/CellArray';
|
|
1
3
|
import {
|
|
2
4
|
cache,
|
|
3
5
|
getEnabledElementByIds,
|
|
4
6
|
Types,
|
|
5
7
|
Enums,
|
|
8
|
+
VolumeViewport,
|
|
9
|
+
getWebWorkerManager,
|
|
10
|
+
eventTarget,
|
|
11
|
+
triggerEvent,
|
|
12
|
+
utilities,
|
|
6
13
|
} from '@cornerstonejs/core';
|
|
7
14
|
|
|
8
15
|
import * as SegmentationState from '../../../stateManagement/segmentation/segmentationState';
|
|
@@ -12,9 +19,24 @@ import {
|
|
|
12
19
|
SegmentationRepresentationConfig,
|
|
13
20
|
ToolGroupSpecificRepresentation,
|
|
14
21
|
} from '../../../types/SegmentationStateTypes';
|
|
22
|
+
import { registerDisplayToolsWorker } from '../registerDisplayToolsWorker';
|
|
15
23
|
|
|
16
24
|
import removeSurfaceFromElement from './removeSurfaceFromElement';
|
|
17
|
-
import
|
|
25
|
+
import addOrUpdateSurfaceToElement from './addOrUpdateSurfaceToElement';
|
|
26
|
+
import { polySeg } from '../../../stateManagement/segmentation';
|
|
27
|
+
import { pointToString } from '../../../utilities';
|
|
28
|
+
import { WorkerTypes } from '../../../enums';
|
|
29
|
+
const workerManager = getWebWorkerManager();
|
|
30
|
+
|
|
31
|
+
const polyDataCache = new Map();
|
|
32
|
+
const currentViewportNormal = new Map();
|
|
33
|
+
|
|
34
|
+
const triggerWorkerProgress = (eventTarget, progress) => {
|
|
35
|
+
triggerEvent(eventTarget, Enums.Events.WEB_WORKER_PROGRESS, {
|
|
36
|
+
progress,
|
|
37
|
+
type: WorkerTypes.DISPLAY_TOOL_CLIP_SURFACE,
|
|
38
|
+
});
|
|
39
|
+
};
|
|
18
40
|
|
|
19
41
|
/**
|
|
20
42
|
* It removes a segmentation representation from the tool group's viewports and
|
|
@@ -72,56 +94,91 @@ async function render(
|
|
|
72
94
|
} = representation;
|
|
73
95
|
|
|
74
96
|
const segmentation = SegmentationState.getSegmentation(segmentationId);
|
|
75
|
-
const SurfaceData = segmentation.representationData[Representations.Surface];
|
|
76
|
-
const { geometryId } = SurfaceData;
|
|
77
97
|
|
|
78
|
-
if (!
|
|
79
|
-
|
|
80
|
-
`No Surfaces found for segmentationId ${segmentationId}. Skipping render.`
|
|
81
|
-
);
|
|
98
|
+
if (!segmentation) {
|
|
99
|
+
return;
|
|
82
100
|
}
|
|
83
101
|
|
|
84
|
-
|
|
85
|
-
if (!geometry) {
|
|
86
|
-
throw new Error(`No Surfaces found for geometryId ${geometryId}`);
|
|
87
|
-
}
|
|
102
|
+
let SurfaceData = segmentation.representationData[Representations.Surface];
|
|
88
103
|
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
104
|
+
if (
|
|
105
|
+
!SurfaceData &&
|
|
106
|
+
polySeg.canComputeRequestedRepresentation(segmentationRepresentationUID)
|
|
107
|
+
) {
|
|
108
|
+
// we need to check if we can request polySEG to convert the other
|
|
109
|
+
// underlying representations to Surface
|
|
110
|
+
SurfaceData = await polySeg.computeAndAddSurfaceRepresentation(
|
|
111
|
+
segmentationId,
|
|
112
|
+
{
|
|
113
|
+
segmentationRepresentationUID,
|
|
114
|
+
}
|
|
93
115
|
);
|
|
116
|
+
|
|
117
|
+
if (!SurfaceData) {
|
|
118
|
+
throw new Error(
|
|
119
|
+
`No Surface data found for segmentationId ${segmentationId}.`
|
|
120
|
+
);
|
|
121
|
+
}
|
|
94
122
|
}
|
|
95
123
|
|
|
96
|
-
|
|
124
|
+
const { geometryIds } = SurfaceData;
|
|
125
|
+
|
|
126
|
+
if (!geometryIds?.size) {
|
|
97
127
|
console.warn(
|
|
98
|
-
`No Surfaces found for
|
|
128
|
+
`No Surfaces found for segmentationId ${segmentationId}. Skipping render.`
|
|
99
129
|
);
|
|
100
|
-
return;
|
|
101
130
|
}
|
|
102
131
|
|
|
103
|
-
const
|
|
132
|
+
const colorLUT = SegmentationState.getColorLUT(colorLUTIndex);
|
|
104
133
|
|
|
105
|
-
const
|
|
106
|
-
|
|
134
|
+
const surfaces = [];
|
|
135
|
+
geometryIds.forEach((geometryId, segmentIndex) => {
|
|
136
|
+
const geometry = cache.getGeometry(geometryId);
|
|
137
|
+
if (!geometry) {
|
|
138
|
+
throw new Error(`No Surfaces found for geometryId ${geometryId}`);
|
|
139
|
+
}
|
|
107
140
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
141
|
+
if (geometry.type !== Enums.GeometryType.SURFACE) {
|
|
142
|
+
// Todo: later we can support converting other geometries to Surfaces
|
|
143
|
+
throw new Error(
|
|
144
|
+
`Geometry type ${geometry.type} not supported for rendering.`
|
|
145
|
+
);
|
|
146
|
+
}
|
|
111
147
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const actorEntry = viewport.getActor(actorUID);
|
|
148
|
+
if (!geometry.data) {
|
|
149
|
+
console.warn(
|
|
150
|
+
`No Surfaces found for geometryId ${geometryId}. Skipping render.`
|
|
151
|
+
);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
119
154
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
155
|
+
const surface = geometry.data as Types.ISurface;
|
|
156
|
+
|
|
157
|
+
const color = colorLUT[segmentIndex];
|
|
158
|
+
surface.setColor(color.slice(0, 3) as Types.Point3);
|
|
159
|
+
|
|
160
|
+
addOrUpdateSurfaceToElement(
|
|
161
|
+
viewport.element,
|
|
162
|
+
surface as Types.ISurface,
|
|
163
|
+
segmentationRepresentationUID
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
surfaces.push(surface);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
if (viewport instanceof VolumeViewport) {
|
|
170
|
+
// const { viewPlaneNormal } = viewport.getCamera();
|
|
171
|
+
// currentViewportNormal.set(surface.id, structuredClone(viewPlaneNormal));
|
|
172
|
+
// if the viewport is not 3D means we should calculate
|
|
173
|
+
// the clipping planes for the surface and cache the results
|
|
174
|
+
generateAndCacheClippedSurfaces(
|
|
175
|
+
surfaces,
|
|
176
|
+
viewport,
|
|
177
|
+
segmentationRepresentationUID
|
|
178
|
+
);
|
|
124
179
|
}
|
|
180
|
+
|
|
181
|
+
viewport.render();
|
|
125
182
|
}
|
|
126
183
|
|
|
127
184
|
function _removeSurfaceFromToolGroupViewports(
|
|
@@ -149,7 +206,190 @@ function _removeSurfaceFromToolGroupViewports(
|
|
|
149
206
|
}
|
|
150
207
|
}
|
|
151
208
|
|
|
209
|
+
async function generateAndCacheClippedSurfaces(
|
|
210
|
+
surfaces: Types.ISurface[],
|
|
211
|
+
viewport: Types.IVolumeViewport,
|
|
212
|
+
segmentationRepresentationUID: string
|
|
213
|
+
) {
|
|
214
|
+
registerDisplayToolsWorker();
|
|
215
|
+
|
|
216
|
+
// All planes is an array of planes pairs for each slice, so we should loop over them and
|
|
217
|
+
// add the planes to the clipping filter and cache the results for that slice
|
|
218
|
+
|
|
219
|
+
// Fix these ts ignores
|
|
220
|
+
// @ts-ignore
|
|
221
|
+
const planesInfo = viewport.getSlicesClippingPlanes?.();
|
|
222
|
+
|
|
223
|
+
// @ts-ignore
|
|
224
|
+
const currentSliceIndex = viewport.getSliceIndex();
|
|
225
|
+
|
|
226
|
+
// Reorder planesInfo based on proximity to currentSliceIndex
|
|
227
|
+
planesInfo.sort((a, b) => {
|
|
228
|
+
const diffA = Math.abs(a.sliceIndex - currentSliceIndex);
|
|
229
|
+
const diffB = Math.abs(b.sliceIndex - currentSliceIndex);
|
|
230
|
+
return diffA - diffB;
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
const pointsAndPolys = surfaces.map((surface) => {
|
|
234
|
+
const id = surface.id;
|
|
235
|
+
const points = surface.getPoints();
|
|
236
|
+
const polys = surface.getPolys();
|
|
237
|
+
|
|
238
|
+
return { id, points, polys };
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
const camera = viewport.getCamera();
|
|
242
|
+
|
|
243
|
+
function cameraModifiedCallback(evt: Types.EventTypes.CameraModifiedEvent) {
|
|
244
|
+
const { camera } = evt.detail;
|
|
245
|
+
const { viewPlaneNormal } = camera;
|
|
246
|
+
|
|
247
|
+
// Note: I think choosing one of the surfaces to see
|
|
248
|
+
// if the viewPlaneNormal is the same for all surfaces is ok enough
|
|
249
|
+
// to decide if we should recompute the clipping planes
|
|
250
|
+
const surface1 = surfaces[0];
|
|
251
|
+
|
|
252
|
+
if (
|
|
253
|
+
utilities.isEqual(viewPlaneNormal, currentViewportNormal.get(surface1.id))
|
|
254
|
+
) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
currentViewportNormal.set(surface1.id, viewPlaneNormal);
|
|
259
|
+
|
|
260
|
+
workerManager.terminate('displayTools');
|
|
261
|
+
|
|
262
|
+
setTimeout(() => {
|
|
263
|
+
generateAndCacheClippedSurfaces(
|
|
264
|
+
surfaces,
|
|
265
|
+
viewport,
|
|
266
|
+
segmentationRepresentationUID
|
|
267
|
+
);
|
|
268
|
+
}, 0);
|
|
269
|
+
|
|
270
|
+
viewport.render();
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Remove the existing event listener
|
|
274
|
+
viewport.element.removeEventListener(
|
|
275
|
+
Enums.Events.CAMERA_MODIFIED,
|
|
276
|
+
cameraModifiedCallback as EventListener
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
// Add the event listener
|
|
280
|
+
viewport.element.addEventListener(
|
|
281
|
+
Enums.Events.CAMERA_MODIFIED,
|
|
282
|
+
cameraModifiedCallback as EventListener
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
triggerWorkerProgress(eventTarget, 0);
|
|
286
|
+
|
|
287
|
+
await workerManager
|
|
288
|
+
.executeTask(
|
|
289
|
+
'displayTools',
|
|
290
|
+
'clipSurfaceWithPlanes',
|
|
291
|
+
{
|
|
292
|
+
planesInfo,
|
|
293
|
+
pointsAndPolys,
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
callbacks: [
|
|
297
|
+
// progress callback
|
|
298
|
+
({ progress }) => {
|
|
299
|
+
triggerWorkerProgress(eventTarget, progress);
|
|
300
|
+
},
|
|
301
|
+
// update cache callback
|
|
302
|
+
({ sliceIndex, polyDataResults }) => {
|
|
303
|
+
polyDataResults.forEach((polyDataResult, surfaceId) => {
|
|
304
|
+
const actorUID = `${segmentationRepresentationUID}_${surfaceId}`;
|
|
305
|
+
const cacheId = generateCacheId(
|
|
306
|
+
viewport,
|
|
307
|
+
camera.viewPlaneNormal,
|
|
308
|
+
sliceIndex
|
|
309
|
+
);
|
|
310
|
+
updatePolyDataCache(actorUID, cacheId, polyDataResult);
|
|
311
|
+
});
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
}
|
|
315
|
+
)
|
|
316
|
+
.catch((error) => {
|
|
317
|
+
console.error(error);
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
triggerWorkerProgress(eventTarget, 100);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export function getSurfaceActorUID(
|
|
324
|
+
segmentationRepresentationUID: string,
|
|
325
|
+
surfaceId: string
|
|
326
|
+
) {
|
|
327
|
+
return `${segmentationRepresentationUID}_${surfaceId}`;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Helper function to generate a cache ID
|
|
331
|
+
export function generateCacheId(viewport, viewPlaneNormal, sliceIndex) {
|
|
332
|
+
return `${viewport.id}-${pointToString(viewPlaneNormal)}-${sliceIndex}`;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Helper function to get or create PolyData
|
|
336
|
+
export function getOrCreatePolyData(actorEntry, cacheId, vtkPlanes) {
|
|
337
|
+
let actorCache = polyDataCache.get(actorEntry.uid);
|
|
338
|
+
if (!actorCache) {
|
|
339
|
+
actorCache = new Map();
|
|
340
|
+
polyDataCache.set(actorEntry.uid, actorCache);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
let polyData = actorCache.get(cacheId);
|
|
344
|
+
if (!polyData) {
|
|
345
|
+
const clippingFilter = actorEntry.clippingFilter;
|
|
346
|
+
clippingFilter.setClippingPlanes(vtkPlanes);
|
|
347
|
+
try {
|
|
348
|
+
clippingFilter.update();
|
|
349
|
+
polyData = clippingFilter.getOutputData();
|
|
350
|
+
actorCache.set(cacheId, polyData);
|
|
351
|
+
} catch (e) {
|
|
352
|
+
console.error('Error clipping surface', e);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return polyData;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Helper function to update PolyData cache
|
|
359
|
+
export function updatePolyDataCache(actorUID, cacheId, polyDataResult) {
|
|
360
|
+
const { points, lines } = polyDataResult;
|
|
361
|
+
const polyData = vtkPolyData.newInstance();
|
|
362
|
+
polyData.getPoints().setData(points, 3);
|
|
363
|
+
const linesArray = vtkCellArray.newInstance({
|
|
364
|
+
values: Int16Array.from(lines),
|
|
365
|
+
});
|
|
366
|
+
polyData.setLines(linesArray);
|
|
367
|
+
|
|
368
|
+
let actorCache = polyDataCache.get(actorUID);
|
|
369
|
+
if (!actorCache) {
|
|
370
|
+
actorCache = new Map();
|
|
371
|
+
polyDataCache.set(actorUID, actorCache);
|
|
372
|
+
}
|
|
373
|
+
actorCache.set(cacheId, polyData);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Helper function to get and sort planes info based on slice index
|
|
377
|
+
export function getSortedPlanesInfo(viewport) {
|
|
378
|
+
const planesInfo = viewport.getSlicesClippingPlanes?.();
|
|
379
|
+
const currentSliceIndex = viewport.getSliceIndex();
|
|
380
|
+
|
|
381
|
+
// Sort planesInfo based on proximity to currentSliceIndex
|
|
382
|
+
planesInfo.sort((a, b) => {
|
|
383
|
+
const diffA = Math.abs(a.sliceIndex - currentSliceIndex);
|
|
384
|
+
const diffB = Math.abs(b.sliceIndex - currentSliceIndex);
|
|
385
|
+
return diffA - diffB;
|
|
386
|
+
});
|
|
387
|
+
return planesInfo;
|
|
388
|
+
}
|
|
389
|
+
|
|
152
390
|
export default {
|
|
153
391
|
render,
|
|
154
392
|
removeSegmentationRepresentation,
|
|
155
393
|
};
|
|
394
|
+
|
|
395
|
+
export { render, removeSegmentationRepresentation, polyDataCache };
|