@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.
Files changed (167) hide show
  1. package/dist/cjs/RenderingEngine/RenderingEngine.js +6 -2
  2. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  3. package/dist/cjs/RenderingEngine/StackViewport.d.ts +1 -1
  4. package/dist/cjs/RenderingEngine/StackViewport.js +47 -40
  5. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  6. package/dist/cjs/RenderingEngine/Viewport.d.ts +3 -3
  7. package/dist/cjs/RenderingEngine/Viewport.js +37 -33
  8. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  9. package/dist/cjs/RenderingEngine/VolumeViewport.d.ts +5 -3
  10. package/dist/cjs/RenderingEngine/VolumeViewport.js +122 -52
  11. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  12. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +19 -5
  13. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js.map +1 -1
  14. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js +2 -1
  15. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js.map +1 -1
  16. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
  17. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js +30 -3
  18. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
  19. package/dist/cjs/RenderingEngine/helpers/index.d.ts +2 -1
  20. package/dist/cjs/RenderingEngine/helpers/index.js +3 -1
  21. package/dist/cjs/RenderingEngine/helpers/index.js.map +1 -1
  22. package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -0
  23. package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.js +163 -0
  24. package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.js.map +1 -0
  25. package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +4 -0
  26. package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +42 -0
  27. package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.js.map +1 -0
  28. package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +12 -0
  29. package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.js +11 -2
  30. package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.js.map +1 -1
  31. package/dist/cjs/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +2 -0
  32. package/dist/cjs/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js.map +1 -1
  33. package/dist/cjs/Settings.js +1 -0
  34. package/dist/cjs/Settings.js.map +1 -1
  35. package/dist/cjs/cache/classes/ImageVolume.d.ts +1 -0
  36. package/dist/cjs/cache/classes/ImageVolume.js +1 -0
  37. package/dist/cjs/cache/classes/ImageVolume.js.map +1 -1
  38. package/dist/cjs/constants/index.d.ts +2 -2
  39. package/dist/cjs/constants/index.js +2 -2
  40. package/dist/cjs/constants/index.js.map +1 -1
  41. package/dist/cjs/constants/rendering.d.ts +5 -2
  42. package/dist/cjs/constants/rendering.js +6 -2
  43. package/dist/cjs/constants/rendering.js.map +1 -1
  44. package/dist/cjs/enums/BlendModes.js +1 -1
  45. package/dist/cjs/enums/BlendModes.js.map +1 -1
  46. package/dist/cjs/enums/Events.d.ts +1 -0
  47. package/dist/cjs/enums/Events.js +1 -0
  48. package/dist/cjs/enums/Events.js.map +1 -1
  49. package/dist/cjs/types/ActorSliceRange.d.ts +11 -0
  50. package/dist/cjs/types/ActorSliceRange.js +3 -0
  51. package/dist/cjs/types/ActorSliceRange.js.map +1 -0
  52. package/dist/cjs/types/EventTypes.d.ts +10 -1
  53. package/dist/cjs/types/IActor.d.ts +4 -3
  54. package/dist/cjs/types/IImageVolume.d.ts +1 -0
  55. package/dist/cjs/types/IStackViewport.d.ts +1 -1
  56. package/dist/cjs/types/IVolumeInput.d.ts +0 -1
  57. package/dist/cjs/types/IVolumeViewport.d.ts +4 -3
  58. package/dist/cjs/types/ImageSliceData.d.ts +5 -0
  59. package/dist/cjs/types/ImageSliceData.js +3 -0
  60. package/dist/cjs/types/ImageSliceData.js.map +1 -0
  61. package/dist/cjs/types/Metadata.d.ts +1 -0
  62. package/dist/cjs/types/index.d.ts +4 -2
  63. package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.d.ts +3 -0
  64. package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js +37 -0
  65. package/dist/cjs/utilities/getImageSliceDataForVolumeViewport.js.map +1 -0
  66. package/dist/cjs/utilities/getScalingParameters.d.ts +2 -0
  67. package/dist/cjs/utilities/getScalingParameters.js +41 -0
  68. package/dist/cjs/utilities/getScalingParameters.js.map +1 -0
  69. package/dist/cjs/utilities/getSliceRange.d.ts +2 -0
  70. package/dist/cjs/utilities/getSliceRange.js +39 -0
  71. package/dist/cjs/utilities/getSliceRange.js.map +1 -0
  72. package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js +1 -1
  73. package/dist/cjs/utilities/getVolumeViewportsContainingVolumeId.js +2 -2
  74. package/dist/cjs/utilities/getVolumeViewportsContainingVolumeId.js.map +1 -1
  75. package/dist/cjs/utilities/index.d.ts +6 -2
  76. package/dist/cjs/utilities/index.js +9 -1
  77. package/dist/cjs/utilities/index.js.map +1 -1
  78. package/dist/cjs/utilities/loadImageToCanvas.js +2 -9
  79. package/dist/cjs/utilities/loadImageToCanvas.js.map +1 -1
  80. package/dist/cjs/utilities/snapFocalPointToSlice.d.ts +5 -0
  81. package/dist/cjs/utilities/snapFocalPointToSlice.js +41 -0
  82. package/dist/cjs/utilities/snapFocalPointToSlice.js.map +1 -0
  83. package/dist/esm/RenderingEngine/RenderingEngine.js +6 -2
  84. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  85. package/dist/esm/RenderingEngine/StackViewport.d.ts +1 -1
  86. package/dist/esm/RenderingEngine/StackViewport.js +47 -40
  87. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  88. package/dist/esm/RenderingEngine/Viewport.d.ts +3 -3
  89. package/dist/esm/RenderingEngine/Viewport.js +38 -34
  90. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  91. package/dist/esm/RenderingEngine/VolumeViewport.d.ts +5 -3
  92. package/dist/esm/RenderingEngine/VolumeViewport.js +104 -53
  93. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  94. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +19 -5
  95. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js.map +1 -1
  96. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js +2 -1
  97. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js.map +1 -1
  98. package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
  99. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js +30 -3
  100. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
  101. package/dist/esm/RenderingEngine/helpers/index.d.ts +2 -1
  102. package/dist/esm/RenderingEngine/helpers/index.js +2 -1
  103. package/dist/esm/RenderingEngine/helpers/index.js.map +1 -1
  104. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -0
  105. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +132 -0
  106. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js.map +1 -0
  107. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +4 -0
  108. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +35 -0
  109. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js.map +1 -0
  110. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +12 -0
  111. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js +11 -2
  112. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js.map +1 -1
  113. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +2 -0
  114. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js.map +1 -1
  115. package/dist/esm/Settings.js +1 -0
  116. package/dist/esm/Settings.js.map +1 -1
  117. package/dist/esm/cache/classes/ImageVolume.d.ts +1 -0
  118. package/dist/esm/cache/classes/ImageVolume.js +1 -0
  119. package/dist/esm/cache/classes/ImageVolume.js.map +1 -1
  120. package/dist/esm/constants/index.d.ts +2 -2
  121. package/dist/esm/constants/index.js +2 -2
  122. package/dist/esm/constants/index.js.map +1 -1
  123. package/dist/esm/constants/rendering.d.ts +5 -2
  124. package/dist/esm/constants/rendering.js +6 -2
  125. package/dist/esm/constants/rendering.js.map +1 -1
  126. package/dist/esm/enums/BlendModes.js +1 -1
  127. package/dist/esm/enums/BlendModes.js.map +1 -1
  128. package/dist/esm/enums/Events.d.ts +1 -0
  129. package/dist/esm/enums/Events.js +1 -0
  130. package/dist/esm/enums/Events.js.map +1 -1
  131. package/dist/esm/types/ActorSliceRange.d.ts +11 -0
  132. package/dist/esm/types/ActorSliceRange.js +2 -0
  133. package/dist/esm/types/ActorSliceRange.js.map +1 -0
  134. package/dist/esm/types/EventTypes.d.ts +10 -1
  135. package/dist/esm/types/IActor.d.ts +4 -3
  136. package/dist/esm/types/IImageVolume.d.ts +1 -0
  137. package/dist/esm/types/IStackViewport.d.ts +1 -1
  138. package/dist/esm/types/IVolumeInput.d.ts +0 -1
  139. package/dist/esm/types/IVolumeViewport.d.ts +4 -3
  140. package/dist/esm/types/ImageSliceData.d.ts +5 -0
  141. package/dist/esm/types/ImageSliceData.js +2 -0
  142. package/dist/esm/types/ImageSliceData.js.map +1 -0
  143. package/dist/esm/types/Metadata.d.ts +1 -0
  144. package/dist/esm/types/index.d.ts +4 -2
  145. package/dist/esm/utilities/getImageSliceDataForVolumeViewport.d.ts +3 -0
  146. package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js +32 -0
  147. package/dist/esm/utilities/getImageSliceDataForVolumeViewport.js.map +1 -0
  148. package/dist/esm/utilities/getScalingParameters.d.ts +2 -0
  149. package/dist/esm/utilities/getScalingParameters.js +22 -0
  150. package/dist/esm/utilities/getScalingParameters.js.map +1 -0
  151. package/dist/esm/utilities/getSliceRange.d.ts +2 -0
  152. package/dist/esm/utilities/getSliceRange.js +33 -0
  153. package/dist/esm/utilities/getSliceRange.js.map +1 -0
  154. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +1 -1
  155. package/dist/esm/utilities/getVolumeViewportsContainingVolumeId.js +2 -2
  156. package/dist/esm/utilities/getVolumeViewportsContainingVolumeId.js.map +1 -1
  157. package/dist/esm/utilities/index.d.ts +6 -2
  158. package/dist/esm/utilities/index.js +6 -2
  159. package/dist/esm/utilities/index.js.map +1 -1
  160. package/dist/esm/utilities/loadImageToCanvas.js +2 -9
  161. package/dist/esm/utilities/loadImageToCanvas.js.map +1 -1
  162. package/dist/esm/utilities/snapFocalPointToSlice.d.ts +5 -0
  163. package/dist/esm/utilities/snapFocalPointToSlice.js +38 -0
  164. package/dist/esm/utilities/snapFocalPointToSlice.js.map +1 -0
  165. package/dist/umd/index.js +1 -1
  166. package/dist/umd/index.js.map +1 -1
  167. package/package.json +2 -2
