@ohif/app 3.9.0-beta.57 → 3.9.0-beta.59
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/{29.bundle.976319462f33868497c2.js → 117.bundle.403581eea72534ff9c7e.js} +1765 -582
- package/dist/{169.bundle.483057ed84ca3e92513a.js → 169.bundle.d28df3cf2d600fc3e146.js} +7 -5
- package/dist/{210.bundle.368d53177dc659dc6af0.js → 210.bundle.ea52c75bb27ab002dc4d.js} +2 -2
- package/dist/{281.bundle.49da07d997da7cc01705.js → 281.bundle.719e9e222fecb4e9e9c6.js} +18 -4
- package/dist/{360.bundle.2c117803c05f0bc31424.js → 360.bundle.9a0c682beae1ef7e40b1.js} +5 -5
- package/dist/{372.bundle.d97377781382080306bd.js → 372.bundle.9891a9938b28db4b36ce.js} +5 -4
- package/dist/424.bundle.1caecbb1bbefc271b621.js +663 -0
- package/dist/{497.bundle.ee102d6243f984113f08.js → 497.bundle.bbc07cef12d598653a65.js} +149 -117
- package/dist/{498.bundle.bb47c493dd02451f77ef.js → 498.bundle.e5ccb2bc38e4bfdd564b.js} +1 -1
- package/dist/{516.bundle.d777e4126814a5a47117.js → 516.bundle.e59c26f055d145ce835e.js} +47 -12
- package/dist/{196.bundle.cf8c2311aafb5312bbf7.js → 579.bundle.0b78fc095924efac431d.js} +1705 -493
- package/dist/{552.bundle.85aaefb5e22d6d1bffa9.js → 65.bundle.d15cc84a0b991e182649.js} +15 -680
- package/dist/{129.bundle.3102eccbd5c78524c3dd.js → 650.bundle.a65389abf76ad921aa17.js} +2671 -2975
- package/dist/{793.bundle.c92f52ddff0e3bf506e6.js → 793.bundle.e4c759b5cdfcc3c7494f.js} +2 -2
- package/dist/{818.bundle.cda4e369fdee5459a544.js → 818.bundle.b64fae7e982e16a82ca2.js} +133 -69
- package/dist/{842.bundle.a5533bc77e6f57b0ee30.js → 842.bundle.cccbb7e3611e3d220f07.js} +2 -2
- package/dist/{888.bundle.7ff5dfd3c14072cee2a9.js → 888.bundle.d3b2a82cb17155725342.js} +9 -3
- package/dist/{428.bundle.744fc5865b2d747de88a.js → 904.bundle.008f8a2095669f4eabba.js} +88 -50
- package/dist/{962.bundle.d5f55c85407221bbce7b.js → 962.bundle.868b30361a52b0ffa504.js} +2 -2
- package/dist/{993.bundle.aa31ebda5a5f62c44de5.js → 993.bundle.302a286ebb6e3fc0c35a.js} +1265 -485
- package/dist/{994.bundle.c4709bfb7fd9dcde0551.js → 994.bundle.3b5f396b62cce2990c03.js} +15 -1
- package/dist/{app.bundle.a69624a3e0becd131c65.js → app.bundle.14f126e3ec4491bb1948.js} +1393 -1321
- package/dist/app.bundle.css +2 -2
- package/dist/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map +1 -0
- package/dist/{histogram-worker.bundle.e7e9fea2c3236b0e747a.js → histogram-worker.bundle.89729ccb99d170ff2f2f.js} +2 -1
- package/dist/index.html +3 -1
- package/dist/{polySeg.bundle.b25c61224998018d0f79.js → polySeg.bundle.d8943427beee7694621a.js} +3 -22
- package/dist/{suv-peak-worker.bundle.eb11e71db02e52601ecf.js → suv-peak-worker.bundle.15dcb8d1ab8e0528bfd9.js} +3 -22
- package/dist/sw.js +1 -1
- package/package.json +18 -18
- /package/dist/{153.bundle.62dad8e9c7532474e95c.js → 153.bundle.42a66f99ced5972aa0c0.js} +0 -0
- /package/dist/{202.bundle.bb0e8196739bb896dc9e.js → 202.bundle.f6d9ca4b1c16b1aa227f.js} +0 -0
- /package/dist/{246.bundle.27aca95ea22cd5fcd414.js → 246.bundle.912e9f8342cd5d6228e6.js} +0 -0
- /package/dist/{353.bundle.a741604612f3f1d18398.js → 353.bundle.5b11e6b395c5d5cc33bf.js} +0 -0
- /package/dist/{376.bundle.2657056d8bc2b11fb0e8.js → 376.bundle.ac0e23dc830cd982fd18.js} +0 -0
- /package/dist/{552.css → 424.css} +0 -0
- /package/dist/{502.bundle.e7e6c345146aef00a169.js → 502.bundle.823682db96d52df1b8cf.js} +0 -0
- /package/dist/{591.bundle.aa91409b528ae6b601e0.js → 591.bundle.39fa1e6e7285929f2e29.js} +0 -0
- /package/dist/{791.bundle.d614182fa975e92cf4f5.js → 791.bundle.ecf9b1f8892d5f8962a3.js} +0 -0
- /package/dist/{944.bundle.c2bcb49d5077bd6fcc87.js → 944.bundle.93eddec203a43754e826.js} +0 -0
- /package/dist/{978.bundle.cd27543a62e7230557b2.js → 978.bundle.c12902cf44dca926bcb8.js} +0 -0
|
@@ -1,4 +1,731 @@
|
|
|
1
|
-
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[
|
|
1
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[117,497],{
|
|
2
|
+
|
|
3
|
+
/***/ 49001:
|
|
4
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
9
|
+
/* harmony export */ });
|
|
10
|
+
/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72076);
|
|
11
|
+
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7187);
|
|
12
|
+
/* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30023);
|
|
13
|
+
/* harmony import */ var _helpers_cpuFallback_rendering_transform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30742);
|
|
14
|
+
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(56309);
|
|
15
|
+
/* harmony import */ var _Viewport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77614);
|
|
16
|
+
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(25281);
|
|
17
|
+
/* harmony import */ var _CanvasActor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(40046);
|
|
18
|
+
/* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(82253);
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class VideoViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z {
|
|
29
|
+
constructor(props) {
|
|
30
|
+
super({
|
|
31
|
+
...props,
|
|
32
|
+
canvas: props.canvas || (0,_helpers__WEBPACK_IMPORTED_MODULE_6__/* .getOrCreateCanvas */ .uy)(props.element),
|
|
33
|
+
});
|
|
34
|
+
this.videoWidth = 0;
|
|
35
|
+
this.videoHeight = 0;
|
|
36
|
+
this.loop = true;
|
|
37
|
+
this.mute = true;
|
|
38
|
+
this.isPlaying = false;
|
|
39
|
+
this.scrollSpeed = 1;
|
|
40
|
+
this.playbackRate = 1;
|
|
41
|
+
this.frameRange = [0, 0];
|
|
42
|
+
this.fps = 30;
|
|
43
|
+
this.videoCamera = {
|
|
44
|
+
panWorld: [0, 0],
|
|
45
|
+
parallelScale: 1,
|
|
46
|
+
};
|
|
47
|
+
this.voiRange = {
|
|
48
|
+
lower: 0,
|
|
49
|
+
upper: 255,
|
|
50
|
+
};
|
|
51
|
+
this.getProperties = () => {
|
|
52
|
+
return {
|
|
53
|
+
loop: this.videoElement.loop,
|
|
54
|
+
muted: this.videoElement.muted,
|
|
55
|
+
playbackRate: this.playbackRate,
|
|
56
|
+
scrollSpeed: this.scrollSpeed,
|
|
57
|
+
voiRange: { ...this.voiRange },
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
this.resetCamera = () => {
|
|
61
|
+
this.refreshRenderValues();
|
|
62
|
+
this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
63
|
+
if (this.isPlaying === false) {
|
|
64
|
+
this.renderFrame();
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
};
|
|
68
|
+
this.getNumberOfSlices = () => {
|
|
69
|
+
const computedSlices = Math.round((this.videoElement.duration * this.fps) / this.scrollSpeed);
|
|
70
|
+
return isNaN(computedSlices) ? this.numberOfFrames : computedSlices;
|
|
71
|
+
};
|
|
72
|
+
this.getFrameOfReferenceUID = () => {
|
|
73
|
+
return this.videoElement.src;
|
|
74
|
+
};
|
|
75
|
+
this.resize = () => {
|
|
76
|
+
const canvas = this.canvas;
|
|
77
|
+
const { clientWidth, clientHeight } = canvas;
|
|
78
|
+
if (canvas.width !== clientWidth || canvas.height !== clientHeight) {
|
|
79
|
+
canvas.width = clientWidth;
|
|
80
|
+
canvas.height = clientHeight;
|
|
81
|
+
}
|
|
82
|
+
this.refreshRenderValues();
|
|
83
|
+
if (this.isPlaying === false) {
|
|
84
|
+
this.renderFrame();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
this.canvasToWorld = (canvasPos, destPos = [0, 0, 0]) => {
|
|
88
|
+
const pan = this.videoCamera.panWorld;
|
|
89
|
+
const worldToCanvasRatio = this.getWorldToCanvasRatio();
|
|
90
|
+
const panOffsetCanvas = [
|
|
91
|
+
pan[0] * worldToCanvasRatio,
|
|
92
|
+
pan[1] * worldToCanvasRatio,
|
|
93
|
+
];
|
|
94
|
+
const subCanvasPos = [
|
|
95
|
+
canvasPos[0] - panOffsetCanvas[0],
|
|
96
|
+
canvasPos[1] - panOffsetCanvas[1],
|
|
97
|
+
];
|
|
98
|
+
destPos.splice(0, 2, subCanvasPos[0] / worldToCanvasRatio, subCanvasPos[1] / worldToCanvasRatio);
|
|
99
|
+
return destPos;
|
|
100
|
+
};
|
|
101
|
+
this.worldToCanvas = (worldPos) => {
|
|
102
|
+
const pan = this.videoCamera.panWorld;
|
|
103
|
+
const worldToCanvasRatio = this.getWorldToCanvasRatio();
|
|
104
|
+
const canvasPos = [
|
|
105
|
+
(worldPos[0] + pan[0]) * worldToCanvasRatio,
|
|
106
|
+
(worldPos[1] + pan[1]) * worldToCanvasRatio,
|
|
107
|
+
];
|
|
108
|
+
return canvasPos;
|
|
109
|
+
};
|
|
110
|
+
this.getRotation = () => 0;
|
|
111
|
+
this.canvasToIndex = (canvasPos) => {
|
|
112
|
+
const transform = this.getTransform();
|
|
113
|
+
transform.invert();
|
|
114
|
+
return transform.transformPoint(canvasPos.map((it) => it * devicePixelRatio));
|
|
115
|
+
};
|
|
116
|
+
this.indexToCanvas = (indexPos) => {
|
|
117
|
+
const transform = this.getTransform();
|
|
118
|
+
return (transform.transformPoint(indexPos).map((it) => it / devicePixelRatio));
|
|
119
|
+
};
|
|
120
|
+
this.customRenderViewportToCanvas = () => {
|
|
121
|
+
this.renderFrame();
|
|
122
|
+
};
|
|
123
|
+
this.renderFrame = () => {
|
|
124
|
+
const transform = this.getTransform();
|
|
125
|
+
const transformationMatrix = transform.getMatrix();
|
|
126
|
+
const ctx = this.canvasContext;
|
|
127
|
+
ctx.resetTransform();
|
|
128
|
+
ctx.transform(transformationMatrix[0], transformationMatrix[1], transformationMatrix[2], transformationMatrix[3], transformationMatrix[4], transformationMatrix[5]);
|
|
129
|
+
ctx.drawImage(this.videoElement, 0, 0, this.videoWidth || 1024, this.videoHeight || 1024);
|
|
130
|
+
for (const actor of this.getActors()) {
|
|
131
|
+
actor.actor.render(this, this.canvasContext);
|
|
132
|
+
}
|
|
133
|
+
this.canvasContext.resetTransform();
|
|
134
|
+
(0,_utilities__WEBPACK_IMPORTED_MODULE_4__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_1__.Events.STACK_NEW_IMAGE, {
|
|
135
|
+
element: this.element,
|
|
136
|
+
viewportId: this.id,
|
|
137
|
+
viewport: this,
|
|
138
|
+
renderingEngineId: this.renderingEngineId,
|
|
139
|
+
time: this.videoElement.currentTime,
|
|
140
|
+
duration: this.videoElement.duration,
|
|
141
|
+
});
|
|
142
|
+
(0,_utilities__WEBPACK_IMPORTED_MODULE_4__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_1__.Events.IMAGE_RENDERED, {
|
|
143
|
+
element: this.element,
|
|
144
|
+
viewportId: this.id,
|
|
145
|
+
viewport: this,
|
|
146
|
+
imageIndex: this.getCurrentImageIdIndex(),
|
|
147
|
+
numberOfSlices: this.numberOfFrames,
|
|
148
|
+
renderingEngineId: this.renderingEngineId,
|
|
149
|
+
time: this.videoElement.currentTime,
|
|
150
|
+
duration: this.videoElement.duration,
|
|
151
|
+
});
|
|
152
|
+
this.initialRender?.();
|
|
153
|
+
const frame = this.getFrameNumber();
|
|
154
|
+
if (this.isPlaying) {
|
|
155
|
+
if (frame < this.frameRange[0]) {
|
|
156
|
+
this.setFrameNumber(this.frameRange[0]);
|
|
157
|
+
}
|
|
158
|
+
else if (frame > this.frameRange[1]) {
|
|
159
|
+
if (this.loop) {
|
|
160
|
+
this.setFrameNumber(this.frameRange[0]);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.pause();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
this.renderWhilstPlaying = () => {
|
|
169
|
+
this.renderFrame();
|
|
170
|
+
if (this.isPlaying) {
|
|
171
|
+
requestAnimationFrame(this.renderWhilstPlaying);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
this.canvasContext = this.canvas.getContext('2d');
|
|
175
|
+
this.renderingEngineId = props.renderingEngineId;
|
|
176
|
+
this.element.setAttribute('data-viewport-uid', this.id);
|
|
177
|
+
this.element.setAttribute('data-rendering-engine-uid', this.renderingEngineId);
|
|
178
|
+
this.videoElement = document.createElement('video');
|
|
179
|
+
this.videoElement.muted = this.mute;
|
|
180
|
+
this.videoElement.loop = this.loop;
|
|
181
|
+
this.videoElement.autoplay = true;
|
|
182
|
+
this.videoElement.crossOrigin = 'anonymous';
|
|
183
|
+
this.addEventListeners();
|
|
184
|
+
this.resize();
|
|
185
|
+
}
|
|
186
|
+
static { this.frameRangeExtractor = /(\/frames\/|[&?]frameNumber=)([^/&?]*)/i; }
|
|
187
|
+
static get useCustomRenderingPipeline() {
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
addEventListeners() {
|
|
191
|
+
this.canvas.addEventListener(_enums__WEBPACK_IMPORTED_MODULE_1__.Events.ELEMENT_DISABLED, this.elementDisabledHandler);
|
|
192
|
+
}
|
|
193
|
+
removeEventListeners() {
|
|
194
|
+
this.canvas.removeEventListener(_enums__WEBPACK_IMPORTED_MODULE_1__.Events.ELEMENT_DISABLED, this.elementDisabledHandler);
|
|
195
|
+
}
|
|
196
|
+
elementDisabledHandler() {
|
|
197
|
+
this.removeEventListeners();
|
|
198
|
+
this.videoElement.remove();
|
|
199
|
+
}
|
|
200
|
+
getImageDataMetadata(image) {
|
|
201
|
+
const imageId = typeof image === 'string' ? image : image.imageId;
|
|
202
|
+
const imagePlaneModule = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.IMAGE_PLANE, imageId);
|
|
203
|
+
let rowCosines = imagePlaneModule.rowCosines;
|
|
204
|
+
let columnCosines = imagePlaneModule.columnCosines;
|
|
205
|
+
if (rowCosines == null || columnCosines == null) {
|
|
206
|
+
rowCosines = [1, 0, 0];
|
|
207
|
+
columnCosines = [0, 1, 0];
|
|
208
|
+
}
|
|
209
|
+
const rowCosineVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .R3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
|
|
210
|
+
const colCosineVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .R3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
|
|
211
|
+
const { rows, columns } = imagePlaneModule;
|
|
212
|
+
const scanAxisNormal = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .R3.create();
|
|
213
|
+
gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.cross */ .R3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
|
|
214
|
+
let origin = imagePlaneModule.imagePositionPatient;
|
|
215
|
+
if (origin == null) {
|
|
216
|
+
origin = [0, 0, 0];
|
|
217
|
+
}
|
|
218
|
+
const xSpacing = imagePlaneModule.columnPixelSpacing || 1;
|
|
219
|
+
const ySpacing = imagePlaneModule.rowPixelSpacing || 1;
|
|
220
|
+
const xVoxels = imagePlaneModule.columns;
|
|
221
|
+
const yVoxels = imagePlaneModule.rows;
|
|
222
|
+
const zSpacing = 1;
|
|
223
|
+
const zVoxels = 1;
|
|
224
|
+
this.hasPixelSpacing = !!imagePlaneModule.columnPixelSpacing;
|
|
225
|
+
return {
|
|
226
|
+
bitsAllocated: 8,
|
|
227
|
+
numComps: 3,
|
|
228
|
+
origin,
|
|
229
|
+
rows,
|
|
230
|
+
columns,
|
|
231
|
+
direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
|
|
232
|
+
dimensions: [xVoxels, yVoxels, zVoxels],
|
|
233
|
+
spacing: [xSpacing, ySpacing, zSpacing],
|
|
234
|
+
hasPixelSpacing: this.hasPixelSpacing,
|
|
235
|
+
numVoxels: xVoxels * yVoxels * zVoxels,
|
|
236
|
+
imagePlaneModule,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
setDataIds(imageIds, options) {
|
|
240
|
+
this.setVideo(imageIds[0], options?.viewReference?.sliceIndex || 1);
|
|
241
|
+
}
|
|
242
|
+
setVideo(imageId, frameNumber) {
|
|
243
|
+
this.imageId = Array.isArray(imageId) ? imageId[0] : imageId;
|
|
244
|
+
const imageUrlModule = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.IMAGE_URL, imageId);
|
|
245
|
+
if (!imageUrlModule?.rendered) {
|
|
246
|
+
throw new Error(`Video Image ID ${imageId} does not have a rendered video view`);
|
|
247
|
+
}
|
|
248
|
+
const { rendered } = imageUrlModule;
|
|
249
|
+
const generalSeries = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.GENERAL_SERIES, imageId);
|
|
250
|
+
this.modality = generalSeries?.Modality;
|
|
251
|
+
this.metadata = this.getImageDataMetadata(imageId);
|
|
252
|
+
let { cineRate, numberOfFrames } = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.CINE, imageId);
|
|
253
|
+
this.numberOfFrames = numberOfFrames;
|
|
254
|
+
return this.setVideoURL(rendered).then(() => {
|
|
255
|
+
if (!numberOfFrames || numberOfFrames === 1) {
|
|
256
|
+
numberOfFrames = Math.round(this.videoElement.duration * (cineRate || 30));
|
|
257
|
+
}
|
|
258
|
+
if (!cineRate) {
|
|
259
|
+
cineRate = Math.round(numberOfFrames / this.videoElement.duration);
|
|
260
|
+
}
|
|
261
|
+
this.fps = cineRate;
|
|
262
|
+
this.numberOfFrames = numberOfFrames;
|
|
263
|
+
this.setFrameRange([1, numberOfFrames]);
|
|
264
|
+
this.initialRender = () => {
|
|
265
|
+
this.initialRender = null;
|
|
266
|
+
this.pause();
|
|
267
|
+
this.setFrameNumber(frameNumber || 1);
|
|
268
|
+
};
|
|
269
|
+
return new Promise((resolve) => {
|
|
270
|
+
window.setTimeout(() => {
|
|
271
|
+
this.setFrameNumber(frameNumber || 1);
|
|
272
|
+
resolve(this);
|
|
273
|
+
}, 25);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
async setVideoURL(videoURL) {
|
|
278
|
+
return new Promise((resolve) => {
|
|
279
|
+
this.videoElement.src = videoURL;
|
|
280
|
+
this.videoElement.preload = 'auto';
|
|
281
|
+
const loadedMetadataEventHandler = () => {
|
|
282
|
+
this.videoWidth = this.videoElement.videoWidth;
|
|
283
|
+
this.videoHeight = this.videoElement.videoHeight;
|
|
284
|
+
this.videoElement.removeEventListener('loadedmetadata', loadedMetadataEventHandler);
|
|
285
|
+
this.refreshRenderValues();
|
|
286
|
+
resolve(true);
|
|
287
|
+
};
|
|
288
|
+
this.videoElement.addEventListener('loadedmetadata', loadedMetadataEventHandler);
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
getImageIds() {
|
|
292
|
+
const imageIds = new Array(this.numberOfFrames);
|
|
293
|
+
const baseImageId = this.imageId.replace(/[0-9]+$/, '');
|
|
294
|
+
for (let i = 0; i < this.numberOfFrames; i++) {
|
|
295
|
+
imageIds[i] = `${baseImageId}${i + 1}`;
|
|
296
|
+
}
|
|
297
|
+
return imageIds;
|
|
298
|
+
}
|
|
299
|
+
togglePlayPause() {
|
|
300
|
+
if (this.isPlaying) {
|
|
301
|
+
this.pause();
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
this.play();
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
async play() {
|
|
310
|
+
try {
|
|
311
|
+
if (!this.isPlaying) {
|
|
312
|
+
this.isPlaying = true;
|
|
313
|
+
await this.videoElement.play();
|
|
314
|
+
this.renderWhilstPlaying();
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
catch (e) {
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
pause() {
|
|
321
|
+
try {
|
|
322
|
+
this.isPlaying = false;
|
|
323
|
+
this.videoElement.pause();
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
async scroll(delta = 1) {
|
|
329
|
+
await this.pause();
|
|
330
|
+
const videoElement = this.videoElement;
|
|
331
|
+
const renderFrame = this.renderFrame;
|
|
332
|
+
const currentTime = videoElement.currentTime;
|
|
333
|
+
const newTime = currentTime + (delta * this.scrollSpeed) / this.fps;
|
|
334
|
+
videoElement.currentTime = newTime;
|
|
335
|
+
const seekEventListener = (evt) => {
|
|
336
|
+
renderFrame();
|
|
337
|
+
videoElement.removeEventListener('seeked', seekEventListener);
|
|
338
|
+
};
|
|
339
|
+
videoElement.addEventListener('seeked', seekEventListener);
|
|
340
|
+
}
|
|
341
|
+
async start() {
|
|
342
|
+
const videoElement = this.videoElement;
|
|
343
|
+
const renderFrame = this.renderFrame;
|
|
344
|
+
videoElement.currentTime = 0;
|
|
345
|
+
if (videoElement.paused) {
|
|
346
|
+
const seekEventListener = (evt) => {
|
|
347
|
+
renderFrame();
|
|
348
|
+
videoElement.removeEventListener('seeked', seekEventListener);
|
|
349
|
+
};
|
|
350
|
+
videoElement.addEventListener('seeked', seekEventListener);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
async end() {
|
|
354
|
+
const videoElement = this.videoElement;
|
|
355
|
+
const renderFrame = this.renderFrame;
|
|
356
|
+
videoElement.currentTime = videoElement.duration;
|
|
357
|
+
if (videoElement.paused) {
|
|
358
|
+
const seekEventListener = (evt) => {
|
|
359
|
+
renderFrame();
|
|
360
|
+
videoElement.removeEventListener('seeked', seekEventListener);
|
|
361
|
+
};
|
|
362
|
+
videoElement.addEventListener('seeked', seekEventListener);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
async setTime(timeInSeconds) {
|
|
366
|
+
const videoElement = this.videoElement;
|
|
367
|
+
const renderFrame = this.renderFrame;
|
|
368
|
+
videoElement.currentTime = timeInSeconds;
|
|
369
|
+
if (videoElement.paused) {
|
|
370
|
+
const seekEventListener = (evt) => {
|
|
371
|
+
renderFrame();
|
|
372
|
+
videoElement.removeEventListener('seeked', seekEventListener);
|
|
373
|
+
};
|
|
374
|
+
videoElement.addEventListener('seeked', seekEventListener);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
async setFrameNumber(frame) {
|
|
378
|
+
this.setTime((frame - 1) / this.fps);
|
|
379
|
+
}
|
|
380
|
+
setFrameRange(frameRange) {
|
|
381
|
+
if (!frameRange) {
|
|
382
|
+
this.frameRange = [1, this.numberOfFrames];
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
if (frameRange.length !== 2 || frameRange[0] === frameRange[1]) {
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
this.frameRange = [frameRange[0], frameRange[1]];
|
|
389
|
+
}
|
|
390
|
+
getFrameRange() {
|
|
391
|
+
return this.frameRange;
|
|
392
|
+
}
|
|
393
|
+
setProperties(props) {
|
|
394
|
+
if (props.loop !== undefined) {
|
|
395
|
+
this.videoElement.loop = props.loop;
|
|
396
|
+
}
|
|
397
|
+
if (props.muted !== undefined) {
|
|
398
|
+
this.videoElement.muted = props.muted;
|
|
399
|
+
}
|
|
400
|
+
if (props.playbackRate !== undefined) {
|
|
401
|
+
this.setPlaybackRate(props.playbackRate);
|
|
402
|
+
}
|
|
403
|
+
if (props.scrollSpeed !== undefined) {
|
|
404
|
+
this.setScrollSpeed(props.scrollSpeed);
|
|
405
|
+
}
|
|
406
|
+
if (props.voiRange) {
|
|
407
|
+
this.setVOI(props.voiRange);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
setPlaybackRate(rate = 1) {
|
|
411
|
+
this.playbackRate = rate;
|
|
412
|
+
if (rate < 0.0625) {
|
|
413
|
+
this.pause();
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
if (!this.videoElement) {
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
this.videoElement.playbackRate = rate;
|
|
420
|
+
this.play();
|
|
421
|
+
}
|
|
422
|
+
setScrollSpeed(scrollSpeed = 1, unit = _enums__WEBPACK_IMPORTED_MODULE_1__.VideoEnums.SpeedUnit.FRAME) {
|
|
423
|
+
this.scrollSpeed =
|
|
424
|
+
unit === _enums__WEBPACK_IMPORTED_MODULE_1__.VideoEnums.SpeedUnit.SECOND
|
|
425
|
+
? scrollSpeed * this.fps
|
|
426
|
+
: scrollSpeed;
|
|
427
|
+
}
|
|
428
|
+
resetProperties() {
|
|
429
|
+
this.setProperties({
|
|
430
|
+
loop: false,
|
|
431
|
+
muted: true,
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
getScalarData() {
|
|
435
|
+
if (this.scalarData?.frameNumber === this.getFrameNumber()) {
|
|
436
|
+
return this.scalarData;
|
|
437
|
+
}
|
|
438
|
+
const canvas = document.createElement('canvas');
|
|
439
|
+
canvas.width = this.videoWidth;
|
|
440
|
+
canvas.height = this.videoHeight;
|
|
441
|
+
const context = canvas.getContext('2d');
|
|
442
|
+
context.drawImage(this.videoElement, 0, 0);
|
|
443
|
+
const canvasData = context.getImageData(0, 0, this.videoWidth, this.videoHeight);
|
|
444
|
+
const scalarData = canvasData.data;
|
|
445
|
+
scalarData.getRange = () => [0, 255];
|
|
446
|
+
scalarData.frameNumber = this.getFrameNumber();
|
|
447
|
+
this.scalarData = scalarData;
|
|
448
|
+
return scalarData;
|
|
449
|
+
}
|
|
450
|
+
getImageData() {
|
|
451
|
+
const { metadata } = this;
|
|
452
|
+
const spacing = metadata.spacing;
|
|
453
|
+
const imageData = {
|
|
454
|
+
dimensions: metadata.dimensions,
|
|
455
|
+
spacing,
|
|
456
|
+
origin: metadata.origin,
|
|
457
|
+
direction: metadata.direction,
|
|
458
|
+
metadata: { Modality: this.modality },
|
|
459
|
+
getScalarData: () => this.getScalarData(),
|
|
460
|
+
imageData: {
|
|
461
|
+
getDirection: () => metadata.direction,
|
|
462
|
+
getDimensions: () => metadata.dimensions,
|
|
463
|
+
getRange: () => [0, 255],
|
|
464
|
+
getScalarData: () => this.getScalarData(),
|
|
465
|
+
getSpacing: () => metadata.spacing,
|
|
466
|
+
worldToIndex: (point) => {
|
|
467
|
+
const canvasPoint = this.worldToCanvas(point);
|
|
468
|
+
const pixelCoord = this.canvasToIndex(canvasPoint);
|
|
469
|
+
return [pixelCoord[0], pixelCoord[1], 0];
|
|
470
|
+
},
|
|
471
|
+
indexToWorld: (point, destPoint) => {
|
|
472
|
+
const canvasPoint = this.indexToCanvas([point[0], point[1]]);
|
|
473
|
+
return this.canvasToWorld(canvasPoint, destPoint);
|
|
474
|
+
},
|
|
475
|
+
},
|
|
476
|
+
hasPixelSpacing: this.hasPixelSpacing,
|
|
477
|
+
calibration: this.calibration,
|
|
478
|
+
preScale: {
|
|
479
|
+
scaled: false,
|
|
480
|
+
},
|
|
481
|
+
};
|
|
482
|
+
Object.defineProperty(imageData, 'scalarData', {
|
|
483
|
+
get: () => this.getScalarData(),
|
|
484
|
+
enumerable: true,
|
|
485
|
+
});
|
|
486
|
+
return imageData;
|
|
487
|
+
}
|
|
488
|
+
hasImageURI(imageURI) {
|
|
489
|
+
const framesMatch = imageURI.match(VideoViewport.frameRangeExtractor);
|
|
490
|
+
const testURI = framesMatch
|
|
491
|
+
? imageURI.substring(0, framesMatch.index)
|
|
492
|
+
: imageURI;
|
|
493
|
+
return this.imageId.indexOf(testURI) !== -1;
|
|
494
|
+
}
|
|
495
|
+
setVOI(voiRange) {
|
|
496
|
+
this.voiRange = voiRange;
|
|
497
|
+
this.setColorTransform();
|
|
498
|
+
}
|
|
499
|
+
setWindowLevel(windowWidth = 256, windowCenter = 128) {
|
|
500
|
+
const lower = windowCenter - windowWidth / 2;
|
|
501
|
+
const upper = windowCenter + windowWidth / 2 - 1;
|
|
502
|
+
this.setVOI({ lower, upper });
|
|
503
|
+
this.setColorTransform();
|
|
504
|
+
}
|
|
505
|
+
setAverageWhite(averageWhite) {
|
|
506
|
+
this.averageWhite = averageWhite;
|
|
507
|
+
this.setColorTransform();
|
|
508
|
+
}
|
|
509
|
+
setColorTransform() {
|
|
510
|
+
if (!this.voiRange && !this.averageWhite) {
|
|
511
|
+
this.feFilter = null;
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
const white = this.averageWhite || [255, 255, 255];
|
|
515
|
+
const maxWhite = Math.max(...white);
|
|
516
|
+
const scaleWhite = white.map((c) => maxWhite / c);
|
|
517
|
+
const { lower = 0, upper = 255 } = this.voiRange || {};
|
|
518
|
+
const wlScale = (upper - lower + 1) / 255;
|
|
519
|
+
const wlDelta = lower / 255;
|
|
520
|
+
this.feFilter = `url('data:image/svg+xml,\
|
|
521
|
+
<svg xmlns="http://www.w3.org/2000/svg">\
|
|
522
|
+
<filter id="colour" color-interpolation-filters="linearRGB">\
|
|
523
|
+
<feColorMatrix type="matrix" \
|
|
524
|
+
values="\
|
|
525
|
+
${scaleWhite[0] * wlScale} 0 0 0 ${wlDelta} \
|
|
526
|
+
0 ${scaleWhite[1] * wlScale} 0 0 ${wlDelta} \
|
|
527
|
+
0 0 ${scaleWhite[2] * wlScale} 0 ${wlDelta} \
|
|
528
|
+
0 0 0 1 0" />\
|
|
529
|
+
</filter>\
|
|
530
|
+
</svg>#colour')`;
|
|
531
|
+
this.canvas.style.filter = this.feFilter;
|
|
532
|
+
}
|
|
533
|
+
setCamera(camera) {
|
|
534
|
+
const { parallelScale, focalPoint } = camera;
|
|
535
|
+
if (parallelScale) {
|
|
536
|
+
this.videoCamera.parallelScale =
|
|
537
|
+
this.element.clientHeight / 2 / parallelScale;
|
|
538
|
+
}
|
|
539
|
+
if (focalPoint !== undefined) {
|
|
540
|
+
const focalPointCanvas = this.worldToCanvas(focalPoint);
|
|
541
|
+
const canvasCenter = [
|
|
542
|
+
this.element.clientWidth / 2,
|
|
543
|
+
this.element.clientHeight / 2,
|
|
544
|
+
];
|
|
545
|
+
const panWorldDelta = [
|
|
546
|
+
(focalPointCanvas[0] - canvasCenter[0]) /
|
|
547
|
+
this.videoCamera.parallelScale,
|
|
548
|
+
(focalPointCanvas[1] - canvasCenter[1]) /
|
|
549
|
+
this.videoCamera.parallelScale,
|
|
550
|
+
];
|
|
551
|
+
this.videoCamera.panWorld = [
|
|
552
|
+
this.videoCamera.panWorld[0] - panWorldDelta[0],
|
|
553
|
+
this.videoCamera.panWorld[1] - panWorldDelta[1],
|
|
554
|
+
];
|
|
555
|
+
}
|
|
556
|
+
this.canvasContext.fillStyle = 'rgba(0,0,0,1)';
|
|
557
|
+
this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
558
|
+
if (this.isPlaying === false) {
|
|
559
|
+
this.renderFrame();
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
getCurrentImageId() {
|
|
563
|
+
const current = this.imageId.replace('/frames/1', this.isPlaying
|
|
564
|
+
? `/frames/${this.frameRange[0]}-${this.frameRange[1]}`
|
|
565
|
+
: `/frames/${this.getFrameNumber()}`);
|
|
566
|
+
return current;
|
|
567
|
+
}
|
|
568
|
+
getReferenceId(specifier = {}) {
|
|
569
|
+
const { sliceIndex: sliceIndex } = specifier;
|
|
570
|
+
if (sliceIndex === undefined) {
|
|
571
|
+
return `videoId:${this.getCurrentImageId()}`;
|
|
572
|
+
}
|
|
573
|
+
if (Array.isArray(sliceIndex)) {
|
|
574
|
+
return `videoId:${this.imageId.substring(0, this.imageId.length - 1)}${sliceIndex[0] + 1}-${sliceIndex[1] + 1}`;
|
|
575
|
+
}
|
|
576
|
+
const baseTarget = this.imageId.replace('/frames/1', `/frames/${1 + sliceIndex}`);
|
|
577
|
+
return `videoId:${baseTarget}`;
|
|
578
|
+
}
|
|
579
|
+
isReferenceViewable(viewRef, options = {}) {
|
|
580
|
+
let { imageURI } = options;
|
|
581
|
+
const { referencedImageId, sliceIndex: sliceIndex } = viewRef;
|
|
582
|
+
if (!super.isReferenceViewable(viewRef)) {
|
|
583
|
+
return false;
|
|
584
|
+
}
|
|
585
|
+
const imageId = this.getCurrentImageId();
|
|
586
|
+
if (!imageURI) {
|
|
587
|
+
const colonIndex = imageId.indexOf(':');
|
|
588
|
+
imageURI = imageId.substring(colonIndex + 1, imageId.length - 1);
|
|
589
|
+
}
|
|
590
|
+
if (options.withNavigation) {
|
|
591
|
+
return true;
|
|
592
|
+
}
|
|
593
|
+
const currentIndex = this.getSliceIndex();
|
|
594
|
+
if (Array.isArray(sliceIndex)) {
|
|
595
|
+
return currentIndex >= sliceIndex[0] && currentIndex <= sliceIndex[1];
|
|
596
|
+
}
|
|
597
|
+
if (sliceIndex !== undefined) {
|
|
598
|
+
return currentIndex === sliceIndex;
|
|
599
|
+
}
|
|
600
|
+
if (!referencedImageId) {
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
const match = referencedImageId.match(VideoViewport.frameRangeExtractor);
|
|
604
|
+
if (!match || !match[2]) {
|
|
605
|
+
return true;
|
|
606
|
+
}
|
|
607
|
+
const range = match[2].split('-').map((it) => Number(it));
|
|
608
|
+
const frame = currentIndex + 1;
|
|
609
|
+
return range[0] <= frame && frame <= (range[1] ?? range[0]);
|
|
610
|
+
}
|
|
611
|
+
setViewReference(viewRef) {
|
|
612
|
+
if (typeof viewRef.sliceIndex === 'number') {
|
|
613
|
+
this.setFrameNumber(viewRef.sliceIndex + 1);
|
|
614
|
+
}
|
|
615
|
+
else if (Array.isArray(viewRef.sliceIndex)) {
|
|
616
|
+
this.setFrameRange(viewRef.sliceIndex);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
getViewReference(viewRefSpecifier) {
|
|
620
|
+
let sliceIndex = viewRefSpecifier?.sliceIndex;
|
|
621
|
+
if (!sliceIndex) {
|
|
622
|
+
sliceIndex = this.isPlaying
|
|
623
|
+
? [this.frameRange[0] - 1, this.frameRange[1] - 1]
|
|
624
|
+
: this.getCurrentImageIdIndex();
|
|
625
|
+
}
|
|
626
|
+
return {
|
|
627
|
+
...super.getViewReference(viewRefSpecifier),
|
|
628
|
+
referencedImageId: this.getReferenceId(viewRefSpecifier),
|
|
629
|
+
sliceIndex: sliceIndex,
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
getFrameNumber() {
|
|
633
|
+
return 1 + this.getCurrentImageIdIndex();
|
|
634
|
+
}
|
|
635
|
+
getCurrentImageIdIndex() {
|
|
636
|
+
return Math.round(this.videoElement.currentTime * this.fps);
|
|
637
|
+
}
|
|
638
|
+
getSliceIndex() {
|
|
639
|
+
return this.getCurrentImageIdIndex() / this.scrollSpeed;
|
|
640
|
+
}
|
|
641
|
+
getCamera() {
|
|
642
|
+
const { parallelScale } = this.videoCamera;
|
|
643
|
+
const canvasCenter = [
|
|
644
|
+
this.element.clientWidth / 2,
|
|
645
|
+
this.element.clientHeight / 2,
|
|
646
|
+
];
|
|
647
|
+
const canvasCenterWorld = this.canvasToWorld(canvasCenter);
|
|
648
|
+
return {
|
|
649
|
+
parallelProjection: true,
|
|
650
|
+
focalPoint: canvasCenterWorld,
|
|
651
|
+
position: [0, 0, 0],
|
|
652
|
+
viewUp: [0, -1, 0],
|
|
653
|
+
parallelScale: this.element.clientHeight / 2 / parallelScale,
|
|
654
|
+
viewPlaneNormal: [0, 0, 1],
|
|
655
|
+
};
|
|
656
|
+
}
|
|
657
|
+
getFrameRate() {
|
|
658
|
+
return this.fps;
|
|
659
|
+
}
|
|
660
|
+
getPan() {
|
|
661
|
+
const panWorld = this.videoCamera.panWorld;
|
|
662
|
+
return [panWorld[0], panWorld[1]];
|
|
663
|
+
}
|
|
664
|
+
refreshRenderValues() {
|
|
665
|
+
let worldToCanvasRatio = this.canvas.offsetWidth / this.videoWidth;
|
|
666
|
+
if (this.videoHeight * worldToCanvasRatio > this.canvas.height) {
|
|
667
|
+
worldToCanvasRatio = this.canvas.offsetHeight / this.videoHeight;
|
|
668
|
+
}
|
|
669
|
+
const drawWidth = Math.floor(this.videoWidth * worldToCanvasRatio);
|
|
670
|
+
const drawHeight = Math.floor(this.videoHeight * worldToCanvasRatio);
|
|
671
|
+
const xOffsetCanvas = (this.canvas.offsetWidth - drawWidth) / 2;
|
|
672
|
+
const yOffsetCanvas = (this.canvas.offsetHeight - drawHeight) / 2;
|
|
673
|
+
const xOffsetWorld = xOffsetCanvas / worldToCanvasRatio;
|
|
674
|
+
const yOffsetWorld = yOffsetCanvas / worldToCanvasRatio;
|
|
675
|
+
this.videoCamera.panWorld = [xOffsetWorld, yOffsetWorld];
|
|
676
|
+
this.videoCamera.parallelScale = worldToCanvasRatio;
|
|
677
|
+
}
|
|
678
|
+
getWorldToCanvasRatio() {
|
|
679
|
+
return this.videoCamera.parallelScale;
|
|
680
|
+
}
|
|
681
|
+
getCanvasToWorldRatio() {
|
|
682
|
+
return 1.0 / this.videoCamera.parallelScale;
|
|
683
|
+
}
|
|
684
|
+
getTransform() {
|
|
685
|
+
const panWorld = this.videoCamera.panWorld;
|
|
686
|
+
const devicePixelRatio = window.devicePixelRatio || 1;
|
|
687
|
+
const worldToCanvasRatio = this.getWorldToCanvasRatio();
|
|
688
|
+
const canvasToWorldRatio = this.getCanvasToWorldRatio();
|
|
689
|
+
const halfCanvas = [
|
|
690
|
+
this.canvas.offsetWidth / 2,
|
|
691
|
+
this.canvas.offsetHeight / 2,
|
|
692
|
+
];
|
|
693
|
+
const halfCanvasWorldCoordinates = [
|
|
694
|
+
halfCanvas[0] * canvasToWorldRatio,
|
|
695
|
+
halfCanvas[1] * canvasToWorldRatio,
|
|
696
|
+
];
|
|
697
|
+
const transform = new _helpers_cpuFallback_rendering_transform__WEBPACK_IMPORTED_MODULE_3__/* .Transform */ .w();
|
|
698
|
+
transform.scale(devicePixelRatio, devicePixelRatio);
|
|
699
|
+
transform.translate(halfCanvas[0], halfCanvas[1]);
|
|
700
|
+
transform.scale(worldToCanvasRatio, worldToCanvasRatio);
|
|
701
|
+
transform.translate(panWorld[0], panWorld[1]);
|
|
702
|
+
transform.translate(-halfCanvasWorldCoordinates[0], -halfCanvasWorldCoordinates[1]);
|
|
703
|
+
return transform;
|
|
704
|
+
}
|
|
705
|
+
updateCameraClippingPlanesAndRange() {
|
|
706
|
+
}
|
|
707
|
+
addImages(stackInputs) {
|
|
708
|
+
const actors = this.getActors();
|
|
709
|
+
stackInputs.forEach((stackInput) => {
|
|
710
|
+
const image = _cache__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .ZP.getImage(stackInput.imageId);
|
|
711
|
+
const imageActor = this.createActorMapper(image);
|
|
712
|
+
if (imageActor) {
|
|
713
|
+
actors.push({ uid: stackInput.actorUID, actor: imageActor });
|
|
714
|
+
if (stackInput.callback) {
|
|
715
|
+
stackInput.callback({ imageActor, imageId: stackInput.imageId });
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
});
|
|
719
|
+
this.setActors(actors);
|
|
720
|
+
}
|
|
721
|
+
createActorMapper(image) {
|
|
722
|
+
return new _CanvasActor__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z(this, image);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoViewport);
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
/***/ }),
|
|
2
729
|
|
|
3
730
|
/***/ 68467:
|
|
4
731
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
@@ -1023,8 +1750,8 @@ function storedPixelDataToCanvasImageDataPseudocolorLUTPET(image, lutFunction, c
|
|
|
1023
1750
|
}
|
|
1024
1751
|
/* harmony default export */ const rendering_storedPixelDataToCanvasImageDataPseudocolorLUTPET = (storedPixelDataToCanvasImageDataPseudocolorLUTPET);
|
|
1025
1752
|
|
|
1026
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js +
|
|
1027
|
-
var utilities = __webpack_require__(
|
|
1753
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 66 modules
|
|
1754
|
+
var utilities = __webpack_require__(56309);
|
|
1028
1755
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js
|
|
1029
1756
|
|
|
1030
1757
|
|
|
@@ -1633,6 +2360,97 @@ function relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {
|
|
|
1633
2360
|
}
|
|
1634
2361
|
|
|
1635
2362
|
|
|
2363
|
+
/***/ }),
|
|
2364
|
+
|
|
2365
|
+
/***/ 30742:
|
|
2366
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2367
|
+
|
|
2368
|
+
"use strict";
|
|
2369
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2370
|
+
/* harmony export */ w: () => (/* binding */ Transform)
|
|
2371
|
+
/* harmony export */ });
|
|
2372
|
+
class Transform {
|
|
2373
|
+
constructor() {
|
|
2374
|
+
this.reset();
|
|
2375
|
+
}
|
|
2376
|
+
getMatrix() {
|
|
2377
|
+
return this.m;
|
|
2378
|
+
}
|
|
2379
|
+
reset() {
|
|
2380
|
+
this.m = [1, 0, 0, 1, 0, 0];
|
|
2381
|
+
}
|
|
2382
|
+
clone() {
|
|
2383
|
+
const transform = new Transform();
|
|
2384
|
+
transform.m[0] = this.m[0];
|
|
2385
|
+
transform.m[1] = this.m[1];
|
|
2386
|
+
transform.m[2] = this.m[2];
|
|
2387
|
+
transform.m[3] = this.m[3];
|
|
2388
|
+
transform.m[4] = this.m[4];
|
|
2389
|
+
transform.m[5] = this.m[5];
|
|
2390
|
+
return transform;
|
|
2391
|
+
}
|
|
2392
|
+
multiply(matrix) {
|
|
2393
|
+
const m11 = this.m[0] * matrix[0] + this.m[2] * matrix[1];
|
|
2394
|
+
const m12 = this.m[1] * matrix[0] + this.m[3] * matrix[1];
|
|
2395
|
+
const m21 = this.m[0] * matrix[2] + this.m[2] * matrix[3];
|
|
2396
|
+
const m22 = this.m[1] * matrix[2] + this.m[3] * matrix[3];
|
|
2397
|
+
const dx = this.m[0] * matrix[4] + this.m[2] * matrix[5] + this.m[4];
|
|
2398
|
+
const dy = this.m[1] * matrix[4] + this.m[3] * matrix[5] + this.m[5];
|
|
2399
|
+
this.m[0] = m11;
|
|
2400
|
+
this.m[1] = m12;
|
|
2401
|
+
this.m[2] = m21;
|
|
2402
|
+
this.m[3] = m22;
|
|
2403
|
+
this.m[4] = dx;
|
|
2404
|
+
this.m[5] = dy;
|
|
2405
|
+
}
|
|
2406
|
+
invert() {
|
|
2407
|
+
const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);
|
|
2408
|
+
const m0 = this.m[3] * d;
|
|
2409
|
+
const m1 = -this.m[1] * d;
|
|
2410
|
+
const m2 = -this.m[2] * d;
|
|
2411
|
+
const m3 = this.m[0] * d;
|
|
2412
|
+
const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);
|
|
2413
|
+
const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);
|
|
2414
|
+
this.m[0] = m0;
|
|
2415
|
+
this.m[1] = m1;
|
|
2416
|
+
this.m[2] = m2;
|
|
2417
|
+
this.m[3] = m3;
|
|
2418
|
+
this.m[4] = m4;
|
|
2419
|
+
this.m[5] = m5;
|
|
2420
|
+
}
|
|
2421
|
+
rotate(rad) {
|
|
2422
|
+
const c = Math.cos(rad);
|
|
2423
|
+
const s = Math.sin(rad);
|
|
2424
|
+
const m11 = this.m[0] * c + this.m[2] * s;
|
|
2425
|
+
const m12 = this.m[1] * c + this.m[3] * s;
|
|
2426
|
+
const m21 = this.m[0] * -s + this.m[2] * c;
|
|
2427
|
+
const m22 = this.m[1] * -s + this.m[3] * c;
|
|
2428
|
+
this.m[0] = m11;
|
|
2429
|
+
this.m[1] = m12;
|
|
2430
|
+
this.m[2] = m21;
|
|
2431
|
+
this.m[3] = m22;
|
|
2432
|
+
}
|
|
2433
|
+
translate(x, y) {
|
|
2434
|
+
this.m[4] += this.m[0] * x + this.m[2] * y;
|
|
2435
|
+
this.m[5] += this.m[1] * x + this.m[3] * y;
|
|
2436
|
+
}
|
|
2437
|
+
scale(sx, sy) {
|
|
2438
|
+
this.m[0] *= sx;
|
|
2439
|
+
this.m[1] *= sx;
|
|
2440
|
+
this.m[2] *= sy;
|
|
2441
|
+
this.m[3] *= sy;
|
|
2442
|
+
}
|
|
2443
|
+
transformPoint(point) {
|
|
2444
|
+
const x = point[0];
|
|
2445
|
+
const y = point[1];
|
|
2446
|
+
return [
|
|
2447
|
+
x * this.m[0] + y * this.m[2] + this.m[4],
|
|
2448
|
+
x * this.m[1] + y * this.m[3] + this.m[5],
|
|
2449
|
+
];
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
|
|
1636
2454
|
/***/ }),
|
|
1637
2455
|
|
|
1638
2456
|
/***/ 6737:
|
|
@@ -1820,8 +2638,8 @@ var vtkVolume$1 = {
|
|
|
1820
2638
|
var volumeLoader = __webpack_require__(18588);
|
|
1821
2639
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/createVolumeMapper.js
|
|
1822
2640
|
var createVolumeMapper = __webpack_require__(49046);
|
|
1823
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js +
|
|
1824
|
-
var utilities = __webpack_require__(
|
|
2641
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 66 modules
|
|
2642
|
+
var utilities = __webpack_require__(56309);
|
|
1825
2643
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
|
|
1826
2644
|
var enums = __webpack_require__(7187);
|
|
1827
2645
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js
|
|
@@ -1891,7 +2709,7 @@ function triggerVOIModified(element, viewportId, volumeActor, volumeId) {
|
|
|
1891
2709
|
/* harmony export */ });
|
|
1892
2710
|
/* harmony import */ var _loaders_imageLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62990);
|
|
1893
2711
|
/* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30023);
|
|
1894
|
-
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
2712
|
+
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56309);
|
|
1895
2713
|
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7187);
|
|
1896
2714
|
/* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82253);
|
|
1897
2715
|
|
|
@@ -2072,240 +2890,35 @@ const newInstance = _kitware_vtk_js_macros__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
2072
2890
|
|
|
2073
2891
|
/***/ }),
|
|
2074
2892
|
|
|
2075
|
-
/***/
|
|
2893
|
+
/***/ 5287:
|
|
2076
2894
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2077
2895
|
|
|
2078
2896
|
"use strict";
|
|
2079
2897
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2080
|
-
/* harmony export */ Z: () => (
|
|
2898
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
2081
2899
|
/* harmony export */ });
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
forEach(callback) {
|
|
2105
|
-
iterate(this[DICTIONARY], callback);
|
|
2106
|
-
}
|
|
2107
|
-
extend() {
|
|
2108
|
-
return new Settings(this);
|
|
2109
|
-
}
|
|
2110
|
-
import(root) {
|
|
2111
|
-
if (isPlainObject(root)) {
|
|
2112
|
-
Object.keys(root).forEach((key) => {
|
|
2113
|
-
set(this[DICTIONARY], key, root[key], null);
|
|
2114
|
-
});
|
|
2115
|
-
}
|
|
2116
|
-
}
|
|
2117
|
-
dump() {
|
|
2118
|
-
const context = {};
|
|
2119
|
-
iterate(this[DICTIONARY], (key, value) => {
|
|
2120
|
-
if (typeof value !== 'undefined') {
|
|
2121
|
-
deepSet(context, key, value);
|
|
2122
|
-
}
|
|
2123
|
-
});
|
|
2124
|
-
return context;
|
|
2125
|
-
}
|
|
2126
|
-
static assert(subject) {
|
|
2127
|
-
return subject instanceof Settings
|
|
2128
|
-
? subject
|
|
2129
|
-
: Settings.getRuntimeSettings();
|
|
2130
|
-
}
|
|
2131
|
-
static getDefaultSettings(subfield = null) {
|
|
2132
|
-
let defaultSettings = Settings[DEFAULT_SETTINGS];
|
|
2133
|
-
if (!(defaultSettings instanceof Settings)) {
|
|
2134
|
-
defaultSettings = new Settings();
|
|
2135
|
-
Settings[DEFAULT_SETTINGS] = defaultSettings;
|
|
2136
|
-
}
|
|
2137
|
-
if (subfield) {
|
|
2138
|
-
const settingObj = {};
|
|
2139
|
-
defaultSettings.forEach((name) => {
|
|
2140
|
-
if (name.startsWith(subfield)) {
|
|
2141
|
-
const setting = name.split(`${subfield}.`)[1];
|
|
2142
|
-
settingObj[setting] = defaultSettings.get(name);
|
|
2143
|
-
}
|
|
2144
|
-
});
|
|
2145
|
-
return settingObj;
|
|
2146
|
-
}
|
|
2147
|
-
return defaultSettings;
|
|
2148
|
-
}
|
|
2149
|
-
static getRuntimeSettings() {
|
|
2150
|
-
let runtimeSettings = Settings[RUNTIME_SETTINGS];
|
|
2151
|
-
if (!(runtimeSettings instanceof Settings)) {
|
|
2152
|
-
runtimeSettings = new Settings(Settings.getDefaultSettings());
|
|
2153
|
-
Settings[RUNTIME_SETTINGS] = runtimeSettings;
|
|
2154
|
-
}
|
|
2155
|
-
return runtimeSettings;
|
|
2156
|
-
}
|
|
2157
|
-
static getObjectSettings(subject, from) {
|
|
2158
|
-
let settings = null;
|
|
2159
|
-
if (subject instanceof Settings) {
|
|
2160
|
-
settings = subject;
|
|
2161
|
-
}
|
|
2162
|
-
else if (typeof subject === 'object' && subject !== null) {
|
|
2163
|
-
let objectSettingsMap = Settings[OBJECT_SETTINGS_MAP];
|
|
2164
|
-
if (!(objectSettingsMap instanceof WeakMap)) {
|
|
2165
|
-
objectSettingsMap = new WeakMap();
|
|
2166
|
-
Settings[OBJECT_SETTINGS_MAP] = objectSettingsMap;
|
|
2167
|
-
}
|
|
2168
|
-
settings = objectSettingsMap.get(subject);
|
|
2169
|
-
if (!(settings instanceof Settings)) {
|
|
2170
|
-
settings = new Settings(Settings.assert(Settings.getObjectSettings(from)));
|
|
2171
|
-
objectSettingsMap.set(subject, settings);
|
|
2172
|
-
}
|
|
2173
|
-
}
|
|
2174
|
-
return settings;
|
|
2175
|
-
}
|
|
2176
|
-
static extendRuntimeSettings() {
|
|
2177
|
-
return Settings.getRuntimeSettings().extend();
|
|
2178
|
-
}
|
|
2179
|
-
}
|
|
2180
|
-
function unset(dictionary, name) {
|
|
2181
|
-
if (name.endsWith('.')) {
|
|
2182
|
-
let deleteCount = 0;
|
|
2183
|
-
const namespace = name;
|
|
2184
|
-
const base = namespace.slice(0, -1);
|
|
2185
|
-
const deleteAll = base.length === 0;
|
|
2186
|
-
for (const key in dictionary) {
|
|
2187
|
-
if (Object.prototype.hasOwnProperty.call(dictionary, key) &&
|
|
2188
|
-
(deleteAll || key.startsWith(namespace) || key === base)) {
|
|
2189
|
-
delete dictionary[key];
|
|
2190
|
-
++deleteCount;
|
|
2191
|
-
}
|
|
2192
|
-
}
|
|
2193
|
-
return deleteCount > 0;
|
|
2194
|
-
}
|
|
2195
|
-
return delete dictionary[name];
|
|
2196
|
-
}
|
|
2197
|
-
function iterate(dictionary, callback) {
|
|
2198
|
-
for (const key in dictionary) {
|
|
2199
|
-
callback(key, dictionary[key]);
|
|
2200
|
-
}
|
|
2201
|
-
}
|
|
2202
|
-
function setAll(dictionary, prefix, record, references) {
|
|
2203
|
-
let failCount;
|
|
2204
|
-
if (references.has(record)) {
|
|
2205
|
-
return set(dictionary, prefix, null, references);
|
|
2206
|
-
}
|
|
2207
|
-
references.add(record);
|
|
2208
|
-
failCount = 0;
|
|
2209
|
-
for (const field in record) {
|
|
2210
|
-
if (Object.prototype.hasOwnProperty.call(record, field)) {
|
|
2211
|
-
const key = field.length === 0 ? prefix : `${prefix}.${field}`;
|
|
2212
|
-
if (!set(dictionary, key, record[field], references)) {
|
|
2213
|
-
++failCount;
|
|
2214
|
-
}
|
|
2215
|
-
}
|
|
2216
|
-
}
|
|
2217
|
-
references.delete(record);
|
|
2218
|
-
return failCount === 0;
|
|
2219
|
-
}
|
|
2220
|
-
function set(dictionary, key, value, references) {
|
|
2221
|
-
if (isValidKey(key)) {
|
|
2222
|
-
if (isPlainObject(value)) {
|
|
2223
|
-
return setAll(dictionary, key, value, references instanceof WeakSet ? references : new WeakSet());
|
|
2224
|
-
}
|
|
2225
|
-
dictionary[key] = value;
|
|
2226
|
-
return true;
|
|
2227
|
-
}
|
|
2228
|
-
return false;
|
|
2229
|
-
}
|
|
2230
|
-
function get(dictionary, key) {
|
|
2231
|
-
return dictionary[key];
|
|
2232
|
-
}
|
|
2233
|
-
function isValidKey(key) {
|
|
2234
|
-
let last, current, previous;
|
|
2235
|
-
if (typeof key !== 'string' || (last = key.length - 1) < 0) {
|
|
2236
|
-
return false;
|
|
2237
|
-
}
|
|
2238
|
-
previous = -1;
|
|
2239
|
-
while ((current = key.indexOf('.', previous + 1)) >= 0) {
|
|
2240
|
-
if (current - previous < 2 || current === last) {
|
|
2241
|
-
return false;
|
|
2242
|
-
}
|
|
2243
|
-
previous = current;
|
|
2244
|
-
}
|
|
2245
|
-
return true;
|
|
2246
|
-
}
|
|
2247
|
-
function isPlainObject(subject) {
|
|
2248
|
-
if (typeof subject === 'object' && subject !== null) {
|
|
2249
|
-
const prototype = Object.getPrototypeOf(subject);
|
|
2250
|
-
if (prototype === Object.prototype || prototype === null) {
|
|
2251
|
-
return true;
|
|
2252
|
-
}
|
|
2253
|
-
}
|
|
2254
|
-
return false;
|
|
2255
|
-
}
|
|
2256
|
-
function deepSet(context, key, value) {
|
|
2257
|
-
const separator = key.indexOf('.');
|
|
2258
|
-
if (separator >= 0) {
|
|
2259
|
-
const subKey = key.slice(0, separator);
|
|
2260
|
-
let subContext = context[subKey];
|
|
2261
|
-
if (typeof subContext !== 'object' || subContext === null) {
|
|
2262
|
-
const subContextValue = subContext;
|
|
2263
|
-
subContext = {};
|
|
2264
|
-
if (typeof subContextValue !== 'undefined') {
|
|
2265
|
-
subContext[''] = subContextValue;
|
|
2266
|
-
}
|
|
2267
|
-
context[subKey] = subContext;
|
|
2268
|
-
}
|
|
2269
|
-
deepSet(subContext, key.slice(separator + 1, key.length), value);
|
|
2270
|
-
}
|
|
2271
|
-
else {
|
|
2272
|
-
context[key] = value;
|
|
2273
|
-
}
|
|
2274
|
-
}
|
|
2275
|
-
Settings.getDefaultSettings().set('useCursors', true);
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
/***/ }),
|
|
2279
|
-
|
|
2280
|
-
/***/ 5287:
|
|
2281
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2282
|
-
|
|
2283
|
-
"use strict";
|
|
2284
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2285
|
-
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
2286
|
-
/* harmony export */ });
|
|
2287
|
-
/* unused harmony export Cache */
|
|
2288
|
-
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11723);
|
|
2289
|
-
/* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74238);
|
|
2290
|
-
/* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19546);
|
|
2291
|
-
/* harmony import */ var _classes_ImageVolume__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84326);
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
const ONE_GB = 1073741824;
|
|
2297
|
-
class Cache {
|
|
2298
|
-
constructor() {
|
|
2299
|
-
this._imageCache = new Map();
|
|
2300
|
-
this._volumeCache = new Map();
|
|
2301
|
-
this._imageCacheSize = 0;
|
|
2302
|
-
this._volumeCacheSize = 0;
|
|
2303
|
-
this._maxCacheSize = 3 * ONE_GB;
|
|
2304
|
-
this._maxInstanceSize = 4 * ONE_GB - 8;
|
|
2305
|
-
this.setMaxCacheSize = (newMaxCacheSize) => {
|
|
2306
|
-
if (!newMaxCacheSize || typeof newMaxCacheSize !== 'number') {
|
|
2307
|
-
const errorMessage = `New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;
|
|
2308
|
-
throw new Error(errorMessage);
|
|
2900
|
+
/* unused harmony export Cache */
|
|
2901
|
+
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56309);
|
|
2902
|
+
/* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74238);
|
|
2903
|
+
/* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19546);
|
|
2904
|
+
/* harmony import */ var _classes_ImageVolume__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84326);
|
|
2905
|
+
|
|
2906
|
+
|
|
2907
|
+
|
|
2908
|
+
|
|
2909
|
+
const ONE_GB = 1073741824;
|
|
2910
|
+
class Cache {
|
|
2911
|
+
constructor() {
|
|
2912
|
+
this._imageCache = new Map();
|
|
2913
|
+
this._volumeCache = new Map();
|
|
2914
|
+
this._imageCacheSize = 0;
|
|
2915
|
+
this._volumeCacheSize = 0;
|
|
2916
|
+
this._maxCacheSize = 3 * ONE_GB;
|
|
2917
|
+
this._maxInstanceSize = 4 * ONE_GB - 8;
|
|
2918
|
+
this.setMaxCacheSize = (newMaxCacheSize) => {
|
|
2919
|
+
if (!newMaxCacheSize || typeof newMaxCacheSize !== 'number') {
|
|
2920
|
+
const errorMessage = `New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;
|
|
2921
|
+
throw new Error(errorMessage);
|
|
2309
2922
|
}
|
|
2310
2923
|
this._maxCacheSize = newMaxCacheSize;
|
|
2311
2924
|
};
|
|
@@ -2322,7 +2935,11 @@ class Cache {
|
|
|
2322
2935
|
this.getMaxInstanceSize = () => this._maxInstanceSize;
|
|
2323
2936
|
this.getCacheSize = () => this._imageCacheSize + this._volumeCacheSize;
|
|
2324
2937
|
this._decacheImage = (imageId) => {
|
|
2325
|
-
const
|
|
2938
|
+
const cachedImage = this._imageCache.get(imageId);
|
|
2939
|
+
if (!cachedImage) {
|
|
2940
|
+
return;
|
|
2941
|
+
}
|
|
2942
|
+
const { imageLoadObject } = cachedImage;
|
|
2326
2943
|
if (imageLoadObject.cancelFn) {
|
|
2327
2944
|
imageLoadObject.cancelFn();
|
|
2328
2945
|
}
|
|
@@ -2333,7 +2950,13 @@ class Cache {
|
|
|
2333
2950
|
};
|
|
2334
2951
|
this._decacheVolume = (volumeId) => {
|
|
2335
2952
|
const cachedVolume = this._volumeCache.get(volumeId);
|
|
2953
|
+
if (!cachedVolume) {
|
|
2954
|
+
return;
|
|
2955
|
+
}
|
|
2336
2956
|
const { volumeLoadObject, volume } = cachedVolume;
|
|
2957
|
+
if (!volume) {
|
|
2958
|
+
return;
|
|
2959
|
+
}
|
|
2337
2960
|
if (volume.cancelLoading) {
|
|
2338
2961
|
volume.cancelLoading();
|
|
2339
2962
|
}
|
|
@@ -2379,7 +3002,7 @@ class Cache {
|
|
|
2379
3002
|
throw new Error('getVolumeLoadObject: volumeId must not be undefined');
|
|
2380
3003
|
}
|
|
2381
3004
|
const cachedVolume = this._volumeCache.get(volumeId);
|
|
2382
|
-
if (cachedVolume
|
|
3005
|
+
if (!cachedVolume) {
|
|
2383
3006
|
return;
|
|
2384
3007
|
}
|
|
2385
3008
|
cachedVolume.timeStamp = Date.now();
|
|
@@ -2390,7 +3013,7 @@ class Cache {
|
|
|
2390
3013
|
throw new Error('getGeometry: geometryId must not be undefined');
|
|
2391
3014
|
}
|
|
2392
3015
|
const cachedGeometry = this._geometryCache.get(geometryId);
|
|
2393
|
-
if (cachedGeometry
|
|
3016
|
+
if (!cachedGeometry) {
|
|
2394
3017
|
return;
|
|
2395
3018
|
}
|
|
2396
3019
|
cachedGeometry.timeStamp = Date.now();
|
|
@@ -2401,7 +3024,7 @@ class Cache {
|
|
|
2401
3024
|
throw new Error('getImage: imageId must not be undefined');
|
|
2402
3025
|
}
|
|
2403
3026
|
const cachedImage = this._imageCache.get(imageId);
|
|
2404
|
-
if (cachedImage
|
|
3027
|
+
if (!cachedImage) {
|
|
2405
3028
|
return;
|
|
2406
3029
|
}
|
|
2407
3030
|
cachedImage.timeStamp = Date.now();
|
|
@@ -2412,7 +3035,7 @@ class Cache {
|
|
|
2412
3035
|
throw new Error('getVolume: volumeId must not be undefined');
|
|
2413
3036
|
}
|
|
2414
3037
|
const cachedVolume = this._volumeCache.get(volumeId);
|
|
2415
|
-
if (cachedVolume
|
|
3038
|
+
if (!cachedVolume) {
|
|
2416
3039
|
return;
|
|
2417
3040
|
}
|
|
2418
3041
|
cachedVolume.timeStamp = Date.now();
|
|
@@ -2433,7 +3056,7 @@ class Cache {
|
|
|
2433
3056
|
throw new Error('removeImageLoadObject: imageId must not be undefined');
|
|
2434
3057
|
}
|
|
2435
3058
|
const cachedImage = this._imageCache.get(imageId);
|
|
2436
|
-
if (cachedImage
|
|
3059
|
+
if (!cachedImage) {
|
|
2437
3060
|
throw new Error('removeImageLoadObject: imageId was not present in imageCache');
|
|
2438
3061
|
}
|
|
2439
3062
|
this.incrementImageCacheSize(-cachedImage.sizeInBytes);
|
|
@@ -2449,7 +3072,7 @@ class Cache {
|
|
|
2449
3072
|
throw new Error('removeVolumeLoadObject: volumeId must not be undefined');
|
|
2450
3073
|
}
|
|
2451
3074
|
const cachedVolume = this._volumeCache.get(volumeId);
|
|
2452
|
-
if (cachedVolume
|
|
3075
|
+
if (!cachedVolume) {
|
|
2453
3076
|
throw new Error('removeVolumeLoadObject: volumeId was not present in volumeCache');
|
|
2454
3077
|
}
|
|
2455
3078
|
this.incrementVolumeCacheSize(-cachedVolume.sizeInBytes);
|
|
@@ -2616,7 +3239,7 @@ class Cache {
|
|
|
2616
3239
|
throw new Error('getImageLoadObject: imageId must not be undefined');
|
|
2617
3240
|
}
|
|
2618
3241
|
const cachedImage = this._imageCache.get(imageId);
|
|
2619
|
-
if (cachedImage
|
|
3242
|
+
if (!cachedImage) {
|
|
2620
3243
|
return;
|
|
2621
3244
|
}
|
|
2622
3245
|
cachedImage.timeStamp = Date.now();
|
|
@@ -2634,6 +3257,9 @@ class Cache {
|
|
|
2634
3257
|
const imageIdToUse = (0,_utilities__WEBPACK_IMPORTED_MODULE_0__.imageIdToURI)(imageId);
|
|
2635
3258
|
for (const volumeId of volumeIds) {
|
|
2636
3259
|
const cachedVolume = this._volumeCache.get(volumeId);
|
|
3260
|
+
if (!cachedVolume) {
|
|
3261
|
+
return;
|
|
3262
|
+
}
|
|
2637
3263
|
const { volume } = cachedVolume;
|
|
2638
3264
|
if (!volume?.imageIds?.length) {
|
|
2639
3265
|
return;
|
|
@@ -2739,32 +3365,49 @@ const cache = new Cache();
|
|
|
2739
3365
|
|
|
2740
3366
|
/***/ }),
|
|
2741
3367
|
|
|
2742
|
-
/***/
|
|
3368
|
+
/***/ 19247:
|
|
2743
3369
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2744
3370
|
|
|
2745
3371
|
"use strict";
|
|
2746
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2747
|
-
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
2748
|
-
/* harmony export */ });
|
|
2749
|
-
const EPSILON = 1e-3;
|
|
2750
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EPSILON);
|
|
2751
|
-
|
|
2752
3372
|
|
|
2753
|
-
|
|
3373
|
+
// EXPORTS
|
|
3374
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
3375
|
+
EPSILON: () => (/* reexport */ epsilon),
|
|
3376
|
+
MPR_CAMERA_VALUES: () => (/* reexport */ mprCameraValues/* default */.Z),
|
|
3377
|
+
RENDERING_DEFAULTS: () => (/* reexport */ rendering),
|
|
3378
|
+
VIEWPORT_PRESETS: () => (/* reexport */ viewportPresets/* default */.Z)
|
|
3379
|
+
});
|
|
2754
3380
|
|
|
2755
|
-
|
|
2756
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3381
|
+
// UNUSED EXPORTS: BACKGROUND_COLORS, CPU_COLORMAPS
|
|
2757
3382
|
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
/* harmony export */ });
|
|
3383
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/cpuColormaps.js
|
|
3384
|
+
var cpuColormaps = __webpack_require__(52813);
|
|
3385
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/rendering.js
|
|
2762
3386
|
const RENDERING_DEFAULTS = {
|
|
2763
3387
|
MINIMUM_SLAB_THICKNESS: 5e-2,
|
|
2764
3388
|
MAXIMUM_RAY_DISTANCE: 1e6,
|
|
2765
3389
|
};
|
|
2766
3390
|
Object.freeze(RENDERING_DEFAULTS);
|
|
2767
|
-
/* harmony default export */ const
|
|
3391
|
+
/* harmony default export */ const rendering = (RENDERING_DEFAULTS);
|
|
3392
|
+
|
|
3393
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/epsilon.js
|
|
3394
|
+
const EPSILON = 1e-3;
|
|
3395
|
+
/* harmony default export */ const epsilon = (EPSILON);
|
|
3396
|
+
|
|
3397
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/mprCameraValues.js + 1 modules
|
|
3398
|
+
var mprCameraValues = __webpack_require__(21306);
|
|
3399
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/viewportPresets.js
|
|
3400
|
+
var viewportPresets = __webpack_require__(89469);
|
|
3401
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/backgroundColors.js
|
|
3402
|
+
var backgroundColors = __webpack_require__(43220);
|
|
3403
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js
|
|
3404
|
+
|
|
3405
|
+
|
|
3406
|
+
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
|
|
3410
|
+
|
|
2768
3411
|
|
|
2769
3412
|
|
|
2770
3413
|
/***/ }),
|
|
@@ -2811,98 +3454,478 @@ var ViewportStatus;
|
|
|
2811
3454
|
/***/ 7187:
|
|
2812
3455
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2813
3456
|
|
|
2814
|
-
"use strict";
|
|
3457
|
+
"use strict";
|
|
3458
|
+
|
|
3459
|
+
// EXPORTS
|
|
3460
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
3461
|
+
BlendModes: () => (/* reexport */ enums_BlendModes),
|
|
3462
|
+
CalibrationTypes: () => (/* reexport */ enums_CalibrationTypes),
|
|
3463
|
+
DynamicOperatorType: () => (/* reexport */ enums_DynamicOperatorType),
|
|
3464
|
+
Events: () => (/* reexport */ Events/* default */.Z),
|
|
3465
|
+
GeometryType: () => (/* reexport */ enums_GeometryType),
|
|
3466
|
+
ImageQualityStatus: () => (/* reexport */ ImageQualityStatus/* default */.Z),
|
|
3467
|
+
InterpolationType: () => (/* reexport */ InterpolationType/* default */.Z),
|
|
3468
|
+
MetadataModules: () => (/* reexport */ MetadataModules/* default */.Z),
|
|
3469
|
+
OrientationAxis: () => (/* reexport */ OrientationAxis/* default */.Z),
|
|
3470
|
+
RequestType: () => (/* reexport */ RequestType/* default */.Z),
|
|
3471
|
+
SharedArrayBufferModes: () => (/* reexport */ SharedArrayBufferModes/* default */.Z),
|
|
3472
|
+
VOILUTFunctionType: () => (/* reexport */ VOILUTFunctionType/* default */.Z),
|
|
3473
|
+
VideoEnums: () => (/* reexport */ VideoEnums),
|
|
3474
|
+
ViewportStatus: () => (/* reexport */ ViewportStatus/* default */.Z),
|
|
3475
|
+
ViewportType: () => (/* reexport */ ViewportType/* default */.Z)
|
|
3476
|
+
});
|
|
3477
|
+
|
|
3478
|
+
// UNUSED EXPORTS: ContourType
|
|
3479
|
+
|
|
3480
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/Events.js
|
|
3481
|
+
var Events = __webpack_require__(19546);
|
|
3482
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/RequestType.js
|
|
3483
|
+
var RequestType = __webpack_require__(49334);
|
|
3484
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportType.js
|
|
3485
|
+
var ViewportType = __webpack_require__(68032);
|
|
3486
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/InterpolationType.js
|
|
3487
|
+
var InterpolationType = __webpack_require__(75677);
|
|
3488
|
+
// EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants.js
|
|
3489
|
+
var Constants = __webpack_require__(83336);
|
|
3490
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/BlendModes.js
|
|
3491
|
+
|
|
3492
|
+
const { BlendMode } = Constants["default"];
|
|
3493
|
+
var BlendModes;
|
|
3494
|
+
(function (BlendModes) {
|
|
3495
|
+
BlendModes[BlendModes["COMPOSITE"] = 0] = "COMPOSITE";
|
|
3496
|
+
BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = 1] = "MAXIMUM_INTENSITY_BLEND";
|
|
3497
|
+
BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = 2] = "MINIMUM_INTENSITY_BLEND";
|
|
3498
|
+
BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = 3] = "AVERAGE_INTENSITY_BLEND";
|
|
3499
|
+
})(BlendModes || (BlendModes = {}));
|
|
3500
|
+
/* harmony default export */ const enums_BlendModes = (BlendModes);
|
|
3501
|
+
|
|
3502
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/OrientationAxis.js
|
|
3503
|
+
var OrientationAxis = __webpack_require__(96426);
|
|
3504
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/SharedArrayBufferModes.js
|
|
3505
|
+
var SharedArrayBufferModes = __webpack_require__(91799);
|
|
3506
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/GeometryType.js
|
|
3507
|
+
var GeometryType;
|
|
3508
|
+
(function (GeometryType) {
|
|
3509
|
+
GeometryType["CONTOUR"] = "contour";
|
|
3510
|
+
GeometryType["SURFACE"] = "Surface";
|
|
3511
|
+
})(GeometryType || (GeometryType = {}));
|
|
3512
|
+
/* harmony default export */ const enums_GeometryType = (GeometryType);
|
|
3513
|
+
|
|
3514
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ContourType.js
|
|
3515
|
+
var ContourType = __webpack_require__(2689);
|
|
3516
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VOILUTFunctionType.js
|
|
3517
|
+
var VOILUTFunctionType = __webpack_require__(67751);
|
|
3518
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/DynamicOperatorType.js
|
|
3519
|
+
var DynamicOperatorType;
|
|
3520
|
+
(function (DynamicOperatorType) {
|
|
3521
|
+
DynamicOperatorType["SUM"] = "SUM";
|
|
3522
|
+
DynamicOperatorType["AVERAGE"] = "AVERAGE";
|
|
3523
|
+
DynamicOperatorType["SUBTRACT"] = "SUBTRACT";
|
|
3524
|
+
})(DynamicOperatorType || (DynamicOperatorType = {}));
|
|
3525
|
+
/* harmony default export */ const enums_DynamicOperatorType = (DynamicOperatorType);
|
|
3526
|
+
|
|
3527
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/CalibrationTypes.js
|
|
3528
|
+
var CalibrationTypes;
|
|
3529
|
+
(function (CalibrationTypes) {
|
|
3530
|
+
CalibrationTypes["NOT_APPLICABLE"] = "";
|
|
3531
|
+
CalibrationTypes["ERMF"] = "ERMF";
|
|
3532
|
+
CalibrationTypes["USER"] = "User";
|
|
3533
|
+
CalibrationTypes["PROJECTION"] = "Proj";
|
|
3534
|
+
CalibrationTypes["REGION"] = "Region";
|
|
3535
|
+
CalibrationTypes["ERROR"] = "Error";
|
|
3536
|
+
CalibrationTypes["UNCALIBRATED"] = "Uncalibrated";
|
|
3537
|
+
})(CalibrationTypes || (CalibrationTypes = {}));
|
|
3538
|
+
/* harmony default export */ const enums_CalibrationTypes = (CalibrationTypes);
|
|
3539
|
+
|
|
3540
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportStatus.js
|
|
3541
|
+
var ViewportStatus = __webpack_require__(84659);
|
|
3542
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ImageQualityStatus.js
|
|
3543
|
+
var ImageQualityStatus = __webpack_require__(83521);
|
|
3544
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VideoEnums.js
|
|
3545
|
+
var VideoEnums = __webpack_require__(40373);
|
|
3546
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/MetadataModules.js
|
|
3547
|
+
var MetadataModules = __webpack_require__(636);
|
|
3548
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js
|
|
3549
|
+
|
|
3550
|
+
|
|
3551
|
+
|
|
3552
|
+
|
|
3553
|
+
|
|
3554
|
+
|
|
3555
|
+
|
|
3556
|
+
|
|
3557
|
+
|
|
3558
|
+
|
|
3559
|
+
|
|
3560
|
+
|
|
3561
|
+
|
|
3562
|
+
|
|
3563
|
+
|
|
3564
|
+
|
|
3565
|
+
|
|
3566
|
+
|
|
3567
|
+
|
|
3568
|
+
/***/ }),
|
|
3569
|
+
|
|
3570
|
+
/***/ 65279:
|
|
3571
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3572
|
+
|
|
3573
|
+
"use strict";
|
|
3574
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3575
|
+
/* harmony export */ O: () => (/* binding */ getEnabledElementByIds),
|
|
3576
|
+
/* harmony export */ Yz: () => (/* binding */ getEnabledElementByViewportId),
|
|
3577
|
+
/* harmony export */ ZP: () => (/* binding */ getEnabledElement),
|
|
3578
|
+
/* harmony export */ wN: () => (/* binding */ getEnabledElements)
|
|
3579
|
+
/* harmony export */ });
|
|
3580
|
+
/* harmony import */ var _RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9138);
|
|
3581
|
+
|
|
3582
|
+
function getEnabledElement(element) {
|
|
3583
|
+
if (!element) {
|
|
3584
|
+
return;
|
|
3585
|
+
}
|
|
3586
|
+
const { viewportUid, renderingEngineUid } = element.dataset;
|
|
3587
|
+
return getEnabledElementByIds(viewportUid, renderingEngineUid);
|
|
3588
|
+
}
|
|
3589
|
+
function getEnabledElementByIds(viewportId, renderingEngineId) {
|
|
3590
|
+
if (!renderingEngineId || !viewportId) {
|
|
3591
|
+
return;
|
|
3592
|
+
}
|
|
3593
|
+
const renderingEngine = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(renderingEngineId);
|
|
3594
|
+
if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
|
|
3595
|
+
return;
|
|
3596
|
+
}
|
|
3597
|
+
const viewport = renderingEngine.getViewport(viewportId);
|
|
3598
|
+
if (!viewport) {
|
|
3599
|
+
return;
|
|
3600
|
+
}
|
|
3601
|
+
const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
|
|
3602
|
+
return {
|
|
3603
|
+
viewport,
|
|
3604
|
+
renderingEngine,
|
|
3605
|
+
viewportId,
|
|
3606
|
+
renderingEngineId,
|
|
3607
|
+
FrameOfReferenceUID,
|
|
3608
|
+
};
|
|
3609
|
+
}
|
|
3610
|
+
function getEnabledElementByViewportId(viewportId) {
|
|
3611
|
+
const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
|
|
3612
|
+
for (let i = 0; i < renderingEngines.length; i++) {
|
|
3613
|
+
const renderingEngine = renderingEngines[i];
|
|
3614
|
+
const viewport = renderingEngine.getViewport(viewportId);
|
|
3615
|
+
if (viewport) {
|
|
3616
|
+
return getEnabledElementByIds(viewportId, renderingEngine.id);
|
|
3617
|
+
}
|
|
3618
|
+
}
|
|
3619
|
+
}
|
|
3620
|
+
function getEnabledElements() {
|
|
3621
|
+
const enabledElements = [];
|
|
3622
|
+
const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
|
|
3623
|
+
renderingEngines.forEach((renderingEngine) => {
|
|
3624
|
+
const viewports = renderingEngine.getViewports();
|
|
3625
|
+
viewports.forEach(({ element }) => {
|
|
3626
|
+
enabledElements.push(getEnabledElement(element));
|
|
3627
|
+
});
|
|
3628
|
+
});
|
|
3629
|
+
return enabledElements;
|
|
3630
|
+
}
|
|
3631
|
+
|
|
3632
|
+
|
|
3633
|
+
/***/ }),
|
|
3634
|
+
|
|
3635
|
+
/***/ 12651:
|
|
3636
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3637
|
+
|
|
3638
|
+
"use strict";
|
|
3639
|
+
|
|
3640
|
+
// EXPORTS
|
|
3641
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
3642
|
+
BaseVolumeViewport: () => (/* reexport */ BaseVolumeViewport/* default */.Z),
|
|
3643
|
+
CONSTANTS: () => (/* reexport */ constants),
|
|
3644
|
+
EVENTS: () => (/* reexport */ enums.Events),
|
|
3645
|
+
Enums: () => (/* reexport */ enums),
|
|
3646
|
+
Settings: () => (/* reexport */ Settings),
|
|
3647
|
+
StackViewport: () => (/* reexport */ StackViewport/* default */.Z),
|
|
3648
|
+
VideoViewport: () => (/* reexport */ VideoViewport/* default */.Z),
|
|
3649
|
+
VolumeViewport: () => (/* reexport */ VolumeViewport/* default */.Z),
|
|
3650
|
+
VolumeViewport3D: () => (/* reexport */ VolumeViewport3D/* default */.Z),
|
|
3651
|
+
addImageSlicesToViewports: () => (/* reexport */ helpers/* addImageSlicesToViewports */.PN),
|
|
3652
|
+
addVolumesToViewports: () => (/* reexport */ helpers/* addVolumesToViewports */.gc),
|
|
3653
|
+
cache: () => (/* reexport */ cache/* default */.ZP),
|
|
3654
|
+
eventTarget: () => (/* reexport */ eventTarget/* default */.Z),
|
|
3655
|
+
geometryLoader: () => (/* reexport */ geometryLoader),
|
|
3656
|
+
getConfiguration: () => (/* reexport */ init/* getConfiguration */.P_),
|
|
3657
|
+
getEnabledElement: () => (/* reexport */ getEnabledElement/* default */.ZP),
|
|
3658
|
+
getEnabledElementByIds: () => (/* reexport */ getEnabledElement/* getEnabledElementByIds */.O),
|
|
3659
|
+
getEnabledElementByViewportId: () => (/* reexport */ getEnabledElement/* getEnabledElementByViewportId */.Yz),
|
|
3660
|
+
getEnabledElements: () => (/* reexport */ getEnabledElement/* getEnabledElements */.wN),
|
|
3661
|
+
getRenderingEngine: () => (/* reexport */ getRenderingEngine/* getRenderingEngine */.Pr),
|
|
3662
|
+
getRenderingEngines: () => (/* reexport */ getRenderingEngine/* getRenderingEngines */.Uu),
|
|
3663
|
+
getWebWorkerManager: () => (/* reexport */ init/* getWebWorkerManager */.Pt),
|
|
3664
|
+
imageLoadPoolManager: () => (/* reexport */ imageLoadPoolManager/* default */.Z),
|
|
3665
|
+
imageLoader: () => (/* reexport */ imageLoader),
|
|
3666
|
+
metaData: () => (/* reexport */ metaData),
|
|
3667
|
+
triggerEvent: () => (/* reexport */ triggerEvent/* default */.Z),
|
|
3668
|
+
utilities: () => (/* reexport */ utilities),
|
|
3669
|
+
volumeLoader: () => (/* reexport */ volumeLoader)
|
|
3670
|
+
});
|
|
3671
|
+
|
|
3672
|
+
// UNUSED EXPORTS: ImageVolume, ProgressiveRetrieveImages, RenderingEngine, Surface, Viewport, WSIViewport, canRenderFloatTextures, createVolumeActor, createVolumeMapper, getOrCreateCanvas, getShouldUseCPURendering, getShouldUseSharedArrayBuffer, imageRetrievalPoolManager, init, isCornerstoneInitialized, peerImport, registerImageLoader, requestPoolManager, resetUseCPURendering, resetUseSharedArrayBuffer, setConfiguration, setPreferSizeOverAccuracy, setUseCPURendering, setUseSharedArrayBuffer, setVolumesForViewports
|
|
3673
|
+
|
|
3674
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
|
|
3675
|
+
var enums = __webpack_require__(7187);
|
|
3676
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 2 modules
|
|
3677
|
+
var constants = __webpack_require__(19247);
|
|
3678
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/index.js + 3 modules
|
|
3679
|
+
var RenderingEngine = __webpack_require__(69552);
|
|
3680
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VolumeViewport.js
|
|
3681
|
+
var VolumeViewport = __webpack_require__(32932);
|
|
3682
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VolumeViewport3D.js
|
|
3683
|
+
var VolumeViewport3D = __webpack_require__(46190);
|
|
3684
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseVolumeViewport.js
|
|
3685
|
+
var BaseVolumeViewport = __webpack_require__(36205);
|
|
3686
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js
|
|
3687
|
+
var StackViewport = __webpack_require__(98715);
|
|
3688
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VideoViewport.js
|
|
3689
|
+
var VideoViewport = __webpack_require__(49001);
|
|
3690
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/WSIViewport.js
|
|
3691
|
+
var WSIViewport = __webpack_require__(86057);
|
|
3692
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/Viewport.js
|
|
3693
|
+
var Viewport = __webpack_require__(77614);
|
|
3694
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/eventTarget.js
|
|
3695
|
+
var eventTarget = __webpack_require__(74238);
|
|
3696
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/getRenderingEngine.js
|
|
3697
|
+
var getRenderingEngine = __webpack_require__(9138);
|
|
3698
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/cache/index.js
|
|
3699
|
+
var cache = __webpack_require__(82253);
|
|
3700
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageRetrievalPoolManager.js
|
|
3701
|
+
var imageRetrievalPoolManager = __webpack_require__(22717);
|
|
3702
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageLoadPoolManager.js
|
|
3703
|
+
var imageLoadPoolManager = __webpack_require__(96506);
|
|
3704
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/getEnabledElement.js
|
|
3705
|
+
var getEnabledElement = __webpack_require__(65279);
|
|
3706
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/metaData.js
|
|
3707
|
+
var metaData = __webpack_require__(30023);
|
|
3708
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/init.js + 1 modules
|
|
3709
|
+
var init = __webpack_require__(28719);
|
|
3710
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/Settings.js
|
|
3711
|
+
const DEFAULT_SETTINGS = Symbol('DefaultSettings');
|
|
3712
|
+
const RUNTIME_SETTINGS = Symbol('RuntimeSettings');
|
|
3713
|
+
const OBJECT_SETTINGS_MAP = Symbol('ObjectSettingsMap');
|
|
3714
|
+
const DICTIONARY = Symbol('Dictionary');
|
|
3715
|
+
class Settings {
|
|
3716
|
+
constructor(base) {
|
|
3717
|
+
const dictionary = Object.create((base instanceof Settings && DICTIONARY in base
|
|
3718
|
+
? base[DICTIONARY]
|
|
3719
|
+
: null));
|
|
3720
|
+
Object.seal(Object.defineProperty(this, DICTIONARY, {
|
|
3721
|
+
value: dictionary,
|
|
3722
|
+
}));
|
|
3723
|
+
}
|
|
3724
|
+
set(key, value) {
|
|
3725
|
+
return set(this[DICTIONARY], key, value, null);
|
|
3726
|
+
}
|
|
3727
|
+
get(key) {
|
|
3728
|
+
return get(this[DICTIONARY], key);
|
|
3729
|
+
}
|
|
3730
|
+
unset(key) {
|
|
3731
|
+
return unset(this[DICTIONARY], key + '');
|
|
3732
|
+
}
|
|
3733
|
+
forEach(callback) {
|
|
3734
|
+
iterate(this[DICTIONARY], callback);
|
|
3735
|
+
}
|
|
3736
|
+
extend() {
|
|
3737
|
+
return new Settings(this);
|
|
3738
|
+
}
|
|
3739
|
+
import(root) {
|
|
3740
|
+
if (isPlainObject(root)) {
|
|
3741
|
+
Object.keys(root).forEach((key) => {
|
|
3742
|
+
set(this[DICTIONARY], key, root[key], null);
|
|
3743
|
+
});
|
|
3744
|
+
}
|
|
3745
|
+
}
|
|
3746
|
+
dump() {
|
|
3747
|
+
const context = {};
|
|
3748
|
+
iterate(this[DICTIONARY], (key, value) => {
|
|
3749
|
+
if (typeof value !== 'undefined') {
|
|
3750
|
+
deepSet(context, key, value);
|
|
3751
|
+
}
|
|
3752
|
+
});
|
|
3753
|
+
return context;
|
|
3754
|
+
}
|
|
3755
|
+
static assert(subject) {
|
|
3756
|
+
return subject instanceof Settings
|
|
3757
|
+
? subject
|
|
3758
|
+
: Settings.getRuntimeSettings();
|
|
3759
|
+
}
|
|
3760
|
+
static getDefaultSettings(subfield = null) {
|
|
3761
|
+
let defaultSettings = Settings[DEFAULT_SETTINGS];
|
|
3762
|
+
if (!(defaultSettings instanceof Settings)) {
|
|
3763
|
+
defaultSettings = new Settings();
|
|
3764
|
+
Settings[DEFAULT_SETTINGS] = defaultSettings;
|
|
3765
|
+
}
|
|
3766
|
+
if (subfield) {
|
|
3767
|
+
const settingObj = {};
|
|
3768
|
+
defaultSettings.forEach((name) => {
|
|
3769
|
+
if (name.startsWith(subfield)) {
|
|
3770
|
+
const setting = name.split(`${subfield}.`)[1];
|
|
3771
|
+
settingObj[setting] = defaultSettings.get(name);
|
|
3772
|
+
}
|
|
3773
|
+
});
|
|
3774
|
+
return settingObj;
|
|
3775
|
+
}
|
|
3776
|
+
return defaultSettings;
|
|
3777
|
+
}
|
|
3778
|
+
static getRuntimeSettings() {
|
|
3779
|
+
let runtimeSettings = Settings[RUNTIME_SETTINGS];
|
|
3780
|
+
if (!(runtimeSettings instanceof Settings)) {
|
|
3781
|
+
runtimeSettings = new Settings(Settings.getDefaultSettings());
|
|
3782
|
+
Settings[RUNTIME_SETTINGS] = runtimeSettings;
|
|
3783
|
+
}
|
|
3784
|
+
return runtimeSettings;
|
|
3785
|
+
}
|
|
3786
|
+
static getObjectSettings(subject, from) {
|
|
3787
|
+
let settings = null;
|
|
3788
|
+
if (subject instanceof Settings) {
|
|
3789
|
+
settings = subject;
|
|
3790
|
+
}
|
|
3791
|
+
else if (typeof subject === 'object' && subject !== null) {
|
|
3792
|
+
let objectSettingsMap = Settings[OBJECT_SETTINGS_MAP];
|
|
3793
|
+
if (!(objectSettingsMap instanceof WeakMap)) {
|
|
3794
|
+
objectSettingsMap = new WeakMap();
|
|
3795
|
+
Settings[OBJECT_SETTINGS_MAP] = objectSettingsMap;
|
|
3796
|
+
}
|
|
3797
|
+
settings = objectSettingsMap.get(subject);
|
|
3798
|
+
if (!(settings instanceof Settings)) {
|
|
3799
|
+
settings = new Settings(Settings.assert(Settings.getObjectSettings(from)));
|
|
3800
|
+
objectSettingsMap.set(subject, settings);
|
|
3801
|
+
}
|
|
3802
|
+
}
|
|
3803
|
+
return settings;
|
|
3804
|
+
}
|
|
3805
|
+
static extendRuntimeSettings() {
|
|
3806
|
+
return Settings.getRuntimeSettings().extend();
|
|
3807
|
+
}
|
|
3808
|
+
}
|
|
3809
|
+
function unset(dictionary, name) {
|
|
3810
|
+
if (name.endsWith('.')) {
|
|
3811
|
+
let deleteCount = 0;
|
|
3812
|
+
const namespace = name;
|
|
3813
|
+
const base = namespace.slice(0, -1);
|
|
3814
|
+
const deleteAll = base.length === 0;
|
|
3815
|
+
for (const key in dictionary) {
|
|
3816
|
+
if (Object.prototype.hasOwnProperty.call(dictionary, key) &&
|
|
3817
|
+
(deleteAll || key.startsWith(namespace) || key === base)) {
|
|
3818
|
+
delete dictionary[key];
|
|
3819
|
+
++deleteCount;
|
|
3820
|
+
}
|
|
3821
|
+
}
|
|
3822
|
+
return deleteCount > 0;
|
|
3823
|
+
}
|
|
3824
|
+
return delete dictionary[name];
|
|
3825
|
+
}
|
|
3826
|
+
function iterate(dictionary, callback) {
|
|
3827
|
+
for (const key in dictionary) {
|
|
3828
|
+
callback(key, dictionary[key]);
|
|
3829
|
+
}
|
|
3830
|
+
}
|
|
3831
|
+
function setAll(dictionary, prefix, record, references) {
|
|
3832
|
+
let failCount;
|
|
3833
|
+
if (references.has(record)) {
|
|
3834
|
+
return set(dictionary, prefix, null, references);
|
|
3835
|
+
}
|
|
3836
|
+
references.add(record);
|
|
3837
|
+
failCount = 0;
|
|
3838
|
+
for (const field in record) {
|
|
3839
|
+
if (Object.prototype.hasOwnProperty.call(record, field)) {
|
|
3840
|
+
const key = field.length === 0 ? prefix : `${prefix}.${field}`;
|
|
3841
|
+
if (!set(dictionary, key, record[field], references)) {
|
|
3842
|
+
++failCount;
|
|
3843
|
+
}
|
|
3844
|
+
}
|
|
3845
|
+
}
|
|
3846
|
+
references.delete(record);
|
|
3847
|
+
return failCount === 0;
|
|
3848
|
+
}
|
|
3849
|
+
function set(dictionary, key, value, references) {
|
|
3850
|
+
if (isValidKey(key)) {
|
|
3851
|
+
if (isPlainObject(value)) {
|
|
3852
|
+
return setAll(dictionary, key, value, references instanceof WeakSet ? references : new WeakSet());
|
|
3853
|
+
}
|
|
3854
|
+
dictionary[key] = value;
|
|
3855
|
+
return true;
|
|
3856
|
+
}
|
|
3857
|
+
return false;
|
|
3858
|
+
}
|
|
3859
|
+
function get(dictionary, key) {
|
|
3860
|
+
return dictionary[key];
|
|
3861
|
+
}
|
|
3862
|
+
function isValidKey(key) {
|
|
3863
|
+
let last, current, previous;
|
|
3864
|
+
if (typeof key !== 'string' || (last = key.length - 1) < 0) {
|
|
3865
|
+
return false;
|
|
3866
|
+
}
|
|
3867
|
+
previous = -1;
|
|
3868
|
+
while ((current = key.indexOf('.', previous + 1)) >= 0) {
|
|
3869
|
+
if (current - previous < 2 || current === last) {
|
|
3870
|
+
return false;
|
|
3871
|
+
}
|
|
3872
|
+
previous = current;
|
|
3873
|
+
}
|
|
3874
|
+
return true;
|
|
3875
|
+
}
|
|
3876
|
+
function isPlainObject(subject) {
|
|
3877
|
+
if (typeof subject === 'object' && subject !== null) {
|
|
3878
|
+
const prototype = Object.getPrototypeOf(subject);
|
|
3879
|
+
if (prototype === Object.prototype || prototype === null) {
|
|
3880
|
+
return true;
|
|
3881
|
+
}
|
|
3882
|
+
}
|
|
3883
|
+
return false;
|
|
3884
|
+
}
|
|
3885
|
+
function deepSet(context, key, value) {
|
|
3886
|
+
const separator = key.indexOf('.');
|
|
3887
|
+
if (separator >= 0) {
|
|
3888
|
+
const subKey = key.slice(0, separator);
|
|
3889
|
+
let subContext = context[subKey];
|
|
3890
|
+
if (typeof subContext !== 'object' || subContext === null) {
|
|
3891
|
+
const subContextValue = subContext;
|
|
3892
|
+
subContext = {};
|
|
3893
|
+
if (typeof subContextValue !== 'undefined') {
|
|
3894
|
+
subContext[''] = subContextValue;
|
|
3895
|
+
}
|
|
3896
|
+
context[subKey] = subContext;
|
|
3897
|
+
}
|
|
3898
|
+
deepSet(subContext, key.slice(separator + 1, key.length), value);
|
|
3899
|
+
}
|
|
3900
|
+
else {
|
|
3901
|
+
context[key] = value;
|
|
3902
|
+
}
|
|
3903
|
+
}
|
|
3904
|
+
Settings.getDefaultSettings().set('useCursors', true);
|
|
3905
|
+
|
|
3906
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/volumeLoader.js
|
|
3907
|
+
var volumeLoader = __webpack_require__(18588);
|
|
3908
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/imageLoader.js
|
|
3909
|
+
var imageLoader = __webpack_require__(62990);
|
|
3910
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/geometryLoader.js + 26 modules
|
|
3911
|
+
var geometryLoader = __webpack_require__(59469);
|
|
3912
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/ProgressiveRetrieveImages.js + 4 modules
|
|
3913
|
+
var ProgressiveRetrieveImages = __webpack_require__(27654);
|
|
3914
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 66 modules
|
|
3915
|
+
var utilities = __webpack_require__(56309);
|
|
3916
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/triggerEvent.js
|
|
3917
|
+
var triggerEvent = __webpack_require__(85041);
|
|
3918
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js + 1 modules
|
|
3919
|
+
var helpers = __webpack_require__(25281);
|
|
3920
|
+
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js
|
|
2815
3921
|
|
|
2816
|
-
// EXPORTS
|
|
2817
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
2818
|
-
BlendModes: () => (/* reexport */ enums_BlendModes),
|
|
2819
|
-
CalibrationTypes: () => (/* reexport */ enums_CalibrationTypes),
|
|
2820
|
-
DynamicOperatorType: () => (/* reexport */ enums_DynamicOperatorType),
|
|
2821
|
-
Events: () => (/* reexport */ Events/* default */.Z),
|
|
2822
|
-
GeometryType: () => (/* reexport */ enums_GeometryType),
|
|
2823
|
-
ImageQualityStatus: () => (/* reexport */ ImageQualityStatus/* default */.Z),
|
|
2824
|
-
InterpolationType: () => (/* reexport */ InterpolationType/* default */.Z),
|
|
2825
|
-
MetadataModules: () => (/* reexport */ MetadataModules/* default */.Z),
|
|
2826
|
-
OrientationAxis: () => (/* reexport */ OrientationAxis/* default */.Z),
|
|
2827
|
-
RequestType: () => (/* reexport */ RequestType/* default */.Z),
|
|
2828
|
-
SharedArrayBufferModes: () => (/* reexport */ SharedArrayBufferModes/* default */.Z),
|
|
2829
|
-
VOILUTFunctionType: () => (/* reexport */ VOILUTFunctionType/* default */.Z),
|
|
2830
|
-
VideoEnums: () => (/* reexport */ VideoEnums),
|
|
2831
|
-
ViewportStatus: () => (/* reexport */ ViewportStatus/* default */.Z),
|
|
2832
|
-
ViewportType: () => (/* reexport */ ViewportType/* default */.Z)
|
|
2833
|
-
});
|
|
2834
3922
|
|
|
2835
|
-
// UNUSED EXPORTS: ContourType
|
|
2836
3923
|
|
|
2837
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/Events.js
|
|
2838
|
-
var Events = __webpack_require__(19546);
|
|
2839
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/RequestType.js
|
|
2840
|
-
var RequestType = __webpack_require__(49334);
|
|
2841
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportType.js
|
|
2842
|
-
var ViewportType = __webpack_require__(68032);
|
|
2843
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/InterpolationType.js
|
|
2844
|
-
var InterpolationType = __webpack_require__(75677);
|
|
2845
|
-
// EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants.js
|
|
2846
|
-
var Constants = __webpack_require__(83336);
|
|
2847
|
-
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/BlendModes.js
|
|
2848
3924
|
|
|
2849
|
-
const { BlendMode } = Constants["default"];
|
|
2850
|
-
var BlendModes;
|
|
2851
|
-
(function (BlendModes) {
|
|
2852
|
-
BlendModes[BlendModes["COMPOSITE"] = 0] = "COMPOSITE";
|
|
2853
|
-
BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = 1] = "MAXIMUM_INTENSITY_BLEND";
|
|
2854
|
-
BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = 2] = "MINIMUM_INTENSITY_BLEND";
|
|
2855
|
-
BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = 3] = "AVERAGE_INTENSITY_BLEND";
|
|
2856
|
-
})(BlendModes || (BlendModes = {}));
|
|
2857
|
-
/* harmony default export */ const enums_BlendModes = (BlendModes);
|
|
2858
3925
|
|
|
2859
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/OrientationAxis.js
|
|
2860
|
-
var OrientationAxis = __webpack_require__(96426);
|
|
2861
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/SharedArrayBufferModes.js
|
|
2862
|
-
var SharedArrayBufferModes = __webpack_require__(91799);
|
|
2863
|
-
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/GeometryType.js
|
|
2864
|
-
var GeometryType;
|
|
2865
|
-
(function (GeometryType) {
|
|
2866
|
-
GeometryType["CONTOUR"] = "contour";
|
|
2867
|
-
GeometryType["SURFACE"] = "Surface";
|
|
2868
|
-
})(GeometryType || (GeometryType = {}));
|
|
2869
|
-
/* harmony default export */ const enums_GeometryType = (GeometryType);
|
|
2870
3926
|
|
|
2871
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ContourType.js
|
|
2872
|
-
var ContourType = __webpack_require__(2689);
|
|
2873
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VOILUTFunctionType.js
|
|
2874
|
-
var VOILUTFunctionType = __webpack_require__(67751);
|
|
2875
|
-
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/DynamicOperatorType.js
|
|
2876
|
-
var DynamicOperatorType;
|
|
2877
|
-
(function (DynamicOperatorType) {
|
|
2878
|
-
DynamicOperatorType["SUM"] = "SUM";
|
|
2879
|
-
DynamicOperatorType["AVERAGE"] = "AVERAGE";
|
|
2880
|
-
DynamicOperatorType["SUBTRACT"] = "SUBTRACT";
|
|
2881
|
-
})(DynamicOperatorType || (DynamicOperatorType = {}));
|
|
2882
|
-
/* harmony default export */ const enums_DynamicOperatorType = (DynamicOperatorType);
|
|
2883
3927
|
|
|
2884
|
-
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/CalibrationTypes.js
|
|
2885
|
-
var CalibrationTypes;
|
|
2886
|
-
(function (CalibrationTypes) {
|
|
2887
|
-
CalibrationTypes["NOT_APPLICABLE"] = "";
|
|
2888
|
-
CalibrationTypes["ERMF"] = "ERMF";
|
|
2889
|
-
CalibrationTypes["USER"] = "User";
|
|
2890
|
-
CalibrationTypes["PROJECTION"] = "Proj";
|
|
2891
|
-
CalibrationTypes["REGION"] = "Region";
|
|
2892
|
-
CalibrationTypes["ERROR"] = "Error";
|
|
2893
|
-
CalibrationTypes["UNCALIBRATED"] = "Uncalibrated";
|
|
2894
|
-
})(CalibrationTypes || (CalibrationTypes = {}));
|
|
2895
|
-
/* harmony default export */ const enums_CalibrationTypes = (CalibrationTypes);
|
|
2896
3928
|
|
|
2897
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportStatus.js
|
|
2898
|
-
var ViewportStatus = __webpack_require__(84659);
|
|
2899
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ImageQualityStatus.js
|
|
2900
|
-
var ImageQualityStatus = __webpack_require__(83521);
|
|
2901
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VideoEnums.js
|
|
2902
|
-
var VideoEnums = __webpack_require__(40373);
|
|
2903
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/MetadataModules.js
|
|
2904
|
-
var MetadataModules = __webpack_require__(636);
|
|
2905
|
-
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js
|
|
2906
3929
|
|
|
2907
3930
|
|
|
2908
3931
|
|
|
@@ -2922,69 +3945,9 @@ var MetadataModules = __webpack_require__(636);
|
|
|
2922
3945
|
|
|
2923
3946
|
|
|
2924
3947
|
|
|
2925
|
-
/***/ }),
|
|
2926
3948
|
|
|
2927
|
-
/***/ 65279:
|
|
2928
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2929
3949
|
|
|
2930
|
-
"use strict";
|
|
2931
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2932
|
-
/* harmony export */ O: () => (/* binding */ getEnabledElementByIds),
|
|
2933
|
-
/* harmony export */ Yz: () => (/* binding */ getEnabledElementByViewportId),
|
|
2934
|
-
/* harmony export */ ZP: () => (/* binding */ getEnabledElement),
|
|
2935
|
-
/* harmony export */ wN: () => (/* binding */ getEnabledElements)
|
|
2936
|
-
/* harmony export */ });
|
|
2937
|
-
/* harmony import */ var _RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9138);
|
|
2938
3950
|
|
|
2939
|
-
function getEnabledElement(element) {
|
|
2940
|
-
if (!element) {
|
|
2941
|
-
return;
|
|
2942
|
-
}
|
|
2943
|
-
const { viewportUid, renderingEngineUid } = element.dataset;
|
|
2944
|
-
return getEnabledElementByIds(viewportUid, renderingEngineUid);
|
|
2945
|
-
}
|
|
2946
|
-
function getEnabledElementByIds(viewportId, renderingEngineId) {
|
|
2947
|
-
if (!renderingEngineId || !viewportId) {
|
|
2948
|
-
return;
|
|
2949
|
-
}
|
|
2950
|
-
const renderingEngine = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(renderingEngineId);
|
|
2951
|
-
if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
|
|
2952
|
-
return;
|
|
2953
|
-
}
|
|
2954
|
-
const viewport = renderingEngine.getViewport(viewportId);
|
|
2955
|
-
if (!viewport) {
|
|
2956
|
-
return;
|
|
2957
|
-
}
|
|
2958
|
-
const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
|
|
2959
|
-
return {
|
|
2960
|
-
viewport,
|
|
2961
|
-
renderingEngine,
|
|
2962
|
-
viewportId,
|
|
2963
|
-
renderingEngineId,
|
|
2964
|
-
FrameOfReferenceUID,
|
|
2965
|
-
};
|
|
2966
|
-
}
|
|
2967
|
-
function getEnabledElementByViewportId(viewportId) {
|
|
2968
|
-
const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
|
|
2969
|
-
for (let i = 0; i < renderingEngines.length; i++) {
|
|
2970
|
-
const renderingEngine = renderingEngines[i];
|
|
2971
|
-
const viewport = renderingEngine.getViewport(viewportId);
|
|
2972
|
-
if (viewport) {
|
|
2973
|
-
return getEnabledElementByIds(viewportId, renderingEngine.id);
|
|
2974
|
-
}
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
function getEnabledElements() {
|
|
2978
|
-
const enabledElements = [];
|
|
2979
|
-
const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
|
|
2980
|
-
renderingEngines.forEach((renderingEngine) => {
|
|
2981
|
-
const viewports = renderingEngine.getViewports();
|
|
2982
|
-
viewports.forEach(({ element }) => {
|
|
2983
|
-
enabledElements.push(getEnabledElement(element));
|
|
2984
|
-
});
|
|
2985
|
-
});
|
|
2986
|
-
return enabledElements;
|
|
2987
|
-
}
|
|
2988
3951
|
|
|
2989
3952
|
|
|
2990
3953
|
/***/ }),
|
|
@@ -3014,9 +3977,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3014
3977
|
/* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82253);
|
|
3015
3978
|
/* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19546);
|
|
3016
3979
|
/* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74238);
|
|
3017
|
-
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
3980
|
+
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(56309);
|
|
3018
3981
|
/* harmony import */ var _requestPool_imageLoadPoolManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(96506);
|
|
3019
|
-
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(
|
|
3982
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12651);
|
|
3020
3983
|
|
|
3021
3984
|
|
|
3022
3985
|
|
|
@@ -3296,7 +4259,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3296
4259
|
/* harmony import */ var _utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85041);
|
|
3297
4260
|
/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11677);
|
|
3298
4261
|
/* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8__);
|
|
3299
|
-
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(
|
|
4262
|
+
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(56309);
|
|
3300
4263
|
/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(28719);
|
|
3301
4264
|
/* harmony import */ var _utilities_cacheUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(85654);
|
|
3302
4265
|
|
|
@@ -3617,6 +4580,56 @@ function generateVolumeScalarData(targetBuffer, scalarLength) {
|
|
|
3617
4580
|
}
|
|
3618
4581
|
|
|
3619
4582
|
|
|
4583
|
+
/***/ }),
|
|
4584
|
+
|
|
4585
|
+
/***/ 30023:
|
|
4586
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4587
|
+
|
|
4588
|
+
"use strict";
|
|
4589
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4590
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4591
|
+
/* harmony export */ addProvider: () => (/* binding */ addProvider),
|
|
4592
|
+
/* harmony export */ get: () => (/* binding */ getMetaData),
|
|
4593
|
+
/* harmony export */ removeAllProviders: () => (/* binding */ removeAllProviders),
|
|
4594
|
+
/* harmony export */ removeProvider: () => (/* binding */ removeProvider)
|
|
4595
|
+
/* harmony export */ });
|
|
4596
|
+
const providers = [];
|
|
4597
|
+
function addProvider(provider, priority = 0) {
|
|
4598
|
+
let i;
|
|
4599
|
+
for (i = 0; i < providers.length; i++) {
|
|
4600
|
+
if (providers[i].priority <= priority) {
|
|
4601
|
+
break;
|
|
4602
|
+
}
|
|
4603
|
+
}
|
|
4604
|
+
providers.splice(i, 0, {
|
|
4605
|
+
priority,
|
|
4606
|
+
provider,
|
|
4607
|
+
});
|
|
4608
|
+
}
|
|
4609
|
+
function removeProvider(provider) {
|
|
4610
|
+
for (let i = 0; i < providers.length; i++) {
|
|
4611
|
+
if (providers[i].provider === provider) {
|
|
4612
|
+
providers.splice(i, 1);
|
|
4613
|
+
break;
|
|
4614
|
+
}
|
|
4615
|
+
}
|
|
4616
|
+
}
|
|
4617
|
+
function removeAllProviders() {
|
|
4618
|
+
while (providers.length > 0) {
|
|
4619
|
+
providers.pop();
|
|
4620
|
+
}
|
|
4621
|
+
}
|
|
4622
|
+
function getMetaData(type, ...queries) {
|
|
4623
|
+
for (let i = 0; i < providers.length; i++) {
|
|
4624
|
+
const result = providers[i].provider(type, ...queries);
|
|
4625
|
+
if (result !== undefined) {
|
|
4626
|
+
return result;
|
|
4627
|
+
}
|
|
4628
|
+
}
|
|
4629
|
+
}
|
|
4630
|
+
|
|
4631
|
+
|
|
4632
|
+
|
|
3620
4633
|
/***/ }),
|
|
3621
4634
|
|
|
3622
4635
|
/***/ 96506:
|
|
@@ -3648,7 +4661,7 @@ imageLoadPoolManager.setMaxSimultaneousRequests(_enums_RequestType__WEBPACK_IMPO
|
|
|
3648
4661
|
/* harmony export */ P: () => (/* binding */ RequestPoolManager)
|
|
3649
4662
|
/* harmony export */ });
|
|
3650
4663
|
/* harmony import */ var _enums_RequestType__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49334);
|
|
3651
|
-
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
4664
|
+
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56309);
|
|
3652
4665
|
|
|
3653
4666
|
|
|
3654
4667
|
class RequestPoolManager {
|
|
@@ -4488,6 +5501,13 @@ const CursorSVG = {
|
|
|
4488
5501
|
y: 24,
|
|
4489
5502
|
},
|
|
4490
5503
|
}),
|
|
5504
|
+
Height: extend(BASE, {
|
|
5505
|
+
iconContent: `<path d="m 6 22 l 8.5 0 v -16 h 8" stroke-width="3" fill="none" stroke="{{color}}" />`,
|
|
5506
|
+
viewBox: {
|
|
5507
|
+
x: 24,
|
|
5508
|
+
y: 24,
|
|
5509
|
+
},
|
|
5510
|
+
}),
|
|
4491
5511
|
Probe: extend(BASE, {
|
|
4492
5512
|
iconContent: `<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75
|
|
4493
5513
|
75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73
|
|
@@ -4720,8 +5740,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
4720
5740
|
|
|
4721
5741
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/store/index.js + 4 modules
|
|
4722
5742
|
var store = __webpack_require__(33232);
|
|
4723
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js +
|
|
4724
|
-
var esm = __webpack_require__(
|
|
5743
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
|
|
5744
|
+
var esm = __webpack_require__(12651);
|
|
4725
5745
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/getSvgDrawingHelper.js
|
|
4726
5746
|
|
|
4727
5747
|
|
|
@@ -4832,7 +5852,7 @@ var ToolModes;
|
|
|
4832
5852
|
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33232);
|
|
4833
5853
|
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69562);
|
|
4834
5854
|
/* harmony import */ var _synchronizers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93423);
|
|
4835
|
-
/* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
5855
|
+
/* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25876);
|
|
4836
5856
|
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42975);
|
|
4837
5857
|
/* harmony import */ var _cursors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(60020);
|
|
4838
5858
|
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(35106);
|
|
@@ -4925,8 +5945,8 @@ var lodash_get_default = /*#__PURE__*/__webpack_require__.n(lodash_get);
|
|
|
4925
5945
|
// EXTERNAL MODULE: ../../../node_modules/lodash.clonedeep/index.js
|
|
4926
5946
|
var lodash_clonedeep = __webpack_require__(11677);
|
|
4927
5947
|
var lodash_clonedeep_default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep);
|
|
4928
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js +
|
|
4929
|
-
var esm = __webpack_require__(
|
|
5948
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
|
|
5949
|
+
var esm = __webpack_require__(12651);
|
|
4930
5950
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/index.js + 4 modules
|
|
4931
5951
|
var cursors = __webpack_require__(60020);
|
|
4932
5952
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/elementCursor.js
|
|
@@ -5509,7 +6529,7 @@ function getToolGroupsWithToolName(toolName) {
|
|
|
5509
6529
|
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
5510
6530
|
/* harmony export */ });
|
|
5511
6531
|
/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72076);
|
|
5512
|
-
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
6532
|
+
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12651);
|
|
5513
6533
|
/* harmony import */ var _utilities_getCalibratedUnits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39661);
|
|
5514
6534
|
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42975);
|
|
5515
6535
|
/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93382);
|
|
@@ -5518,7 +6538,7 @@ function getToolGroupsWithToolName(toolName) {
|
|
|
5518
6538
|
/* harmony import */ var _stateManagement_annotation_annotationLocking__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(11163);
|
|
5519
6539
|
/* harmony import */ var _stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41836);
|
|
5520
6540
|
/* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36705);
|
|
5521
|
-
/* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(
|
|
6541
|
+
/* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(25876);
|
|
5522
6542
|
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(33232);
|
|
5523
6543
|
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(68096);
|
|
5524
6544
|
/* harmony import */ var _utilities_viewportFilters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(46966);
|
|
@@ -6267,7 +7287,7 @@ BidirectionalTool.toolName = 'Bidirectional';
|
|
|
6267
7287
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6268
7288
|
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
6269
7289
|
/* harmony export */ });
|
|
6270
|
-
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
7290
|
+
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
|
|
6271
7291
|
/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72076);
|
|
6272
7292
|
/* harmony import */ var _utilities_getCalibratedUnits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39661);
|
|
6273
7293
|
/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42975);
|
|
@@ -6283,7 +7303,7 @@ BidirectionalTool.toolName = 'Bidirectional';
|
|
|
6283
7303
|
/* harmony import */ var _planarFreehandROITool_openContourEndEditLoop__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(82571);
|
|
6284
7304
|
/* harmony import */ var _planarFreehandROITool_renderMethods__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(54435);
|
|
6285
7305
|
/* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(36705);
|
|
6286
|
-
/* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(
|
|
7306
|
+
/* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(25876);
|
|
6287
7307
|
/* harmony import */ var _utilities_drawing__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(20724);
|
|
6288
7308
|
/* harmony import */ var _utilities_math_polyline__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(42744);
|
|
6289
7309
|
/* harmony import */ var _utilities_pointInShapeCallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(31955);
|
|
@@ -6441,45 +7461,12 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
|
|
|
6441
7461
|
}
|
|
6442
7462
|
const { imageData, metadata } = image;
|
|
6443
7463
|
const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
|
|
6444
|
-
const
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
const deltaYPoint = viewport.canvasToWorld([
|
|
6451
|
-
canvasPoint[0],
|
|
6452
|
-
canvasPoint[1] + 1,
|
|
6453
|
-
]);
|
|
6454
|
-
const deltaInX = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.distance */ .R3.distance(originalWorldPoint, deltaXPoint);
|
|
6455
|
-
const deltaInY = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.distance */ .R3.distance(originalWorldPoint, deltaYPoint);
|
|
6456
|
-
const worldPosIndex = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, points[0]);
|
|
6457
|
-
worldPosIndex[0] = Math.floor(worldPosIndex[0]);
|
|
6458
|
-
worldPosIndex[1] = Math.floor(worldPosIndex[1]);
|
|
6459
|
-
worldPosIndex[2] = Math.floor(worldPosIndex[2]);
|
|
6460
|
-
let iMin = worldPosIndex[0];
|
|
6461
|
-
let iMax = worldPosIndex[0];
|
|
6462
|
-
let jMin = worldPosIndex[1];
|
|
6463
|
-
let jMax = worldPosIndex[1];
|
|
6464
|
-
let kMin = worldPosIndex[2];
|
|
6465
|
-
let kMax = worldPosIndex[2];
|
|
6466
|
-
for (let j = 1; j < points.length; j++) {
|
|
6467
|
-
const worldPosIndex = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, points[j]);
|
|
6468
|
-
worldPosIndex[0] = Math.floor(worldPosIndex[0]);
|
|
6469
|
-
worldPosIndex[1] = Math.floor(worldPosIndex[1]);
|
|
6470
|
-
worldPosIndex[2] = Math.floor(worldPosIndex[2]);
|
|
6471
|
-
iMin = Math.min(iMin, worldPosIndex[0]);
|
|
6472
|
-
iMax = Math.max(iMax, worldPosIndex[0]);
|
|
6473
|
-
jMin = Math.min(jMin, worldPosIndex[1]);
|
|
6474
|
-
jMax = Math.max(jMax, worldPosIndex[1]);
|
|
6475
|
-
kMin = Math.min(kMin, worldPosIndex[2]);
|
|
6476
|
-
kMax = Math.max(kMax, worldPosIndex[2]);
|
|
6477
|
-
}
|
|
6478
|
-
const worldPosIndex2 = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, points[1]);
|
|
6479
|
-
worldPosIndex2[0] = Math.floor(worldPosIndex2[0]);
|
|
6480
|
-
worldPosIndex2[1] = Math.floor(worldPosIndex2[1]);
|
|
6481
|
-
worldPosIndex2[2] = Math.floor(worldPosIndex2[2]);
|
|
6482
|
-
const { scale, areaUnits } = (0,_utilities_getCalibratedUnits__WEBPACK_IMPORTED_MODULE_2__/* .getCalibratedLengthUnitsAndScale */ .mh)(image, () => {
|
|
7464
|
+
const modalityUnitOptions = {
|
|
7465
|
+
isPreScaled: (0,_utilities_viewport_isViewportPreScaled__WEBPACK_IMPORTED_MODULE_20__/* .isViewportPreScaled */ .P)(viewport, targetId),
|
|
7466
|
+
isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
|
|
7467
|
+
};
|
|
7468
|
+
const modalityUnit = (0,_utilities_getModalityUnit__WEBPACK_IMPORTED_MODULE_21__/* .getModalityUnit */ .F)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
|
|
7469
|
+
const calibratedScale = (0,_utilities_getCalibratedUnits__WEBPACK_IMPORTED_MODULE_2__/* .getCalibratedLengthUnitsAndScale */ .mh)(image, () => {
|
|
6483
7470
|
const polyline = data.contour.polyline;
|
|
6484
7471
|
const numPoints = polyline.length;
|
|
6485
7472
|
const projectedPolyline = new Array(numPoints);
|
|
@@ -6487,10 +7474,7 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
|
|
|
6487
7474
|
projectedPolyline[i] = viewport.worldToCanvas(polyline[i]);
|
|
6488
7475
|
}
|
|
6489
7476
|
const { maxX: canvasMaxX, maxY: canvasMaxY, minX: canvasMinX, minY: canvasMinY, } = _utilities__WEBPACK_IMPORTED_MODULE_3__.math.polyline.getAABB(projectedPolyline);
|
|
6490
|
-
const topLeftBBWorld = viewport.canvasToWorld([
|
|
6491
|
-
canvasMinX,
|
|
6492
|
-
canvasMinY,
|
|
6493
|
-
]);
|
|
7477
|
+
const topLeftBBWorld = viewport.canvasToWorld([canvasMinX, canvasMinY]);
|
|
6494
7478
|
const topLeftBBIndex = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, topLeftBBWorld);
|
|
6495
7479
|
const bottomRightBBWorld = viewport.canvasToWorld([
|
|
6496
7480
|
canvasMaxX,
|
|
@@ -6499,71 +7483,29 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
|
|
|
6499
7483
|
const bottomRightBBIndex = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, bottomRightBBWorld);
|
|
6500
7484
|
return [topLeftBBIndex, bottomRightBBIndex];
|
|
6501
7485
|
});
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6511
|
-
|
|
6512
|
-
|
|
6513
|
-
|
|
6514
|
-
|
|
6515
|
-
|
|
6516
|
-
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
6520
|
-
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
const point = viewport.worldToCanvas(pointLPS);
|
|
6526
|
-
if (point[1] != curRow) {
|
|
6527
|
-
intersectionCounter = 0;
|
|
6528
|
-
curRow = point[1];
|
|
6529
|
-
intersections = (0,_utilities_math_polyline__WEBPACK_IMPORTED_MODULE_18__.getLineSegmentIntersectionsCoordinates)(canvasCoordinates, point, [canvasPosEnd[0], point[1]]);
|
|
6530
|
-
intersections.sort((function (index) {
|
|
6531
|
-
return function (a, b) {
|
|
6532
|
-
return a[index] === b[index]
|
|
6533
|
-
? 0
|
|
6534
|
-
: a[index] < b[index]
|
|
6535
|
-
? -1
|
|
6536
|
-
: 1;
|
|
6537
|
-
};
|
|
6538
|
-
})(0));
|
|
6539
|
-
}
|
|
6540
|
-
if (intersections.length && point[0] > intersections[0][0]) {
|
|
6541
|
-
intersections.shift();
|
|
6542
|
-
intersectionCounter++;
|
|
6543
|
-
}
|
|
6544
|
-
if (intersectionCounter % 2 === 0) {
|
|
6545
|
-
result = false;
|
|
6546
|
-
}
|
|
6547
|
-
return result;
|
|
6548
|
-
}, this.configuration.statsCalculator.statsCallback, boundsIJK);
|
|
6549
|
-
const modalityUnitOptions = {
|
|
6550
|
-
isPreScaled: (0,_utilities_viewport_isViewportPreScaled__WEBPACK_IMPORTED_MODULE_20__/* .isViewportPreScaled */ .P)(viewport, targetId),
|
|
6551
|
-
isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
|
|
6552
|
-
};
|
|
6553
|
-
const modalityUnit = (0,_utilities_getModalityUnit__WEBPACK_IMPORTED_MODULE_21__/* .getModalityUnit */ .F)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
|
|
6554
|
-
const stats = this.configuration.statsCalculator.getStatistics();
|
|
6555
|
-
cachedStats[targetId] = {
|
|
6556
|
-
Modality: metadata.Modality,
|
|
6557
|
-
area,
|
|
6558
|
-
perimeter: (0,_utilities_contours_calculatePerimeter__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z)(canvasCoordinates, closed),
|
|
6559
|
-
mean: stats.mean?.value,
|
|
6560
|
-
max: stats.max?.value,
|
|
6561
|
-
stdDev: stats.stdDev?.value,
|
|
6562
|
-
statsArray: stats.array,
|
|
6563
|
-
pointsInShape: pointsInShape,
|
|
6564
|
-
areaUnit: areaUnits,
|
|
6565
|
-
modalityUnit,
|
|
6566
|
-
};
|
|
7486
|
+
if (closed) {
|
|
7487
|
+
this.updateClosedCachedStats({
|
|
7488
|
+
targetId,
|
|
7489
|
+
viewport,
|
|
7490
|
+
canvasCoordinates,
|
|
7491
|
+
points,
|
|
7492
|
+
imageData,
|
|
7493
|
+
metadata,
|
|
7494
|
+
cachedStats,
|
|
7495
|
+
modalityUnit,
|
|
7496
|
+
calibratedScale,
|
|
7497
|
+
});
|
|
7498
|
+
}
|
|
7499
|
+
else {
|
|
7500
|
+
this.updateOpenCachedStats({
|
|
7501
|
+
metadata,
|
|
7502
|
+
canvasCoordinates,
|
|
7503
|
+
targetId,
|
|
7504
|
+
cachedStats,
|
|
7505
|
+
modalityUnit,
|
|
7506
|
+
calibratedScale,
|
|
7507
|
+
});
|
|
7508
|
+
}
|
|
6567
7509
|
}
|
|
6568
7510
|
(0,_stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_15__/* .triggerAnnotationModified */ .hg)(annotation, enabledElement.viewport.element, _enums__WEBPACK_IMPORTED_MODULE_25__.ChangeTypes.StatsUpdated);
|
|
6569
7511
|
annotation.invalidated = false;
|
|
@@ -6756,10 +7698,117 @@ class PlanarFreehandROITool extends _base_ContourSegmentationBaseTool__WEBPACK_I
|
|
|
6756
7698
|
}
|
|
6757
7699
|
}
|
|
6758
7700
|
}
|
|
7701
|
+
updateClosedCachedStats({ viewport, points, imageData, metadata, cachedStats, targetId, modalityUnit, canvasCoordinates, calibratedScale, }) {
|
|
7702
|
+
const { scale, areaUnits, units } = calibratedScale;
|
|
7703
|
+
const canvasPoint = canvasCoordinates[0];
|
|
7704
|
+
const originalWorldPoint = viewport.canvasToWorld(canvasPoint);
|
|
7705
|
+
const deltaXPoint = viewport.canvasToWorld([
|
|
7706
|
+
canvasPoint[0] + 1,
|
|
7707
|
+
canvasPoint[1],
|
|
7708
|
+
]);
|
|
7709
|
+
const deltaYPoint = viewport.canvasToWorld([
|
|
7710
|
+
canvasPoint[0],
|
|
7711
|
+
canvasPoint[1] + 1,
|
|
7712
|
+
]);
|
|
7713
|
+
const deltaInX = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.distance */ .R3.distance(originalWorldPoint, deltaXPoint);
|
|
7714
|
+
const deltaInY = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.distance */ .R3.distance(originalWorldPoint, deltaYPoint);
|
|
7715
|
+
const worldPosIndex = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, points[0]);
|
|
7716
|
+
worldPosIndex[0] = Math.floor(worldPosIndex[0]);
|
|
7717
|
+
worldPosIndex[1] = Math.floor(worldPosIndex[1]);
|
|
7718
|
+
worldPosIndex[2] = Math.floor(worldPosIndex[2]);
|
|
7719
|
+
let iMin = worldPosIndex[0];
|
|
7720
|
+
let iMax = worldPosIndex[0];
|
|
7721
|
+
let jMin = worldPosIndex[1];
|
|
7722
|
+
let jMax = worldPosIndex[1];
|
|
7723
|
+
let kMin = worldPosIndex[2];
|
|
7724
|
+
let kMax = worldPosIndex[2];
|
|
7725
|
+
for (let j = 1; j < points.length; j++) {
|
|
7726
|
+
const worldPosIndex = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, points[j]);
|
|
7727
|
+
worldPosIndex[0] = Math.floor(worldPosIndex[0]);
|
|
7728
|
+
worldPosIndex[1] = Math.floor(worldPosIndex[1]);
|
|
7729
|
+
worldPosIndex[2] = Math.floor(worldPosIndex[2]);
|
|
7730
|
+
iMin = Math.min(iMin, worldPosIndex[0]);
|
|
7731
|
+
iMax = Math.max(iMax, worldPosIndex[0]);
|
|
7732
|
+
jMin = Math.min(jMin, worldPosIndex[1]);
|
|
7733
|
+
jMax = Math.max(jMax, worldPosIndex[1]);
|
|
7734
|
+
kMin = Math.min(kMin, worldPosIndex[2]);
|
|
7735
|
+
kMax = Math.max(kMax, worldPosIndex[2]);
|
|
7736
|
+
}
|
|
7737
|
+
const worldPosIndex2 = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.transformWorldToIndex(imageData, points[1]);
|
|
7738
|
+
worldPosIndex2[0] = Math.floor(worldPosIndex2[0]);
|
|
7739
|
+
worldPosIndex2[1] = Math.floor(worldPosIndex2[1]);
|
|
7740
|
+
worldPosIndex2[2] = Math.floor(worldPosIndex2[2]);
|
|
7741
|
+
let area = _utilities_math__WEBPACK_IMPORTED_MODULE_4__.polyline.getArea(canvasCoordinates) / scale / scale;
|
|
7742
|
+
area *= deltaInX * deltaInY;
|
|
7743
|
+
const iDelta = 0.01 * (iMax - iMin);
|
|
7744
|
+
const jDelta = 0.01 * (jMax - jMin);
|
|
7745
|
+
const kDelta = 0.01 * (kMax - kMin);
|
|
7746
|
+
iMin = Math.floor(iMin - iDelta);
|
|
7747
|
+
iMax = Math.ceil(iMax + iDelta);
|
|
7748
|
+
jMin = Math.floor(jMin - jDelta);
|
|
7749
|
+
jMax = Math.ceil(jMax + jDelta);
|
|
7750
|
+
kMin = Math.floor(kMin - kDelta);
|
|
7751
|
+
kMax = Math.ceil(kMax + kDelta);
|
|
7752
|
+
const boundsIJK = [
|
|
7753
|
+
[iMin, iMax],
|
|
7754
|
+
[jMin, jMax],
|
|
7755
|
+
[kMin, kMax],
|
|
7756
|
+
];
|
|
7757
|
+
const worldPosEnd = imageData.indexToWorld([iMax, jMax, kMax]);
|
|
7758
|
+
const canvasPosEnd = viewport.worldToCanvas(worldPosEnd);
|
|
7759
|
+
let curRow = 0;
|
|
7760
|
+
let intersections = [];
|
|
7761
|
+
let intersectionCounter = 0;
|
|
7762
|
+
const pointsInShape = (0,_utilities_pointInShapeCallback__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z)(imageData, (pointLPS, _pointIJK) => {
|
|
7763
|
+
let result = true;
|
|
7764
|
+
const point = viewport.worldToCanvas(pointLPS);
|
|
7765
|
+
if (point[1] != curRow) {
|
|
7766
|
+
intersectionCounter = 0;
|
|
7767
|
+
curRow = point[1];
|
|
7768
|
+
intersections = (0,_utilities_math_polyline__WEBPACK_IMPORTED_MODULE_18__.getLineSegmentIntersectionsCoordinates)(canvasCoordinates, point, [canvasPosEnd[0], point[1]]);
|
|
7769
|
+
intersections.sort((function (index) {
|
|
7770
|
+
return function (a, b) {
|
|
7771
|
+
return a[index] === b[index] ? 0 : a[index] < b[index] ? -1 : 1;
|
|
7772
|
+
};
|
|
7773
|
+
})(0));
|
|
7774
|
+
}
|
|
7775
|
+
if (intersections.length && point[0] > intersections[0][0]) {
|
|
7776
|
+
intersections.shift();
|
|
7777
|
+
intersectionCounter++;
|
|
7778
|
+
}
|
|
7779
|
+
if (intersectionCounter % 2 === 0) {
|
|
7780
|
+
result = false;
|
|
7781
|
+
}
|
|
7782
|
+
return result;
|
|
7783
|
+
}, this.configuration.statsCalculator.statsCallback, boundsIJK);
|
|
7784
|
+
const stats = this.configuration.statsCalculator.getStatistics();
|
|
7785
|
+
cachedStats[targetId] = {
|
|
7786
|
+
Modality: metadata.Modality,
|
|
7787
|
+
area,
|
|
7788
|
+
perimeter: (0,_utilities_contours_calculatePerimeter__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z)(canvasCoordinates, closed) / scale,
|
|
7789
|
+
mean: stats.mean?.value,
|
|
7790
|
+
max: stats.max?.value,
|
|
7791
|
+
stdDev: stats.stdDev?.value,
|
|
7792
|
+
statsArray: stats.array,
|
|
7793
|
+
pointsInShape: pointsInShape,
|
|
7794
|
+
areaUnit: areaUnits,
|
|
7795
|
+
modalityUnit,
|
|
7796
|
+
unit: units,
|
|
7797
|
+
};
|
|
7798
|
+
}
|
|
7799
|
+
updateOpenCachedStats({ targetId, metadata, canvasCoordinates, cachedStats, modalityUnit, calibratedScale, }) {
|
|
7800
|
+
const { scale, units } = calibratedScale;
|
|
7801
|
+
cachedStats[targetId] = {
|
|
7802
|
+
Modality: metadata.Modality,
|
|
7803
|
+
length: (0,_utilities_contours_calculatePerimeter__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z)(canvasCoordinates, false) / scale,
|
|
7804
|
+
modalityUnit,
|
|
7805
|
+
unit: units,
|
|
7806
|
+
};
|
|
7807
|
+
}
|
|
6759
7808
|
}
|
|
6760
7809
|
function defaultGetTextLines(data, targetId) {
|
|
6761
7810
|
const cachedVolumeStats = data.cachedStats[targetId];
|
|
6762
|
-
const { area, mean, stdDev, perimeter, max, isEmptyArea, areaUnit, modalityUnit, } = cachedVolumeStats || {};
|
|
7811
|
+
const { area, mean, stdDev, length, perimeter, max, isEmptyArea, areaUnit, modalityUnit, unit, } = cachedVolumeStats || {};
|
|
6763
7812
|
const textLines = [];
|
|
6764
7813
|
if (area) {
|
|
6765
7814
|
const areaLine = isEmptyArea
|
|
@@ -6777,7 +7826,10 @@ function defaultGetTextLines(data, targetId) {
|
|
|
6777
7826
|
textLines.push(`Std Dev: ${(0,_utilities__WEBPACK_IMPORTED_MODULE_3__.roundNumber)(stdDev)} ${modalityUnit}`);
|
|
6778
7827
|
}
|
|
6779
7828
|
if (perimeter) {
|
|
6780
|
-
textLines.push(`Perimeter: ${(0,_utilities__WEBPACK_IMPORTED_MODULE_3__.roundNumber)(perimeter)} ${
|
|
7829
|
+
textLines.push(`Perimeter: ${(0,_utilities__WEBPACK_IMPORTED_MODULE_3__.roundNumber)(perimeter)} ${unit}`);
|
|
7830
|
+
}
|
|
7831
|
+
if (length) {
|
|
7832
|
+
textLines.push(`${(0,_utilities__WEBPACK_IMPORTED_MODULE_3__.roundNumber)(length)} ${unit}`);
|
|
6781
7833
|
}
|
|
6782
7834
|
return textLines;
|
|
6783
7835
|
}
|
|
@@ -6794,7 +7846,7 @@ PlanarFreehandROITool.toolName = 'PlanarFreehandROI';
|
|
|
6794
7846
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6795
7847
|
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
6796
7848
|
/* harmony export */ });
|
|
6797
|
-
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
7849
|
+
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
|
|
6798
7850
|
/* harmony import */ var _enums_SegmentationRepresentations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74297);
|
|
6799
7851
|
/* harmony import */ var _stateManagement_segmentation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(95482);
|
|
6800
7852
|
/* harmony import */ var _stateManagement_segmentation_config_segmentationVisibility__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(39949);
|
|
@@ -6927,7 +7979,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
6927
7979
|
xX: () => (/* reexport */ SegmentationDisplayTool/* default */.Z)
|
|
6928
7980
|
});
|
|
6929
7981
|
|
|
6930
|
-
// UNUSED EXPORTS: AngleTool, AnnotationDisplayTool, ArrowAnnotateTool, BaseTool, BidirectionalTool, BrushTool, CircleROIStartEndThresholdTool, CircleROITool, CircleScissorsTool, CobbAngleTool, CrosshairsTool, DragProbeTool, EllipticalROITool, EraserTool, KeyImageTool, LengthTool, LivewireContourSegmentationTool, LivewireContourTool, MIPJumpToClickTool, MagnifyTool, OrientationMarkerTool, OverlayGridTool, PaintFillTool, PanTool, PlanarRotateTool, ProbeTool, RectangleROITool, RectangleScissorsTool, ReferenceCursors, ReferenceLines, ReferenceLinesTool, ScaleOverlayTool, SculptorTool, SegmentSelectTool, SegmentationIntersectionTool, SphereScissorsTool, SplineContourSegmentationTool, SplineROITool, StackScrollMouseWheelTool, StackScrollTool, TrackballRotateTool, UltrasoundDirectionalTool, VolumeRotateMouseWheelTool, WindowLevelRegionTool, WindowLevelTool, ZoomTool
|
|
7982
|
+
// UNUSED EXPORTS: AngleTool, AnnotationDisplayTool, ArrowAnnotateTool, BaseTool, BidirectionalTool, BrushTool, CircleROIStartEndThresholdTool, CircleROITool, CircleScissorsTool, CobbAngleTool, CrosshairsTool, DragProbeTool, EllipticalROITool, EraserTool, HeightTool, KeyImageTool, LengthTool, LivewireContourSegmentationTool, LivewireContourTool, MIPJumpToClickTool, MagnifyTool, OrientationMarkerTool, OverlayGridTool, PaintFillTool, PanTool, PlanarRotateTool, ProbeTool, RectangleROITool, RectangleScissorsTool, ReferenceCursors, ReferenceLines, ReferenceLinesTool, ScaleOverlayTool, SculptorTool, SegmentSelectTool, SegmentationIntersectionTool, SphereScissorsTool, SplineContourSegmentationTool, SplineROITool, StackScrollMouseWheelTool, StackScrollTool, TrackballRotateTool, UltrasoundDirectionalTool, VolumeRotateMouseWheelTool, WindowLevelRegionTool, WindowLevelTool, ZoomTool
|
|
6931
7983
|
|
|
6932
7984
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/base/index.js
|
|
6933
7985
|
var base = __webpack_require__(93382);
|
|
@@ -6973,6 +8025,8 @@ var SculptorTool = __webpack_require__(86684);
|
|
|
6973
8025
|
var BidirectionalTool = __webpack_require__(56611);
|
|
6974
8026
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/LengthTool.js
|
|
6975
8027
|
var LengthTool = __webpack_require__(3098);
|
|
8028
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/HeightTool.js
|
|
8029
|
+
var HeightTool = __webpack_require__(76131);
|
|
6976
8030
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/ProbeTool.js
|
|
6977
8031
|
var ProbeTool = __webpack_require__(86479);
|
|
6978
8032
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/DragProbeTool.js
|
|
@@ -7015,14 +8069,14 @@ var RectangleScissorsTool = __webpack_require__(13354);
|
|
|
7015
8069
|
var CircleScissorsTool = __webpack_require__(30809);
|
|
7016
8070
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/segmentation/SphereScissorsTool.js
|
|
7017
8071
|
var SphereScissorsTool = __webpack_require__(30862);
|
|
7018
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js +
|
|
7019
|
-
var esm = __webpack_require__(
|
|
8072
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
|
|
8073
|
+
var esm = __webpack_require__(12651);
|
|
7020
8074
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/stateManagement/index.js
|
|
7021
8075
|
var stateManagement = __webpack_require__(50097);
|
|
7022
8076
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/stateManagement/annotation/annotationLocking.js
|
|
7023
8077
|
var annotationLocking = __webpack_require__(11163);
|
|
7024
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/index.js +
|
|
7025
|
-
var drawingSvg = __webpack_require__(
|
|
8078
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/index.js + 19 modules
|
|
8079
|
+
var drawingSvg = __webpack_require__(25876);
|
|
7026
8080
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewportFilters/index.js + 4 modules
|
|
7027
8081
|
var viewportFilters = __webpack_require__(46966);
|
|
7028
8082
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/elementCursor.js
|
|
@@ -7180,12 +8234,26 @@ class RectangleROIThresholdTool extends RectangleROITool/* default */.Z {
|
|
|
7180
8234
|
RectangleROIThresholdTool.toolName = 'RectangleROIThreshold';
|
|
7181
8235
|
/* harmony default export */ const segmentation_RectangleROIThresholdTool = (RectangleROIThresholdTool);
|
|
7182
8236
|
|
|
8237
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getCalibratedUnits.js
|
|
8238
|
+
var getCalibratedUnits = __webpack_require__(39661);
|
|
7183
8239
|
// EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
|
|
7184
8240
|
var gl_matrix_esm = __webpack_require__(72076);
|
|
7185
8241
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/throttle.js
|
|
7186
8242
|
var throttle = __webpack_require__(90685);
|
|
8243
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/drawing/index.js + 1 modules
|
|
8244
|
+
var drawing = __webpack_require__(20724);
|
|
8245
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/planar/getWorldWidthAndHeightFromCorners.js
|
|
8246
|
+
var getWorldWidthAndHeightFromCorners = __webpack_require__(88582);
|
|
7187
8247
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/index.js + 1 modules
|
|
7188
8248
|
var utilities = __webpack_require__(42975);
|
|
8249
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getModalityUnit.js
|
|
8250
|
+
var getModalityUnit = __webpack_require__(15607);
|
|
8251
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewport/isViewportPreScaled.js
|
|
8252
|
+
var isViewportPreScaled = __webpack_require__(20752);
|
|
8253
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/math/basic/index.js + 2 modules
|
|
8254
|
+
var basic = __webpack_require__(51053);
|
|
8255
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/planar/index.js
|
|
8256
|
+
var planar = __webpack_require__(44037);
|
|
7189
8257
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js
|
|
7190
8258
|
|
|
7191
8259
|
|
|
@@ -7200,6 +8268,13 @@ var utilities = __webpack_require__(42975);
|
|
|
7200
8268
|
|
|
7201
8269
|
|
|
7202
8270
|
|
|
8271
|
+
|
|
8272
|
+
|
|
8273
|
+
|
|
8274
|
+
|
|
8275
|
+
|
|
8276
|
+
|
|
8277
|
+
|
|
7203
8278
|
|
|
7204
8279
|
const { transformWorldToIndex } = esm.utilities;
|
|
7205
8280
|
class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z {
|
|
@@ -7207,6 +8282,9 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7207
8282
|
configuration: {
|
|
7208
8283
|
numSlicesToPropagate: 10,
|
|
7209
8284
|
computePointsInsideVolume: false,
|
|
8285
|
+
getTextLines: defaultGetTextLines,
|
|
8286
|
+
statsCalculator: basic.BasicStatsCalculator,
|
|
8287
|
+
showTextBox: false,
|
|
7210
8288
|
},
|
|
7211
8289
|
}) {
|
|
7212
8290
|
super(toolProps, defaultToolProps);
|
|
@@ -7229,12 +8307,9 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7229
8307
|
imageVolume = esm.cache.getVolume(volumeId);
|
|
7230
8308
|
referencedImageId = esm.utilities.getClosestImageId(imageVolume, worldPos, viewPlaneNormal);
|
|
7231
8309
|
}
|
|
7232
|
-
if (!referencedImageId) {
|
|
7233
|
-
throw new Error('This tool does not work on non-acquisition planes');
|
|
7234
|
-
}
|
|
7235
|
-
const startIndex = viewport.getCurrentImageIdIndex();
|
|
7236
8310
|
const spacingInNormal = esm.utilities.getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
|
|
7237
|
-
const
|
|
8311
|
+
const startCoord = this._getStartCoordinate(worldPos, viewPlaneNormal);
|
|
8312
|
+
const endCoord = this._getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal);
|
|
7238
8313
|
const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
|
|
7239
8314
|
const annotation = {
|
|
7240
8315
|
highlighted: true,
|
|
@@ -7251,18 +8326,24 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7251
8326
|
},
|
|
7252
8327
|
data: {
|
|
7253
8328
|
label: '',
|
|
7254
|
-
|
|
7255
|
-
|
|
8329
|
+
startCoordinate: startCoord,
|
|
8330
|
+
endCoordinate: endCoord,
|
|
7256
8331
|
cachedStats: {
|
|
7257
8332
|
pointsInVolume: [],
|
|
7258
8333
|
projectionPoints: [],
|
|
7259
8334
|
projectionPointsImageIds: [referencedImageId],
|
|
8335
|
+
statistics: [],
|
|
7260
8336
|
},
|
|
7261
8337
|
handles: {
|
|
7262
8338
|
textBox: {
|
|
7263
8339
|
hasMoved: false,
|
|
7264
|
-
worldPosition:
|
|
7265
|
-
worldBoundingBox:
|
|
8340
|
+
worldPosition: [0, 0, 0],
|
|
8341
|
+
worldBoundingBox: {
|
|
8342
|
+
topLeft: [0, 0, 0],
|
|
8343
|
+
topRight: [0, 0, 0],
|
|
8344
|
+
bottomLeft: [0, 0, 0],
|
|
8345
|
+
bottomRight: [0, 0, 0],
|
|
8346
|
+
},
|
|
7266
8347
|
},
|
|
7267
8348
|
points: [
|
|
7268
8349
|
[...worldPos],
|
|
@@ -7313,7 +8394,7 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7313
8394
|
const targetId = this.getTargetId(enabledElement.viewport);
|
|
7314
8395
|
const imageVolume = esm.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
|
|
7315
8396
|
if (this.configuration.calculatePointsInsideVolume) {
|
|
7316
|
-
this._computePointsInsideVolume(annotation, imageVolume, enabledElement);
|
|
8397
|
+
this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
|
|
7317
8398
|
}
|
|
7318
8399
|
(0,triggerAnnotationRenderForViewportIds/* default */.Z)(enabledElement.renderingEngine, viewportIdsToRender);
|
|
7319
8400
|
if (newAnnotation) {
|
|
@@ -7323,11 +8404,11 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7323
8404
|
this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
|
|
7324
8405
|
let renderStatus = false;
|
|
7325
8406
|
const { viewport } = enabledElement;
|
|
7326
|
-
|
|
8407
|
+
let annotations = (0,stateManagement/* getAnnotations */.fy)(this.getToolName(), viewport.element);
|
|
7327
8408
|
if (!annotations?.length) {
|
|
7328
8409
|
return renderStatus;
|
|
7329
8410
|
}
|
|
7330
|
-
|
|
8411
|
+
annotations = (0,planar.filterAnnotationsWithinSamePlane)(annotations, viewport.getCamera());
|
|
7331
8412
|
const styleSpecifier = {
|
|
7332
8413
|
toolGroupId: this.toolGroupId,
|
|
7333
8414
|
toolName: this.getToolName(),
|
|
@@ -7336,22 +8417,37 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7336
8417
|
for (let i = 0; i < annotations.length; i++) {
|
|
7337
8418
|
const annotation = annotations[i];
|
|
7338
8419
|
const { annotationUID, data } = annotation;
|
|
7339
|
-
const {
|
|
8420
|
+
const { startCoordinate, endCoordinate } = data;
|
|
7340
8421
|
const { points, activeHandleIndex } = data.handles;
|
|
7341
8422
|
const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
|
|
7342
8423
|
styleSpecifier.annotationUID = annotationUID;
|
|
7343
8424
|
const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation);
|
|
7344
8425
|
const lineDash = this.getStyle('lineDash', styleSpecifier, annotation);
|
|
7345
8426
|
const color = this.getStyle('color', styleSpecifier, annotation);
|
|
7346
|
-
|
|
7347
|
-
|
|
8427
|
+
const focalPoint = viewport.getCamera().focalPoint;
|
|
8428
|
+
const viewplaneNormal = viewport.getCamera().viewPlaneNormal;
|
|
8429
|
+
let startCoord = startCoordinate;
|
|
8430
|
+
let endCoord = endCoordinate;
|
|
8431
|
+
if (Array.isArray(startCoordinate)) {
|
|
8432
|
+
startCoord = this._getCoordinateForViewplaneNormal(startCoord, viewplaneNormal);
|
|
8433
|
+
}
|
|
8434
|
+
if (Array.isArray(endCoordinate)) {
|
|
8435
|
+
endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
|
|
8436
|
+
}
|
|
8437
|
+
const roundedStartCoord = esm.utilities.roundToPrecision(startCoord);
|
|
8438
|
+
const roundedEndCoord = esm.utilities.roundToPrecision(endCoord);
|
|
8439
|
+
const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
|
|
8440
|
+
const roundedCoord = esm.utilities.roundToPrecision(coord);
|
|
8441
|
+
if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
|
|
8442
|
+
roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
|
|
7348
8443
|
continue;
|
|
7349
8444
|
}
|
|
7350
8445
|
if (annotation.invalidated) {
|
|
7351
8446
|
this._throttledCalculateCachedStats(annotation, enabledElement);
|
|
7352
8447
|
}
|
|
7353
8448
|
let firstOrLastSlice = false;
|
|
7354
|
-
if (
|
|
8449
|
+
if (roundedCoord === roundedStartCoord ||
|
|
8450
|
+
roundedCoord === roundedEndCoord) {
|
|
7355
8451
|
firstOrLastSlice = true;
|
|
7356
8452
|
}
|
|
7357
8453
|
if (!viewport.getRenderingEngine()) {
|
|
@@ -7385,6 +8481,42 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7385
8481
|
lineWidth,
|
|
7386
8482
|
});
|
|
7387
8483
|
renderStatus = true;
|
|
8484
|
+
if (this.configuration.showTextBox &&
|
|
8485
|
+
this.configuration.calculatePointsInsideVolume) {
|
|
8486
|
+
const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
|
|
8487
|
+
if (!options.visibility) {
|
|
8488
|
+
data.handles.textBox = {
|
|
8489
|
+
hasMoved: false,
|
|
8490
|
+
worldPosition: [0, 0, 0],
|
|
8491
|
+
worldBoundingBox: {
|
|
8492
|
+
topLeft: [0, 0, 0],
|
|
8493
|
+
topRight: [0, 0, 0],
|
|
8494
|
+
bottomLeft: [0, 0, 0],
|
|
8495
|
+
bottomRight: [0, 0, 0],
|
|
8496
|
+
},
|
|
8497
|
+
};
|
|
8498
|
+
continue;
|
|
8499
|
+
}
|
|
8500
|
+
const textLines = this.configuration.getTextLines(data);
|
|
8501
|
+
if (!textLines || textLines.length === 0) {
|
|
8502
|
+
continue;
|
|
8503
|
+
}
|
|
8504
|
+
if (!data.handles.textBox.hasMoved) {
|
|
8505
|
+
const canvasTextBoxCoords = (0,drawing.getTextBoxCoordsCanvas)(canvasCoordinates);
|
|
8506
|
+
data.handles.textBox.worldPosition =
|
|
8507
|
+
viewport.canvasToWorld(canvasTextBoxCoords);
|
|
8508
|
+
}
|
|
8509
|
+
const textBoxPosition = viewport.worldToCanvas(data.handles.textBox.worldPosition);
|
|
8510
|
+
const textBoxUID = '1';
|
|
8511
|
+
const boundingBox = (0,drawingSvg.drawLinkedTextBox)(svgDrawingHelper, annotationUID, textBoxUID, textLines, textBoxPosition, canvasCoordinates, {}, options);
|
|
8512
|
+
const { x: left, y: top, width, height } = boundingBox;
|
|
8513
|
+
data.handles.textBox.worldBoundingBox = {
|
|
8514
|
+
topLeft: viewport.canvasToWorld([left, top]),
|
|
8515
|
+
topRight: viewport.canvasToWorld([left + width, top]),
|
|
8516
|
+
bottomLeft: viewport.canvasToWorld([left, top + height]),
|
|
8517
|
+
bottomRight: viewport.canvasToWorld([left + width, top + height]),
|
|
8518
|
+
};
|
|
8519
|
+
}
|
|
7388
8520
|
}
|
|
7389
8521
|
return renderStatus;
|
|
7390
8522
|
};
|
|
@@ -7394,17 +8526,26 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7394
8526
|
const { data, metadata } = annotation;
|
|
7395
8527
|
const { viewPlaneNormal, spacingInNormal } = metadata;
|
|
7396
8528
|
const { imageData } = imageVolume;
|
|
7397
|
-
const {
|
|
8529
|
+
const { startCoordinate, endCoordinate } = data;
|
|
7398
8530
|
const { points } = data.handles;
|
|
7399
8531
|
const startIJK = transformWorldToIndex(imageData, points[0]);
|
|
7400
|
-
|
|
7401
|
-
throw new Error('Start slice does not match');
|
|
7402
|
-
}
|
|
7403
|
-
const endIJK = gl_matrix_esm/* vec3.fromValues */.R3.fromValues(startIJK[0], startIJK[1], endSlice);
|
|
8532
|
+
const endIJK = transformWorldToIndex(imageData, points[0]);
|
|
7404
8533
|
const startWorld = gl_matrix_esm/* vec3.create */.R3.create();
|
|
7405
8534
|
imageData.indexToWorldVec3(startIJK, startWorld);
|
|
7406
8535
|
const endWorld = gl_matrix_esm/* vec3.create */.R3.create();
|
|
7407
8536
|
imageData.indexToWorldVec3(endIJK, endWorld);
|
|
8537
|
+
if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 2) {
|
|
8538
|
+
startWorld[2] = startCoordinate;
|
|
8539
|
+
endWorld[2] = endCoordinate;
|
|
8540
|
+
}
|
|
8541
|
+
else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 0) {
|
|
8542
|
+
startWorld[0] = startCoordinate;
|
|
8543
|
+
endWorld[0] = endCoordinate;
|
|
8544
|
+
}
|
|
8545
|
+
else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 1) {
|
|
8546
|
+
startWorld[1] = startCoordinate;
|
|
8547
|
+
endWorld[1] = endCoordinate;
|
|
8548
|
+
}
|
|
7408
8549
|
const distance = gl_matrix_esm/* vec3.distance */.R3.distance(startWorld, endWorld);
|
|
7409
8550
|
const newProjectionPoints = [];
|
|
7410
8551
|
for (let dist = 0; dist < distance; dist += spacingInNormal) {
|
|
@@ -7415,34 +8556,45 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7415
8556
|
}));
|
|
7416
8557
|
}
|
|
7417
8558
|
data.cachedStats.projectionPoints = newProjectionPoints;
|
|
7418
|
-
const projectionPointsImageIds = [];
|
|
7419
|
-
for (const RectanglePoints of newProjectionPoints) {
|
|
7420
|
-
const imageId = esm.utilities.getClosestImageId(imageVolume, RectanglePoints[0], viewPlaneNormal);
|
|
7421
|
-
projectionPointsImageIds.push(imageId);
|
|
7422
|
-
}
|
|
7423
|
-
data.cachedStats.projectionPointsImageIds = projectionPointsImageIds;
|
|
7424
8559
|
}
|
|
7425
|
-
_computePointsInsideVolume(annotation, imageVolume, enabledElement) {
|
|
7426
|
-
const { data } = annotation;
|
|
8560
|
+
_computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement) {
|
|
8561
|
+
const { data, metadata } = annotation;
|
|
8562
|
+
const { viewPlaneNormal, viewUp } = metadata;
|
|
8563
|
+
const { viewport, renderingEngine } = enabledElement;
|
|
7427
8564
|
const projectionPoints = data.cachedStats.projectionPoints;
|
|
7428
8565
|
const pointsInsideVolume = [[]];
|
|
8566
|
+
const image = this.getTargetIdImage(targetId, renderingEngine);
|
|
8567
|
+
const worldPos1 = data.handles.points[0];
|
|
8568
|
+
const worldPos2 = data.handles.points[3];
|
|
8569
|
+
const { worldWidth, worldHeight } = (0,getWorldWidthAndHeightFromCorners/* default */.Z)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
|
|
8570
|
+
const measureInfo = (0,getCalibratedUnits/* getCalibratedLengthUnitsAndScale */.mh)(image, data.habdles);
|
|
8571
|
+
const area = Math.abs(worldWidth * worldHeight) /
|
|
8572
|
+
(measureInfo.scale * measureInfo.scale);
|
|
8573
|
+
const modalityUnitOptions = {
|
|
8574
|
+
isPreScaled: (0,isViewportPreScaled/* isViewportPreScaled */.P)(viewport, targetId),
|
|
8575
|
+
isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
|
|
8576
|
+
};
|
|
8577
|
+
const modalityUnit = (0,getModalityUnit/* getModalityUnit */.F)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
|
|
7429
8578
|
for (let i = 0; i < projectionPoints.length; i++) {
|
|
7430
8579
|
if (!imageVolume) {
|
|
7431
8580
|
continue;
|
|
7432
8581
|
}
|
|
7433
8582
|
const projectionPoint = projectionPoints[i][0];
|
|
7434
|
-
const worldPos1 = data.handles.points[0];
|
|
7435
|
-
const worldPos2 = data.handles.points[3];
|
|
7436
8583
|
const { dimensions, imageData } = imageVolume;
|
|
7437
8584
|
const worldPos1Index = transformWorldToIndex(imageData, worldPos1);
|
|
7438
8585
|
const worldProjectionPointIndex = transformWorldToIndex(imageData, projectionPoint);
|
|
8586
|
+
const indexOfProjection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
|
|
7439
8587
|
worldPos1Index[0] = Math.floor(worldPos1Index[0]);
|
|
7440
8588
|
worldPos1Index[1] = Math.floor(worldPos1Index[1]);
|
|
7441
|
-
worldPos1Index[2] = Math.floor(
|
|
8589
|
+
worldPos1Index[2] = Math.floor(worldPos1Index[2]);
|
|
8590
|
+
worldPos1Index[indexOfProjection] =
|
|
8591
|
+
worldProjectionPointIndex[indexOfProjection];
|
|
7442
8592
|
const worldPos2Index = transformWorldToIndex(imageData, worldPos2);
|
|
7443
8593
|
worldPos2Index[0] = Math.floor(worldPos2Index[0]);
|
|
7444
8594
|
worldPos2Index[1] = Math.floor(worldPos2Index[1]);
|
|
7445
|
-
worldPos2Index[2] = Math.floor(
|
|
8595
|
+
worldPos2Index[2] = Math.floor(worldPos2Index[2]);
|
|
8596
|
+
worldPos2Index[indexOfProjection] =
|
|
8597
|
+
worldProjectionPointIndex[indexOfProjection];
|
|
7446
8598
|
if (this._isInsideVolume(worldPos1Index, worldPos2Index, dimensions)) {
|
|
7447
8599
|
this.isHandleOutsideImage = false;
|
|
7448
8600
|
const iMin = Math.min(worldPos1Index[0], worldPos2Index[0]);
|
|
@@ -7456,11 +8608,22 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7456
8608
|
[jMin, jMax],
|
|
7457
8609
|
[kMin, kMax],
|
|
7458
8610
|
];
|
|
7459
|
-
const pointsInShape = (0,utilities.pointInShapeCallback)(imageData, () => true,
|
|
8611
|
+
const pointsInShape = (0,utilities.pointInShapeCallback)(imageData, () => true, this.configuration.statsCalculator.statsCallback, boundsIJK);
|
|
7460
8612
|
pointsInsideVolume.push(pointsInShape);
|
|
7461
8613
|
}
|
|
7462
8614
|
}
|
|
8615
|
+
const stats = this.configuration.statsCalculator.getStatistics();
|
|
7463
8616
|
data.cachedStats.pointsInVolume = pointsInsideVolume;
|
|
8617
|
+
data.cachedStats.statistics = {
|
|
8618
|
+
Modality: metadata.Modality,
|
|
8619
|
+
area,
|
|
8620
|
+
mean: stats.mean?.value,
|
|
8621
|
+
stdDev: stats.stdDev?.value,
|
|
8622
|
+
max: stats.max?.value,
|
|
8623
|
+
statsArray: stats.array,
|
|
8624
|
+
areaUnit: measureInfo.areaUnits,
|
|
8625
|
+
modalityUnit,
|
|
8626
|
+
};
|
|
7464
8627
|
}
|
|
7465
8628
|
_calculateCachedStatsTool(annotation, enabledElement) {
|
|
7466
8629
|
const data = annotation.data;
|
|
@@ -7473,25 +8636,44 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
|
|
|
7473
8636
|
(0,state/* triggerAnnotationModified */.hg)(annotation, viewport.element);
|
|
7474
8637
|
return cachedStats;
|
|
7475
8638
|
}
|
|
7476
|
-
|
|
8639
|
+
_getStartCoordinate(worldPos, viewPlaneNormal) {
|
|
8640
|
+
const startPos = worldPos;
|
|
8641
|
+
const startCoord = this._getCoordinateForViewplaneNormal(startPos, viewPlaneNormal);
|
|
8642
|
+
return startCoord;
|
|
8643
|
+
}
|
|
8644
|
+
_getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal) {
|
|
7477
8645
|
const numSlicesToPropagate = this.configuration.numSlicesToPropagate;
|
|
7478
8646
|
const endPos = gl_matrix_esm/* vec3.create */.R3.create();
|
|
7479
8647
|
gl_matrix_esm/* vec3.scaleAndAdd */.R3.scaleAndAdd(endPos, worldPos, viewPlaneNormal, numSlicesToPropagate * spacingInNormal);
|
|
7480
|
-
const
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
8648
|
+
const endCoord = this._getCoordinateForViewplaneNormal(endPos, viewPlaneNormal);
|
|
8649
|
+
return endCoord;
|
|
8650
|
+
}
|
|
8651
|
+
_getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) {
|
|
8652
|
+
const viewplaneNormalAbs = [
|
|
8653
|
+
Math.abs(viewPlaneNormal[0]),
|
|
8654
|
+
Math.abs(viewPlaneNormal[1]),
|
|
8655
|
+
Math.abs(viewPlaneNormal[2]),
|
|
8656
|
+
];
|
|
8657
|
+
const indexOfDirection = viewplaneNormalAbs.indexOf(Math.max(...viewplaneNormalAbs));
|
|
8658
|
+
return indexOfDirection;
|
|
8659
|
+
}
|
|
8660
|
+
_getCoordinateForViewplaneNormal(pos, viewPlaneNormal) {
|
|
8661
|
+
const indexOfDirection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
|
|
8662
|
+
return pos[indexOfDirection];
|
|
8663
|
+
}
|
|
8664
|
+
}
|
|
8665
|
+
function defaultGetTextLines(data) {
|
|
8666
|
+
const cachedVolumeStats = data.cachedStats.statistics;
|
|
8667
|
+
const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
|
|
8668
|
+
if (mean === undefined) {
|
|
8669
|
+
return;
|
|
7494
8670
|
}
|
|
8671
|
+
const textLines = [];
|
|
8672
|
+
textLines.push(`Area: ${(0,utilities.roundNumber)(area)} ${areaUnit}`);
|
|
8673
|
+
textLines.push(`Mean: ${(0,utilities.roundNumber)(mean)} ${modalityUnit}`);
|
|
8674
|
+
textLines.push(`Max: ${(0,utilities.roundNumber)(max)} ${modalityUnit}`);
|
|
8675
|
+
textLines.push(`Std Dev: ${(0,utilities.roundNumber)(stdDev)} ${modalityUnit}`);
|
|
8676
|
+
return textLines;
|
|
7495
8677
|
}
|
|
7496
8678
|
RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
|
|
7497
8679
|
/* harmony default export */ const segmentation_RectangleROIStartEndThresholdTool = (RectangleROIStartEndThresholdTool);
|
|
@@ -7559,6 +8741,7 @@ var SegmentSelectTool = __webpack_require__(45986);
|
|
|
7559
8741
|
|
|
7560
8742
|
|
|
7561
8743
|
|
|
8744
|
+
|
|
7562
8745
|
|
|
7563
8746
|
|
|
7564
8747
|
/***/ }),
|
|
@@ -7649,8 +8832,8 @@ __webpack_require__.d(orientation_namespaceObject, {
|
|
|
7649
8832
|
invertOrientationStringLPS: () => (invertOrientationStringLPS/* default */.Z)
|
|
7650
8833
|
});
|
|
7651
8834
|
|
|
7652
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js +
|
|
7653
|
-
var esm = __webpack_require__(
|
|
8835
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
|
|
8836
|
+
var esm = __webpack_require__(12651);
|
|
7654
8837
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getAnnotationNearPoint.js
|
|
7655
8838
|
var getAnnotationNearPoint = __webpack_require__(62358);
|
|
7656
8839
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/debounce.js
|