@cornerstonejs/tools 0.20.10 → 0.20.13
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/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +30 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +5 -0
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +6 -2
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +9 -2
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolatePoints.d.ts +3 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolatePoints.js +92 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolatePoints.js.map +1 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.d.ts +2 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.js +19 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.js.map +1 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.d.ts +2 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.js +43 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.js.map +1 -0
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +6 -2
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/cjs/types/IToolGroup.d.ts +6 -0
- package/dist/cjs/utilities/math/index.d.ts +2 -1
- package/dist/cjs/utilities/math/index.js +3 -1
- package/dist/cjs/utilities/math/index.js.map +1 -1
- package/dist/cjs/utilities/math/point/distanceToPoint.d.ts +2 -0
- package/dist/cjs/utilities/math/point/distanceToPoint.js +12 -0
- package/dist/cjs/utilities/math/point/distanceToPoint.js.map +1 -0
- package/dist/cjs/utilities/math/point/index.d.ts +2 -0
- package/dist/cjs/utilities/math/point/index.js +9 -0
- package/dist/cjs/utilities/math/point/index.js.map +1 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.d.ts +2 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +27 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +5 -0
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +6 -2
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +9 -2
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolatePoints.d.ts +3 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolatePoints.js +83 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolatePoints.js.map +1 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.d.ts +2 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.js +15 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.js.map +1 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.d.ts +2 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.js +40 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.js.map +1 -0
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +6 -2
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/esm/types/IToolGroup.d.ts +6 -0
- package/dist/esm/utilities/math/index.d.ts +2 -1
- package/dist/esm/utilities/math/index.js +2 -1
- package/dist/esm/utilities/math/index.js.map +1 -1
- package/dist/esm/utilities/math/point/distanceToPoint.d.ts +2 -0
- package/dist/esm/utilities/math/point/distanceToPoint.js +9 -0
- package/dist/esm/utilities/math/point/distanceToPoint.js.map +1 -0
- package/dist/esm/utilities/math/point/index.d.ts +2 -0
- package/dist/esm/utilities/math/point/index.js +3 -0
- package/dist/esm/utilities/math/point/index.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +10 -6
|
@@ -19,7 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.polyline = exports.rectangle = exports.lineSegment = exports.ellipse = exports.vec2 = void 0;
|
|
22
|
+
exports.point = exports.polyline = exports.rectangle = exports.lineSegment = exports.ellipse = exports.vec2 = void 0;
|
|
23
23
|
const vec2 = __importStar(require("./vec2"));
|
|
24
24
|
exports.vec2 = vec2;
|
|
25
25
|
const ellipse = __importStar(require("./ellipse"));
|
|
@@ -30,4 +30,6 @@ const rectangle = __importStar(require("./rectangle"));
|
|
|
30
30
|
exports.rectangle = rectangle;
|
|
31
31
|
const polyline = __importStar(require("./polyline"));
|
|
32
32
|
exports.polyline = polyline;
|
|
33
|
+
const point = __importStar(require("./point"));
|
|
34
|
+
exports.point = point;
|
|
33
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/math/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/math/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAOtB,oBAAI;AANb,mDAAqC;AAMtB,0BAAO;AALtB,oDAAsC;AAKd,kCAAW;AAJnC,uDAAyC;AAIJ,8BAAS;AAH9C,qDAAuC;AAGS,4BAAQ;AAFxD,+CAAiC;AAEyB,sBAAK"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function distanceToPoint(p1, p2) {
|
|
4
|
+
if ((p1 === null || p1 === void 0 ? void 0 : p1.length) !== 2 || (p2 === null || p2 === void 0 ? void 0 : p2.length) !== 2) {
|
|
5
|
+
throw Error('points should have 2 elements of [x, y]');
|
|
6
|
+
}
|
|
7
|
+
const [x1, y1] = p1;
|
|
8
|
+
const [x2, y2] = p2;
|
|
9
|
+
return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
|
|
10
|
+
}
|
|
11
|
+
exports.default = distanceToPoint;
|
|
12
|
+
//# sourceMappingURL=distanceToPoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distanceToPoint.js","sourceRoot":"","sources":["../../../../../src/utilities/math/point/distanceToPoint.ts"],"names":[],"mappings":";;AASA,SAAwB,eAAe,CACrC,EAAgB,EAChB,EAAgB;IAEhB,IAAI,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,MAAM,MAAK,CAAC,IAAI,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,MAAM,MAAK,CAAC,EAAE;QACxC,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;KACxD;IAED,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;IAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAZD,kCAYC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.distanceToPoint = void 0;
|
|
7
|
+
const distanceToPoint_1 = __importDefault(require("./distanceToPoint"));
|
|
8
|
+
exports.distanceToPoint = distanceToPoint_1.default;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/point/index.ts"],"names":[],"mappings":";;;;;;AAAA,wEAAgD;AAEvC,0BAFF,yBAAe,CAEE"}
|
|
@@ -21,6 +21,8 @@ export default class ToolGroup implements IToolGroup {
|
|
|
21
21
|
getActivePrimaryMouseButtonTool(): string;
|
|
22
22
|
setViewportsCursorByToolName(toolName: string, strategyName?: string): void;
|
|
23
23
|
_setCursorForViewports(cursor: MouseCursor): void;
|
|
24
|
+
setToolConfiguration(toolName: string, configuration: Record<any, any>, overwrite?: boolean): boolean;
|
|
25
|
+
getToolConfiguration(toolName: string, configurationPath: string): any;
|
|
24
26
|
private _hasMousePrimaryButtonBinding;
|
|
25
27
|
private _renderViewports;
|
|
26
28
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { MouseBindings, ToolModes } from '../../enums';
|
|
2
|
+
import cloneDeep from 'lodash.clonedeep';
|
|
3
|
+
import get from 'lodash.get';
|
|
2
4
|
import { getRenderingEngine, getRenderingEngines, getEnabledElementByIds, Settings, } from '@cornerstonejs/core';
|
|
3
5
|
import { state } from '../index';
|
|
4
6
|
import { MouseCursor, SVGMouseCursor } from '../../cursors';
|
|
5
7
|
import { initElementCursor } from '../../cursors/elementCursor';
|
|
8
|
+
import deepmerge from '../../utilities/deepMerge';
|
|
6
9
|
const { Active, Passive, Enabled, Disabled } = ToolModes;
|
|
7
10
|
export default class ToolGroup {
|
|
8
11
|
constructor(id) {
|
|
@@ -201,6 +204,30 @@ export default class ToolGroup {
|
|
|
201
204
|
initElementCursor(viewport.element, cursor);
|
|
202
205
|
});
|
|
203
206
|
}
|
|
207
|
+
setToolConfiguration(toolName, configuration, overwrite) {
|
|
208
|
+
if (this._toolInstances[toolName] === undefined) {
|
|
209
|
+
console.warn(`Tool ${toolName} not present, can't set tool configuration.`);
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
let _configuration;
|
|
213
|
+
if (overwrite) {
|
|
214
|
+
_configuration = configuration;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
_configuration = deepmerge(this._toolInstances[toolName].configuration, configuration);
|
|
218
|
+
}
|
|
219
|
+
this._toolInstances[toolName].configuration = _configuration;
|
|
220
|
+
this._renderViewports();
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
getToolConfiguration(toolName, configurationPath) {
|
|
224
|
+
if (this._toolInstances[toolName] === undefined) {
|
|
225
|
+
console.warn(`Tool ${toolName} not present, can't set tool configuration.`);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const _configuration = get(this._toolInstances[toolName].configuration, configurationPath);
|
|
229
|
+
return cloneDeep(_configuration);
|
|
230
|
+
}
|
|
204
231
|
_hasMousePrimaryButtonBinding(toolOptions) {
|
|
205
232
|
return toolOptions?.bindings?.some((binding) => binding.mouseButton === MouseBindings.Primary &&
|
|
206
233
|
binding.modifierKey === undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolGroup.js","sourceRoot":"","sources":["../../../../src/store/ToolGroupManager/ToolGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolGroup.js","sourceRoot":"","sources":["../../../../src/store/ToolGroupManager/ToolGroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,11 @@ class PlanarFreehandROITool extends AnnotationTool {
|
|
|
28
28
|
closeContourProximity: 10,
|
|
29
29
|
checkCanvasEditFallbackProximity: 6,
|
|
30
30
|
subPixelResolution: 4,
|
|
31
|
+
interpolation: {
|
|
32
|
+
enabled: false,
|
|
33
|
+
minKnotDistance: 20,
|
|
34
|
+
editMinKnotDistance: 10,
|
|
35
|
+
},
|
|
31
36
|
},
|
|
32
37
|
}) {
|
|
33
38
|
super(toolProps, defaultToolProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarFreehandROITool.js","sourceRoot":"","sources":["../../../../src/tools/annotation/PlanarFreehandROITool.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,IAAI,OAAO,GACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EACL,aAAa,EACb,cAAc,GACf,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,qCAAqC,MAAM,uDAAuD,CAAC;AAC1G,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,sBAAsB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,6BAA6B,MAAM,+CAA+C,CAAC;AAC1F,OAAO,2BAA2B,MAAM,6CAA6C,CAAC;AACtF,OAAO,8BAA8B,MAAM,gDAAgD,CAAC;AAC5F,OAAO,qBAAqB,MAAM,uCAAuC,CAAC;AAkB1E,MAAM,EAAE,qBAAqB,EAAE,GAAG,QAAQ,CAAC;AAiC3C,MAAM,qBAAsB,SAAQ,cAAc;IAwDhD,YACE,YAA6B,EAAE,EAC/B,mBAA8B;QAC5B,yBAAyB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC7C,aAAa,EAAE;YACb,MAAM,EAAE,IAAI;YACZ,yBAAyB,EAAE,KAAK;YAChC,8BAA8B,EAAE;gBAG9B,OAAO,EAAE,KAAK;gBAEd,MAAM,EAAE,CAAC;aACV;YACD,iBAAiB,EAAE,IAAI;YAEvB,qBAAqB,EAAE,EAAE;YAGzB,gCAAgC,EAAE,CAAC;YAOnC,kBAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PlanarFreehandROITool.js","sourceRoot":"","sources":["../../../../src/tools/annotation/PlanarFreehandROITool.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { resetElementCursor, hideElementCursor, } from '../../../cursors/element
|
|
|
5
5
|
import { polyline } from '../../../utilities/math';
|
|
6
6
|
import { vec3, vec2 } from 'gl-matrix';
|
|
7
7
|
import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
|
|
8
|
+
import { getInterpolatedPoints, shouldInterpolate } from './interpolatePoints';
|
|
8
9
|
const { getSubPixelSpacingAndXYDirections, addCanvasPointsToArray, calculateAreaOfPoints, } = polyline;
|
|
9
10
|
function activateClosedContourEdit(evt, annotation, viewportIdsToRender) {
|
|
10
11
|
this.isEditingClosed = true;
|
|
@@ -186,9 +187,12 @@ function completeClosedContourEdit(element) {
|
|
|
186
187
|
const enabledElement = getEnabledElement(element);
|
|
187
188
|
const { viewport, renderingEngine } = enabledElement;
|
|
188
189
|
const { annotation, viewportIdsToRender } = this.commonData;
|
|
189
|
-
const { fusedCanvasPoints } = this.editData;
|
|
190
|
+
const { fusedCanvasPoints, prevCanvasPoints } = this.editData;
|
|
190
191
|
if (fusedCanvasPoints) {
|
|
191
|
-
const
|
|
192
|
+
const updatedPoints = shouldInterpolate(this.configuration)
|
|
193
|
+
? getInterpolatedPoints(this.configuration, fusedCanvasPoints, prevCanvasPoints)
|
|
194
|
+
: fusedCanvasPoints;
|
|
195
|
+
const worldPoints = updatedPoints.map((canvasPoint) => viewport.canvasToWorld(canvasPoint));
|
|
192
196
|
annotation.data.polyline = worldPoints;
|
|
193
197
|
annotation.data.isOpenContour = false;
|
|
194
198
|
this.triggerAnnotationModified(annotation, enabledElement);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closedContourEditLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,qCAAqC,MAAM,0DAA0D,CAAC;
|
|
1
|
+
{"version":3,"file":"closedContourEditLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnn
|
|
|
7
7
|
import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
|
|
8
8
|
import { polyline } from '../../../utilities/math';
|
|
9
9
|
import { removeAnnotation } from '../../../stateManagement/annotation/annotationState';
|
|
10
|
+
import { shouldInterpolate, getInterpolatedPoints } from './interpolatePoints';
|
|
10
11
|
const { addCanvasPointsToArray, pointsAreWithinCloseContourProximity, getFirstIntersectionWithPolyline, getSubPixelSpacingAndXYDirections, } = polyline;
|
|
11
12
|
function activateDraw(evt, annotation, viewportIdsToRender) {
|
|
12
13
|
this.isDrawing = true;
|
|
@@ -94,7 +95,10 @@ function completeDrawClosedContour(element) {
|
|
|
94
95
|
const { viewport, renderingEngine } = enabledElement;
|
|
95
96
|
addCanvasPointsToArray(element, canvasPoints, canvasPoints[0], this.commonData);
|
|
96
97
|
canvasPoints.pop();
|
|
97
|
-
const
|
|
98
|
+
const updatedPoints = shouldInterpolate(this.configuration)
|
|
99
|
+
? getInterpolatedPoints(this.configuration, canvasPoints)
|
|
100
|
+
: canvasPoints;
|
|
101
|
+
const worldPoints = updatedPoints.map((canvasPoint) => viewport.canvasToWorld(canvasPoint));
|
|
98
102
|
annotation.data.polyline = worldPoints;
|
|
99
103
|
annotation.data.isOpenContour = false;
|
|
100
104
|
this.triggerAnnotationCompleted(annotation);
|
|
@@ -124,7 +128,10 @@ function completeDrawOpenContour(element) {
|
|
|
124
128
|
const { annotation, viewportIdsToRender } = this.commonData;
|
|
125
129
|
const enabledElement = getEnabledElement(element);
|
|
126
130
|
const { viewport, renderingEngine } = enabledElement;
|
|
127
|
-
const
|
|
131
|
+
const updatedPoints = shouldInterpolate(this.configuration)
|
|
132
|
+
? getInterpolatedPoints(this.configuration, canvasPoints)
|
|
133
|
+
: canvasPoints;
|
|
134
|
+
const worldPoints = updatedPoints.map((canvasPoint) => viewport.canvasToWorld(canvasPoint));
|
|
128
135
|
annotation.data.polyline = worldPoints;
|
|
129
136
|
annotation.data.isOpenContour = true;
|
|
130
137
|
annotation.data.handles.points = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/drawLoop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,qCAAqC,MAAM,0DAA0D,CAAC;AAE7G,OAAO,kCAAkC,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"drawLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/drawLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Types } from '@cornerstonejs/core';
|
|
2
|
+
export declare function shouldInterpolate(configuration: Record<any, any>): boolean;
|
|
3
|
+
export declare function getInterpolatedPoints(configuration: Record<any, any>, points: Types.Point2[], pointsOfReference?: Types.Point2[]): Types.Point2[];
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { point } from '../../../utilities/math';
|
|
2
|
+
import interpolateSegmentPoints from './interpolation/interpolateSegmentPoints';
|
|
3
|
+
export function shouldInterpolate(configuration) {
|
|
4
|
+
return configuration?.interpolation?.enabled === true;
|
|
5
|
+
}
|
|
6
|
+
function isEqualByProximity(pointA, pointB) {
|
|
7
|
+
return point.distanceToPoint(pointA, pointB) < 0.001;
|
|
8
|
+
}
|
|
9
|
+
function isEqual(pointA, pointB) {
|
|
10
|
+
return point.distanceToPoint(pointA, pointB) === 0;
|
|
11
|
+
}
|
|
12
|
+
function findMatchIndexes(points, otherPoints) {
|
|
13
|
+
for (let i = 0; i < points.length; i++) {
|
|
14
|
+
for (let j = 0; j < otherPoints.length; j++) {
|
|
15
|
+
if (isEqual(points[i], otherPoints[j])) {
|
|
16
|
+
return [i, j];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function followingIndex(index, size, direction) {
|
|
22
|
+
return (index + size + direction) % size;
|
|
23
|
+
}
|
|
24
|
+
function circularFindNextIndexBy(listParams, otherListParams, criteria, direction) {
|
|
25
|
+
const [, indexDelimiter, points] = listParams;
|
|
26
|
+
const [, otherIndexDelimiter, otherPoints] = otherListParams;
|
|
27
|
+
const pointsLength = points.length;
|
|
28
|
+
const otherPointsLength = otherPoints.length;
|
|
29
|
+
let startIndex = listParams[0];
|
|
30
|
+
let otherStartIndex = otherListParams[0];
|
|
31
|
+
if (!points[startIndex] ||
|
|
32
|
+
!otherPoints[otherStartIndex] ||
|
|
33
|
+
!points[indexDelimiter] ||
|
|
34
|
+
!otherPoints[otherIndexDelimiter]) {
|
|
35
|
+
return [undefined, undefined];
|
|
36
|
+
}
|
|
37
|
+
while (startIndex !== indexDelimiter &&
|
|
38
|
+
otherStartIndex !== otherIndexDelimiter) {
|
|
39
|
+
if (criteria(otherPoints[otherStartIndex], points[startIndex])) {
|
|
40
|
+
return [startIndex, otherStartIndex];
|
|
41
|
+
}
|
|
42
|
+
startIndex = followingIndex(startIndex, pointsLength, direction);
|
|
43
|
+
otherStartIndex = followingIndex(otherStartIndex, otherPointsLength, direction);
|
|
44
|
+
}
|
|
45
|
+
return [undefined, undefined];
|
|
46
|
+
}
|
|
47
|
+
function findChangedSegment(points, previousPoints) {
|
|
48
|
+
const [firstMatchIndex, previousFirstMatchIndex] = findMatchIndexes(points, previousPoints) || [];
|
|
49
|
+
const toBeNotEqualCriteria = (pointA, pointB) => isEqualByProximity(pointA, pointB) === false;
|
|
50
|
+
const [lowDiffIndex, lowOtherDiffIndex] = circularFindNextIndexBy([
|
|
51
|
+
followingIndex(firstMatchIndex, points.length, 1),
|
|
52
|
+
firstMatchIndex,
|
|
53
|
+
points,
|
|
54
|
+
], [
|
|
55
|
+
followingIndex(previousFirstMatchIndex, previousPoints.length, 1),
|
|
56
|
+
previousFirstMatchIndex,
|
|
57
|
+
previousPoints,
|
|
58
|
+
], toBeNotEqualCriteria, 1);
|
|
59
|
+
const [highIndex] = circularFindNextIndexBy([followingIndex(lowDiffIndex, points.length, -1), lowDiffIndex, points], [
|
|
60
|
+
followingIndex(lowOtherDiffIndex, previousPoints.length, -1),
|
|
61
|
+
lowOtherDiffIndex,
|
|
62
|
+
previousPoints,
|
|
63
|
+
], toBeNotEqualCriteria, -1);
|
|
64
|
+
return [lowDiffIndex, highIndex];
|
|
65
|
+
}
|
|
66
|
+
export function getInterpolatedPoints(configuration, points, pointsOfReference) {
|
|
67
|
+
const { interpolation } = configuration;
|
|
68
|
+
const result = points;
|
|
69
|
+
if (interpolation) {
|
|
70
|
+
const { minKnotDistance, editMinKnotDistance, enabled = false, } = interpolation;
|
|
71
|
+
if (enabled) {
|
|
72
|
+
const [changedIniIndex, changedEndIndex] = pointsOfReference
|
|
73
|
+
? findChangedSegment(points, pointsOfReference)
|
|
74
|
+
: [0, points.length - 1];
|
|
75
|
+
if (!points[changedIniIndex] || !points[changedEndIndex]) {
|
|
76
|
+
return points;
|
|
77
|
+
}
|
|
78
|
+
return interpolateSegmentPoints(points, changedIniIndex, changedEndIndex, pointsOfReference ? editMinKnotDistance : minKnotDistance);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=interpolatePoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolatePoints.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/interpolatePoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { interpolateBasis as d3InterpolateBasis, quantize as d3Quantize, } from 'd3-interpolate';
|
|
2
|
+
import { zip as d3Zip } from 'd3-array';
|
|
3
|
+
export function interpolatePoints(originalPoints, knotsIndexes) {
|
|
4
|
+
if (!knotsIndexes ||
|
|
5
|
+
knotsIndexes.length === 0 ||
|
|
6
|
+
knotsIndexes.length === originalPoints.length) {
|
|
7
|
+
return originalPoints;
|
|
8
|
+
}
|
|
9
|
+
const n = knotsIndexes[knotsIndexes.length - 1] - knotsIndexes[0] + 1;
|
|
10
|
+
const xInterpolator = d3InterpolateBasis(knotsIndexes.map((k) => originalPoints[k][0]));
|
|
11
|
+
const yInterpolator = d3InterpolateBasis(knotsIndexes.map((k) => originalPoints[k][1]));
|
|
12
|
+
const splinePoints = (d3Zip(d3Quantize(xInterpolator, n), d3Quantize(yInterpolator, n)));
|
|
13
|
+
return splinePoints;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=bspline.js.map
|
package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bspline.js","sourceRoot":"","sources":["../../../../../../../src/tools/annotation/planarFreehandROITool/interpolation/algorithms/bspline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,IAAI,kBAAkB,EACtC,QAAQ,IAAI,UAAU,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,UAAU,CAAC;AAQxC,MAAM,UAAU,iBAAiB,CAC/B,cAA8B,EAC9B,YAAsB;IAEtB,IACE,CAAC,YAAY;QACb,YAAY,CAAC,MAAM,KAAK,CAAC;QACzB,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAC7C;QACA,OAAO,cAAc,CAAC;KACvB;IAED,MAAM,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,kBAAkB,CACtC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;IACF,MAAM,aAAa,GAAG,kBAAkB,CACtC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;IACF,MAAM,YAAY,GAAmC,CACnD,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAClE,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/dist/esm/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { interpolatePoints } from './algorithms/bspline';
|
|
2
|
+
function getContinuousUniformDistributionValues(minDistributionDistance, closedInterval) {
|
|
3
|
+
const result = [];
|
|
4
|
+
const [intervalIni, intervalEnd] = closedInterval;
|
|
5
|
+
const intervalSize = intervalEnd - intervalIni + 1;
|
|
6
|
+
const intensity = Math.floor(intervalSize / minDistributionDistance);
|
|
7
|
+
let x = 0;
|
|
8
|
+
let continuosDistributionValue = Math.round(((intervalSize - 1) / (intensity - 1)) * x) + intervalIni;
|
|
9
|
+
while (continuosDistributionValue <= intervalEnd) {
|
|
10
|
+
result.push(continuosDistributionValue);
|
|
11
|
+
x++;
|
|
12
|
+
continuosDistributionValue =
|
|
13
|
+
Math.round(((intervalSize - 1) / (intensity - 1)) * x) + intervalIni;
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
export default function interpolateSegmentPoints(points, iniIndex, endIndex, minKnotDistance) {
|
|
18
|
+
const segmentSize = endIndex - iniIndex + 1;
|
|
19
|
+
if (isNaN(segmentSize) || !segmentSize || !minKnotDistance) {
|
|
20
|
+
return points;
|
|
21
|
+
}
|
|
22
|
+
if (segmentSize / minKnotDistance <= 2) {
|
|
23
|
+
return points;
|
|
24
|
+
}
|
|
25
|
+
const interpolationIniIndex = Math.max(0, iniIndex);
|
|
26
|
+
const interpolationEndIndex = Math.min(points.length - 1, endIndex);
|
|
27
|
+
const segmentPointsUnchangedBeg = points.slice(0, interpolationIniIndex);
|
|
28
|
+
const segmentPointsUnchangedEnd = points.slice(interpolationEndIndex + 1, points.length);
|
|
29
|
+
const knotsIndexes = getContinuousUniformDistributionValues(minKnotDistance, [
|
|
30
|
+
interpolationIniIndex,
|
|
31
|
+
interpolationEndIndex,
|
|
32
|
+
]);
|
|
33
|
+
const interpolatedPoints = interpolatePoints(points, knotsIndexes);
|
|
34
|
+
return [
|
|
35
|
+
...segmentPointsUnchangedBeg,
|
|
36
|
+
...interpolatedPoints,
|
|
37
|
+
...segmentPointsUnchangedEnd,
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=interpolateSegmentPoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolateSegmentPoints.js","sourceRoot":"","sources":["../../../../../../src/tools/annotation/planarFreehandROITool/interpolation/interpolateSegmentPoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgBzD,SAAS,sCAAsC,CAC7C,uBAA+B,EAC/B,cAAgC;IAEhC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,cAAc,CAAC;IAElD,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,uBAAuB,CAAC,CAAC;IAErE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,0BAA0B,GAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;IAEvE,OAAO,0BAA0B,IAAI,WAAW,EAAE;QAChD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC,EAAE,CAAC;QACJ,0BAA0B;YACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;KACxE;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,MAAsB,EACtB,QAAgB,EAChB,QAAgB,EAChB,eAAuB;IAEvB,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE;QAC1D,OAAO,MAAM,CAAC;KACf;IAGD,IAAI,WAAW,GAAG,eAAe,IAAI,CAAC,EAAE;QACtC,OAAO,MAAM,CAAC;KACf;IAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,yBAAyB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAEzE,MAAM,yBAAyB,GAAG,MAAM,CAAC,KAAK,CAC5C,qBAAqB,GAAG,CAAC,EACzB,MAAM,CAAC,MAAM,CACd,CAAC;IAEF,MAAM,YAAY,GAAG,sCAAsC,CAAC,eAAe,EAAE;QAC3E,qBAAqB;QACrB,qBAAqB;KACtB,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEnE,OAAO;QACL,GAAG,yBAAyB;QAC5B,GAAG,kBAAkB;QACrB,GAAG,yBAAyB;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { vec3, vec2 } from 'gl-matrix';
|
|
|
6
6
|
import { polyline } from '../../../utilities/math';
|
|
7
7
|
import triggerAnnotationRenderForViewportIds from '../../../utilities/triggerAnnotationRenderForViewportIds';
|
|
8
8
|
import findOpenUShapedContourVectorToPeak from './findOpenUShapedContourVectorToPeak';
|
|
9
|
+
import { shouldInterpolate, getInterpolatedPoints } from './interpolatePoints';
|
|
9
10
|
const { addCanvasPointsToArray, getSubPixelSpacingAndXYDirections } = polyline;
|
|
10
11
|
function activateOpenContourEdit(evt, annotation, viewportIdsToRender) {
|
|
11
12
|
this.isEditingOpen = true;
|
|
@@ -250,9 +251,12 @@ function completeOpenContourEdit(element) {
|
|
|
250
251
|
const enabledElement = getEnabledElement(element);
|
|
251
252
|
const { viewport, renderingEngine } = enabledElement;
|
|
252
253
|
const { annotation, viewportIdsToRender } = this.commonData;
|
|
253
|
-
const { fusedCanvasPoints } = this.editData;
|
|
254
|
+
const { fusedCanvasPoints, prevCanvasPoints } = this.editData;
|
|
254
255
|
if (fusedCanvasPoints) {
|
|
255
|
-
const
|
|
256
|
+
const updatedPoints = shouldInterpolate(this.configuration)
|
|
257
|
+
? getInterpolatedPoints(this.configuration, fusedCanvasPoints, prevCanvasPoints)
|
|
258
|
+
: fusedCanvasPoints;
|
|
259
|
+
const worldPoints = updatedPoints.map((canvasPoint) => viewport.canvasToWorld(canvasPoint));
|
|
256
260
|
annotation.data.polyline = worldPoints;
|
|
257
261
|
annotation.data.isOpenContour = true;
|
|
258
262
|
annotation.data.handles.points = [
|