@cornerstonejs/core 0.9.0 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/RenderingEngine/RenderingEngine.js +6 -2
- package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
- package/dist/cjs/RenderingEngine/StackViewport.d.ts +1 -1
- package/dist/cjs/RenderingEngine/StackViewport.js +47 -40
- package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/Viewport.d.ts +3 -3
- package/dist/cjs/RenderingEngine/Viewport.js +37 -33
- package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/VolumeViewport.d.ts +5 -3
- package/dist/cjs/RenderingEngine/VolumeViewport.js +122 -52
- package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +19 -5
- package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js +2 -1
- package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
- package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js +30 -3
- package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/index.d.ts +2 -1
- package/dist/cjs/RenderingEngine/helpers/index.js +3 -1
- package/dist/cjs/RenderingEngine/helpers/index.js.map +1 -1
- package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -0
- package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.js +163 -0
- package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.js.map +1 -0
- package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +4 -0
- package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +42 -0
- package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.js.map +1 -0
- package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +12 -0
- package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.js +11 -2
- package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.js.map +1 -1
- package/dist/cjs/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +2 -0
- package/dist/cjs/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js.map +1 -1
- package/dist/cjs/Settings.js +1 -0
- package/dist/cjs/Settings.js.map +1 -1
- package/dist/cjs/cache/classes/ImageVolume.d.ts +1 -0
- package/dist/cjs/cache/classes/ImageVolume.js +1 -0
- package/dist/cjs/cache/classes/ImageVolume.js.map +1 -1
- package/dist/cjs/constants/index.d.ts +2 -2
- package/dist/cjs/constants/index.js +2 -2
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/rendering.d.ts +5 -2
- package/dist/cjs/constants/rendering.js +6 -2
- package/dist/cjs/constants/rendering.js.map +1 -1
- package/dist/cjs/enums/BlendModes.js +1 -1
- package/dist/cjs/enums/BlendModes.js.map +1 -1
- package/dist/cjs/enums/Events.d.ts +1 -0
- package/dist/cjs/enums/Events.js +1 -0
- package/dist/cjs/enums/Events.js.map +1 -1
- package/dist/cjs/types/ActorSliceRange.d.ts +11 -0
- package/dist/cjs/types/ActorSliceRange.js +3 -0
- package/dist/cjs/types/ActorSliceRange.js.map +1 -0
- package/dist/cjs/types/EventTypes.d.ts +10 -1
- package/dist/cjs/types/IActor.d.ts +4 -3
- package/dist/cjs/types/IImageVolume.d.ts +1 -0
- package/dist/cjs/types/IStackViewport.d.ts +1 -1
- package/dist/cjs/types/IVolumeInput.d.ts +0 -1
- package/dist/cjs/types/IVolumeViewport.d.ts +4 -3
- package/dist/cjs/types/ImageSliceData.d.ts +5 -0
- package/dist/cjs/types/ImageSliceData.js +3 -0
- package/dist/cjs/types/ImageSliceData.js.map +1 -0
- package/dist/cjs/types/Metadata.d.ts +1 -0
- package/dist/cjs/types/index.d.ts +4 -2
- package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.d.ts +3 -0
- package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js +37 -0
- package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js.map +1 -0
- package/dist/cjs/utilities/getScalingParameters.d.ts +2 -0
- package/dist/cjs/utilities/getScalingParameters.js +41 -0
- package/dist/cjs/utilities/getScalingParameters.js.map +1 -0
- package/dist/cjs/utilities/getSliceRange.d.ts +2 -0
- package/dist/cjs/utilities/getSliceRange.js +39 -0
- package/dist/cjs/utilities/getSliceRange.js.map +1 -0
- package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js +1 -1
- package/dist/cjs/utilities/getVolumeViewportsContainingVolumeId.js +2 -2
- package/dist/cjs/utilities/getVolumeViewportsContainingVolumeId.js.map +1 -1
- package/dist/cjs/utilities/index.d.ts +6 -2
- package/dist/cjs/utilities/index.js +9 -1
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/loadImageToCanvas.js +2 -9
- package/dist/cjs/utilities/loadImageToCanvas.js.map +1 -1
- package/dist/cjs/utilities/snapFocalPointToSlice.d.ts +5 -0
- package/dist/cjs/utilities/snapFocalPointToSlice.js +41 -0
- package/dist/cjs/utilities/snapFocalPointToSlice.js.map +1 -0
- package/dist/esm/RenderingEngine/RenderingEngine.js +6 -2
- package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
- package/dist/esm/RenderingEngine/StackViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/StackViewport.js +47 -40
- package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/Viewport.d.ts +3 -3
- package/dist/esm/RenderingEngine/Viewport.js +38 -34
- package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +5 -3
- package/dist/esm/RenderingEngine/VolumeViewport.js +104 -53
- package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +19 -5
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js +2 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.js +30 -3
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/index.d.ts +2 -1
- package/dist/esm/RenderingEngine/helpers/index.js +2 -1
- package/dist/esm/RenderingEngine/helpers/index.js.map +1 -1
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -0
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +132 -0
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js.map +1 -0
- package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +4 -0
- package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +35 -0
- package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js.map +1 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +12 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js +11 -2
- package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js.map +1 -1
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +2 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js.map +1 -1
- package/dist/esm/Settings.js +1 -0
- package/dist/esm/Settings.js.map +1 -1
- package/dist/esm/cache/classes/ImageVolume.d.ts +1 -0
- package/dist/esm/cache/classes/ImageVolume.js +1 -0
- package/dist/esm/cache/classes/ImageVolume.js.map +1 -1
- package/dist/esm/constants/index.d.ts +2 -2
- package/dist/esm/constants/index.js +2 -2
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/rendering.d.ts +5 -2
- package/dist/esm/constants/rendering.js +6 -2
- package/dist/esm/constants/rendering.js.map +1 -1
- package/dist/esm/enums/BlendModes.js +1 -1
- package/dist/esm/enums/BlendModes.js.map +1 -1
- package/dist/esm/enums/Events.d.ts +1 -0
- package/dist/esm/enums/Events.js +1 -0
- package/dist/esm/enums/Events.js.map +1 -1
- package/dist/esm/types/ActorSliceRange.d.ts +11 -0
- package/dist/esm/types/ActorSliceRange.js +2 -0
- package/dist/esm/types/ActorSliceRange.js.map +1 -0
- package/dist/esm/types/EventTypes.d.ts +10 -1
- package/dist/esm/types/IActor.d.ts +4 -3
- package/dist/esm/types/IImageVolume.d.ts +1 -0
- package/dist/esm/types/IStackViewport.d.ts +1 -1
- package/dist/esm/types/IVolumeInput.d.ts +0 -1
- package/dist/esm/types/IVolumeViewport.d.ts +4 -3
- package/dist/esm/types/ImageSliceData.d.ts +5 -0
- package/dist/esm/types/ImageSliceData.js +2 -0
- package/dist/esm/types/ImageSliceData.js.map +1 -0
- package/dist/esm/types/Metadata.d.ts +1 -0
- package/dist/esm/types/index.d.ts +4 -2
- package/dist/esm/utilities/getImageSliceDataForVolumeViewport.d.ts +3 -0
- package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js +32 -0
- package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js.map +1 -0
- package/dist/esm/utilities/getScalingParameters.d.ts +2 -0
- package/dist/esm/utilities/getScalingParameters.js +22 -0
- package/dist/esm/utilities/getScalingParameters.js.map +1 -0
- package/dist/esm/utilities/getSliceRange.d.ts +2 -0
- package/dist/esm/utilities/getSliceRange.js +33 -0
- package/dist/esm/utilities/getSliceRange.js.map +1 -0
- package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +1 -1
- package/dist/esm/utilities/getVolumeViewportsContainingVolumeId.js +2 -2
- package/dist/esm/utilities/getVolumeViewportsContainingVolumeId.js.map +1 -1
- package/dist/esm/utilities/index.d.ts +6 -2
- package/dist/esm/utilities/index.js +6 -2
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/loadImageToCanvas.js +2 -9
- package/dist/esm/utilities/loadImageToCanvas.js.map +1 -1
- package/dist/esm/utilities/snapFocalPointToSlice.d.ts +5 -0
- package/dist/esm/utilities/snapFocalPointToSlice.js +38 -0
- package/dist/esm/utilities/snapFocalPointToSlice.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { vec3 } from 'gl-matrix';
|
|
2
|
+
import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
|
|
2
3
|
import cache from '../cache';
|
|
3
4
|
import ViewportType from '../enums/ViewportType';
|
|
4
5
|
import Viewport from './Viewport';
|
|
5
6
|
import { createVolumeActor } from './helpers';
|
|
7
|
+
import volumeNewImageEventDispatcher, { resetVolumeNewImageState, } from './helpers/volumeNewImageEventDispatcher';
|
|
6
8
|
import { loadVolume } from '../volumeLoader';
|
|
7
|
-
import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
|
|
8
9
|
import vtkSlabCamera from './vtkClasses/vtkSlabCamera';
|
|
9
10
|
import { getShouldUseCPURendering } from '../init';
|
|
10
11
|
import transformWorldToIndex from '../utilities/transformWorldToIndex';
|
|
11
|
-
import {
|
|
12
|
+
import { RENDERING_DEFAULTS } from '../constants';
|
|
13
|
+
import { Events } from '../enums';
|
|
14
|
+
import eventTarget from '../eventTarget';
|
|
12
15
|
const EPSILON = 1e-3;
|
|
13
16
|
class VolumeViewport extends Viewport {
|
|
14
17
|
constructor(props) {
|
|
@@ -18,6 +21,8 @@ class VolumeViewport extends Viewport {
|
|
|
18
21
|
return this._FrameOfReferenceUID;
|
|
19
22
|
};
|
|
20
23
|
this.canvasToWorld = (canvasPos) => {
|
|
24
|
+
const vtkCamera = this.getVtkActiveCamera();
|
|
25
|
+
vtkCamera.setIsPerformingCoordinateTransformation(true);
|
|
21
26
|
const renderer = this.getRenderer();
|
|
22
27
|
const offscreenMultiRenderWindow = this.getRenderingEngine().offscreenMultiRenderWindow;
|
|
23
28
|
const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
|
|
@@ -25,10 +30,13 @@ class VolumeViewport extends Viewport {
|
|
|
25
30
|
const displayCoord = [canvasPos[0] + this.sx, canvasPos[1] + this.sy];
|
|
26
31
|
displayCoord[1] = size[1] - displayCoord[1];
|
|
27
32
|
let worldCoord = openGLRenderWindow.displayToWorld(displayCoord[0], displayCoord[1], 0, renderer);
|
|
33
|
+
vtkCamera.setIsPerformingCoordinateTransformation(false);
|
|
28
34
|
worldCoord = this.applyFlipTx(worldCoord);
|
|
29
35
|
return worldCoord;
|
|
30
36
|
};
|
|
31
37
|
this.worldToCanvas = (worldPos) => {
|
|
38
|
+
const vtkCamera = this.getVtkActiveCamera();
|
|
39
|
+
vtkCamera.setIsPerformingCoordinateTransformation(true);
|
|
32
40
|
const renderer = this.getRenderer();
|
|
33
41
|
const offscreenMultiRenderWindow = this.getRenderingEngine().offscreenMultiRenderWindow;
|
|
34
42
|
const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
|
|
@@ -39,6 +47,7 @@ class VolumeViewport extends Viewport {
|
|
|
39
47
|
displayCoord[0] - this.sx,
|
|
40
48
|
displayCoord[1] - this.sy,
|
|
41
49
|
];
|
|
50
|
+
vtkCamera.setIsPerformingCoordinateTransformation(false);
|
|
42
51
|
return canvasCoord;
|
|
43
52
|
};
|
|
44
53
|
this.getCurrentImageIdIndex = () => {
|
|
@@ -49,7 +58,10 @@ class VolumeViewport extends Viewport {
|
|
|
49
58
|
if (!index) {
|
|
50
59
|
return;
|
|
51
60
|
}
|
|
52
|
-
const { uid } = this.getDefaultActor();
|
|
61
|
+
const { uid, actor } = this.getDefaultActor();
|
|
62
|
+
if (!actor.isA('vtkVolume')) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
53
65
|
const volume = cache.getVolume(uid);
|
|
54
66
|
if (!volume) {
|
|
55
67
|
return;
|
|
@@ -90,6 +102,7 @@ class VolumeViewport extends Viewport {
|
|
|
90
102
|
default:
|
|
91
103
|
throw new Error(`Unrecognized viewport type: ${this.type}`);
|
|
92
104
|
}
|
|
105
|
+
this.initializeVolumeNewImageEventDispatcher();
|
|
93
106
|
const { sliceNormal, viewUp } = this.defaultOptions.orientation;
|
|
94
107
|
camera.setDirectionOfProjection(-sliceNormal[0], -sliceNormal[1], -sliceNormal[2]);
|
|
95
108
|
camera.setViewUpFrom(viewUp);
|
|
@@ -98,6 +111,29 @@ class VolumeViewport extends Viewport {
|
|
|
98
111
|
static get useCustomRenderingPipeline() {
|
|
99
112
|
return false;
|
|
100
113
|
}
|
|
114
|
+
initializeVolumeNewImageEventDispatcher() {
|
|
115
|
+
const volumeNewImageHandlerBound = volumeNewImageHandler.bind(this);
|
|
116
|
+
const volumeNewImageCleanUpBound = volumeNewImageCleanUp.bind(this);
|
|
117
|
+
function volumeNewImageHandler(cameraEvent) {
|
|
118
|
+
const viewportImageData = this.getImageData();
|
|
119
|
+
if (!viewportImageData) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
volumeNewImageEventDispatcher(cameraEvent);
|
|
123
|
+
}
|
|
124
|
+
function volumeNewImageCleanUp(evt) {
|
|
125
|
+
const { viewportId } = evt.detail;
|
|
126
|
+
if (viewportId !== this.id) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
this.element.removeEventListener(Events.CAMERA_MODIFIED, volumeNewImageHandlerBound);
|
|
130
|
+
eventTarget.removeEventListener(Events.ELEMENT_DISABLED, volumeNewImageCleanUpBound);
|
|
131
|
+
resetVolumeNewImageState(viewportId);
|
|
132
|
+
}
|
|
133
|
+
this.element.removeEventListener(Events.CAMERA_MODIFIED, volumeNewImageHandlerBound);
|
|
134
|
+
this.element.addEventListener(Events.CAMERA_MODIFIED, volumeNewImageHandlerBound);
|
|
135
|
+
eventTarget.addEventListener(Events.ELEMENT_DISABLED, volumeNewImageCleanUpBound);
|
|
136
|
+
}
|
|
101
137
|
async setVolumes(volumeInputArray, immediate = false) {
|
|
102
138
|
const firstImageVolume = cache.getVolume(volumeInputArray[0].volumeId);
|
|
103
139
|
if (!firstImageVolume) {
|
|
@@ -108,14 +144,13 @@ class VolumeViewport extends Viewport {
|
|
|
108
144
|
this._FrameOfReferenceUID = FrameOfReferenceUID;
|
|
109
145
|
const volumeActors = [];
|
|
110
146
|
for (let i = 0; i < volumeInputArray.length; i++) {
|
|
111
|
-
const { volumeId,
|
|
112
|
-
const
|
|
147
|
+
const { volumeId, actorUID, slabThickness } = volumeInputArray[i];
|
|
148
|
+
const actor = await createVolumeActor(volumeInputArray[i], this.element, this.id);
|
|
113
149
|
const uid = actorUID || volumeId;
|
|
114
150
|
volumeActors.push({
|
|
115
151
|
uid,
|
|
116
|
-
|
|
152
|
+
actor,
|
|
117
153
|
slabThickness,
|
|
118
|
-
slabThicknessEnabled,
|
|
119
154
|
});
|
|
120
155
|
}
|
|
121
156
|
this._setVolumeActors(volumeActors);
|
|
@@ -127,17 +162,16 @@ class VolumeViewport extends Viewport {
|
|
|
127
162
|
const volumeActors = [];
|
|
128
163
|
await this._isValidVolumeInputArray(volumeInputArray, this._FrameOfReferenceUID);
|
|
129
164
|
for (let i = 0; i < volumeInputArray.length; i++) {
|
|
130
|
-
const { volumeId, visibility, actorUID, slabThickness
|
|
131
|
-
const
|
|
165
|
+
const { volumeId, visibility, actorUID, slabThickness } = volumeInputArray[i];
|
|
166
|
+
const actor = await createVolumeActor(volumeInputArray[i], this.element, this.id);
|
|
132
167
|
if (visibility === false) {
|
|
133
|
-
|
|
168
|
+
actor.setVisibility(false);
|
|
134
169
|
}
|
|
135
170
|
const uid = actorUID || volumeId;
|
|
136
171
|
volumeActors.push({
|
|
137
172
|
uid,
|
|
138
|
-
|
|
173
|
+
actor,
|
|
139
174
|
slabThickness,
|
|
140
|
-
slabThicknessEnabled,
|
|
141
175
|
});
|
|
142
176
|
}
|
|
143
177
|
this.addActors(volumeActors);
|
|
@@ -166,8 +200,11 @@ class VolumeViewport extends Viewport {
|
|
|
166
200
|
return true;
|
|
167
201
|
}
|
|
168
202
|
getIntensityFromWorld(point) {
|
|
169
|
-
const {
|
|
170
|
-
|
|
203
|
+
const { actor, uid } = this.getDefaultActor();
|
|
204
|
+
if (!actor.isA('vtkVolume')) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const imageData = actor.getMapper().getInputData();
|
|
171
208
|
const volume = cache.getVolume(uid);
|
|
172
209
|
const { dimensions } = volume;
|
|
173
210
|
const index = transformWorldToIndex(imageData, point);
|
|
@@ -185,64 +222,75 @@ class VolumeViewport extends Viewport {
|
|
|
185
222
|
super.flip(flipDirection);
|
|
186
223
|
}
|
|
187
224
|
resetCamera(resetPan = true, resetZoom = true) {
|
|
188
|
-
|
|
225
|
+
super.resetCamera(resetPan, resetZoom);
|
|
189
226
|
const activeCamera = this.getVtkActiveCamera();
|
|
190
|
-
activeCamera.
|
|
227
|
+
if (activeCamera.getParallelProjection()) {
|
|
228
|
+
activeCamera.setClippingRange(-RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE, RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
activeCamera.setClippingRange(RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS, RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
|
|
232
|
+
}
|
|
191
233
|
const viewPlaneNormal = activeCamera.getViewPlaneNormal();
|
|
192
234
|
const focalPoint = activeCamera.getFocalPoint();
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
235
|
+
const actorEntries = this.getActors();
|
|
236
|
+
actorEntries.forEach((actorEntry) => {
|
|
237
|
+
if (!actorEntry.actor || !actorEntry.actor.isA('vtkVolume')) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const mapper = actorEntry.actor.getMapper();
|
|
196
241
|
const vtkPlanes = mapper.getClippingPlanes();
|
|
197
242
|
if (vtkPlanes.length === 0) {
|
|
198
243
|
const clipPlane1 = vtkPlane.newInstance();
|
|
199
244
|
const clipPlane2 = vtkPlane.newInstance();
|
|
200
245
|
const newVtkPlanes = [clipPlane1, clipPlane2];
|
|
201
|
-
let slabThickness = MINIMUM_SLAB_THICKNESS;
|
|
202
|
-
if (
|
|
203
|
-
slabThickness =
|
|
246
|
+
let slabThickness = RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
|
|
247
|
+
if (actorEntry.slabThickness) {
|
|
248
|
+
slabThickness = actorEntry.slabThickness;
|
|
204
249
|
}
|
|
205
250
|
this.setOrientationOfClippingPlanes(newVtkPlanes, slabThickness, viewPlaneNormal, focalPoint);
|
|
206
251
|
mapper.addClippingPlane(clipPlane1);
|
|
207
252
|
mapper.addClippingPlane(clipPlane2);
|
|
208
253
|
}
|
|
209
254
|
});
|
|
210
|
-
return
|
|
255
|
+
return true;
|
|
211
256
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
257
|
+
setBlendMode(blendMode, filterActorUIDs = [], immediate = false) {
|
|
258
|
+
let actorEntries = this.getActors();
|
|
259
|
+
if (filterActorUIDs && filterActorUIDs.length > 0) {
|
|
260
|
+
actorEntries = actorEntries.filter((actorEntry) => {
|
|
261
|
+
return filterActorUIDs.includes(actorEntry.uid);
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
actorEntries.forEach((actorEntry) => {
|
|
265
|
+
const { actor } = actorEntry;
|
|
266
|
+
const mapper = actor.getMapper();
|
|
267
|
+
mapper.setBlendMode(blendMode);
|
|
221
268
|
});
|
|
222
|
-
if (
|
|
223
|
-
|
|
269
|
+
if (immediate) {
|
|
270
|
+
this.render();
|
|
224
271
|
}
|
|
225
|
-
const currentCamera = this.getCamera();
|
|
226
|
-
this.updateActorsClippingPlanesOnCameraModified(currentCamera);
|
|
227
|
-
this.checkAndTriggerCameraModifiedEvent(currentCamera, currentCamera);
|
|
228
272
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
if (
|
|
232
|
-
|
|
273
|
+
setSlabThickness(slabThickness, filterActorUIDs = []) {
|
|
274
|
+
let actorEntries = this.getActors();
|
|
275
|
+
if (filterActorUIDs && filterActorUIDs.length > 0) {
|
|
276
|
+
actorEntries = actorEntries.filter((actorEntry) => {
|
|
277
|
+
return filterActorUIDs.includes(actorEntry.uid);
|
|
278
|
+
});
|
|
233
279
|
}
|
|
234
|
-
|
|
280
|
+
actorEntries.forEach((actorEntry) => {
|
|
281
|
+
const { actor } = actorEntry;
|
|
282
|
+
if (actor.isA('vtkVolume')) {
|
|
283
|
+
actorEntry.slabThickness = slabThickness;
|
|
284
|
+
}
|
|
285
|
+
});
|
|
235
286
|
const currentCamera = this.getCamera();
|
|
236
|
-
this.
|
|
237
|
-
this.
|
|
287
|
+
this.updateClippingPlanesForActors(currentCamera);
|
|
288
|
+
this.triggerCameraModifiedEventIfNecessary(currentCamera, currentCamera);
|
|
238
289
|
}
|
|
239
290
|
getSlabThickness() {
|
|
240
291
|
const actors = this.getActors();
|
|
241
|
-
let slabThickness = MINIMUM_SLAB_THICKNESS;
|
|
292
|
+
let slabThickness = RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
|
|
242
293
|
actors.forEach((actor) => {
|
|
243
|
-
if (actor.slabThicknessEnabled === false) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
294
|
if (actor.slabThickness > slabThickness) {
|
|
247
295
|
slabThickness = actor.slabThickness;
|
|
248
296
|
}
|
|
@@ -250,19 +298,22 @@ class VolumeViewport extends Viewport {
|
|
|
250
298
|
return slabThickness;
|
|
251
299
|
}
|
|
252
300
|
getImageData() {
|
|
253
|
-
const
|
|
254
|
-
if (!
|
|
301
|
+
const defaultActor = this.getDefaultActor();
|
|
302
|
+
if (!defaultActor) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
const { actor } = defaultActor;
|
|
306
|
+
if (!actor.isA('vtkVolume')) {
|
|
255
307
|
return;
|
|
256
308
|
}
|
|
257
|
-
const
|
|
258
|
-
const vtkImageData = volumeActor.getMapper().getInputData();
|
|
309
|
+
const vtkImageData = actor.getMapper().getInputData();
|
|
259
310
|
return {
|
|
260
311
|
dimensions: vtkImageData.getDimensions(),
|
|
261
312
|
spacing: vtkImageData.getSpacing(),
|
|
262
313
|
origin: vtkImageData.getOrigin(),
|
|
263
314
|
direction: vtkImageData.getDirection(),
|
|
264
315
|
scalarData: vtkImageData.getPointData().getScalars().getData(),
|
|
265
|
-
imageData:
|
|
316
|
+
imageData: actor.getMapper().getInputData(),
|
|
266
317
|
metadata: undefined,
|
|
267
318
|
scaling: undefined,
|
|
268
319
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumeViewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/VolumeViewport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VolumeViewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/VolumeViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,14 +12,28 @@ export default function (image, windowWidth, windowCenter, invert, modalityLUT,
|
|
|
12
12
|
const lut = image.cachedLut.lutArray;
|
|
13
13
|
const mlutfn = getModalityLut(image.slope, image.intercept, modalityLUT);
|
|
14
14
|
const vlutfn = getVOILUT(windowWidth, windowCenter, voiLUT);
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
if (image.isPreScaled) {
|
|
16
|
+
if (invert === true) {
|
|
17
|
+
for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
|
|
18
|
+
lut[storedValue + -offset] = 255 - vlutfn(storedValue);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
|
|
23
|
+
lut[storedValue + -offset] = vlutfn(storedValue);
|
|
24
|
+
}
|
|
18
25
|
}
|
|
19
26
|
}
|
|
20
27
|
else {
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
if (invert === true) {
|
|
29
|
+
for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
|
|
30
|
+
lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
|
|
35
|
+
lut[storedValue + -offset] = vlutfn(mlutfn(storedValue));
|
|
36
|
+
}
|
|
23
37
|
}
|
|
24
38
|
}
|
|
25
39
|
return lut;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateLut.js","sourceRoot":"","sources":["../../../../../../src/RenderingEngine/helpers/cpuFallback/rendering/generateLut.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,SAAS,MAAM,aAAa,CAAC;AAgBpC,MAAM,CAAC,OAAO,WACZ,KAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,MAAe,EACf,WAA2B,EAC3B,MAAsB;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;QACjC,MAAM,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,CAAC,CAAC;QAE1C,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;KAC1D;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IAErC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAE5D,IAAI,MAAM,KAAK,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"generateLut.js","sourceRoot":"","sources":["../../../../../../src/RenderingEngine/helpers/cpuFallback/rendering/generateLut.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,SAAS,MAAM,aAAa,CAAC;AAgBpC,MAAM,CAAC,OAAO,WACZ,KAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,MAAe,EACf,WAA2B,EAC3B,MAAsB;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;QACjC,MAAM,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,CAAC,CAAC;QAE1C,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;KAC1D;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IAErC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAE5D,IAAI,KAAK,CAAC,WAAW,EAAE;QAGrB,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,KACE,IAAI,WAAW,GAAG,aAAa,EAC/B,WAAW,IAAI,aAAa,EAC5B,WAAW,EAAE,EACb;gBACA,GAAG,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;aACxD;SACF;aAAM;YACL,KACE,IAAI,WAAW,GAAG,aAAa,EAC/B,WAAW,IAAI,aAAa,EAC5B,WAAW,EAAE,EACb;gBACA,GAAG,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;aAClD;SACF;KACF;SAAM;QACL,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,KACE,IAAI,WAAW,GAAG,aAAa,EAC/B,WAAW,IAAI,aAAa,EAC5B,WAAW,EAAE,EACb;gBACA,GAAG,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;aAChE;SACF;aAAM;YACL,KACE,IAAI,WAAW,GAAG,aAAa,EAC/B,WAAW,IAAI,aAAa,EAC5B,WAAW,EAAE,EACb;gBACA,GAAG,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;aAC1D;SACF;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -15,7 +15,8 @@ export default function (canvas, image, modality, colormap) {
|
|
|
15
15
|
windowCenter: 2.5,
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
else if (image.windowWidth
|
|
18
|
+
else if (image.windowWidth !== undefined &&
|
|
19
|
+
image.windowCenter !== undefined) {
|
|
19
20
|
voi = {
|
|
20
21
|
windowWidth: Array.isArray(image.windowWidth)
|
|
21
22
|
? image.windowWidth[0]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDefaultViewport.js","sourceRoot":"","sources":["../../../../../../src/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAclD,MAAM,CAAC,OAAO,WACZ,MAAyB,EACzB,KAAa,EACb,QAAiB,EACjB,QAA8B;IAE9B,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;KACH;IAED,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,cAAc,EAAE,CAAC;KACzB;IAGD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAE7D,IAAI,GAAG,CAAC;IAER,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE;QAC1C,GAAG,GAAG;YACJ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,GAAG;SAClB,CAAC;KACH;SAAM,
|
|
1
|
+
{"version":3,"file":"getDefaultViewport.js","sourceRoot":"","sources":["../../../../../../src/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAclD,MAAM,CAAC,OAAO,WACZ,MAAyB,EACzB,KAAa,EACb,QAAiB,EACjB,QAA8B;IAE9B,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;KACH;IAED,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,cAAc,EAAE,CAAC;KACzB;IAGD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAE7D,IAAI,GAAG,CAAC;IAER,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE;QAC1C,GAAG,GAAG;YACJ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,GAAG;SAClB,CAAC;KACH;SAAM,IACL,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,KAAK,CAAC,YAAY,KAAK,SAAS,EAChC;QACA,GAAG,GAAG;YACJ,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC3C,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,KAAK,CAAC,WAAW;YACrB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC7C,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,YAAY;SACvB,CAAC;KACH;IAED,OAAO;QACL,KAAK;QACL,WAAW,EAAE;YACX,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL;QACD,GAAG;QACH,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,gBAAgB,EAAE,KAAK;QACvB,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ;QACR,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QAC5D,aAAa,EAAE;YACb,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACL;YACD,IAAI,EAAE;gBACJ,CAAC,EAAE,KAAK,CAAC,OAAO;gBAChB,CAAC,EAAE,KAAK,CAAC,IAAI;aACd;YACD,eAAe,EACb,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe;YACjE,kBAAkB,EAChB,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB;YACvE,oBAAoB,EAAE,MAAM;SAC7B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -8,5 +8,5 @@ interface createVolumeActorInterface {
|
|
|
8
8
|
}) => void;
|
|
9
9
|
blendMode?: BlendModes;
|
|
10
10
|
}
|
|
11
|
-
declare function createVolumeActor(props: createVolumeActorInterface): Promise<VolumeActor>;
|
|
11
|
+
declare function createVolumeActor(props: createVolumeActorInterface, element: HTMLDivElement, viewportId: string): Promise<VolumeActor>;
|
|
12
12
|
export default createVolumeActor;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
|
|
2
2
|
import { loadVolume } from '../../volumeLoader';
|
|
3
3
|
import createVolumeMapper from './createVolumeMapper';
|
|
4
|
-
|
|
4
|
+
import { triggerEvent } from '../../utilities';
|
|
5
|
+
import { Events } from '../../enums';
|
|
6
|
+
import setDefaultVolumeVOI from './setDefaultVolumeVOI';
|
|
7
|
+
async function createVolumeActor(props, element, viewportId) {
|
|
5
8
|
const { volumeId, callback, blendMode } = props;
|
|
6
9
|
const imageVolume = await loadVolume(volumeId);
|
|
7
10
|
if (!imageVolume) {
|
|
@@ -14,10 +17,34 @@ async function createVolumeActor(props) {
|
|
|
14
17
|
}
|
|
15
18
|
const volumeActor = vtkVolume.newInstance();
|
|
16
19
|
volumeActor.setMapper(volumeMapper);
|
|
17
|
-
if (
|
|
18
|
-
|
|
20
|
+
if (imageVolume.imageIds) {
|
|
21
|
+
await setDefaultVolumeVOI(volumeActor, imageVolume);
|
|
22
|
+
if (callback) {
|
|
23
|
+
callback({ volumeActor, volumeId });
|
|
24
|
+
}
|
|
25
|
+
triggerVOIModified(element, viewportId, volumeActor);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (callback) {
|
|
29
|
+
callback({ volumeActor, volumeId });
|
|
30
|
+
}
|
|
31
|
+
triggerVOIModified(element, viewportId, volumeActor);
|
|
19
32
|
}
|
|
20
33
|
return volumeActor;
|
|
21
34
|
}
|
|
35
|
+
function triggerVOIModified(element, viewportId, volumeActor) {
|
|
36
|
+
const voiRange = volumeActor
|
|
37
|
+
.getProperty()
|
|
38
|
+
.getRGBTransferFunction(0)
|
|
39
|
+
.getRange();
|
|
40
|
+
const voiModifiedEventDetail = {
|
|
41
|
+
viewportId,
|
|
42
|
+
range: {
|
|
43
|
+
lower: voiRange[0],
|
|
44
|
+
upper: voiRange[1],
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
triggerEvent(element, Events.VOI_MODIFIED, voiModifiedEventDetail);
|
|
48
|
+
}
|
|
22
49
|
export default createVolumeActor;
|
|
23
50
|
//# sourceMappingURL=createVolumeActor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createVolumeActor.js","sourceRoot":"","sources":["../../../../src/RenderingEngine/helpers/createVolumeActor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createVolumeActor.js","sourceRoot":"","sources":["../../../../src/RenderingEngine/helpers/createVolumeActor.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAI9D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAgBxD,KAAK,UAAU,iBAAiB,CAC9B,KAAiC,EACjC,OAAuB,EACvB,UAAkB;IAElB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEhD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,CAAC,QAAQ,iBAAiB,CAC9D,CAAC;KACH;IAED,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAAC;IAEpD,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAErE,IAAI,SAAS,EAAE;QACb,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KACtC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC5C,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAMpC,IAAI,WAAW,CAAC,QAAQ,EAAE;QACxB,MAAM,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;SACrC;QACD,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;KACtD;SAAM;QACL,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;SACrC;QAED,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;KACtD;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAuB,EACvB,UAAkB,EAClB,WAAwB;IAExB,MAAM,QAAQ,GAAG,WAAW;SACzB,WAAW,EAAE;SACb,sBAAsB,CAAC,CAAC,CAAC;SACzB,QAAQ,EAAE,CAAC;IAEd,MAAM,sBAAsB,GAA2B;QACrD,UAAU;QACV,KAAK,EAAE;YACL,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;SACnB;KACF,CAAC;IAEF,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AACrE,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -3,4 +3,5 @@ import createVolumeMapper from './createVolumeMapper';
|
|
|
3
3
|
import getOrCreateCanvas from './getOrCreateCanvas';
|
|
4
4
|
import setVolumesForViewports from './setVolumesForViewports';
|
|
5
5
|
import addVolumesToViewports from './addVolumesToViewports';
|
|
6
|
-
|
|
6
|
+
import volumeNewImageEventDispatcher from './volumeNewImageEventDispatcher';
|
|
7
|
+
export { createVolumeActor, createVolumeMapper, getOrCreateCanvas, setVolumesForViewports, addVolumesToViewports, volumeNewImageEventDispatcher, };
|
|
@@ -3,5 +3,6 @@ import createVolumeMapper from './createVolumeMapper';
|
|
|
3
3
|
import getOrCreateCanvas from './getOrCreateCanvas';
|
|
4
4
|
import setVolumesForViewports from './setVolumesForViewports';
|
|
5
5
|
import addVolumesToViewports from './addVolumesToViewports';
|
|
6
|
-
|
|
6
|
+
import volumeNewImageEventDispatcher from './volumeNewImageEventDispatcher';
|
|
7
|
+
export { createVolumeActor, createVolumeMapper, getOrCreateCanvas, setVolumesForViewports, addVolumesToViewports, volumeNewImageEventDispatcher, };
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/RenderingEngine/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/RenderingEngine/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,GAC9B,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { loadAndCacheImage } from '../../imageLoader';
|
|
2
|
+
import * as metaData from '../../metaData';
|
|
3
|
+
import { getMinMax, windowLevel } from '../../utilities';
|
|
4
|
+
import { RequestType } from '../../enums';
|
|
5
|
+
const PRIORITY = 0;
|
|
6
|
+
const REQUEST_TYPE = RequestType.Prefetch;
|
|
7
|
+
async function setDefaultVolumeVOI(volumeActor, imageVolume) {
|
|
8
|
+
let voi = getVOIFromMetadata(imageVolume);
|
|
9
|
+
if (!voi) {
|
|
10
|
+
voi = await getVOIFromMinMax(imageVolume);
|
|
11
|
+
}
|
|
12
|
+
if (!voi || voi.lower === undefined || voi.upper === undefined) {
|
|
13
|
+
throw new Error('Could not get VOI from metadata, nor from the min max of the image middle slice');
|
|
14
|
+
}
|
|
15
|
+
voi = handlePreScaledVolume(imageVolume, voi);
|
|
16
|
+
const { lower, upper } = voi;
|
|
17
|
+
volumeActor
|
|
18
|
+
.getProperty()
|
|
19
|
+
.getRGBTransferFunction(0)
|
|
20
|
+
.setMappingRange(lower, upper);
|
|
21
|
+
}
|
|
22
|
+
function handlePreScaledVolume(imageVolume, voi) {
|
|
23
|
+
const imageIds = imageVolume.imageIds;
|
|
24
|
+
const imageIdIndex = Math.floor(imageIds.length / 2);
|
|
25
|
+
const imageId = imageIds[imageIdIndex];
|
|
26
|
+
const generalSeriesModule = metaData.get('generalSeriesModule', imageId) || {};
|
|
27
|
+
if (generalSeriesModule.modality === 'PT' && imageVolume.isPrescaled) {
|
|
28
|
+
return {
|
|
29
|
+
lower: 0,
|
|
30
|
+
upper: 5,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return voi;
|
|
34
|
+
}
|
|
35
|
+
function getVOIFromMetadata(imageVolume) {
|
|
36
|
+
const { imageIds } = imageVolume;
|
|
37
|
+
const imageIdIndex = Math.floor(imageIds.length / 2);
|
|
38
|
+
const imageId = imageIds[imageIdIndex];
|
|
39
|
+
const voiLutModule = metaData.get('voiLutModule', imageId);
|
|
40
|
+
if (voiLutModule && voiLutModule.windowWidth && voiLutModule.windowCenter) {
|
|
41
|
+
const { windowWidth, windowCenter } = voiLutModule;
|
|
42
|
+
const voi = {
|
|
43
|
+
windowWidth: Array.isArray(windowWidth) ? windowWidth[0] : windowWidth,
|
|
44
|
+
windowCenter: Array.isArray(windowCenter)
|
|
45
|
+
? windowCenter[0]
|
|
46
|
+
: windowCenter,
|
|
47
|
+
};
|
|
48
|
+
const { lower, upper } = windowLevel.toLowHighRange(Number(voi.windowWidth), Number(voi.windowCenter));
|
|
49
|
+
return {
|
|
50
|
+
lower,
|
|
51
|
+
upper,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function getVOIFromMinMax(imageVolume) {
|
|
56
|
+
const { scalarData, imageIds } = imageVolume;
|
|
57
|
+
const imageIdIndex = Math.floor(imageIds.length / 2);
|
|
58
|
+
const imageId = imageVolume.imageIds[imageIdIndex];
|
|
59
|
+
const generalSeriesModule = metaData.get('generalSeriesModule', imageId) || {};
|
|
60
|
+
const { modality } = generalSeriesModule;
|
|
61
|
+
const modalityLutModule = metaData.get('modalityLutModule', imageId) || {};
|
|
62
|
+
const numImages = imageIds.length;
|
|
63
|
+
const bytesPerImage = scalarData.byteLength / numImages;
|
|
64
|
+
const voxelsPerImage = scalarData.length / numImages;
|
|
65
|
+
const bytePerPixel = scalarData.BYTES_PER_ELEMENT;
|
|
66
|
+
let type;
|
|
67
|
+
if (scalarData instanceof Uint8Array) {
|
|
68
|
+
type = 'Uint8Array';
|
|
69
|
+
}
|
|
70
|
+
else if (scalarData instanceof Float32Array) {
|
|
71
|
+
type = 'Float32Array';
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
throw new Error('Unsupported array type');
|
|
75
|
+
}
|
|
76
|
+
const scalingParameters = {
|
|
77
|
+
rescaleSlope: modalityLutModule.rescaleSlope,
|
|
78
|
+
rescaleIntercept: modalityLutModule.rescaleIntercept,
|
|
79
|
+
modality,
|
|
80
|
+
};
|
|
81
|
+
let scalingParametersToUse;
|
|
82
|
+
if (modality === 'PT') {
|
|
83
|
+
const suvFactor = metaData.get('scalingModule', imageId);
|
|
84
|
+
if (suvFactor) {
|
|
85
|
+
scalingParametersToUse = {
|
|
86
|
+
...scalingParameters,
|
|
87
|
+
suvbw: suvFactor.suvbw,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const byteOffset = imageIdIndex * bytesPerImage;
|
|
92
|
+
const options = {
|
|
93
|
+
targetBuffer: {
|
|
94
|
+
arrayBuffer: scalarData.buffer,
|
|
95
|
+
offset: byteOffset,
|
|
96
|
+
length: voxelsPerImage,
|
|
97
|
+
type,
|
|
98
|
+
},
|
|
99
|
+
priority: PRIORITY,
|
|
100
|
+
requestType: REQUEST_TYPE,
|
|
101
|
+
preScale: {
|
|
102
|
+
scalingParameters: scalingParametersToUse,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
const image = await loadAndCacheImage(imageId, options);
|
|
106
|
+
let imageScalarData;
|
|
107
|
+
if (!image) {
|
|
108
|
+
imageScalarData = _getImageScalarDataFromImageVolume(imageVolume, byteOffset, bytePerPixel, voxelsPerImage);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
imageScalarData = image.getPixelData();
|
|
112
|
+
}
|
|
113
|
+
const { min, max } = getMinMax(imageScalarData);
|
|
114
|
+
return {
|
|
115
|
+
lower: min,
|
|
116
|
+
upper: max,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function _getImageScalarDataFromImageVolume(imageVolume, byteOffset, bytePerPixel, voxelsPerImage) {
|
|
120
|
+
const { scalarData } = imageVolume;
|
|
121
|
+
const { volumeBuffer } = scalarData;
|
|
122
|
+
if (scalarData.BYTES_PER_ELEMENT !== bytePerPixel) {
|
|
123
|
+
byteOffset *= scalarData.BYTES_PER_ELEMENT / bytePerPixel;
|
|
124
|
+
}
|
|
125
|
+
const TypedArray = scalarData.constructor;
|
|
126
|
+
const imageScalarData = new TypedArray(voxelsPerImage);
|
|
127
|
+
const volumeBufferView = new TypedArray(volumeBuffer, byteOffset, voxelsPerImage);
|
|
128
|
+
imageScalarData.set(volumeBufferView);
|
|
129
|
+
return imageScalarData;
|
|
130
|
+
}
|
|
131
|
+
export default setDefaultVolumeVOI;
|
|
132
|
+
//# sourceMappingURL=setDefaultVolumeVOI.js.map
|