@cornerstonejs/tools 1.36.3 → 1.37.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/drawingSvg/drawEllipse.js +1 -1
- package/dist/cjs/drawingSvg/drawEllipse.js.map +1 -1
- package/dist/cjs/drawingSvg/drawEllipseByCoordinates.js +2 -3
- package/dist/cjs/drawingSvg/drawEllipseByCoordinates.js.map +1 -1
- package/dist/cjs/enums/StrategyCallbacks.d.ts +13 -0
- package/dist/cjs/enums/StrategyCallbacks.js +17 -0
- package/dist/cjs/enums/StrategyCallbacks.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/eventDispatchers/keyboardEventHandlers/keyDown.js +17 -7
- package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
- package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +4 -1
- package/dist/cjs/eventDispatchers/shared/getActiveToolForKeyboardEvent.js.map +1 -1
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts +3 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +33 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js.map +1 -0
- package/dist/cjs/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js +8 -1
- package/dist/cjs/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.js +1 -2
- package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
- package/dist/cjs/tools/base/BaseTool.d.ts +2 -0
- package/dist/cjs/tools/base/BaseTool.js +7 -1
- package/dist/cjs/tools/base/BaseTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/BrushTool.d.ts +45 -3
- package/dist/cjs/tools/segmentation/BrushTool.js +197 -71
- package/dist/cjs/tools/segmentation/BrushTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/CircleScissorsTool.js +3 -1
- package/dist/cjs/tools/segmentation/CircleScissorsTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/SphereScissorsTool.js +3 -0
- package/dist/cjs/tools/segmentation/SphereScissorsTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/BrushStrategy.d.ts +87 -0
- package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js +137 -0
- package/dist/cjs/tools/segmentation/strategies/BrushStrategy.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts +6 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/determineSegmentIndex.js +53 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/determineSegmentIndex.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts +6 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/dynamicThreshold.js +41 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/dynamicThreshold.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/erase.d.ts +5 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/erase.js +12 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/erase.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/index.d.ts +35 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/index.js +24 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/index.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/islandRemoval.d.ts +5 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/islandRemoval.js +129 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/islandRemoval.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/preview.d.ts +8 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/preview.js +84 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/preview.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.d.ts +5 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js +27 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/regionFill.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/setValue.d.ts +8 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/setValue.js +33 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/setValue.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/threshold.d.ts +5 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/threshold.js +24 -0
- package/dist/cjs/tools/segmentation/strategies/compositions/threshold.js.map +1 -0
- package/dist/cjs/tools/segmentation/strategies/eraseCircle.d.ts +2 -7
- package/dist/cjs/tools/segmentation/strategies/eraseCircle.js +7 -4
- package/dist/cjs/tools/segmentation/strategies/eraseCircle.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/eraseSphere.d.ts +2 -7
- package/dist/cjs/tools/segmentation/strategies/eraseSphere.js +7 -6
- package/dist/cjs/tools/segmentation/strategies/eraseSphere.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillCircle.d.ts +13 -8
- package/dist/cjs/tools/segmentation/strategies/fillCircle.js +68 -90
- package/dist/cjs/tools/segmentation/strategies/fillCircle.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillRectangle.js +3 -9
- package/dist/cjs/tools/segmentation/strategies/fillRectangle.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/fillSphere.d.ts +6 -9
- package/dist/cjs/tools/segmentation/strategies/fillSphere.js +53 -64
- package/dist/cjs/tools/segmentation/strategies/fillSphere.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.d.ts +3 -0
- package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js +6 -0
- package/dist/cjs/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
- package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +2 -2
- package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js +2 -2
- package/dist/cjs/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
- package/dist/cjs/types/BoundsIJK.d.ts +1 -1
- package/dist/cjs/types/FloodFillTypes.d.ts +4 -4
- package/dist/cjs/types/LabelmapToolOperationData.d.ts +7 -2
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/utilities/math/ellipse/getCanvasEllipseCorners.d.ts +2 -3
- package/dist/cjs/utilities/math/ellipse/index.d.ts +2 -2
- package/dist/cjs/utilities/math/ellipse/index.js +26 -2
- package/dist/cjs/utilities/math/ellipse/index.js.map +1 -1
- package/dist/cjs/utilities/math/ellipse/pointInEllipse.d.ts +4 -1
- package/dist/cjs/utilities/math/ellipse/pointInEllipse.js +30 -17
- package/dist/cjs/utilities/math/ellipse/pointInEllipse.js.map +1 -1
- package/dist/cjs/utilities/math/sphere/pointInSphere.d.ts +1 -0
- package/dist/cjs/utilities/math/sphere/pointInSphere.js +2 -1
- package/dist/cjs/utilities/math/sphere/pointInSphere.js.map +1 -1
- package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.d.ts +1 -1
- package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.js +5 -5
- package/dist/cjs/utilities/segmentation/brushThresholdForToolGroup.js.map +1 -1
- package/dist/esm/drawingSvg/drawEllipse.js +1 -1
- package/dist/esm/drawingSvg/drawEllipse.js.map +1 -1
- package/dist/esm/drawingSvg/drawEllipseByCoordinates.js +2 -3
- package/dist/esm/drawingSvg/drawEllipseByCoordinates.js.map +1 -1
- package/dist/esm/enums/StrategyCallbacks.js +15 -0
- package/dist/esm/enums/StrategyCallbacks.js.map +1 -0
- package/dist/esm/enums/index.js +2 -1
- package/dist/esm/enums/index.js.map +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +17 -7
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
- package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js +4 -1
- package/dist/esm/eventDispatchers/shared/getActiveToolForKeyboardEvent.js.map +1 -1
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js +29 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.js.map +1 -0
- package/dist/esm/eventDispatchers/shared/getToolsWithActionsForMouseEvent.js.map +1 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js +8 -1
- package/dist/esm/stateManagement/segmentation/config/segmentationColor.js.map +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +1 -2
- package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
- package/dist/esm/tools/base/BaseTool.js +5 -1
- package/dist/esm/tools/base/BaseTool.js.map +1 -1
- package/dist/esm/tools/segmentation/BrushTool.js +208 -87
- package/dist/esm/tools/segmentation/BrushTool.js.map +1 -1
- package/dist/esm/tools/segmentation/CircleScissorsTool.js +3 -0
- package/dist/esm/tools/segmentation/CircleScissorsTool.js.map +1 -1
- package/dist/esm/tools/segmentation/SphereScissorsTool.js +3 -0
- package/dist/esm/tools/segmentation/SphereScissorsTool.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/BrushStrategy.js +136 -0
- package/dist/esm/tools/segmentation/strategies/BrushStrategy.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js +48 -0
- package/dist/esm/tools/segmentation/strategies/compositions/determineSegmentIndex.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js +35 -0
- package/dist/esm/tools/segmentation/strategies/compositions/dynamicThreshold.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/erase.js +7 -0
- package/dist/esm/tools/segmentation/strategies/compositions/erase.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/index.js +19 -0
- package/dist/esm/tools/segmentation/strategies/compositions/index.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/islandRemoval.js +124 -0
- package/dist/esm/tools/segmentation/strategies/compositions/islandRemoval.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/preview.js +77 -0
- package/dist/esm/tools/segmentation/strategies/compositions/preview.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js +21 -0
- package/dist/esm/tools/segmentation/strategies/compositions/regionFill.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/setValue.js +28 -0
- package/dist/esm/tools/segmentation/strategies/compositions/setValue.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/compositions/threshold.js +19 -0
- package/dist/esm/tools/segmentation/strategies/compositions/threshold.js.map +1 -0
- package/dist/esm/tools/segmentation/strategies/eraseCircle.js +6 -8
- package/dist/esm/tools/segmentation/strategies/eraseCircle.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/eraseSphere.js +6 -7
- package/dist/esm/tools/segmentation/strategies/eraseSphere.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/fillCircle.js +64 -88
- package/dist/esm/tools/segmentation/strategies/fillCircle.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/fillRectangle.js +3 -9
- package/dist/esm/tools/segmentation/strategies/fillRectangle.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/fillSphere.js +53 -64
- package/dist/esm/tools/segmentation/strategies/fillSphere.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js +7 -1
- package/dist/esm/tools/segmentation/strategies/utils/getStrategyData.js.map +1 -1
- package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js +2 -2
- package/dist/esm/tools/segmentation/strategies/utils/isWithinThreshold.js.map +1 -1
- package/dist/esm/utilities/math/ellipse/index.js +2 -2
- package/dist/esm/utilities/math/ellipse/index.js.map +1 -1
- package/dist/esm/utilities/math/ellipse/pointInEllipse.js +28 -16
- package/dist/esm/utilities/math/ellipse/pointInEllipse.js.map +1 -1
- package/dist/esm/utilities/math/sphere/pointInSphere.js +2 -1
- package/dist/esm/utilities/math/sphere/pointInSphere.js.map +1 -1
- package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js +11 -5
- package/dist/esm/utilities/segmentation/brushThresholdForToolGroup.js.map +1 -1
- package/dist/types/drawingSvg/drawEllipseByCoordinates.d.ts.map +1 -1
- package/dist/types/enums/StrategyCallbacks.d.ts +14 -0
- package/dist/types/enums/StrategyCallbacks.d.ts.map +1 -0
- package/dist/types/enums/index.d.ts +2 -1
- package/dist/types/eventDispatchers/keyboardEventHandlers/keyDown.d.ts.map +1 -1
- package/dist/types/eventDispatchers/shared/getActiveToolForKeyboardEvent.d.ts.map +1 -1
- package/dist/types/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts +4 -0
- package/dist/types/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.d.ts.map +1 -0
- package/dist/types/eventDispatchers/shared/getToolsWithActionsForMouseEvent.d.ts.map +1 -1
- package/dist/types/stateManagement/segmentation/config/segmentationColor.d.ts.map +1 -1
- package/dist/types/tools/annotation/EllipticalROITool.d.ts.map +1 -1
- package/dist/types/tools/base/AnnotationTool.d.ts.map +1 -1
- package/dist/types/tools/base/BaseTool.d.ts +2 -0
- package/dist/types/tools/base/BaseTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/BrushTool.d.ts +45 -3
- package/dist/types/tools/segmentation/BrushTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/CircleScissorsTool.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 +88 -0
- package/dist/types/tools/segmentation/strategies/BrushStrategy.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts +7 -0
- package/dist/types/tools/segmentation/strategies/compositions/determineSegmentIndex.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts +7 -0
- package/dist/types/tools/segmentation/strategies/compositions/dynamicThreshold.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/erase.d.ts +6 -0
- package/dist/types/tools/segmentation/strategies/compositions/erase.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/index.d.ts +36 -0
- package/dist/types/tools/segmentation/strategies/compositions/index.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/islandRemoval.d.ts +6 -0
- package/dist/types/tools/segmentation/strategies/compositions/islandRemoval.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/preview.d.ts +9 -0
- package/dist/types/tools/segmentation/strategies/compositions/preview.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/regionFill.d.ts +6 -0
- package/dist/types/tools/segmentation/strategies/compositions/regionFill.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/setValue.d.ts +9 -0
- package/dist/types/tools/segmentation/strategies/compositions/setValue.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/compositions/threshold.d.ts +6 -0
- package/dist/types/tools/segmentation/strategies/compositions/threshold.d.ts.map +1 -0
- package/dist/types/tools/segmentation/strategies/eraseCircle.d.ts +2 -7
- package/dist/types/tools/segmentation/strategies/eraseCircle.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/eraseSphere.d.ts +2 -7
- package/dist/types/tools/segmentation/strategies/eraseSphere.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/fillCircle.d.ts +13 -8
- package/dist/types/tools/segmentation/strategies/fillCircle.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/fillRectangle.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/fillSphere.d.ts +6 -9
- package/dist/types/tools/segmentation/strategies/fillSphere.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts +3 -0
- package/dist/types/tools/segmentation/strategies/utils/getStrategyData.d.ts.map +1 -1
- package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts +2 -2
- package/dist/types/tools/segmentation/strategies/utils/isWithinThreshold.d.ts.map +1 -1
- package/dist/types/types/BoundsIJK.d.ts +1 -1
- package/dist/types/types/BoundsIJK.d.ts.map +1 -1
- package/dist/types/types/FloodFillTypes.d.ts +4 -4
- package/dist/types/types/FloodFillTypes.d.ts.map +1 -1
- package/dist/types/types/LabelmapToolOperationData.d.ts +7 -2
- package/dist/types/types/LabelmapToolOperationData.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/math/ellipse/getCanvasEllipseCorners.d.ts +2 -3
- package/dist/types/utilities/math/ellipse/getCanvasEllipseCorners.d.ts.map +1 -1
- package/dist/types/utilities/math/ellipse/index.d.ts +2 -2
- package/dist/types/utilities/math/ellipse/index.d.ts.map +1 -1
- package/dist/types/utilities/math/ellipse/pointInEllipse.d.ts +4 -1
- package/dist/types/utilities/math/ellipse/pointInEllipse.d.ts.map +1 -1
- package/dist/types/utilities/math/sphere/pointInSphere.d.ts +1 -0
- package/dist/types/utilities/math/sphere/pointInSphere.d.ts.map +1 -1
- package/dist/types/utilities/segmentation/brushThresholdForToolGroup.d.ts +1 -1
- package/dist/types/utilities/segmentation/brushThresholdForToolGroup.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/drawingSvg/drawEllipse.ts +8 -8
- package/src/drawingSvg/drawEllipseByCoordinates.ts +4 -4
- package/src/enums/StrategyCallbacks.ts +52 -0
- package/src/enums/index.js +2 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +22 -11
- package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +6 -2
- package/src/eventDispatchers/shared/getToolsWithActionsForKeyboardEvents.ts +53 -0
- package/src/eventDispatchers/shared/getToolsWithActionsForMouseEvent.ts +0 -2
- package/src/stateManagement/segmentation/config/segmentationColor.ts +8 -1
- package/src/tools/annotation/EllipticalROITool.ts +1 -3
- package/src/tools/base/AnnotationTool.ts +0 -1
- package/src/tools/base/BaseTool.ts +32 -2
- package/src/tools/segmentation/BrushTool.ts +298 -68
- package/src/tools/segmentation/CircleScissorsTool.ts +3 -1
- package/src/tools/segmentation/SphereScissorsTool.ts +3 -0
- package/src/tools/segmentation/strategies/BrushStrategy.ts +364 -0
- package/src/tools/segmentation/strategies/compositions/determineSegmentIndex.ts +86 -0
- package/src/tools/segmentation/strategies/compositions/dynamicThreshold.ts +58 -0
- package/src/tools/segmentation/strategies/compositions/erase.ts +11 -0
- package/src/tools/segmentation/strategies/compositions/index.ts +19 -0
- package/src/tools/segmentation/strategies/compositions/islandRemoval.ts +179 -0
- package/src/tools/segmentation/strategies/compositions/preview.ts +138 -0
- package/src/tools/segmentation/strategies/compositions/regionFill.ts +45 -0
- package/src/tools/segmentation/strategies/compositions/setValue.ts +50 -0
- package/src/tools/segmentation/strategies/compositions/threshold.ts +35 -0
- package/src/tools/segmentation/strategies/eraseCircle.ts +10 -19
- package/src/tools/segmentation/strategies/eraseSphere.ts +10 -18
- package/src/tools/segmentation/strategies/fillCircle.ts +141 -164
- package/src/tools/segmentation/strategies/fillRectangle.ts +3 -13
- package/src/tools/segmentation/strategies/fillSphere.ts +105 -120
- package/src/tools/segmentation/strategies/utils/getStrategyData.ts +15 -1
- package/src/tools/segmentation/strategies/utils/isWithinThreshold.ts +5 -5
- package/src/types/BoundsIJK.ts +1 -1
- package/src/types/FloodFillTypes.ts +4 -4
- package/src/types/LabelmapToolOperationData.ts +20 -1
- package/src/types/index.ts +2 -0
- package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +2 -2
- package/src/utilities/math/ellipse/index.ts +2 -2
- package/src/utilities/math/ellipse/pointInEllipse.ts +52 -18
- package/src/utilities/math/sphere/pointInSphere.ts +10 -2
- package/src/utilities/segmentation/brushThresholdForToolGroup.ts +12 -5
|
@@ -3,74 +3,63 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.SPHERE_STRATEGY = exports.thresholdInsideSphere = exports.fillInsideSphere = exports.fillOutsideSphere = void 0;
|
|
7
7
|
const core_1 = require("@cornerstonejs/core");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (
|
|
38
|
-
|
|
8
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
9
|
+
const ellipse_1 = require("../../../utilities/math/ellipse");
|
|
10
|
+
const boundingBox_1 = require("../../../utilities/boundingBox");
|
|
11
|
+
const BrushStrategy_1 = __importDefault(require("./BrushStrategy"));
|
|
12
|
+
const compositions_1 = __importDefault(require("./compositions"));
|
|
13
|
+
const StrategyCallbacks_1 = __importDefault(require("../../../enums/StrategyCallbacks"));
|
|
14
|
+
const fillCircle_1 = require("./fillCircle");
|
|
15
|
+
const { transformWorldToIndex } = core_1.utilities;
|
|
16
|
+
const sphereComposition = {
|
|
17
|
+
[StrategyCallbacks_1.default.Initialize]: (operationData) => {
|
|
18
|
+
const { points, imageVoxelManager: imageVoxelManager, viewport, segmentationImageData, segmentationVoxelManager: segmentationVoxelManager, } = operationData;
|
|
19
|
+
if (!points) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const center = gl_matrix_1.vec3.fromValues(0, 0, 0);
|
|
23
|
+
points.forEach((point) => {
|
|
24
|
+
gl_matrix_1.vec3.add(center, center, point);
|
|
25
|
+
});
|
|
26
|
+
gl_matrix_1.vec3.scale(center, center, 1 / points.length);
|
|
27
|
+
operationData.centerWorld = center;
|
|
28
|
+
operationData.centerIJK = transformWorldToIndex(segmentationImageData, center);
|
|
29
|
+
const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
|
|
30
|
+
const [topLeftCanvas, bottomRightCanvas] = (0, ellipse_1.getCanvasEllipseCorners)(canvasCoordinates);
|
|
31
|
+
const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
|
|
32
|
+
const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
|
|
33
|
+
const diameters = topLeftWorld.map((left, index) => Math.abs(bottomRightWorld[index] - left));
|
|
34
|
+
const radius = Math.max(...diameters) / 2;
|
|
35
|
+
topLeftWorld.forEach((left, index) => {
|
|
36
|
+
const right = bottomRightWorld[index];
|
|
37
|
+
if (left === right) {
|
|
38
|
+
topLeftWorld[index] = left - radius;
|
|
39
|
+
bottomRightWorld[index] = left + radius;
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
fillSphere(enabledElement, operationData, true);
|
|
57
|
-
}
|
|
41
|
+
});
|
|
42
|
+
const ellipsoidCornersIJK = [
|
|
43
|
+
transformWorldToIndex(segmentationImageData, topLeftWorld),
|
|
44
|
+
(transformWorldToIndex(segmentationImageData, bottomRightWorld)),
|
|
45
|
+
];
|
|
46
|
+
segmentationVoxelManager.boundsIJK = (0, boundingBox_1.getBoundingBoxAroundShape)(ellipsoidCornersIJK, segmentationVoxelManager.dimensions);
|
|
47
|
+
imageVoxelManager.isInObject = (0, fillCircle_1.createEllipseInPoint)({
|
|
48
|
+
topLeftWorld,
|
|
49
|
+
bottomRightWorld,
|
|
50
|
+
center,
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
const SPHERE_STRATEGY = new BrushStrategy_1.default('Sphere', compositions_1.default.regionFill, compositions_1.default.setValue, sphereComposition, compositions_1.default.determineSegmentIndex, compositions_1.default.preview);
|
|
55
|
+
exports.SPHERE_STRATEGY = SPHERE_STRATEGY;
|
|
56
|
+
const fillInsideSphere = SPHERE_STRATEGY.strategyFunction;
|
|
58
57
|
exports.fillInsideSphere = fillInsideSphere;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const { referencedVolumeId, volumeId } = operationData;
|
|
62
|
-
const imageVolume = core_1.cache.getVolume(referencedVolumeId);
|
|
63
|
-
const segmentation = core_1.cache.getVolume(volumeId);
|
|
64
|
-
if (!core_1.utilities.isEqual(segmentation.dimensions, imageVolume.dimensions) ||
|
|
65
|
-
!core_1.utilities.isEqual(segmentation.direction, imageVolume.direction)) {
|
|
66
|
-
throw new Error('Only source data the same dimensions/size/orientation as the segmentation currently supported.');
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
fillSphere(enabledElement, operationData, true, true);
|
|
70
|
-
}
|
|
58
|
+
const SPHERE_THRESHOLD_STRATEGY = new BrushStrategy_1.default('SphereThreshold', ...SPHERE_STRATEGY.compositions, compositions_1.default.dynamicThreshold, compositions_1.default.threshold, compositions_1.default.islandRemoval);
|
|
59
|
+
const thresholdInsideSphere = SPHERE_THRESHOLD_STRATEGY.strategyFunction;
|
|
71
60
|
exports.thresholdInsideSphere = thresholdInsideSphere;
|
|
72
|
-
function fillOutsideSphere(
|
|
73
|
-
|
|
61
|
+
function fillOutsideSphere() {
|
|
62
|
+
throw new Error('fill outside sphere not implemented');
|
|
74
63
|
}
|
|
75
64
|
exports.fillOutsideSphere = fillOutsideSphere;
|
|
76
65
|
//# sourceMappingURL=fillSphere.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fillSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillSphere.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"fillSphere.js","sourceRoot":"","sources":["../../../../../src/tools/segmentation/strategies/fillSphere.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2D;AAC3D,yCAAiC;AAEjC,6DAA0E;AAC1E,gEAA2E;AAC3E,oEAA4C;AAG5C,kEAA0C;AAC1C,yFAAiE;AACjE,6CAAoD;AACpD,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAE1C,MAAM,iBAAiB,GAAG;IACxB,CAAC,2BAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,aAAuC,EAAE,EAAE;QAC1E,MAAM,EACJ,MAAM,EACN,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,EAAE,wBAAwB,GACnD,GAAG,aAAa,CAAC;QAGlB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,MAAM,MAAM,GAAG,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,gBAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,gBAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,aAAa,CAAC,WAAW,GAAG,MAAsB,CAAC;QACnD,aAAa,CAAC,SAAS,GAAG,qBAAqB,CAC7C,qBAAqB,EACrB,MAAsB,CACvB,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CACL,CAAC;QAIvB,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GACtC,IAAA,iCAAuB,EAAC,iBAAiB,CAAC,CAAC;QAG7C,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAEnE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CACzC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAE1C,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;gBACpC,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG;YACZ,qBAAqB,CAAC,qBAAqB,EAAE,YAAY,CAAC;YAC1D,CACZ,qBAAqB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAC/D;SACF,CAAC;QAEF,wBAAwB,CAAC,SAAS,GAAG,IAAA,uCAAyB,EAC5D,mBAAmB,EACnB,wBAAwB,CAAC,UAAU,CACpC,CAAC;QAEF,iBAAiB,CAAC,UAAU,GAAG,IAAA,iCAAoB,EAAC;YAClD,YAAY;YACZ,gBAAgB;YAChB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACa,CAAC;AAEjB,MAAM,eAAe,GAAG,IAAI,uBAAa,CACvC,QAAQ,EACR,sBAAY,CAAC,UAAU,EACvB,sBAAY,CAAC,QAAQ,EACrB,iBAAiB,EACjB,sBAAY,CAAC,qBAAqB,EAClC,sBAAY,CAAC,OAAO,CACrB,CAAC;AAqCgD,0CAAe;AA7BjE,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,CAAC;AA6BjD,4CAAgB;AA3BzB,MAAM,yBAAyB,GAAG,IAAI,uBAAa,CACjD,iBAAiB,EACjB,GAAG,eAAe,CAAC,YAAY,EAC/B,sBAAY,CAAC,gBAAgB,EAC7B,sBAAY,CAAC,SAAS,EACtB,sBAAY,CAAC,aAAa,CAC3B,CAAC;AASF,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,gBAAgB,CAAC;AAY9C,sDAAqB;AAJhD,SAAgB,iBAAiB;IAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACzD,CAAC;AAFD,8CAEC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { utilities } from '@cornerstonejs/core';
|
|
1
2
|
declare function getStrategyData({ operationData, viewport }: {
|
|
2
3
|
operationData: any;
|
|
3
4
|
viewport: any;
|
|
4
5
|
}): {
|
|
5
6
|
segmentationImageData: any;
|
|
6
7
|
segmentationScalarData: any;
|
|
8
|
+
segmentationVoxelManager: utilities.VoxelManager<number>;
|
|
7
9
|
imageScalarData: any;
|
|
10
|
+
imageVoxelManager: utilities.VoxelManager<number>;
|
|
8
11
|
};
|
|
9
12
|
export { getStrategyData };
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getStrategyData = void 0;
|
|
4
4
|
const core_1 = require("@cornerstonejs/core");
|
|
5
5
|
const stackVolumeCheck_1 = require("./stackVolumeCheck");
|
|
6
|
+
const { VoxelManager } = core_1.utilities;
|
|
6
7
|
function getStrategyData({ operationData, viewport }) {
|
|
7
8
|
let segmentationImageData, segmentationScalarData, imageScalarData;
|
|
9
|
+
let dimensions;
|
|
8
10
|
if ((0, stackVolumeCheck_1.isVolumeSegmentation)(operationData)) {
|
|
9
11
|
const { volumeId, referencedVolumeId } = operationData;
|
|
10
12
|
const segmentationVolume = core_1.cache.getVolume(volumeId);
|
|
@@ -15,6 +17,7 @@ function getStrategyData({ operationData, viewport }) {
|
|
|
15
17
|
({ imageData: segmentationImageData } = segmentationVolume);
|
|
16
18
|
segmentationScalarData = segmentationVolume.getScalarData();
|
|
17
19
|
imageScalarData = imageVolume.getScalarData();
|
|
20
|
+
dimensions = imageVolume.dimensions;
|
|
18
21
|
}
|
|
19
22
|
else {
|
|
20
23
|
const { imageIdReferenceMap, segmentationRepresentationUID } = operationData;
|
|
@@ -32,11 +35,14 @@ function getStrategyData({ operationData, viewport }) {
|
|
|
32
35
|
segmentationScalarData = segmentationImage.getPixelData();
|
|
33
36
|
const image = core_1.cache.getImage(currentImageId);
|
|
34
37
|
imageScalarData = image.getPixelData();
|
|
38
|
+
dimensions = [image.columns, image.rows, 1];
|
|
35
39
|
}
|
|
36
40
|
return {
|
|
37
41
|
segmentationImageData,
|
|
38
42
|
segmentationScalarData,
|
|
43
|
+
segmentationVoxelManager: VoxelManager.createVolumeVoxelManager(dimensions, segmentationScalarData),
|
|
39
44
|
imageScalarData,
|
|
45
|
+
imageVoxelManager: VoxelManager.createVolumeVoxelManager(dimensions, imageScalarData),
|
|
40
46
|
};
|
|
41
47
|
}
|
|
42
48
|
exports.getStrategyData = getStrategyData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStrategyData.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/getStrategyData.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getStrategyData.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/getStrategyData.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAEvD,yDAA0D;AAG1D,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAS,CAAC;AAEnC,SAAS,eAAe,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE;IAClD,IAAI,qBAAqB,EAAE,sBAAsB,EAAE,eAAe,CAAC;IACnE,IAAI,UAAwB,CAAC;IAC7B,IAAI,IAAA,uCAAoB,EAAC,aAAa,CAAC,EAAE;QACvC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;QAEvD,MAAM,kBAAkB,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,YAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAExD,IAAI,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE;YACvC,OAAO;SACR;QAED,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAC5D,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,EAAE,CAAC;QAC5D,eAAe,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAC9C,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;KACrC;SAAM;QACL,MAAM,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,GAC1D,aAA+C,CAAC;QAElD,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAKD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC/D,qBAAqB,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;QAC/D,MAAM,0BAA0B,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE3E,MAAM,iBAAiB,GAAG,YAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QACrE,sBAAsB,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC;QAE1D,MAAM,KAAK,GAAG,YAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAK7C,eAAe,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACvC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,OAAO;QACL,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB,EAAE,YAAY,CAAC,wBAAwB,CAC7D,UAAU,EACV,sBAAsB,CACvB;QACD,eAAe;QACf,iBAAiB,EAAE,YAAY,CAAC,wBAAwB,CACtD,UAAU,EACV,eAAe,CAChB;KACF,CAAC;AACJ,CAAC;AAEQ,0CAAe"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare function isWithinThreshold(index: number, imageScalarData:
|
|
1
|
+
import { Types } from '@cornerstonejs/core';
|
|
2
|
+
declare function isWithinThreshold(index: number, imageScalarData: Types.VolumeScalarData, strategySpecificConfiguration: any): boolean;
|
|
3
3
|
export default isWithinThreshold;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
function isWithinThreshold(index, imageScalarData, strategySpecificConfiguration) {
|
|
4
|
-
const { THRESHOLD_INSIDE_CIRCLE } = strategySpecificConfiguration;
|
|
4
|
+
const { THRESHOLD, THRESHOLD_INSIDE_CIRCLE } = strategySpecificConfiguration;
|
|
5
5
|
const voxelValue = imageScalarData[index];
|
|
6
|
-
const { threshold } = THRESHOLD_INSIDE_CIRCLE;
|
|
6
|
+
const { threshold } = THRESHOLD || THRESHOLD_INSIDE_CIRCLE;
|
|
7
7
|
return threshold[0] <= voxelValue && voxelValue <= threshold[1];
|
|
8
8
|
}
|
|
9
9
|
exports.default = isWithinThreshold;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isWithinThreshold.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/isWithinThreshold.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"isWithinThreshold.js","sourceRoot":"","sources":["../../../../../../src/tools/segmentation/strategies/utils/isWithinThreshold.ts"],"names":[],"mappings":";;AAEA,SAAS,iBAAiB,CACxB,KAAa,EACb,eAAuC,EACvC,6BAAkC;IAElC,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,6BAA6B,CAAC;IAE7E,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAG1C,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,IAAI,uBAAuB,CAAC;IAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
|
|
@@ -3,12 +3,12 @@ declare type FloodFillResult = {
|
|
|
3
3
|
flooded: Types.Point2[] | Types.Point3[];
|
|
4
4
|
boundaries: Types.Point2[] | Types.Point3[];
|
|
5
5
|
};
|
|
6
|
-
declare type FloodFillGetter3D = (x: number, y: number, z: number) =>
|
|
7
|
-
declare type FloodFillGetter2D = (x: number, y: number) =>
|
|
6
|
+
declare type FloodFillGetter3D = (x: number, y: number, z: number) => unknown;
|
|
7
|
+
declare type FloodFillGetter2D = (x: number, y: number) => unknown;
|
|
8
8
|
declare type FloodFillGetter = FloodFillGetter2D | FloodFillGetter3D;
|
|
9
9
|
declare type FloodFillOptions = {
|
|
10
|
-
onFlood?: (x:
|
|
11
|
-
onBoundary?: (x:
|
|
10
|
+
onFlood?: (x: number, y: number, z?: number) => void;
|
|
11
|
+
onBoundary?: (x: number, y: number, z?: number) => void;
|
|
12
12
|
equals?: (a: any, b: any) => boolean;
|
|
13
13
|
diagonals?: boolean;
|
|
14
14
|
};
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
1
2
|
import { LabelmapSegmentationDataStack, LabelmapSegmentationDataVolume } from './LabelmapTypes';
|
|
2
3
|
declare type LabelmapToolOperationData = {
|
|
3
4
|
segmentationId: string;
|
|
4
5
|
segmentIndex: number;
|
|
6
|
+
previewColors?: Record<number, [number, number, number, number]>;
|
|
5
7
|
segmentsLocked: number[];
|
|
6
8
|
viewPlaneNormal: number[];
|
|
7
9
|
viewUp: number[];
|
|
8
10
|
strategySpecificConfiguration: any;
|
|
9
|
-
constraintFn: (pointIJK: number) => boolean;
|
|
10
11
|
segmentationRepresentationUID: string;
|
|
12
|
+
points: Types.Point3[];
|
|
13
|
+
preview: any;
|
|
14
|
+
toolGroupId: string;
|
|
11
15
|
};
|
|
12
16
|
declare type LabelmapToolOperationDataStack = LabelmapToolOperationData & LabelmapSegmentationDataStack;
|
|
13
17
|
declare type LabelmapToolOperationDataVolume = LabelmapToolOperationData & LabelmapSegmentationDataVolume;
|
|
14
|
-
|
|
18
|
+
declare type LabelmapToolOperationDataAny = LabelmapToolOperationDataVolume | LabelmapToolOperationDataStack;
|
|
19
|
+
export { LabelmapToolOperationData, LabelmapToolOperationDataAny, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, };
|
|
@@ -28,6 +28,7 @@ import type { ContourSegmentationData } from './ContourTypes';
|
|
|
28
28
|
import type IAnnotationManager from './IAnnotationManager';
|
|
29
29
|
import type AnnotationGroupSelector from './AnnotationGroupSelector';
|
|
30
30
|
import type { Statistics } from './CalculatorTypes';
|
|
31
|
+
import type { CanvasCoordinates } from '../utilities/math/ellipse/getCanvasEllipseCorners';
|
|
31
32
|
import { LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume } from './LabelmapToolOperationData';
|
|
32
33
|
import type { CardinalSplineProps } from './CardinalSplineProps';
|
|
33
34
|
import type { ClosestControlPoint } from './ClosestControlPoint';
|
|
@@ -38,4 +39,4 @@ import type { ISpline } from './ISpline';
|
|
|
38
39
|
import type { SplineCurveSegment } from './SplineCurveSegment';
|
|
39
40
|
import type { SplineLineSegment } from './SplineLineSegment';
|
|
40
41
|
import type { SplineProps } from './SplineProps';
|
|
41
|
-
export type { Annotation, Annotations, IAnnotationManager, GroupSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, AnnotationGroupSelector, PlanarBoundingBox, ToolProps, PublicToolProps, ToolConfiguration, EventTypes, IPoints, ITouchPoints, IDistance, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, ToolAction, IToolGroup, IToolClassReference, ISynchronizerEventHandler, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, SegmentationRepresentationData, SegmentationRepresentationConfig, RepresentationConfig, ToolGroupSpecificRepresentationState, ToolGroupSpecificContourRepresentation, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, RepresentationPublicInput, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, BoundsIJK, SVGDrawingHelper, FloodFillResult, FloodFillGetter, FloodFillOptions, ContourSegmentationData, Statistics, LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, CardinalSplineProps, ClosestControlPoint, ClosestPoint, ClosestSplinePoint, ControlPointInfo, ISpline, SplineCurveSegment, SplineLineSegment, SplineProps, };
|
|
42
|
+
export type { Annotation, Annotations, CanvasCoordinates, IAnnotationManager, GroupSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, AnnotationGroupSelector, PlanarBoundingBox, ToolProps, PublicToolProps, ToolConfiguration, EventTypes, IPoints, ITouchPoints, IDistance, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, ToolAction, IToolGroup, IToolClassReference, ISynchronizerEventHandler, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, SegmentationRepresentationData, SegmentationRepresentationConfig, RepresentationConfig, ToolGroupSpecificRepresentationState, ToolGroupSpecificContourRepresentation, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, RepresentationPublicInput, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, BoundsIJK, SVGDrawingHelper, FloodFillResult, FloodFillGetter, FloodFillOptions, ContourSegmentationData, Statistics, LabelmapToolOperationData, LabelmapToolOperationDataStack, LabelmapToolOperationDataVolume, CardinalSplineProps, ClosestControlPoint, ClosestPoint, ClosestSplinePoint, ControlPointInfo, ISpline, SplineCurveSegment, SplineLineSegment, SplineProps, };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
declare type
|
|
2
|
+
export declare type CanvasCoordinates = [
|
|
3
3
|
Types.Point2,
|
|
4
4
|
Types.Point2,
|
|
5
5
|
Types.Point2,
|
|
6
6
|
Types.Point2
|
|
7
7
|
];
|
|
8
|
-
export default function getCanvasEllipseCorners(ellipseCanvasPoints:
|
|
9
|
-
export {};
|
|
8
|
+
export default function getCanvasEllipseCorners(ellipseCanvasPoints: CanvasCoordinates): Array<Types.Point2>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import pointInEllipse from './pointInEllipse';
|
|
1
|
+
import pointInEllipse, { precalculatePointInEllipse } from './pointInEllipse';
|
|
2
2
|
import getCanvasEllipseCorners from './getCanvasEllipseCorners';
|
|
3
|
-
export { pointInEllipse, getCanvasEllipseCorners };
|
|
3
|
+
export { pointInEllipse, precalculatePointInEllipse, getCanvasEllipseCorners };
|
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getCanvasEllipseCorners = exports.pointInEllipse = void 0;
|
|
7
|
-
const pointInEllipse_1 =
|
|
29
|
+
exports.getCanvasEllipseCorners = exports.precalculatePointInEllipse = exports.pointInEllipse = void 0;
|
|
30
|
+
const pointInEllipse_1 = __importStar(require("./pointInEllipse"));
|
|
8
31
|
exports.pointInEllipse = pointInEllipse_1.default;
|
|
32
|
+
Object.defineProperty(exports, "precalculatePointInEllipse", { enumerable: true, get: function () { return pointInEllipse_1.precalculatePointInEllipse; } });
|
|
9
33
|
const getCanvasEllipseCorners_1 = __importDefault(require("./getCanvasEllipseCorners"));
|
|
10
34
|
exports.getCanvasEllipseCorners = getCanvasEllipseCorners_1.default;
|
|
11
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAA8E;AAGrE,yBAHF,wBAAc,CAGE;AAAE,2GAHA,2CAA0B,OAGA;AAFnD,wFAAgE;AAEX,kCAF9C,iCAAuB,CAE8C"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
1
2
|
interface Inverts {
|
|
2
3
|
invXRadiusSq?: number;
|
|
3
4
|
invYRadiusSq?: number;
|
|
4
5
|
invZRadiusSq?: number;
|
|
5
6
|
fast?: boolean;
|
|
7
|
+
precalculated?: (pointLPS: Types.Point3) => boolean;
|
|
6
8
|
}
|
|
7
9
|
export default function pointInEllipse(ellipse: any, pointLPS: any, inverts?: Inverts): boolean;
|
|
8
|
-
|
|
10
|
+
declare const precalculatePointInEllipse: (ellipse: any, inverts?: Inverts) => Inverts;
|
|
11
|
+
export { precalculatePointInEllipse };
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.precalculatePointInEllipse = void 0;
|
|
3
4
|
function pointInEllipse(ellipse, pointLPS, inverts = {}) {
|
|
4
|
-
|
|
5
|
+
if (!inverts.precalculated) {
|
|
6
|
+
precalculatePointInEllipse(ellipse, inverts);
|
|
7
|
+
}
|
|
8
|
+
return inverts.precalculated(pointLPS);
|
|
9
|
+
}
|
|
10
|
+
exports.default = pointInEllipse;
|
|
11
|
+
const precalculatePointInEllipse = (ellipse, inverts = {}) => {
|
|
12
|
+
const { xRadius, yRadius, zRadius } = ellipse;
|
|
5
13
|
if (inverts.invXRadiusSq === undefined ||
|
|
6
14
|
inverts.invYRadiusSq === undefined ||
|
|
7
15
|
inverts.invZRadiusSq === undefined) {
|
|
@@ -9,20 +17,25 @@ function pointInEllipse(ellipse, pointLPS, inverts = {}) {
|
|
|
9
17
|
inverts.invYRadiusSq = yRadius !== 0 ? 1 / Math.pow(yRadius, 2) : 0;
|
|
10
18
|
inverts.invZRadiusSq = zRadius !== 0 ? 1 / Math.pow(zRadius, 2) : 0;
|
|
11
19
|
}
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
const { invXRadiusSq, invYRadiusSq, invZRadiusSq } = inverts;
|
|
21
|
+
const { center } = ellipse;
|
|
22
|
+
const [centerL, centerP, centerS] = center;
|
|
23
|
+
inverts.precalculated = (pointLPS) => {
|
|
24
|
+
const dx = pointLPS[0] - centerL;
|
|
25
|
+
let inside = dx * dx * invXRadiusSq;
|
|
26
|
+
if (inside > 1) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const dy = pointLPS[1] - centerP;
|
|
30
|
+
inside += dy * dy * invYRadiusSq;
|
|
31
|
+
if (inside > 1) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const dz = pointLPS[2] - centerS;
|
|
35
|
+
inside += dz * dz * invZRadiusSq;
|
|
36
|
+
return inside <= 1;
|
|
37
|
+
};
|
|
38
|
+
return inverts;
|
|
39
|
+
};
|
|
40
|
+
exports.precalculatePointInEllipse = precalculatePointInEllipse;
|
|
28
41
|
//# sourceMappingURL=pointInEllipse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointInEllipse.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/pointInEllipse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pointInEllipse.js","sourceRoot":"","sources":["../../../../../src/utilities/math/ellipse/pointInEllipse.ts"],"names":[],"mappings":";;;AA2BA,SAAwB,cAAc,CACpC,OAAO,EACP,QAAQ,EACR,UAAmB,EAAE;IAErB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC9C;IACD,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AATD,iCASC;AAcD,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,UAAmB,EAAE,EAAE,EAAE;IACpE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAI9C,IACE,OAAO,CAAC,YAAY,KAAK,SAAS;QAClC,OAAO,CAAC,YAAY,KAAK,SAAS;QAClC,OAAO,CAAC,YAAY,KAAK,SAAS,EAClC;QACA,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,YAAY,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAA,OAAO,EAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAE3C,OAAO,CAAC,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE;QAEnC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjC,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QACjC,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAGjC,OAAO,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEO,gEAA0B"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
function pointInSphere(sphere, pointLPS) {
|
|
4
4
|
const { center, radius } = sphere;
|
|
5
|
+
const radius2 = sphere.radius2 || radius * radius;
|
|
5
6
|
return ((pointLPS[0] - center[0]) * (pointLPS[0] - center[0]) +
|
|
6
7
|
(pointLPS[1] - center[1]) * (pointLPS[1] - center[1]) +
|
|
7
8
|
(pointLPS[2] - center[2]) * (pointLPS[2] - center[2]) <=
|
|
8
|
-
|
|
9
|
+
radius2);
|
|
9
10
|
}
|
|
10
11
|
exports.default = pointInSphere;
|
|
11
12
|
//# sourceMappingURL=pointInSphere.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointInSphere.js","sourceRoot":"","sources":["../../../../../src/utilities/math/sphere/pointInSphere.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pointInSphere.js","sourceRoot":"","sources":["../../../../../src/utilities/math/sphere/pointInSphere.ts"],"names":[],"mappings":";;AAyBA,SAAwB,aAAa,CAAC,MAAc,EAAE,QAAc;IAClE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,GAAG,MAAM,CAAC;IAElD,OAAO,CACL,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,gCAUC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
export declare function setBrushThresholdForToolGroup(toolGroupId: string, threshold: Types.Point2): void;
|
|
2
|
+
export declare function setBrushThresholdForToolGroup(toolGroupId: string, threshold: Types.Point2, otherArgs?: Record<string, unknown>): void;
|
|
3
3
|
export declare function getBrushThresholdForToolGroup(toolGroupId: string): any;
|
|
@@ -8,15 +8,15 @@ const ToolGroupManager_1 = require("../../store/ToolGroupManager");
|
|
|
8
8
|
const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../triggerAnnotationRenderForViewportIds"));
|
|
9
9
|
const core_1 = require("@cornerstonejs/core");
|
|
10
10
|
const utilities_1 = __importDefault(require("./utilities"));
|
|
11
|
-
function setBrushThresholdForToolGroup(toolGroupId, threshold) {
|
|
11
|
+
function setBrushThresholdForToolGroup(toolGroupId, threshold, otherArgs = { isDynamic: false }) {
|
|
12
12
|
const toolGroup = (0, ToolGroupManager_1.getToolGroup)(toolGroupId);
|
|
13
13
|
if (toolGroup === undefined) {
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
16
|
const brushBasedToolInstances = (0, utilities_1.default)(toolGroupId);
|
|
17
|
+
const configuration = Object.assign(Object.assign({}, otherArgs), (threshold !== undefined && { threshold }));
|
|
17
18
|
brushBasedToolInstances.forEach((tool) => {
|
|
18
|
-
tool.configuration.strategySpecificConfiguration.
|
|
19
|
-
threshold;
|
|
19
|
+
tool.configuration.strategySpecificConfiguration.THRESHOLD = Object.assign(Object.assign({}, tool.configuration.strategySpecificConfiguration.THRESHOLD), configuration);
|
|
20
20
|
});
|
|
21
21
|
const viewportsInfo = toolGroup.getViewportsInfo();
|
|
22
22
|
if (!viewportsInfo.length) {
|
|
@@ -42,8 +42,8 @@ function getBrushThresholdForToolGroup(toolGroupId) {
|
|
|
42
42
|
if (!brushToolInstance) {
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
return brushToolInstance.configuration.strategySpecificConfiguration
|
|
46
|
-
.
|
|
45
|
+
return brushToolInstance.configuration.strategySpecificConfiguration.THRESHOLD
|
|
46
|
+
.threshold;
|
|
47
47
|
}
|
|
48
48
|
exports.getBrushThresholdForToolGroup = getBrushThresholdForToolGroup;
|
|
49
49
|
//# sourceMappingURL=brushThresholdForToolGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brushThresholdForToolGroup.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/brushThresholdForToolGroup.ts"],"names":[],"mappings":";;;;;;AACA,mEAA4D;AAC5D,qHAA6F;AAC7F,8CAAyD;AACzD,4DAAgD;AAEhD,SAAgB,6BAA6B,CAC3C,WAAmB,EACnB,SAAuB;
|
|
1
|
+
{"version":3,"file":"brushThresholdForToolGroup.js","sourceRoot":"","sources":["../../../../src/utilities/segmentation/brushThresholdForToolGroup.ts"],"names":[],"mappings":";;;;;;AACA,mEAA4D;AAC5D,qHAA6F;AAC7F,8CAAyD;AACzD,4DAAgD;AAEhD,SAAgB,6BAA6B,CAC3C,WAAmB,EACnB,SAAuB,EACvB,YAAqC,EAAE,SAAS,EAAE,KAAK,EAAE;IAEzD,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO;KACR;IAED,MAAM,uBAAuB,GAAG,IAAA,mBAAqB,EAAC,WAAW,CAAC,CAAC;IACnE,MAAM,aAAa,mCACd,SAAS,GACT,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,CAC9C,CAAC;IAEF,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS,mCACrD,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS,GAC1D,aAAa,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAGH,MAAM,aAAa,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAEnD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACzB,OAAO;KACR;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAI/C,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IAE/C,MAAM,eAAe,GAAG,IAAA,yBAAkB,EAAC,iBAAiB,CAAC,CAAC;IAE9D,IAAA,+CAAqC,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACtE,CAAC;AAxCD,sEAwCC;AAED,SAAgB,6BAA6B,CAAC,WAAmB;IAC/D,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO;KACR;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;QACtC,OAAO;KACR;IAED,MAAM,uBAAuB,GAAG,IAAA,mBAAqB,EAAC,WAAW,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAErD,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO;KACR;IAGD,OAAO,iBAAiB,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS;SAC3E,SAAS,CAAC;AACf,CAAC;AAvBD,sEAuBC"}
|
|
@@ -4,7 +4,7 @@ function drawEllipse(svgDrawingHelper, annotationUID, ellipseUID, corner1, corne
|
|
|
4
4
|
const bottom = [(corner1[0] + corner2[0]) / 2, corner2[1]];
|
|
5
5
|
const left = [corner1[0], (corner1[1] + corner2[1]) / 2];
|
|
6
6
|
const right = [corner2[0], (corner1[1] + corner2[1]) / 2];
|
|
7
|
-
drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, [bottom, top, left, right], options = {}, dataId = '');
|
|
7
|
+
drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, [bottom, top, left, right], (options = {}), (dataId = ''));
|
|
8
8
|
}
|
|
9
9
|
export default drawEllipse;
|
|
10
10
|
//# sourceMappingURL=drawEllipse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawEllipse.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipse.ts"],"names":[],"mappings":"AAIA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,SAAS,WAAW,CAClB,gBAAkC,EAClC,aAAqB,EACrB,UAAkB,EAClB,OAAqB,EACrB,OAAqB,EACrB,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE;IAEX,MAAM,GAAG,GAAiB,
|
|
1
|
+
{"version":3,"file":"drawEllipse.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipse.ts"],"names":[],"mappings":"AAIA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,SAAS,WAAW,CAClB,gBAAkC,EAClC,aAAqB,EACrB,UAAkB,EAClB,OAAqB,EACrB,OAAqB,EACrB,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE;IAEX,MAAM,GAAG,GAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,wBAAwB,CACtB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAC1B,CAAC,OAAO,GAAG,EAAE,CAAC,EACd,CAAC,MAAM,GAAG,EAAE,CAAC,CACd,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
2;
|
|
2
1
|
import _getHash from './_getHash';
|
|
3
2
|
import setAttributesIfNecessary from './setAttributesIfNecessary';
|
|
4
3
|
import setNewAttributesIfValid from './setNewAttributesIfValid';
|
|
@@ -16,7 +15,7 @@ function drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, c
|
|
|
16
15
|
const [bottom, top, left, right] = canvasCoordinates;
|
|
17
16
|
const w = Math.hypot(left[0] - right[0], left[1] - right[1]);
|
|
18
17
|
const h = Math.hypot(top[0] - bottom[0], top[1] - bottom[1]);
|
|
19
|
-
const angle = Math.atan2(left[1] - right[1], left[0] - right[0]) * 180 / Math.PI;
|
|
18
|
+
const angle = (Math.atan2(left[1] - right[1], left[0] - right[0]) * 180) / Math.PI;
|
|
20
19
|
const center = [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2];
|
|
21
20
|
const radiusX = w / 2;
|
|
22
21
|
const radiusY = h / 2;
|
|
@@ -27,7 +26,7 @@ function drawEllipseByCoordinates(svgDrawingHelper, annotationUID, ellipseUID, c
|
|
|
27
26
|
ry: `${radiusY}`,
|
|
28
27
|
stroke: color,
|
|
29
28
|
fill: 'transparent',
|
|
30
|
-
|
|
29
|
+
transform: `rotate(${angle} ${center[0]} ${center[1]})`,
|
|
31
30
|
'stroke-width': strokeWidth,
|
|
32
31
|
'stroke-dasharray': lineDash,
|
|
33
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawEllipseByCoordinates.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipseByCoordinates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drawEllipseByCoordinates.js","sourceRoot":"","sources":["../../../src/drawingSvg/drawEllipseByCoordinates.ts"],"names":[],"mappings":"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"}
|