@cornerstonejs/tools 1.16.6 → 1.17.1
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/index.d.ts +2 -2
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js +1 -1
- package/dist/cjs/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
- package/dist/cjs/tools/OverlayGridTool.d.ts +31 -0
- package/dist/cjs/tools/OverlayGridTool.js +170 -0
- package/dist/cjs/tools/OverlayGridTool.js.map +1 -0
- package/dist/cjs/tools/index.d.ts +2 -1
- package/dist/cjs/tools/index.js +3 -1
- package/dist/cjs/tools/index.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js +1 -1
- package/dist/esm/synchronizers/callbacks/stackImageSyncCallback.js.map +1 -1
- package/dist/esm/tools/OverlayGridTool.d.ts +31 -0
- package/dist/esm/tools/OverlayGridTool.js +165 -0
- package/dist/esm/tools/OverlayGridTool.js.map +1 -0
- package/dist/esm/tools/index.d.ts +2 -1
- package/dist/esm/tools/index.js +2 -1
- package/dist/esm/tools/index.js.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/index.ts +2 -0
- package/src/synchronizers/callbacks/stackImageSyncCallback.ts +1 -1
- package/src/tools/OverlayGridTool.ts +357 -0
- package/src/tools/index.ts +2 -0
package/dist/cjs/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ import * as cursors from './cursors';
|
|
|
8
8
|
import * as Types from './types';
|
|
9
9
|
import * as annotation from './stateManagement/annotation';
|
|
10
10
|
import * as segmentation from './stateManagement/segmentation';
|
|
11
|
-
import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool } from './tools';
|
|
11
|
+
import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OverlayGridTool } from './tools';
|
|
12
12
|
import * as Enums from './enums';
|
|
13
|
-
export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
|
|
13
|
+
export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
|
package/dist/cjs/index.js
CHANGED
|
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
exports.cursors = exports.utilities = exports.segmentation = exports.annotation = exports.drawing = void 0;
|
|
26
|
+
exports.Enums = exports.ToolGroupManager = exports.state = exports.Types = exports.PaintFillTool = exports.SynchronizerManager = exports.Synchronizer = exports.synchronizers = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.ScaleOverlayTool = exports.ReferenceLines = exports.ReferenceCursors = exports.MagnifyTool = exports.CobbAngleTool = exports.AngleTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.BidirectionalTool = exports.CircleROITool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.OverlayGridTool = exports.ReferenceLinesTool = exports.CrosshairsTool = exports.LengthTool = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.StackScrollMouseWheelTool = exports.PlanarRotateTool = exports.StackScrollTool = exports.ZoomTool = exports.WindowLevelTool = exports.DragProbeTool = exports.TrackballRotateTool = exports.PanTool = exports.AnnotationDisplayTool = exports.AnnotationTool = exports.BaseTool = exports.cancelActiveManipulations = exports.removeTool = exports.addTool = exports.destroy = exports.init = void 0;
|
|
27
|
+
exports.cursors = exports.utilities = exports.segmentation = exports.annotation = exports.drawing = exports.CONSTANTS = void 0;
|
|
28
28
|
const init_1 = require("./init");
|
|
29
29
|
Object.defineProperty(exports, "init", { enumerable: true, get: function () { return init_1.init; } });
|
|
30
30
|
Object.defineProperty(exports, "destroy", { enumerable: true, get: function () { return init_1.destroy; } });
|
|
@@ -90,6 +90,7 @@ Object.defineProperty(exports, "ReferenceCursors", { enumerable: true, get: func
|
|
|
90
90
|
Object.defineProperty(exports, "ReferenceLines", { enumerable: true, get: function () { return tools_1.ReferenceLines; } });
|
|
91
91
|
Object.defineProperty(exports, "PaintFillTool", { enumerable: true, get: function () { return tools_1.PaintFillTool; } });
|
|
92
92
|
Object.defineProperty(exports, "ScaleOverlayTool", { enumerable: true, get: function () { return tools_1.ScaleOverlayTool; } });
|
|
93
|
+
Object.defineProperty(exports, "OverlayGridTool", { enumerable: true, get: function () { return tools_1.OverlayGridTool; } });
|
|
93
94
|
const Enums = __importStar(require("./enums"));
|
|
94
95
|
exports.Enums = Enums;
|
|
95
96
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAuC;AAmErC,qFAnEO,WAAI,OAmEP;AACJ,wFApEa,cAAO,OAoEb;AAnET,mCAQiB;AA4Df,wFAnEA,eAAO,OAmEA;AACP,2FAnEA,kBAAU,OAmEA;AAkDV,sFApHA,aAAK,OAoHA;AAEL,iGArHA,wBAAgB,OAqHA;AALhB,oGA/GA,2BAAmB,OA+GA;AADnB,6FA7GA,oBAAY,OA6GA;AA7CZ,0GA/DA,iCAAyB,OA+DA;AA5D3B,uDAAyC;AAmHvC,8BAAS;AAhHX,+DAAiD;AAqG/C,sCAAa;AApGf,sDAAwC;AAiHtC,0BAAO;AAhHT,uDAAyC;AAsHvC,8BAAS;AArHX,mDAAqC;AAsHnC,0BAAO;AArHT,+CAAiC;AAqG/B,sBAAK;AApGP,yEAA2D;AA+GzD,gCAAU;AA9GZ,6EAA+D;AAgH7D,oCAAY;AA9Gd,mCAuCiB;AAYf,yFAlDA,gBAAQ,OAkDA;AACR,+FAlDA,sBAAc,OAkDA;AACd,sGAlDA,6BAAqB,OAkDA;AAErB,wFAnDA,eAAO,OAmDA;AACP,oGAnDA,2BAAmB,OAmDA;AACnB,8FAnDA,qBAAa,OAmDA;AACb,gGAnDA,uBAAe,OAmDA;AACf,yFAnDA,gBAAQ,OAmDA;AACR,gGAnDA,uBAAe,OAmDA;AACf,iGAnDA,wBAAgB,OAmDA;AAChB,0GAnDA,iCAAyB,OAmDA;AACzB,2GAnDA,kCAA0B,OAmDA;AAC1B,mGAnDA,0BAAkB,OAmDA;AAElB,2FApDA,kBAAU,OAoDA;AAIV,0FAvDA,iBAAS,OAuDA;AACT,iGAvDA,wBAAgB,OAuDA;AAChB,kGAvDA,yBAAiB,OAuDA;AACjB,8FAvDA,qBAAa,OAuDA;AACb,kGAvDA,yBAAiB,OAuDA;AACjB,sGAvDA,6BAAqB,OAuDA;AACrB,kGAvDA,yBAAiB,OAuDA;AATjB,+FA7CA,sBAAc,OA6CA;AACd,mGA7CA,0BAAkB,OA6CA;AAkBlB,sGA9DA,6BAAqB,OA8DA;AACrB,mGA9DA,0BAAkB,OA8DA;AAClB,mGA9DA,0BAAkB,OA8DA;AAClB,0GA9DA,iCAAyB,OA8DA;AACzB,kHA9DA,yCAAiC,OA8DA;AANjC,wGAvDA,+BAAuB,OAuDA;AAOvB,0FA7DA,iBAAS,OA6DA;AAdT,0FA9CA,iBAAS,OA8CA;AACT,8FA9CA,qBAAa,OA8CA;AACb,4FA9CA,mBAAW,OA8CA;AACX,iGA9CA,wBAAgB,OA8CA;AAChB,+FA9CA,sBAAc,OA8CA;AAed,8FA5DA,qBAAa,OA4DA;AAdb,iGA7CA,wBAAgB,OA6CA;AAbhB,gGA/BA,uBAAe,OA+BA;AA5BjB,+CAAiC;AA6D/B,sBAAK"}
|
|
@@ -41,7 +41,7 @@ function stackImageSyncCallback(synchronizerInstance, sourceViewport, targetView
|
|
|
41
41
|
const frameOfReferenceUID1 = sViewport.getFrameOfReferenceUID();
|
|
42
42
|
const frameOfReferenceUID2 = tViewport.getFrameOfReferenceUID();
|
|
43
43
|
if (frameOfReferenceUID1 === frameOfReferenceUID2 &&
|
|
44
|
-
options.useInitialPosition !== false) {
|
|
44
|
+
(options === null || options === void 0 ? void 0 : options.useInitialPosition) !== false) {
|
|
45
45
|
registrationMatrixMat4 = gl_matrix_1.mat4.identity(gl_matrix_1.mat4.create());
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackImageSyncCallback.js","sourceRoot":"","sources":["../../../../src/synchronizers/callbacks/stackImageSyncCallback.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,yCAAuC;AACvC,8CAK6B;AAE7B,+CAA8C;AAC9C,mFAA2D;AAE3D,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CACpD,gBAAS,CAAC,mCAAmC,CAAC,GAAG,CAC/C,2BAA2B,EAC3B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,CAAC;AAuBJ,SAA8B,sBAAsB,CAClD,oBAAkC,EAClC,cAAiC,EACjC,cAAiC;;QAEjC,MAAM,eAAe,GAAG,IAAA,yBAAkB,EAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC7E,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,8BAA8B,cAAc,CAAC,iBAAiB,EAAE,CACjE,CAAC;SACH;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAC3C,cAAc,CAAC,UAAU,CACF,CAAC;QAE1B,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE3E,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE;YACrB,OAAO;SACR;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAC3C,cAAc,CAAC,UAAU,CACF,CAAC;QAE1B,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,eAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;QAE1E,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAE/C,IAAI,CAAC,IAAA,8BAAoB,EAAC,SAAS,EAAE,SAAS,CAAC,EAAE;YAC/C,OAAO;SACR;QAKD,IAAI,sBAAsB,GAAG,sBAAsB,CACjD,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,UAAU,CAC1B,CAAC;QAEF,IAAI,CAAC,sBAAsB,EAAE;YAC3B,MAAM,oBAAoB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;YAChE,MAAM,oBAAoB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;YAChE,IACE,oBAAoB,KAAK,oBAAoB;gBAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"stackImageSyncCallback.js","sourceRoot":"","sources":["../../../../src/synchronizers/callbacks/stackImageSyncCallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
|
+
import { PublicToolProps, ToolProps, SVGDrawingHelper, Annotation } from '../types';
|
|
3
|
+
import AnnotationDisplayTool from './base/AnnotationDisplayTool';
|
|
4
|
+
export interface OverlayGridAnnotation extends Annotation {
|
|
5
|
+
data: {
|
|
6
|
+
viewportData: Map<string, object>;
|
|
7
|
+
pointSets: Array<object>;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
declare class OverlayGridTool extends AnnotationDisplayTool {
|
|
11
|
+
static toolName: any;
|
|
12
|
+
touchDragCallback: any;
|
|
13
|
+
mouseDragCallback: any;
|
|
14
|
+
_throttledCalculateCachedStats: any;
|
|
15
|
+
isDrawing: boolean;
|
|
16
|
+
isHandleOutsideImage: boolean;
|
|
17
|
+
constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
|
|
18
|
+
onSetToolEnabled: () => void;
|
|
19
|
+
onSetToolActive: () => void;
|
|
20
|
+
_init: () => void;
|
|
21
|
+
calculateImageIdPointSets: (imageId: string) => {
|
|
22
|
+
pointSet1: Types.Point3[];
|
|
23
|
+
pointSet2: Types.Point3[];
|
|
24
|
+
};
|
|
25
|
+
renderAnnotation: (enabledElement: Types.IEnabledElement, svgDrawingHelper: SVGDrawingHelper) => boolean;
|
|
26
|
+
private initializeViewportData;
|
|
27
|
+
private isPerpendicular;
|
|
28
|
+
private isParallel;
|
|
29
|
+
private getImageIdNormal;
|
|
30
|
+
}
|
|
31
|
+
export default OverlayGridTool;
|
|
@@ -0,0 +1,170 @@
|
|
|
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
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
7
|
+
const core_1 = require("@cornerstonejs/core");
|
|
8
|
+
const annotationState_1 = require("../stateManagement/annotation/annotationState");
|
|
9
|
+
const ToolGroupManager_1 = require("../store/ToolGroupManager");
|
|
10
|
+
const drawingSvg_1 = require("../drawingSvg");
|
|
11
|
+
const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../utilities/triggerAnnotationRenderForViewportIds"));
|
|
12
|
+
const AnnotationDisplayTool_1 = __importDefault(require("./base/AnnotationDisplayTool"));
|
|
13
|
+
const { EPSILON } = core_1.CONSTANTS;
|
|
14
|
+
class OverlayGridTool extends AnnotationDisplayTool_1.default {
|
|
15
|
+
constructor(toolProps = {}, defaultToolProps = {
|
|
16
|
+
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
17
|
+
configuration: {
|
|
18
|
+
sourceImageIds: [],
|
|
19
|
+
},
|
|
20
|
+
}) {
|
|
21
|
+
super(toolProps, defaultToolProps);
|
|
22
|
+
this.onSetToolEnabled = () => {
|
|
23
|
+
this._init();
|
|
24
|
+
};
|
|
25
|
+
this.onSetToolActive = () => {
|
|
26
|
+
this._init();
|
|
27
|
+
};
|
|
28
|
+
this._init = () => {
|
|
29
|
+
const sourceImageIds = this.configuration.sourceImageIds;
|
|
30
|
+
if (!(sourceImageIds === null || sourceImageIds === void 0 ? void 0 : sourceImageIds.length)) {
|
|
31
|
+
console.warn('OverlayGridTool: No sourceImageIds provided in configuration');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const imagePlaneModule = core_1.metaData.get('imagePlaneModule', sourceImageIds[0]);
|
|
35
|
+
if (!imagePlaneModule) {
|
|
36
|
+
console.warn('OverlayGridTool: No imagePlaneModule found for sourceImageIds');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const { frameOfReferenceUID } = imagePlaneModule;
|
|
40
|
+
const viewportsInfo = (0, ToolGroupManager_1.getToolGroup)(this.toolGroupId).viewportsInfo;
|
|
41
|
+
if (!(viewportsInfo === null || viewportsInfo === void 0 ? void 0 : viewportsInfo.length)) {
|
|
42
|
+
console.warn('OverlayGridTool: No viewports found');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const annotations = (0, annotationState_1.getAnnotations)(this.getToolName(), frameOfReferenceUID);
|
|
46
|
+
if (!(annotations === null || annotations === void 0 ? void 0 : annotations.length)) {
|
|
47
|
+
const pointSets = sourceImageIds.map((id) => {
|
|
48
|
+
return this.calculateImageIdPointSets(id);
|
|
49
|
+
});
|
|
50
|
+
const newAnnotation = {
|
|
51
|
+
highlighted: true,
|
|
52
|
+
invalidated: true,
|
|
53
|
+
metadata: {
|
|
54
|
+
toolName: this.getToolName(),
|
|
55
|
+
FrameOfReferenceUID: frameOfReferenceUID,
|
|
56
|
+
referencedImageId: null,
|
|
57
|
+
},
|
|
58
|
+
data: {
|
|
59
|
+
viewportData: new Map(),
|
|
60
|
+
pointSets,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
(0, annotationState_1.addAnnotation)(newAnnotation, frameOfReferenceUID);
|
|
64
|
+
}
|
|
65
|
+
(0, triggerAnnotationRenderForViewportIds_1.default)((0, core_1.getRenderingEngine)(viewportsInfo[0].renderingEngineId), viewportsInfo.map(({ viewportId }) => viewportId));
|
|
66
|
+
};
|
|
67
|
+
this.calculateImageIdPointSets = (imageId) => {
|
|
68
|
+
const { imagePositionPatient, rows, columns, rowCosines, columnCosines, rowPixelSpacing, columnPixelSpacing, } = core_1.metaData.get('imagePlaneModule', imageId);
|
|
69
|
+
const topLeft = [...imagePositionPatient];
|
|
70
|
+
const topRight = [...imagePositionPatient];
|
|
71
|
+
const bottomLeft = [...imagePositionPatient];
|
|
72
|
+
const bottomRight = [...imagePositionPatient];
|
|
73
|
+
gl_matrix_1.vec3.scaleAndAdd(topRight, imagePositionPatient, columnCosines, columns * columnPixelSpacing);
|
|
74
|
+
gl_matrix_1.vec3.scaleAndAdd(bottomLeft, imagePositionPatient, rowCosines, rows * rowPixelSpacing);
|
|
75
|
+
gl_matrix_1.vec3.scaleAndAdd(bottomRight, bottomLeft, columnCosines, columns * columnPixelSpacing);
|
|
76
|
+
const pointSet1 = [topLeft, bottomLeft, topRight, bottomRight];
|
|
77
|
+
const pointSet2 = [topLeft, topRight, bottomLeft, bottomRight];
|
|
78
|
+
return { pointSet1, pointSet2 };
|
|
79
|
+
};
|
|
80
|
+
this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
|
|
81
|
+
const sourceImageIds = this.configuration.sourceImageIds;
|
|
82
|
+
let renderStatus = false;
|
|
83
|
+
if (!(sourceImageIds === null || sourceImageIds === void 0 ? void 0 : sourceImageIds.length)) {
|
|
84
|
+
return renderStatus;
|
|
85
|
+
}
|
|
86
|
+
const { viewport: targetViewport, FrameOfReferenceUID } = enabledElement;
|
|
87
|
+
const targetImageIds = targetViewport.getImageIds();
|
|
88
|
+
if (targetImageIds.length < 2) {
|
|
89
|
+
return renderStatus;
|
|
90
|
+
}
|
|
91
|
+
const annotations = (0, annotationState_1.getAnnotations)(this.getToolName(), FrameOfReferenceUID);
|
|
92
|
+
if (!(annotations === null || annotations === void 0 ? void 0 : annotations.length)) {
|
|
93
|
+
return renderStatus;
|
|
94
|
+
}
|
|
95
|
+
const annotation = annotations[0];
|
|
96
|
+
const { annotationUID } = annotation;
|
|
97
|
+
const { focalPoint, viewPlaneNormal } = targetViewport.getCamera();
|
|
98
|
+
const styleSpecifier = {
|
|
99
|
+
toolGroupId: this.toolGroupId,
|
|
100
|
+
toolName: this.getToolName(),
|
|
101
|
+
viewportId: enabledElement.viewport.id,
|
|
102
|
+
};
|
|
103
|
+
const imageIdNormal = (this.getImageIdNormal(sourceImageIds[0]));
|
|
104
|
+
if (this.isParallel(viewPlaneNormal, imageIdNormal)) {
|
|
105
|
+
return renderStatus;
|
|
106
|
+
}
|
|
107
|
+
const targetViewportPlane = core_1.utilities.planar.planeEquation(viewPlaneNormal, focalPoint);
|
|
108
|
+
const pointSets = annotation.data.pointSets;
|
|
109
|
+
const viewportData = annotation.data.viewportData;
|
|
110
|
+
for (let i = 0; i < sourceImageIds.length; i++) {
|
|
111
|
+
const { pointSet1, pointSet2 } = pointSets[i];
|
|
112
|
+
const targetData = viewportData.get(targetViewport.id) ||
|
|
113
|
+
this.initializeViewportData(viewportData, targetViewport.id);
|
|
114
|
+
if (!targetData.pointSetsToUse[i]) {
|
|
115
|
+
let pointSetToUse = pointSet1;
|
|
116
|
+
let topBottomVec = gl_matrix_1.vec3.subtract(gl_matrix_1.vec3.create(), pointSet1[0], pointSet1[1]);
|
|
117
|
+
topBottomVec = gl_matrix_1.vec3.normalize(gl_matrix_1.vec3.create(), topBottomVec);
|
|
118
|
+
if (this.isPerpendicular(topBottomVec, viewPlaneNormal)) {
|
|
119
|
+
pointSetToUse = pointSet2;
|
|
120
|
+
}
|
|
121
|
+
targetData.pointSetsToUse[i] = pointSetToUse;
|
|
122
|
+
targetData.lineStartsWorld[i] = core_1.utilities.planar.linePlaneIntersection(pointSetToUse[0], pointSetToUse[1], targetViewportPlane);
|
|
123
|
+
targetData.lineEndsWorld[i] = core_1.utilities.planar.linePlaneIntersection(pointSetToUse[2], pointSetToUse[3], targetViewportPlane);
|
|
124
|
+
}
|
|
125
|
+
const lineStartWorld = targetData.lineStartsWorld[i];
|
|
126
|
+
const lineEndWorld = targetData.lineEndsWorld[i];
|
|
127
|
+
styleSpecifier.annotationUID = annotationUID;
|
|
128
|
+
const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation);
|
|
129
|
+
const lineDash = this.getStyle('lineDash', styleSpecifier, annotation);
|
|
130
|
+
const color = this.getStyle('color', styleSpecifier, annotation);
|
|
131
|
+
const shadow = this.getStyle('shadow', styleSpecifier, annotation);
|
|
132
|
+
const canvasCoordinates = [lineStartWorld, lineEndWorld].map((world) => targetViewport.worldToCanvas(world));
|
|
133
|
+
const dataId = `${annotationUID}-line`;
|
|
134
|
+
const lineUID = `${i}`;
|
|
135
|
+
(0, drawingSvg_1.drawLine)(svgDrawingHelper, annotationUID, lineUID, canvasCoordinates[0], canvasCoordinates[1], {
|
|
136
|
+
color,
|
|
137
|
+
width: lineWidth,
|
|
138
|
+
lineDash,
|
|
139
|
+
shadow,
|
|
140
|
+
}, dataId);
|
|
141
|
+
}
|
|
142
|
+
renderStatus = true;
|
|
143
|
+
return renderStatus;
|
|
144
|
+
};
|
|
145
|
+
this.initializeViewportData = (viewportData, id) => {
|
|
146
|
+
viewportData.set(id, {
|
|
147
|
+
pointSetsToUse: [],
|
|
148
|
+
lineStartsWorld: [],
|
|
149
|
+
lineEndsWorld: [],
|
|
150
|
+
});
|
|
151
|
+
return viewportData.get(id);
|
|
152
|
+
};
|
|
153
|
+
this.isPerpendicular = (vec1, vec2) => {
|
|
154
|
+
const dot = gl_matrix_1.vec3.dot(vec1, vec2);
|
|
155
|
+
return Math.abs(dot) < EPSILON;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
isParallel(vec1, vec2) {
|
|
159
|
+
return Math.abs(gl_matrix_1.vec3.dot(vec1, vec2)) > 1 - EPSILON;
|
|
160
|
+
}
|
|
161
|
+
getImageIdNormal(imageId) {
|
|
162
|
+
const { imageOrientationPatient } = core_1.metaData.get('imagePlaneModule', imageId);
|
|
163
|
+
const rowCosineVec = gl_matrix_1.vec3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
|
|
164
|
+
const colCosineVec = gl_matrix_1.vec3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
|
|
165
|
+
return gl_matrix_1.vec3.cross(gl_matrix_1.vec3.create(), rowCosineVec, colCosineVec);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
OverlayGridTool.toolName = 'OverlayGrid';
|
|
169
|
+
exports.default = OverlayGridTool;
|
|
170
|
+
//# sourceMappingURL=OverlayGridTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverlayGridTool.js","sourceRoot":"","sources":["../../../src/tools/OverlayGridTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import MIPJumpToClickTool from './MIPJumpToClickTool';
|
|
|
11
11
|
import CrosshairsTool from './CrosshairsTool';
|
|
12
12
|
import MagnifyTool from './MagnifyTool';
|
|
13
13
|
import ReferenceLinesTool from './ReferenceLinesTool';
|
|
14
|
+
import OverlayGridTool from './OverlayGridTool';
|
|
14
15
|
import BidirectionalTool from './annotation/BidirectionalTool';
|
|
15
16
|
import LengthTool from './annotation/LengthTool';
|
|
16
17
|
import ProbeTool from './annotation/ProbeTool';
|
|
@@ -33,4 +34,4 @@ import RectangleROIThresholdTool from './segmentation/RectangleROIThresholdTool'
|
|
|
33
34
|
import RectangleROIStartEndThresholdTool from './segmentation/RectangleROIStartEndThresholdTool';
|
|
34
35
|
import BrushTool from './segmentation/BrushTool';
|
|
35
36
|
import PaintFillTool from './segmentation/PaintFillTool';
|
|
36
|
-
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, CrosshairsTool, ReferenceLinesTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, ReferenceCursors, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, MagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, };
|
|
37
|
+
export { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, ZoomTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, BidirectionalTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, ReferenceCursors, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, MagnifyTool, ReferenceLines, PaintFillTool, ScaleOverlayTool, };
|
package/dist/cjs/tools/index.js
CHANGED
|
@@ -3,7 +3,7 @@ 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.ScaleOverlayTool = exports.PaintFillTool = exports.ReferenceLines = exports.MagnifyTool = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.ReferenceCursors = exports.CobbAngleTool = exports.AngleTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.CircleROITool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.LengthTool = exports.BidirectionalTool = exports.ReferenceLinesTool = exports.CrosshairsTool = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.ZoomTool = exports.StackScrollMouseWheelTool = exports.PlanarRotateTool = exports.StackScrollTool = exports.WindowLevelTool = exports.DragProbeTool = exports.TrackballRotateTool = exports.PanTool = exports.AnnotationDisplayTool = exports.AnnotationTool = exports.BaseTool = void 0;
|
|
6
|
+
exports.ScaleOverlayTool = exports.PaintFillTool = exports.ReferenceLines = exports.MagnifyTool = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.ReferenceCursors = exports.CobbAngleTool = exports.AngleTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.CircleROITool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.LengthTool = exports.BidirectionalTool = exports.OverlayGridTool = exports.ReferenceLinesTool = exports.CrosshairsTool = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.ZoomTool = exports.StackScrollMouseWheelTool = exports.PlanarRotateTool = exports.StackScrollTool = exports.WindowLevelTool = exports.DragProbeTool = exports.TrackballRotateTool = exports.PanTool = exports.AnnotationDisplayTool = exports.AnnotationTool = exports.BaseTool = void 0;
|
|
7
7
|
const base_1 = require("./base");
|
|
8
8
|
Object.defineProperty(exports, "BaseTool", { enumerable: true, get: function () { return base_1.BaseTool; } });
|
|
9
9
|
Object.defineProperty(exports, "AnnotationTool", { enumerable: true, get: function () { return base_1.AnnotationTool; } });
|
|
@@ -32,6 +32,8 @@ const MagnifyTool_1 = __importDefault(require("./MagnifyTool"));
|
|
|
32
32
|
exports.MagnifyTool = MagnifyTool_1.default;
|
|
33
33
|
const ReferenceLinesTool_1 = __importDefault(require("./ReferenceLinesTool"));
|
|
34
34
|
exports.ReferenceLinesTool = ReferenceLinesTool_1.default;
|
|
35
|
+
const OverlayGridTool_1 = __importDefault(require("./OverlayGridTool"));
|
|
36
|
+
exports.OverlayGridTool = OverlayGridTool_1.default;
|
|
35
37
|
const BidirectionalTool_1 = __importDefault(require("./annotation/BidirectionalTool"));
|
|
36
38
|
exports.BidirectionalTool = BidirectionalTool_1.default;
|
|
37
39
|
const LengthTool_1 = __importDefault(require("./annotation/LengthTool"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAyE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAyE;AA4CvE,yFA5CO,eAAQ,OA4CP;AACR,+FA7CiB,qBAAc,OA6CjB;AACd,sGA9CiC,4BAAqB,OA8CjC;AA7CvB,wDAAgC;AA+C9B,kBA/CK,iBAAO,CA+CL;AA9CT,gFAAwD;AA+CtD,8BA/CK,6BAAmB,CA+CL;AA9CrB,wEAAgD;AAgD9C,0BAhDK,yBAAe,CAgDL;AA/CjB,wEAAgD;AAgD9C,0BAhDK,yBAAe,CAgDL;AA/CjB,0EAAkD;AAgDhD,2BAhDK,0BAAgB,CAgDL;AA/ClB,oGAAwE;AAgDtE,oCAhDK,uCAAyB,CAgDL;AA/C3B,0DAAkC;AAgDhC,mBAhDK,kBAAQ,CAgDL;AA/CV,8FAAsE;AAgDpE,qCAhDK,oCAA0B,CAgDL;AA/C5B,8EAAsD;AAgDpD,6BAhDK,4BAAkB,CAgDL;AA/CpB,sEAA8C;AAiD5C,yBAjDK,wBAAc,CAiDL;AAhDhB,gEAAwC;AAuEtC,sBAvEK,qBAAW,CAuEL;AAtEb,8EAAsD;AAgDpD,6BAhDK,4BAAkB,CAgDL;AA/CpB,wEAAgD;AAgD9C,0BAhDK,yBAAe,CAgDL;AA9CjB,uFAA+D;AA+C7D,4BA/CK,2BAAiB,CA+CL;AA9CnB,yEAAiD;AA+C/C,qBA/CK,oBAAU,CA+CL;AA9CZ,uEAA+C;AA+C7C,oBA/CK,mBAAS,CA+CL;AA9CX,+EAAuD;AAgCrD,wBAhCK,uBAAa,CAgCL;AA/Bf,qFAA6D;AA8C3D,2BA9CK,0BAAgB,CA8CL;AA7ClB,uFAA+D;AA8C7D,4BA9CK,2BAAiB,CA8CL;AA7CnB,+EAAuD;AA8CrD,wBA9CK,uBAAa,CA8CL;AA7Cf,+FAAuE;AA8CrE,gCA9CK,+BAAqB,CA8CL;AA7CvB,uFAA+D;AA8C7D,4BA9CK,2BAAiB,CA8CL;AA7CnB,uEAA+C;AA8C7C,oBA9CK,mBAAS,CA8CL;AA7CX,+EAAuD;AA8CrD,wBA9CK,uBAAa,CA8CL;AA7Cf,0EAAkD;AA8ChD,2BA9CK,0BAAgB,CA8CL;AA7ClB,8EAAkD;AAwDhD,yBAxDK,4BAAc,CAwDL;AAvDhB,0EAAkD;AAyDhD,2BAzDK,0BAAgB,CAyDL;AAtDlB,qGAA6E;AA2C3E,kCA3CK,iCAAuB,CA2CL;AAxCzB,iGAAyE;AA0CvE,gCA1CK,+BAAqB,CA0CL;AAzCvB,2FAAmE;AA0CjE,6BA1CK,4BAAkB,CA0CL;AAzCpB,2FAAmE;AA0CjE,6BA1CK,4BAAkB,CA0CL;AAzCpB,yGAAiF;AA0C/E,oCA1CK,mCAAyB,CA0CL;AAzC3B,yHAAiG;AA0C/F,4CA1CK,2CAAiC,CA0CL;AAzCnC,yEAAiD;AA0C/C,oBA1CK,mBAAS,CA0CL;AAzCX,iFAAyD;AA4CvD,wBA5CK,uBAAa,CA4CL"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ import * as cursors from './cursors';
|
|
|
8
8
|
import * as Types from './types';
|
|
9
9
|
import * as annotation from './stateManagement/annotation';
|
|
10
10
|
import * as segmentation from './stateManagement/segmentation';
|
|
11
|
-
import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool } from './tools';
|
|
11
|
+
import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OverlayGridTool } from './tools';
|
|
12
12
|
import * as Enums from './enums';
|
|
13
|
-
export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
|
|
13
|
+
export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
|
package/dist/esm/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import * as cursors from './cursors';
|
|
|
8
8
|
import * as Types from './types';
|
|
9
9
|
import * as annotation from './stateManagement/annotation';
|
|
10
10
|
import * as segmentation from './stateManagement/segmentation';
|
|
11
|
-
import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, } from './tools';
|
|
11
|
+
import { BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, ReferenceLinesTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, PaintFillTool, ScaleOverlayTool, OverlayGridTool, } from './tools';
|
|
12
12
|
import * as Enums from './enums';
|
|
13
|
-
export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
|
|
13
|
+
export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, AnnotationDisplayTool, PanTool, TrackballRotateTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, PlanarRotateTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ReferenceLinesTool, OverlayGridTool, ProbeTool, RectangleROITool, EllipticalROITool, CircleROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, CobbAngleTool, MagnifyTool, ReferenceCursors, ReferenceLines, ScaleOverlayTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, PaintFillTool, Types, state, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EACL,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EACL,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAEL,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAU,EACV,yBAAyB,EAEzB,QAAQ,EACR,cAAc,EACd,qBAAqB,EAErB,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAElB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAEhB,uBAAuB,EAEvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EAET,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,KAAK,EAEL,gBAAgB,EAEhB,KAAK,EAEL,SAAS,EAET,OAAO,EAEP,UAAU,EAEV,YAAY,EAEZ,SAAS,EACT,OAAO,GACR,CAAC"}
|
|
@@ -26,7 +26,7 @@ export default async function stackImageSyncCallback(synchronizerInstance, sourc
|
|
|
26
26
|
const frameOfReferenceUID1 = sViewport.getFrameOfReferenceUID();
|
|
27
27
|
const frameOfReferenceUID2 = tViewport.getFrameOfReferenceUID();
|
|
28
28
|
if (frameOfReferenceUID1 === frameOfReferenceUID2 &&
|
|
29
|
-
options
|
|
29
|
+
options?.useInitialPosition !== false) {
|
|
30
30
|
registrationMatrixMat4 = mat4.identity(mat4.create());
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackImageSyncCallback.js","sourceRoot":"","sources":["../../../../src/synchronizers/callbacks/stackImageSyncCallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EACL,kBAAkB,EAElB,QAAQ,EACR,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAE3D,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CACpD,SAAS,CAAC,mCAAmC,CAAC,GAAG,CAC/C,2BAA2B,EAC3B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,CAAC;AAuBJ,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,sBAAsB,CAClD,oBAAkC,EAClC,cAAiC,EACjC,cAAiC;IAEjC,MAAM,eAAe,GAAG,kBAAkB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC7E,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,IAAI,KAAK,CACb,8BAA8B,cAAc,CAAC,iBAAiB,EAAE,CACjE,CAAC;KACH;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAC3C,cAAc,CAAC,UAAU,CACF,CAAC;IAE1B,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3E,IAAI,OAAO,EAAE,QAAQ,EAAE;QACrB,OAAO;KACR;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAC3C,cAAc,CAAC,UAAU,CACF,CAAC;IAE1B,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC/C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;IAE1E,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAE/C,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;QAC/C,OAAO;KACR;IAKD,IAAI,sBAAsB,GAAG,sBAAsB,CACjD,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,UAAU,CAC1B,CAAC;IAEF,IAAI,CAAC,sBAAsB,EAAE;QAC3B,MAAM,oBAAoB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;QAChE,MAAM,oBAAoB,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;QAChE,IACE,oBAAoB,KAAK,oBAAoB;YAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"stackImageSyncCallback.js","sourceRoot":"","sources":["../../../../src/synchronizers/callbacks/stackImageSyncCallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
|
+
import { PublicToolProps, ToolProps, SVGDrawingHelper, Annotation } from '../types';
|
|
3
|
+
import AnnotationDisplayTool from './base/AnnotationDisplayTool';
|
|
4
|
+
export interface OverlayGridAnnotation extends Annotation {
|
|
5
|
+
data: {
|
|
6
|
+
viewportData: Map<string, object>;
|
|
7
|
+
pointSets: Array<object>;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
declare class OverlayGridTool extends AnnotationDisplayTool {
|
|
11
|
+
static toolName: any;
|
|
12
|
+
touchDragCallback: any;
|
|
13
|
+
mouseDragCallback: any;
|
|
14
|
+
_throttledCalculateCachedStats: any;
|
|
15
|
+
isDrawing: boolean;
|
|
16
|
+
isHandleOutsideImage: boolean;
|
|
17
|
+
constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
|
|
18
|
+
onSetToolEnabled: () => void;
|
|
19
|
+
onSetToolActive: () => void;
|
|
20
|
+
_init: () => void;
|
|
21
|
+
calculateImageIdPointSets: (imageId: string) => {
|
|
22
|
+
pointSet1: Types.Point3[];
|
|
23
|
+
pointSet2: Types.Point3[];
|
|
24
|
+
};
|
|
25
|
+
renderAnnotation: (enabledElement: Types.IEnabledElement, svgDrawingHelper: SVGDrawingHelper) => boolean;
|
|
26
|
+
private initializeViewportData;
|
|
27
|
+
private isPerpendicular;
|
|
28
|
+
private isParallel;
|
|
29
|
+
private getImageIdNormal;
|
|
30
|
+
}
|
|
31
|
+
export default OverlayGridTool;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
import { metaData, CONSTANTS, getRenderingEngine, utilities as csUtils, } from '@cornerstonejs/core';
|
|
3
|
+
import { addAnnotation, getAnnotations, } from '../stateManagement/annotation/annotationState';
|
|
4
|
+
import { getToolGroup } from '../store/ToolGroupManager';
|
|
5
|
+
import { drawLine as drawLineSvg } from '../drawingSvg';
|
|
6
|
+
import triggerAnnotationRenderForViewportIds from '../utilities/triggerAnnotationRenderForViewportIds';
|
|
7
|
+
import AnnotationDisplayTool from './base/AnnotationDisplayTool';
|
|
8
|
+
const { EPSILON } = CONSTANTS;
|
|
9
|
+
class OverlayGridTool extends AnnotationDisplayTool {
|
|
10
|
+
constructor(toolProps = {}, defaultToolProps = {
|
|
11
|
+
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
12
|
+
configuration: {
|
|
13
|
+
sourceImageIds: [],
|
|
14
|
+
},
|
|
15
|
+
}) {
|
|
16
|
+
super(toolProps, defaultToolProps);
|
|
17
|
+
this.onSetToolEnabled = () => {
|
|
18
|
+
this._init();
|
|
19
|
+
};
|
|
20
|
+
this.onSetToolActive = () => {
|
|
21
|
+
this._init();
|
|
22
|
+
};
|
|
23
|
+
this._init = () => {
|
|
24
|
+
const sourceImageIds = this.configuration.sourceImageIds;
|
|
25
|
+
if (!sourceImageIds?.length) {
|
|
26
|
+
console.warn('OverlayGridTool: No sourceImageIds provided in configuration');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const imagePlaneModule = metaData.get('imagePlaneModule', sourceImageIds[0]);
|
|
30
|
+
if (!imagePlaneModule) {
|
|
31
|
+
console.warn('OverlayGridTool: No imagePlaneModule found for sourceImageIds');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const { frameOfReferenceUID } = imagePlaneModule;
|
|
35
|
+
const viewportsInfo = getToolGroup(this.toolGroupId).viewportsInfo;
|
|
36
|
+
if (!viewportsInfo?.length) {
|
|
37
|
+
console.warn('OverlayGridTool: No viewports found');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const annotations = getAnnotations(this.getToolName(), frameOfReferenceUID);
|
|
41
|
+
if (!annotations?.length) {
|
|
42
|
+
const pointSets = sourceImageIds.map((id) => {
|
|
43
|
+
return this.calculateImageIdPointSets(id);
|
|
44
|
+
});
|
|
45
|
+
const newAnnotation = {
|
|
46
|
+
highlighted: true,
|
|
47
|
+
invalidated: true,
|
|
48
|
+
metadata: {
|
|
49
|
+
toolName: this.getToolName(),
|
|
50
|
+
FrameOfReferenceUID: frameOfReferenceUID,
|
|
51
|
+
referencedImageId: null,
|
|
52
|
+
},
|
|
53
|
+
data: {
|
|
54
|
+
viewportData: new Map(),
|
|
55
|
+
pointSets,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
addAnnotation(newAnnotation, frameOfReferenceUID);
|
|
59
|
+
}
|
|
60
|
+
triggerAnnotationRenderForViewportIds(getRenderingEngine(viewportsInfo[0].renderingEngineId), viewportsInfo.map(({ viewportId }) => viewportId));
|
|
61
|
+
};
|
|
62
|
+
this.calculateImageIdPointSets = (imageId) => {
|
|
63
|
+
const { imagePositionPatient, rows, columns, rowCosines, columnCosines, rowPixelSpacing, columnPixelSpacing, } = metaData.get('imagePlaneModule', imageId);
|
|
64
|
+
const topLeft = [...imagePositionPatient];
|
|
65
|
+
const topRight = [...imagePositionPatient];
|
|
66
|
+
const bottomLeft = [...imagePositionPatient];
|
|
67
|
+
const bottomRight = [...imagePositionPatient];
|
|
68
|
+
vec3.scaleAndAdd(topRight, imagePositionPatient, columnCosines, columns * columnPixelSpacing);
|
|
69
|
+
vec3.scaleAndAdd(bottomLeft, imagePositionPatient, rowCosines, rows * rowPixelSpacing);
|
|
70
|
+
vec3.scaleAndAdd(bottomRight, bottomLeft, columnCosines, columns * columnPixelSpacing);
|
|
71
|
+
const pointSet1 = [topLeft, bottomLeft, topRight, bottomRight];
|
|
72
|
+
const pointSet2 = [topLeft, topRight, bottomLeft, bottomRight];
|
|
73
|
+
return { pointSet1, pointSet2 };
|
|
74
|
+
};
|
|
75
|
+
this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
|
|
76
|
+
const sourceImageIds = this.configuration.sourceImageIds;
|
|
77
|
+
let renderStatus = false;
|
|
78
|
+
if (!sourceImageIds?.length) {
|
|
79
|
+
return renderStatus;
|
|
80
|
+
}
|
|
81
|
+
const { viewport: targetViewport, FrameOfReferenceUID } = enabledElement;
|
|
82
|
+
const targetImageIds = targetViewport.getImageIds();
|
|
83
|
+
if (targetImageIds.length < 2) {
|
|
84
|
+
return renderStatus;
|
|
85
|
+
}
|
|
86
|
+
const annotations = getAnnotations(this.getToolName(), FrameOfReferenceUID);
|
|
87
|
+
if (!annotations?.length) {
|
|
88
|
+
return renderStatus;
|
|
89
|
+
}
|
|
90
|
+
const annotation = annotations[0];
|
|
91
|
+
const { annotationUID } = annotation;
|
|
92
|
+
const { focalPoint, viewPlaneNormal } = targetViewport.getCamera();
|
|
93
|
+
const styleSpecifier = {
|
|
94
|
+
toolGroupId: this.toolGroupId,
|
|
95
|
+
toolName: this.getToolName(),
|
|
96
|
+
viewportId: enabledElement.viewport.id,
|
|
97
|
+
};
|
|
98
|
+
const imageIdNormal = (this.getImageIdNormal(sourceImageIds[0]));
|
|
99
|
+
if (this.isParallel(viewPlaneNormal, imageIdNormal)) {
|
|
100
|
+
return renderStatus;
|
|
101
|
+
}
|
|
102
|
+
const targetViewportPlane = csUtils.planar.planeEquation(viewPlaneNormal, focalPoint);
|
|
103
|
+
const pointSets = annotation.data.pointSets;
|
|
104
|
+
const viewportData = annotation.data.viewportData;
|
|
105
|
+
for (let i = 0; i < sourceImageIds.length; i++) {
|
|
106
|
+
const { pointSet1, pointSet2 } = pointSets[i];
|
|
107
|
+
const targetData = viewportData.get(targetViewport.id) ||
|
|
108
|
+
this.initializeViewportData(viewportData, targetViewport.id);
|
|
109
|
+
if (!targetData.pointSetsToUse[i]) {
|
|
110
|
+
let pointSetToUse = pointSet1;
|
|
111
|
+
let topBottomVec = vec3.subtract(vec3.create(), pointSet1[0], pointSet1[1]);
|
|
112
|
+
topBottomVec = vec3.normalize(vec3.create(), topBottomVec);
|
|
113
|
+
if (this.isPerpendicular(topBottomVec, viewPlaneNormal)) {
|
|
114
|
+
pointSetToUse = pointSet2;
|
|
115
|
+
}
|
|
116
|
+
targetData.pointSetsToUse[i] = pointSetToUse;
|
|
117
|
+
targetData.lineStartsWorld[i] = csUtils.planar.linePlaneIntersection(pointSetToUse[0], pointSetToUse[1], targetViewportPlane);
|
|
118
|
+
targetData.lineEndsWorld[i] = csUtils.planar.linePlaneIntersection(pointSetToUse[2], pointSetToUse[3], targetViewportPlane);
|
|
119
|
+
}
|
|
120
|
+
const lineStartWorld = targetData.lineStartsWorld[i];
|
|
121
|
+
const lineEndWorld = targetData.lineEndsWorld[i];
|
|
122
|
+
styleSpecifier.annotationUID = annotationUID;
|
|
123
|
+
const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation);
|
|
124
|
+
const lineDash = this.getStyle('lineDash', styleSpecifier, annotation);
|
|
125
|
+
const color = this.getStyle('color', styleSpecifier, annotation);
|
|
126
|
+
const shadow = this.getStyle('shadow', styleSpecifier, annotation);
|
|
127
|
+
const canvasCoordinates = [lineStartWorld, lineEndWorld].map((world) => targetViewport.worldToCanvas(world));
|
|
128
|
+
const dataId = `${annotationUID}-line`;
|
|
129
|
+
const lineUID = `${i}`;
|
|
130
|
+
drawLineSvg(svgDrawingHelper, annotationUID, lineUID, canvasCoordinates[0], canvasCoordinates[1], {
|
|
131
|
+
color,
|
|
132
|
+
width: lineWidth,
|
|
133
|
+
lineDash,
|
|
134
|
+
shadow,
|
|
135
|
+
}, dataId);
|
|
136
|
+
}
|
|
137
|
+
renderStatus = true;
|
|
138
|
+
return renderStatus;
|
|
139
|
+
};
|
|
140
|
+
this.initializeViewportData = (viewportData, id) => {
|
|
141
|
+
viewportData.set(id, {
|
|
142
|
+
pointSetsToUse: [],
|
|
143
|
+
lineStartsWorld: [],
|
|
144
|
+
lineEndsWorld: [],
|
|
145
|
+
});
|
|
146
|
+
return viewportData.get(id);
|
|
147
|
+
};
|
|
148
|
+
this.isPerpendicular = (vec1, vec2) => {
|
|
149
|
+
const dot = vec3.dot(vec1, vec2);
|
|
150
|
+
return Math.abs(dot) < EPSILON;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
isParallel(vec1, vec2) {
|
|
154
|
+
return Math.abs(vec3.dot(vec1, vec2)) > 1 - EPSILON;
|
|
155
|
+
}
|
|
156
|
+
getImageIdNormal(imageId) {
|
|
157
|
+
const { imageOrientationPatient } = metaData.get('imagePlaneModule', imageId);
|
|
158
|
+
const rowCosineVec = vec3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
|
|
159
|
+
const colCosineVec = vec3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
|
|
160
|
+
return vec3.cross(vec3.create(), rowCosineVec, colCosineVec);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
OverlayGridTool.toolName = 'OverlayGrid';
|
|
164
|
+
export default OverlayGridTool;
|
|
165
|
+
//# sourceMappingURL=OverlayGridTool.js.map
|