@@ -18,12 +18,12 @@ class Viewport {
18
18
  this.rotation = 0;
19
19
  this._suppressCameraModifiedEvents = false;
20
20
  this.applyFlipTx = (worldPos) => {
21
- const actor = this.getDefaultActor();
22
- if (!actor) {
21
+ const actorEntry = this.getDefaultActor();
22
+ if (!actorEntry) {
23
23
  return worldPos;
24
24
  }
25
- const volumeActor = actor.volumeActor;
26
- const mat = volumeActor.getMatrix();
25
+ const actor = actorEntry.actor;
26
+ const mat = actor.getMatrix();
27
27
  const newPos = gl_matrix_1.vec3.create();
28
28
  const matT = gl_matrix_1.mat4.create();
29
29
  gl_matrix_1.mat4.transpose(matT, mat);
@@ -137,25 +137,25 @@ class Viewport {
137
137
  .scale(1, -1, 1)
138
138
  .multiply(transformBackFromOriginTx.getMatrix());
139
139
  }
140
- const actors = this.getActors();
141
- actors.forEach((actor) => {
142
- const volumeActor = actor.volumeActor;
143
- const mat = volumeActor.getUserMatrix();
140
+ const actorEntries = this.getActors();
141
+ actorEntries.forEach((actorEntry) => {
142
+ const actor = actorEntry.actor;
143
+ const mat = actor.getUserMatrix();
144
144
  if (flipHTx) {
145
145
  gl_matrix_1.mat4.multiply(mat, mat, flipHTx.getMatrix());
146
146
  }
147
147
  if (flipVTx) {
148
148
  gl_matrix_1.mat4.multiply(mat, mat, flipVTx.getMatrix());
149
149
  }
150
- volumeActor.setUserMatrix(mat);
150
+ actor.setUserMatrix(mat);
151
151
  this.getRenderingEngine().render();
152
152
  });
153
153
  this.getRenderingEngine().render();
154
154
  }
155
155
  getDefaultImageData() {
156
- const actor = this.getDefaultActor();
157
- if (actor) {
158
- return actor.volumeActor.getMapper().getInputData();
156
+ const actorEntry = this.getDefaultActor();
157
+ if (actorEntry && actorEntry.actor.isA('vtkVolume')) {
158
+ return actorEntry.actor.getMapper().getInputData();
159
159
  }
160
160
  }
161
161
  getDefaultActor() {
@@ -182,13 +182,13 @@ class Viewport {
182
182
  this.addActors(actors, resetCameraPanAndZoom);
183
183
  }
184
184
  removeActor(actorUID) {
185
- const actor = this.getActor(actorUID);
186
- if (!actor) {
185
+ const actorEntry = this.getActor(actorUID);
186
+ if (!actorEntry) {
187
187
  console.warn(`Actor ${actorUID} does not exist for this viewport`);
188
188
  return;
189
189
  }
190
190
  const renderer = this.getRenderer();
191
- renderer.removeViewProp(actor.volumeActor);
191
+ renderer.removeViewProp(actorEntry.actor);
192
192
  this._actors.delete(actorUID);
193
193
  }
194
194
  removeActors(actorUIDs) {
@@ -197,26 +197,30 @@ class Viewport {
197
197
  });
198
198
  }
199
199
  addActors(actors, resetCameraPanAndZoom = false) {
200
+ const renderingEngine = this.getRenderingEngine();
201
+ if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
202
+ console.warn('Viewport::addActors::Rendering engine has not been initialized or has been destroyed');
203
+ return;
204
+ }
200
205
  actors.forEach((actor) => this.addActor(actor));
201
206
  this.resetCamera(resetCameraPanAndZoom, resetCameraPanAndZoom);
202
207
  }
203
208
  addActor(actorEntry) {
204
- const { uid: actorUID, volumeActor } = actorEntry;
209
+ const { uid: actorUID, actor } = actorEntry;
205
210
  const renderingEngine = this.getRenderingEngine();
206
211
  if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
207
212
  console.warn(`Cannot add actor UID of ${actorUID} Rendering Engine has been destroyed`);
208
213
  return;
209
214
  }
210
- if (!actorUID || !volumeActor) {
211
- throw new Error('Actors should have uid and vtk volumeActor properties');
215
+ if (!actorUID || !actor) {
216
+ throw new Error('Actors should have uid and vtk Actor properties');
212
217
  }
213
- const actor = this.getActor(actorUID);
214
- if (actor) {
218
+ if (this.getActor(actorUID)) {
215
219
  console.warn(`Actor ${actorUID} already exists for this viewport`);
216
220
  return;
217
221
  }
218
222
  const renderer = this.getRenderer();
219
- renderer.addActor(volumeActor);
223
+ renderer.addActor(actor);
220
224
  this._actors.set(actorUID, Object.assign({}, actorEntry));
221
225
  }
222
226
  removeAllActors() {
@@ -329,8 +333,8 @@ class Viewport {
329
333
  this.flip({ flipHorizontal: false, flipVertical: false });
330
334
  }
331
335
  renderer.invokeEvent(RESET_CAMERA_EVENT);
332
- this.checkAndTriggerCameraModifiedEvent(previousCamera, this.getCamera());
333
- return distance;
336
+ this.triggerCameraModifiedEventIfNecessary(previousCamera, this.getCamera());
337
+ return true;
334
338
  }
335
339
  _getFocalPointForViewPlaneReset(imageData) {
336
340
  const { focalPoint, viewPlaneNormal: normal } = this.getCamera();
@@ -397,10 +401,10 @@ class Viewport {
397
401
  if (viewAngle !== undefined) {
398
402
  vtkCamera.setViewAngle(viewAngle);
399
403
  }
400
- this.updateActorsClippingPlanesOnCameraModified(updatedCamera);
401
- this.checkAndTriggerCameraModifiedEvent(previousCamera, updatedCamera);
404
+ this.updateClippingPlanesForActors(updatedCamera);
405
+ this.triggerCameraModifiedEventIfNecessary(previousCamera, updatedCamera);
402
406
  }
403
- checkAndTriggerCameraModifiedEvent(previousCamera, updatedCamera) {
407
+ triggerCameraModifiedEventIfNecessary(previousCamera, updatedCamera) {
404
408
  if (!this._suppressCameraModifiedEvents && !this.suppressEvents) {
405
409
  const eventDetail = {
406
410
  previousCamera,
@@ -413,14 +417,14 @@ class Viewport {
413
417
  (0, utilities_1.triggerEvent)(this.element, Events_1.default.CAMERA_MODIFIED, eventDetail);
414
418
  }
415
419
  }
416
- updateActorsClippingPlanesOnCameraModified(updatedCamera) {
417
- const actors = this.getActors();
418
- actors.forEach((actor) => {
419
- const mapper = actor.volumeActor.getMapper();
420
+ updateClippingPlanesForActors(updatedCamera) {
421
+ const actorEntries = this.getActors();
422
+ actorEntries.forEach((actorEntry) => {
423
+ const mapper = actorEntry.actor.getMapper();
420
424
  const vtkPlanes = mapper.getClippingPlanes();
421
- let slabThickness = constants_1.MINIMUM_SLAB_THICKNESS;
422
- if (actor.slabThicknessEnabled !== false && actor.slabThickness) {
423
- slabThickness = actor.slabThickness;
425
+ let slabThickness = constants_1.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
426
+ if (actorEntry.slabThickness) {
427
+ slabThickness = actorEntry.slabThickness;
424
428
  }
425
429
  this.setOrientationOfClippingPlanes(vtkPlanes, slabThickness, updatedCamera.viewPlaneNormal, updatedCamera.focalPoint);
426
430
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/Viewport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/Viewport.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,13 @@ import Viewport from './Viewport';
2
2
  import type { Point2, Point3, IImageData, IVolumeInput, FlipDirection } from '../types';
3
3
  import type { ViewportInput } from '../types/IViewport';
4
4
  import type IVolumeViewport from '../types/IVolumeViewport';
5
+ import { BlendModes } from '../enums';
5
6
  declare class VolumeViewport extends Viewport implements IVolumeViewport {
6
7
  useCPURendering: boolean;
7
8
  private _FrameOfReferenceUID;
8
9
  constructor(props: ViewportInput);
9
10
  static get useCustomRenderingPipeline(): boolean;
11
+ private initializeVolumeNewImageEventDispatcher;
10
12
  setVolumes(volumeInputArray: Array<IVolumeInput>, immediate?: boolean): Promise<void>;
11
13
  addVolumes(volumeInputArray: Array<IVolumeInput>, immediate?: boolean): Promise<void>;
12
14
  removeVolumeActors(actorUIDs: Array<string>, immediate?: boolean): void;
@@ -14,10 +16,10 @@ declare class VolumeViewport extends Viewport implements IVolumeViewport {
14
16
  getIntensityFromWorld(point: Point3): number;
15
17
  getBounds(): number[];
16
18
  flip(flipDirection: FlipDirection): void;
17
- resetCamera(resetPan?: boolean, resetZoom?: boolean): number;
19
+ resetCamera(resetPan?: boolean, resetZoom?: boolean): boolean;
18
20
  getFrameOfReferenceUID: () => string;
19
- setSlabThicknessForAllVolumeActors(slabThickness: number): void;
20
- setSlabThicknessForVolumeActor(actorUID: string, slabThickness: number): void;
21
+ setBlendMode(blendMode: BlendModes, filterActorUIDs?: any[], immediate?: boolean): void;
22
+ setSlabThickness(slabThickness: number, filterActorUIDs?: any[]): void;
21
23
  getSlabThickness(): number;
22
24
  getImageData(): IImageData | undefined;
23
25
  private _setVolumeActors;
@@ -1,4 +1,23 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
22
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
23
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -13,16 +32,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
32
  };
14
33
  Object.defineProperty(exports, "__esModule", { value: true });
15
34
  const gl_matrix_1 = require("gl-matrix");
35
+ const Plane_1 = __importDefault(require("@kitware/vtk.js/Common/DataModel/Plane"));
16
36
  const cache_1 = __importDefault(require("../cache"));
17
37
  const ViewportType_1 = __importDefault(require("../enums/ViewportType"));
18
38
  const Viewport_1 = __importDefault(require("./Viewport"));
19
39
  const helpers_1 = require("./helpers");
40
+ const volumeNewImageEventDispatcher_1 = __importStar(require("./helpers/volumeNewImageEventDispatcher"));
20
41
  const volumeLoader_1 = require("../volumeLoader");
21
- const Plane_1 = __importDefault(require("@kitware/vtk.js/Common/DataModel/Plane"));
22
42
  const vtkSlabCamera_1 = __importDefault(require("./vtkClasses/vtkSlabCamera"));
23
43
  const init_1 = require("../init");
24
44
  const transformWorldToIndex_1 = __importDefault(require("../utilities/transformWorldToIndex"));
25
45
  const constants_1 = require("../constants");
46
+ const enums_1 = require("../enums");
47
+ const eventTarget_1 = __importDefault(require("../eventTarget"));
26
48
  const EPSILON = 1e-3;
27
49
  class VolumeViewport extends Viewport_1.default {
28
50
  constructor(props) {
@@ -32,6 +54,8 @@ class VolumeViewport extends Viewport_1.default {
32
54
  return this._FrameOfReferenceUID;
33
55
  };
34
56
  this.canvasToWorld = (canvasPos) => {
57
+ const vtkCamera = this.getVtkActiveCamera();
58
+ vtkCamera.setIsPerformingCoordinateTransformation(true);
35
59
  const renderer = this.getRenderer();
36
60
  const offscreenMultiRenderWindow = this.getRenderingEngine().offscreenMultiRenderWindow;
37
61
  const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
@@ -39,10 +63,13 @@ class VolumeViewport extends Viewport_1.default {
39
63
  const displayCoord = [canvasPos[0] + this.sx, canvasPos[1] + this.sy];
40
64
  displayCoord[1] = size[1] - displayCoord[1];
41
65
  let worldCoord = openGLRenderWindow.displayToWorld(displayCoord[0], displayCoord[1], 0, renderer);
66
+ vtkCamera.setIsPerformingCoordinateTransformation(false);
42
67
  worldCoord = this.applyFlipTx(worldCoord);
43
68
  return worldCoord;
44
69
  };
45
70
  this.worldToCanvas = (worldPos) => {
71
+ const vtkCamera = this.getVtkActiveCamera();
72
+ vtkCamera.setIsPerformingCoordinateTransformation(true);
46
73
  const renderer = this.getRenderer();
47
74
  const offscreenMultiRenderWindow = this.getRenderingEngine().offscreenMultiRenderWindow;
48
75
  const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
@@ -53,6 +80,7 @@ class VolumeViewport extends Viewport_1.default {
53
80
  displayCoord[0] - this.sx,
54
81
  displayCoord[1] - this.sy,
55
82
  ];
83
+ vtkCamera.setIsPerformingCoordinateTransformation(false);
56
84
  return canvasCoord;
57
85
  };
58
86
  this.getCurrentImageIdIndex = () => {
@@ -63,7 +91,10 @@ class VolumeViewport extends Viewport_1.default {
63
91
  if (!index) {
64
92
  return;
65
93
  }
66
- const { uid } = this.getDefaultActor();
94
+ const { uid, actor } = this.getDefaultActor();
95
+ if (!actor.isA('vtkVolume')) {
96
+ return;
97
+ }
67
98
  const volume = cache_1.default.getVolume(uid);
68
99
  if (!volume) {
69
100
  return;
@@ -104,6 +135,7 @@ class VolumeViewport extends Viewport_1.default {
104
135
  default:
105
136
  throw new Error(`Unrecognized viewport type: ${this.type}`);
106
137
  }
138
+ this.initializeVolumeNewImageEventDispatcher();
107
139
  const { sliceNormal, viewUp } = this.defaultOptions.orientation;
108
140
  camera.setDirectionOfProjection(-sliceNormal[0], -sliceNormal[1], -sliceNormal[2]);
109
141
  camera.setViewUpFrom(viewUp);
@@ -112,6 +144,29 @@ class VolumeViewport extends Viewport_1.default {
112
144
  static get useCustomRenderingPipeline() {
113
145
  return false;
114
146
  }
147
+ initializeVolumeNewImageEventDispatcher() {
148
+ const volumeNewImageHandlerBound = volumeNewImageHandler.bind(this);
149
+ const volumeNewImageCleanUpBound = volumeNewImageCleanUp.bind(this);
150
+ function volumeNewImageHandler(cameraEvent) {
151
+ const viewportImageData = this.getImageData();
152
+ if (!viewportImageData) {
153
+ return;
154
+ }
155
+ (0, volumeNewImageEventDispatcher_1.default)(cameraEvent);
156
+ }
157
+ function volumeNewImageCleanUp(evt) {
158
+ const { viewportId } = evt.detail;
159
+ if (viewportId !== this.id) {
160
+ return;
161
+ }
162
+ this.element.removeEventListener(enums_1.Events.CAMERA_MODIFIED, volumeNewImageHandlerBound);
163
+ eventTarget_1.default.removeEventListener(enums_1.Events.ELEMENT_DISABLED, volumeNewImageCleanUpBound);
164
+ (0, volumeNewImageEventDispatcher_1.resetVolumeNewImageState)(viewportId);
165
+ }
166
+ this.element.removeEventListener(enums_1.Events.CAMERA_MODIFIED, volumeNewImageHandlerBound);
167
+ this.element.addEventListener(enums_1.Events.CAMERA_MODIFIED, volumeNewImageHandlerBound);
168
+ eventTarget_1.default.addEventListener(enums_1.Events.ELEMENT_DISABLED, volumeNewImageCleanUpBound);
169
+ }
115
170
  setVolumes(volumeInputArray, immediate = false) {
116
171
  return __awaiter(this, void 0, void 0, function* () {
117
172
  const firstImageVolume = cache_1.default.getVolume(volumeInputArray[0].volumeId);
@@ -123,14 +178,13 @@ class VolumeViewport extends Viewport_1.default {
123
178
  this._FrameOfReferenceUID = FrameOfReferenceUID;
124
179
  const volumeActors = [];
125
180
  for (let i = 0; i < volumeInputArray.length; i++) {
126
- const { volumeId, slabThickness, actorUID, slabThicknessEnabled } = volumeInputArray[i];
127
- const volumeActor = yield (0, helpers_1.createVolumeActor)(volumeInputArray[i]);
181
+ const { volumeId, actorUID, slabThickness } = volumeInputArray[i];
182
+ const actor = yield (0, helpers_1.createVolumeActor)(volumeInputArray[i], this.element, this.id);
128
183
  const uid = actorUID || volumeId;
129
184
  volumeActors.push({
130
185
  uid,
131
- volumeActor,
186
+ actor,
132
187
  slabThickness,
133
- slabThicknessEnabled,
134
188
  });
135
189
  }
136
190
  this._setVolumeActors(volumeActors);
@@ -144,17 +198,16 @@ class VolumeViewport extends Viewport_1.default {
144
198
  const volumeActors = [];
145
199
  yield this._isValidVolumeInputArray(volumeInputArray, this._FrameOfReferenceUID);
146
200
  for (let i = 0; i < volumeInputArray.length; i++) {
147
- const { volumeId, visibility, actorUID, slabThickness, slabThicknessEnabled, } = volumeInputArray[i];
148
- const volumeActor = yield (0, helpers_1.createVolumeActor)(volumeInputArray[i]);
201
+ const { volumeId, visibility, actorUID, slabThickness } = volumeInputArray[i];
202
+ const actor = yield (0, helpers_1.createVolumeActor)(volumeInputArray[i], this.element, this.id);
149
203
  if (visibility === false) {
150
- volumeActor.setVisibility(false);
204
+ actor.setVisibility(false);
151
205
  }
152
206
  const uid = actorUID || volumeId;
153
207
  volumeActors.push({
154
208
  uid,
155
- volumeActor,
209
+ actor,
156
210
  slabThickness,
157
- slabThicknessEnabled,
158
211
  });
159
212
  }
160
213
  this.addActors(volumeActors);
@@ -186,8 +239,11 @@ class VolumeViewport extends Viewport_1.default {
186
239
  });
187
240
  }
188
241
  getIntensityFromWorld(point) {
189
- const { volumeActor, uid } = this.getDefaultActor();
190
- const imageData = volumeActor.getMapper().getInputData();
242
+ const { actor, uid } = this.getDefaultActor();
243
+ if (!actor.isA('vtkVolume')) {
244
+ return;
245
+ }
246
+ const imageData = actor.getMapper().getInputData();
191
247
  const volume = cache_1.default.getVolume(uid);
192
248
  const { dimensions } = volume;
193
249
  const index = (0, transformWorldToIndex_1.default)(imageData, point);
@@ -205,64 +261,75 @@ class VolumeViewport extends Viewport_1.default {
205
261
  super.flip(flipDirection);
206
262
  }
207
263
  resetCamera(resetPan = true, resetZoom = true) {
208
- const distance = super.resetCamera(resetPan, resetZoom);
264
+ super.resetCamera(resetPan, resetZoom);
209
265
  const activeCamera = this.getVtkActiveCamera();
210
- activeCamera.setClippingRange(0.01, distance * 2);
266
+ if (activeCamera.getParallelProjection()) {
267
+ activeCamera.setClippingRange(-constants_1.RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE, constants_1.RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
268
+ }
269
+ else {
270
+ activeCamera.setClippingRange(constants_1.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS, constants_1.RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
271
+ }
211
272
  const viewPlaneNormal = activeCamera.getViewPlaneNormal();
212
273
  const focalPoint = activeCamera.getFocalPoint();
213
- const actors = this.getActors();
214
- actors.forEach((actor) => {
215
- const mapper = actor.volumeActor.getMapper();
274
+ const actorEntries = this.getActors();
275
+ actorEntries.forEach((actorEntry) => {
276
+ if (!actorEntry.actor || !actorEntry.actor.isA('vtkVolume')) {
277
+ return;
278
+ }
279
+ const mapper = actorEntry.actor.getMapper();
216
280
  const vtkPlanes = mapper.getClippingPlanes();
217
281
  if (vtkPlanes.length === 0) {
218
282
  const clipPlane1 = Plane_1.default.newInstance();
219
283
  const clipPlane2 = Plane_1.default.newInstance();
220
284
  const newVtkPlanes = [clipPlane1, clipPlane2];
221
- let slabThickness = constants_1.MINIMUM_SLAB_THICKNESS;
222
- if (actor.slabThicknessEnabled !== false && actor.slabThickness) {
223
- slabThickness = actor.slabThickness;
285
+ let slabThickness = constants_1.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
286
+ if (actorEntry.slabThickness) {
287
+ slabThickness = actorEntry.slabThickness;
224
288
  }
225
289
  this.setOrientationOfClippingPlanes(newVtkPlanes, slabThickness, viewPlaneNormal, focalPoint);
226
290
  mapper.addClippingPlane(clipPlane1);
227
291
  mapper.addClippingPlane(clipPlane2);
228
292
  }
229
293
  });
230
- return distance;
294
+ return true;
231
295
  }
232
- setSlabThicknessForAllVolumeActors(slabThickness) {
233
- const actors = this.getActors();
234
- let updateClippingPlanes = false;
235
- actors.forEach((actor) => {
236
- if (actor.slabThicknessEnabled === false) {
237
- return;
238
- }
239
- actor.slabThickness = slabThickness;
240
- updateClippingPlanes = true;
296
+ setBlendMode(blendMode, filterActorUIDs = [], immediate = false) {
297
+ let actorEntries = this.getActors();
298
+ if (filterActorUIDs && filterActorUIDs.length > 0) {
299
+ actorEntries = actorEntries.filter((actorEntry) => {
300
+ return filterActorUIDs.includes(actorEntry.uid);
301
+ });
302
+ }
303
+ actorEntries.forEach((actorEntry) => {
304
+ const { actor } = actorEntry;
305
+ const mapper = actor.getMapper();
306
+ mapper.setBlendMode(blendMode);
241
307
  });
242
- if (updateClippingPlanes === false) {
243
- return;
308
+ if (immediate) {
309
+ this.render();
244
310
  }
245
- const currentCamera = this.getCamera();
246
- this.updateActorsClippingPlanesOnCameraModified(currentCamera);
247
- this.checkAndTriggerCameraModifiedEvent(currentCamera, currentCamera);
248
311
  }
249
- setSlabThicknessForVolumeActor(actorUID, slabThickness) {
250
- const actor = this.getActor(actorUID);
251
- if (actor.slabThicknessEnabled === false) {
252
- return;
312
+ setSlabThickness(slabThickness, filterActorUIDs = []) {
313
+ let actorEntries = this.getActors();
314
+ if (filterActorUIDs && filterActorUIDs.length > 0) {
315
+ actorEntries = actorEntries.filter((actorEntry) => {
316
+ return filterActorUIDs.includes(actorEntry.uid);
317
+ });
253
318
  }
254
- actor.slabThickness = slabThickness;
319
+ actorEntries.forEach((actorEntry) => {
320
+ const { actor } = actorEntry;
321
+ if (actor.isA('vtkVolume')) {
322
+ actorEntry.slabThickness = slabThickness;
323
+ }
324
+ });
255
325
  const currentCamera = this.getCamera();
256
- this.updateActorsClippingPlanesOnCameraModified(currentCamera);
257
- this.checkAndTriggerCameraModifiedEvent(currentCamera, currentCamera);
326
+ this.updateClippingPlanesForActors(currentCamera);
327
+ this.triggerCameraModifiedEventIfNecessary(currentCamera, currentCamera);
258
328
  }
259
329
  getSlabThickness() {
260
330
  const actors = this.getActors();
261
- let slabThickness = constants_1.MINIMUM_SLAB_THICKNESS;
331
+ let slabThickness = constants_1.RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS;
262
332
  actors.forEach((actor) => {
263
- if (actor.slabThicknessEnabled === false) {
264
- return;
265
- }
266
333
  if (actor.slabThickness > slabThickness) {
267
334
  slabThickness = actor.slabThickness;
268
335
  }
@@ -270,19 +337,22 @@ class VolumeViewport extends Viewport_1.default {
270
337
  return slabThickness;
271
338
  }
272
339
  getImageData() {
273
- const actor = this.getDefaultActor();
274
- if (!actor) {
340
+ const defaultActor = this.getDefaultActor();
341
+ if (!defaultActor) {
342
+ return;
343
+ }
344
+ const { actor } = defaultActor;
345
+ if (!actor.isA('vtkVolume')) {
275
346
  return;
276
347
  }
277
- const { volumeActor } = actor;
278
- const vtkImageData = volumeActor.getMapper().getInputData();
348
+ const vtkImageData = actor.getMapper().getInputData();
279
349
  return {
280
350
  dimensions: vtkImageData.getDimensions(),
281
351
  spacing: vtkImageData.getSpacing(),
282
352
  origin: vtkImageData.getOrigin(),
283
353
  direction: vtkImageData.getDirection(),
284
354
  scalarData: vtkImageData.getPointData().getScalars().getData(),
285
- imageData: volumeActor.getMapper().getInputData(),
355
+ imageData: actor.getMapper().getInputData(),
286
356
  metadata: undefined,
287
357
  scaling: undefined,
288
358
  };