@cornerstonejs/core 0.8.1 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.js +47 -38
  4. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  5. package/dist/cjs/RenderingEngine/Viewport.d.ts +7 -1
  6. package/dist/cjs/RenderingEngine/Viewport.js +74 -53
  7. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  8. package/dist/cjs/RenderingEngine/VolumeViewport.d.ts +3 -1
  9. package/dist/cjs/RenderingEngine/VolumeViewport.js +151 -53
  10. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  11. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +19 -5
  12. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js.map +1 -1
  13. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js +2 -1
  14. package/dist/cjs/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js.map +1 -1
  15. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
  16. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js +31 -3
  17. package/dist/cjs/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
  18. package/dist/cjs/RenderingEngine/helpers/index.d.ts +2 -1
  19. package/dist/cjs/RenderingEngine/helpers/index.js +3 -1
  20. package/dist/cjs/RenderingEngine/helpers/index.js.map +1 -1
  21. package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -0
  22. package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.js +163 -0
  23. package/dist/cjs/RenderingEngine/helpers/setDefaultVolumeVOI.js.map +1 -0
  24. package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +4 -0
  25. package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +42 -0
  26. package/dist/cjs/RenderingEngine/helpers/volumeNewImageEventDispatcher.js.map +1 -0
  27. package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +12 -24
  28. package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.js +7 -8
  29. package/dist/cjs/RenderingEngine/vtkClasses/vtkSlabCamera.js.map +1 -1
  30. package/dist/cjs/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +3 -14
  31. package/dist/cjs/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js.map +1 -1
  32. package/dist/cjs/Settings.js +1 -0
  33. package/dist/cjs/Settings.js.map +1 -1
  34. package/dist/cjs/cache/classes/ImageVolume.d.ts +1 -0
  35. package/dist/cjs/cache/classes/ImageVolume.js +1 -0
  36. package/dist/cjs/cache/classes/ImageVolume.js.map +1 -1
  37. package/dist/cjs/constants/index.d.ts +2 -1
  38. package/dist/cjs/constants/index.js +3 -1
  39. package/dist/cjs/constants/index.js.map +1 -1
  40. package/dist/cjs/constants/rendering.d.ts +5 -0
  41. package/dist/cjs/constants/rendering.js +9 -0
  42. package/dist/cjs/constants/rendering.js.map +1 -0
  43. package/dist/cjs/enums/BlendModes.js +1 -1
  44. package/dist/cjs/enums/BlendModes.js.map +1 -1
  45. package/dist/cjs/enums/Events.d.ts +1 -0
  46. package/dist/cjs/enums/Events.js +1 -0
  47. package/dist/cjs/enums/Events.js.map +1 -1
  48. package/dist/cjs/types/ActorSliceRange.d.ts +11 -0
  49. package/dist/cjs/types/ActorSliceRange.js +3 -0
  50. package/dist/cjs/types/ActorSliceRange.js.map +1 -0
  51. package/dist/cjs/types/EventTypes.d.ts +10 -1
  52. package/dist/cjs/types/IActor.d.ts +5 -2
  53. package/dist/cjs/types/ICamera.d.ts +0 -3
  54. package/dist/cjs/types/IImageVolume.d.ts +1 -0
  55. package/dist/cjs/types/IViewport.d.ts +2 -0
  56. package/dist/cjs/types/IVolumeInput.d.ts +1 -0
  57. package/dist/cjs/types/IVolumeViewport.d.ts +2 -1
  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.js +47 -38
  86. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  87. package/dist/esm/RenderingEngine/Viewport.d.ts +7 -1
  88. package/dist/esm/RenderingEngine/Viewport.js +74 -53
  89. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  90. package/dist/esm/RenderingEngine/VolumeViewport.d.ts +3 -1
  91. package/dist/esm/RenderingEngine/VolumeViewport.js +132 -53
  92. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  93. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +19 -5
  94. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js.map +1 -1
  95. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js +2 -1
  96. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.js.map +1 -1
  97. package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +1 -1
  98. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js +31 -3
  99. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js.map +1 -1
  100. package/dist/esm/RenderingEngine/helpers/index.d.ts +2 -1
  101. package/dist/esm/RenderingEngine/helpers/index.js +2 -1
  102. package/dist/esm/RenderingEngine/helpers/index.js.map +1 -1
  103. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -0
  104. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +132 -0
  105. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js.map +1 -0
  106. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +4 -0
  107. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js +35 -0
  108. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.js.map +1 -0
  109. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +12 -24
  110. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js +7 -8
  111. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js.map +1 -1
  112. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +3 -14
  113. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js.map +1 -1
  114. package/dist/esm/Settings.js +1 -0
  115. package/dist/esm/Settings.js.map +1 -1
  116. package/dist/esm/cache/classes/ImageVolume.d.ts +1 -0
  117. package/dist/esm/cache/classes/ImageVolume.js +1 -0
  118. package/dist/esm/cache/classes/ImageVolume.js.map +1 -1
  119. package/dist/esm/constants/index.d.ts +2 -1
  120. package/dist/esm/constants/index.js +2 -1
  121. package/dist/esm/constants/index.js.map +1 -1
  122. package/dist/esm/constants/rendering.d.ts +5 -0
  123. package/dist/esm/constants/rendering.js +7 -0
  124. package/dist/esm/constants/rendering.js.map +1 -0
  125. package/dist/esm/enums/BlendModes.js +1 -1
  126. package/dist/esm/enums/BlendModes.js.map +1 -1
  127. package/dist/esm/enums/Events.d.ts +1 -0
  128. package/dist/esm/enums/Events.js +1 -0
  129. package/dist/esm/enums/Events.js.map +1 -1
  130. package/dist/esm/types/ActorSliceRange.d.ts +11 -0
  131. package/dist/esm/types/ActorSliceRange.js +2 -0
  132. package/dist/esm/types/ActorSliceRange.js.map +1 -0
  133. package/dist/esm/types/EventTypes.d.ts +10 -1
  134. package/dist/esm/types/IActor.d.ts +5 -2
  135. package/dist/esm/types/ICamera.d.ts +0 -3
  136. package/dist/esm/types/IImageVolume.d.ts +1 -0
  137. package/dist/esm/types/IViewport.d.ts +2 -0
  138. package/dist/esm/types/IVolumeInput.d.ts +1 -0
  139. package/dist/esm/types/IVolumeViewport.d.ts +2 -1
  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
@@ -1 +1 @@
1
- {"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/enums/Events.ts"],"names":[],"mappings":";;AAGA,IAAK,MAoJJ;AApJD,WAAK,MAAM;IAST,qDAA2C,CAAA;IAK3C,+CAAqC,CAAA;IAQrC,yDAA+C,CAAA;IAO/C,mDAAyC,CAAA;IAOzC,2DAAiD,CAAA;IAOjD,yDAA+C,CAAA;IAO/C,uDAA6C,CAAA;IAS7C,qEAA2D,CAAA;IAO3D,mDAAyC,CAAA;IAOzC,6DAAmD,CAAA;IAOnD,qDAA2C,CAAA;IAO3C,mEAAyD,CAAA;IAOzD,yEAA+D,CAAA;IAO/D,6EAAmE,CAAA;IAOnE,6EAAmE,CAAA;IAOnE,iFAAuE,CAAA;IAOvE,yDAA+C,CAAA;IAO/C,iEAAuD,CAAA;IAOvD,2EAAiE,CAAA;IAQjE,iEAAuD,CAAA;AAIzD,CAAC,EApJI,MAAM,KAAN,MAAM,QAoJV;AAED,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/enums/Events.ts"],"names":[],"mappings":";;AAGA,IAAK,MA8JJ;AA9JD,WAAK,MAAM;IAST,qDAA2C,CAAA;IAK3C,+CAAqC,CAAA;IAQrC,yDAA+C,CAAA;IAO/C,mDAAyC,CAAA;IAOzC,2DAAiD,CAAA;IAOjD,yDAA+C,CAAA;IAO/C,uDAA6C,CAAA;IAS7C,qEAA2D,CAAA;IAO3D,mDAAyC,CAAA;IAOzC,6DAAmD,CAAA;IAOnD,qDAA2C,CAAA;IAO3C,mEAAyD,CAAA;IAOzD,yEAA+D,CAAA;IAO/D,6EAAmE,CAAA;IAOnE,6EAAmE,CAAA;IAOnE,iFAAuE,CAAA;IAOvE,yDAA+C,CAAA;IAS/C,2DAAiD,CAAA;IAQjD,iEAAuD,CAAA;IAOvD,2EAAiE,CAAA;IAQjE,iEAAuD,CAAA;AAIzD,CAAC,EA9JI,MAAM,KAAN,MAAM,QA8JV;AAED,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { VolumeActor } from './IActor';
2
+ import Point3 from './Point3';
3
+ declare type ActorSliceRange = {
4
+ actor: VolumeActor;
5
+ viewPlaneNormal: Point3;
6
+ focalPoint: Point3;
7
+ min: number;
8
+ max: number;
9
+ current: number;
10
+ };
11
+ export default ActorSliceRange;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ActorSliceRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorSliceRange.js","sourceRoot":"","sources":["../../../src/types/ActorSliceRange.ts"],"names":[],"mappings":""}
@@ -68,12 +68,20 @@ declare type VolumeCacheVolumeAddedEventDetail = {
68
68
  };
69
69
  declare type PreStackNewImageEventDetail = {
70
70
  imageId: string;
71
+ imageIdIndex: number;
71
72
  viewportId: string;
72
73
  renderingEngineId: string;
73
74
  };
74
75
  declare type StackNewImageEventDetail = {
75
76
  image: IImage;
76
77
  imageId: string;
78
+ imageIdIndex: number;
79
+ viewportId: string;
80
+ renderingEngineId: string;
81
+ };
82
+ declare type VolumeNewImageEventDetail = {
83
+ imageIndex: number;
84
+ numberOfSlices: number;
77
85
  viewportId: string;
78
86
  renderingEngineId: string;
79
87
  };
@@ -109,7 +117,8 @@ declare type ImageCacheImageRemovedEvent = CustomEventType<ImageCacheImageRemove
109
117
  declare type VolumeCacheVolumeAddedEvent = CustomEventType<VolumeCacheVolumeAddedEventDetail>;
110
118
  declare type VolumeCacheVolumeRemovedEvent = CustomEventType<VolumeCacheVolumeRemovedEventDetail>;
111
119
  declare type StackNewImageEvent = CustomEventType<StackNewImageEventDetail>;
120
+ declare type VolumeNewImageEvent = CustomEventType<VolumeNewImageEventDetail>;
112
121
  declare type PreStackNewImageEvent = CustomEventType<PreStackNewImageEventDetail>;
113
122
  declare type ImageSpacingCalibratedEvent = CustomEventType<ImageSpacingCalibratedEventDetail>;
114
123
  declare type ImageLoadProgressEvent = CustomEventType<ImageLoadProgressEventDetail>;
115
- export type { CameraModifiedEventDetail, CameraModifiedEvent, VoiModifiedEvent, VoiModifiedEventDetail, ElementDisabledEvent, ElementDisabledEventDetail, ElementEnabledEvent, ElementEnabledEventDetail, ImageRenderedEventDetail, ImageRenderedEvent, ImageVolumeModifiedEvent, ImageVolumeModifiedEventDetail, ImageLoadedEvent, ImageLoadedEventDetail, ImageLoadedFailedEventDetail, ImageLoadedFailedEvent, VolumeLoadedEvent, VolumeLoadedEventDetail, VolumeLoadedFailedEvent, VolumeLoadedFailedEventDetail, ImageCacheImageAddedEvent, ImageCacheImageAddedEventDetail, ImageCacheImageRemovedEvent, ImageCacheImageRemovedEventDetail, VolumeCacheVolumeAddedEvent, VolumeCacheVolumeAddedEventDetail, VolumeCacheVolumeRemovedEvent, VolumeCacheVolumeRemovedEventDetail, StackNewImageEvent, StackNewImageEventDetail, PreStackNewImageEvent, PreStackNewImageEventDetail, ImageSpacingCalibratedEvent, ImageSpacingCalibratedEventDetail, ImageLoadProgressEvent, ImageLoadProgressEventDetail, };
124
+ export type { CameraModifiedEventDetail, CameraModifiedEvent, VoiModifiedEvent, VoiModifiedEventDetail, ElementDisabledEvent, ElementDisabledEventDetail, ElementEnabledEvent, ElementEnabledEventDetail, ImageRenderedEventDetail, ImageRenderedEvent, ImageVolumeModifiedEvent, ImageVolumeModifiedEventDetail, ImageLoadedEvent, ImageLoadedEventDetail, ImageLoadedFailedEventDetail, ImageLoadedFailedEvent, VolumeLoadedEvent, VolumeLoadedEventDetail, VolumeLoadedFailedEvent, VolumeLoadedFailedEventDetail, ImageCacheImageAddedEvent, ImageCacheImageAddedEventDetail, ImageCacheImageRemovedEvent, ImageCacheImageRemovedEventDetail, VolumeCacheVolumeAddedEvent, VolumeCacheVolumeAddedEventDetail, VolumeCacheVolumeRemovedEvent, VolumeCacheVolumeRemovedEventDetail, StackNewImageEvent, StackNewImageEventDetail, PreStackNewImageEvent, PreStackNewImageEventDetail, ImageSpacingCalibratedEvent, ImageSpacingCalibratedEventDetail, ImageLoadProgressEvent, ImageLoadProgressEventDetail, VolumeNewImageEvent, VolumeNewImageEventDetail, };
@@ -1,7 +1,10 @@
1
- import type { vtkVolume } from '@kitware/vtk.js/Rendering/Core/Volume';
1
+ import type vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
2
+ import type vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
3
+ export declare type Actor = vtkActor;
2
4
  export declare type VolumeActor = vtkVolume;
3
5
  export declare type ActorEntry = {
4
6
  uid: string;
5
- volumeActor: VolumeActor;
7
+ actor: Actor | VolumeActor;
8
+ slabThicknessEnabled?: boolean;
6
9
  slabThickness?: number;
7
10
  };
@@ -1,7 +1,5 @@
1
- import Point2 from './Point2';
2
1
  import Point3 from './Point3';
3
2
  interface ICamera {
4
- clippingRange?: Point2;
5
3
  focalPoint?: Point3;
6
4
  parallelProjection?: boolean;
7
5
  parallelScale?: number;
@@ -9,7 +7,6 @@ interface ICamera {
9
7
  viewAngle?: number;
10
8
  viewPlaneNormal?: Point3;
11
9
  viewUp?: Point3;
12
- slabThickness?: number;
13
10
  flipHorizontal?: boolean;
14
11
  flipVertical?: boolean;
15
12
  }
@@ -7,6 +7,7 @@ interface IImageVolume {
7
7
  metadata: Metadata;
8
8
  origin: Point3;
9
9
  scalarData: any;
10
+ isPrescaled: boolean;
10
11
  scaling?: {
11
12
  PET?: {
12
13
  SUVlbmFactor?: number;
@@ -24,6 +24,8 @@ interface IViewport {
24
24
  getDefaultActor(): ActorEntry;
25
25
  getActors(): Array<ActorEntry>;
26
26
  getActor(actorUID: string): ActorEntry;
27
+ getActorUIDByIndex(index: number): string;
28
+ getActorByIndex(index: number): ActorEntry;
27
29
  setActors(actors: Array<ActorEntry>): void;
28
30
  addActors(actors: Array<ActorEntry>): void;
29
31
  addActor(actorEntry: ActorEntry): void;
@@ -11,5 +11,6 @@ interface IVolumeInput {
11
11
  callback?: VolumeInputCallback;
12
12
  blendMode?: BlendModes;
13
13
  slabThickness?: number;
14
+ slabThicknessEnabled?: boolean;
14
15
  }
15
16
  export type { IVolumeInput, VolumeInputCallback };
@@ -19,7 +19,8 @@ export default interface IVolumeViewport extends IViewport {
19
19
  getBounds(): any;
20
20
  flip(flipDirection: FlipDirection): void;
21
21
  resetCamera(resetPan?: boolean, resetZoom?: boolean): boolean;
22
- setSlabThickness(slabThickness: number): void;
22
+ setSlabThicknessForAllVolumeActors(slabThickness: number): void;
23
+ setSlabThicknessForVolumeActor(actorUID: string, slabThickness: number): void;
23
24
  getSlabThickness(): number;
24
25
  getImageData(): IImageData | undefined;
25
26
  }
@@ -0,0 +1,5 @@
1
+ declare type ImageSliceData = {
2
+ numberOfSlices: number;
3
+ imageIndex: number;
4
+ };
5
+ export default ImageSliceData;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ImageSliceData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageSliceData.js","sourceRoot":"","sources":["../../../src/types/ImageSliceData.ts"],"names":[],"mappings":""}
@@ -7,6 +7,7 @@ declare type Metadata = {
7
7
  PhotometricInterpretation: string;
8
8
  PixelRepresentation: number;
9
9
  Modality: string;
10
+ SeriesInstanceUID: string;
10
11
  ImageOrientationPatient: Array<number>;
11
12
  PixelSpacing: Array<number>;
12
13
  FrameOfReferenceUID: string;
@@ -10,7 +10,7 @@ import type IRegisterImageLoader from './IRegisterImageLoader';
10
10
  import type IStreamingVolumeProperties from './IStreamingVolumeProperties';
11
11
  import type CustomEventType from './CustomEventType';
12
12
  import type { IViewport, PublicViewportInput } from './IViewport';
13
- import type { VolumeActor, ActorEntry } from './IActor';
13
+ import type { VolumeActor, Actor, ActorEntry } from './IActor';
14
14
  import type { IImageLoadObject, IVolumeLoadObject } from './ILoadObject';
15
15
  import type Metadata from './Metadata';
16
16
  import type Orientation from './Orientation';
@@ -46,4 +46,6 @@ import type CPUFallbackRenderingTools from './CPUFallbackRenderingTools';
46
46
  import type { IVolumeInput, VolumeInputCallback } from './IVolumeInput';
47
47
  import type * as EventTypes from './EventTypes';
48
48
  import type IRenderingEngine from './IRenderingEngine';
49
- export type { ICamera, IStackViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, IRenderingEngine, ScalingParameters, PTScaling, Scaling, IStreamingImageVolume, IImage, IImageData, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, StackViewportProperties, PublicViewportInput, VolumeActor, ActorEntry, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, Metadata, Orientation, Point2, Point3, Point4, Plane, ViewportInputOptions, VOIRange, VOI, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, };
49
+ import type ActorSliceRange from './ActorSliceRange';
50
+ import type ImageSliceData from './ImageSliceData';
51
+ export type { ICamera, IStackViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, IRenderingEngine, ScalingParameters, PTScaling, Scaling, IStreamingImageVolume, IImage, IImageData, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, StackViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, Metadata, Orientation, Point2, Point3, Point4, Plane, ViewportInputOptions, VOIRange, VOI, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, };
@@ -0,0 +1,3 @@
1
+ import { ImageSliceData, IVolumeViewport } from '../types';
2
+ declare function getImageSliceDataForVolumeViewport(viewport: IVolumeViewport): ImageSliceData;
3
+ export default getImageSliceDataForVolumeViewport;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const getSliceRange_1 = __importDefault(require("./getSliceRange"));
7
+ const getTargetVolumeAndSpacingInNormalDir_1 = __importDefault(require("./getTargetVolumeAndSpacingInNormalDir"));
8
+ function getImageSliceDataForVolumeViewport(viewport) {
9
+ const camera = viewport.getCamera();
10
+ const { spacingInNormalDirection, imageVolume } = (0, getTargetVolumeAndSpacingInNormalDir_1.default)(viewport, camera);
11
+ if (!imageVolume) {
12
+ return;
13
+ }
14
+ const { viewPlaneNormal, focalPoint } = camera;
15
+ const actorEntry = viewport.getActor(imageVolume.volumeId);
16
+ if (!actorEntry) {
17
+ console.warn('No actor found for with actorUID of', imageVolume.volumeId);
18
+ }
19
+ const volumeActor = actorEntry.actor;
20
+ const sliceRange = (0, getSliceRange_1.default)(volumeActor, viewPlaneNormal, focalPoint);
21
+ const { min, max, current } = sliceRange;
22
+ const numberOfSlices = Math.round((max - min) / spacingInNormalDirection) + 1;
23
+ let imageIndex = ((current - min) / (max - min)) * numberOfSlices;
24
+ imageIndex = Math.floor(imageIndex);
25
+ if (imageIndex > numberOfSlices - 1) {
26
+ imageIndex = numberOfSlices - 1;
27
+ }
28
+ else if (imageIndex < 0) {
29
+ imageIndex = 0;
30
+ }
31
+ return {
32
+ numberOfSlices,
33
+ imageIndex,
34
+ };
35
+ }
36
+ exports.default = getImageSliceDataForVolumeViewport;
37
+ //# sourceMappingURL=getImageSliceDataForVolumeViewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getImageSliceDataForVolumeViewport.js","sourceRoot":"","sources":["../../../src/utilities/getImageSliceDataForVolumeViewport.ts"],"names":[],"mappings":";;;;;AACA,oEAA4C;AAC5C,kHAA0F;AAQ1F,SAAS,kCAAkC,CACzC,QAAyB;IAEzB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IAEpC,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,GAC7C,IAAA,8CAAoC,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO;KACR;IAED,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC3E;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,KAAoB,CAAC;IACpD,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAE3E,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAGzC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAG9E,IAAI,UAAU,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;IAClE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAGpC,IAAI,UAAU,GAAG,cAAc,GAAG,CAAC,EAAE;QACnC,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC;KACjC;SAAM,IAAI,UAAU,GAAG,CAAC,EAAE;QACzB,UAAU,GAAG,CAAC,CAAC;KAChB;IAED,OAAO;QACL,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,kBAAe,kCAAkC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ScalingParameters } from '../types';
2
+ export default function getScalingParameters(imageId: string): ScalingParameters | undefined;
@@ -0,0 +1,41 @@
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
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const metaData = __importStar(require("../metaData"));
23
+ function getScalingParameters(imageId) {
24
+ const modalityLutModule = metaData.get('modalityLutModule', imageId) || {};
25
+ const generalSeriesModule = metaData.get('generalSeriesModule', imageId) || {};
26
+ const { modality } = generalSeriesModule;
27
+ const scalingParameters = {
28
+ rescaleSlope: modalityLutModule.rescaleSlope,
29
+ rescaleIntercept: modalityLutModule.rescaleIntercept,
30
+ modality,
31
+ };
32
+ if (modality !== 'PT') {
33
+ return scalingParameters;
34
+ }
35
+ const suvFactor = metaData.get('scalingModule', imageId) || {};
36
+ if (modality === 'PT' && suvFactor.suvbw) {
37
+ return Object.assign(Object.assign({}, scalingParameters), { suvbw: suvFactor.suvbw });
38
+ }
39
+ }
40
+ exports.default = getScalingParameters;
41
+ //# sourceMappingURL=getScalingParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getScalingParameters.js","sourceRoot":"","sources":["../../../src/utilities/getScalingParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,sDAAwC;AASxC,SAAwB,oBAAoB,CAC1C,OAAe;IAEf,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAE3E,MAAM,mBAAmB,GACvB,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAErD,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC;IAEzC,MAAM,iBAAiB,GAAsB;QAC3C,YAAY,EAAE,iBAAiB,CAAC,YAAY;QAC5C,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;QACpD,QAAQ;KACT,CAAC;IAEF,IAAI,QAAQ,KAAK,IAAI,EAAE;QACrB,OAAO,iBAAiB,CAAC;KAC1B;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/D,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;QACxC,uCACK,iBAAiB,KACpB,KAAK,EAAE,SAAS,CAAC,KAAK,IACtB;KACH;AACH,CAAC;AA5BD,uCA4BC"}
@@ -0,0 +1,2 @@
1
+ import type { VolumeActor, Point3, ActorSliceRange } from '../types';
2
+ export default function getSliceRange(volumeActor: VolumeActor, viewPlaneNormal: Point3, focalPoint: Point3): ActorSliceRange;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const MatrixBuilder_1 = __importDefault(require("@kitware/vtk.js/Common/Core/MatrixBuilder"));
7
+ const getVolumeActorCorners_1 = __importDefault(require("./getVolumeActorCorners"));
8
+ function getSliceRange(volumeActor, viewPlaneNormal, focalPoint) {
9
+ const corners = (0, getVolumeActorCorners_1.default)(volumeActor);
10
+ const transform = MatrixBuilder_1.default
11
+ .buildFromDegree()
12
+ .identity()
13
+ .rotateFromDirections(viewPlaneNormal, [1, 0, 0]);
14
+ corners.forEach((pt) => transform.apply(pt));
15
+ const transformedFocalPoint = [...focalPoint];
16
+ transform.apply(transformedFocalPoint);
17
+ const currentSlice = transformedFocalPoint[0];
18
+ let minX = Infinity;
19
+ let maxX = -Infinity;
20
+ for (let i = 0; i < 8; i++) {
21
+ const x = corners[i][0];
22
+ if (x > maxX) {
23
+ maxX = x;
24
+ }
25
+ if (x < minX) {
26
+ minX = x;
27
+ }
28
+ }
29
+ return {
30
+ min: minX,
31
+ max: maxX,
32
+ current: currentSlice,
33
+ actor: volumeActor,
34
+ viewPlaneNormal,
35
+ focalPoint,
36
+ };
37
+ }
38
+ exports.default = getSliceRange;
39
+ //# sourceMappingURL=getSliceRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSliceRange.js","sourceRoot":"","sources":["../../../src/utilities/getSliceRange.ts"],"names":[],"mappings":";;;;;AAAA,8FAAyE;AACzE,oFAA4D;AAe5D,SAAwB,aAAa,CACnC,WAAwB,EACxB,eAAuB,EACvB,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAA,+BAAqB,EAAC,WAAW,CAAC,CAAC;IAGnD,MAAM,SAAS,GAAG,uBAAgB;SAC/B,eAAe,EAAE;SACjB,QAAQ,EAAE;SACV,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7C,MAAM,qBAAqB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAE9C,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAG9C,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,EAAE;YACZ,IAAI,GAAG,CAAC,CAAC;SACV;QACD,IAAI,CAAC,GAAG,IAAI,EAAE;YACZ,IAAI,GAAG,CAAC,CAAC;SACV;KACF;IAED,OAAO;QACL,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,WAAW;QAClB,eAAe;QACf,UAAU;KACX,CAAC;AACJ,CAAC;AA1CD,gCA0CC"}
@@ -8,7 +8,7 @@ const getSpacingInNormalDirection_1 = __importDefault(require("./getSpacingInNor
8
8
  function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId) {
9
9
  const { viewPlaneNormal } = camera;
10
10
  const volumeActors = viewport.getActors();
11
- if (!volumeActors && !volumeActors.length) {
11
+ if (!volumeActors || !volumeActors.length) {
12
12
  return { spacingInNormalDirection: null, imageVolume: null };
13
13
  }
14
14
  const numVolumeActors = volumeActors.length;
@@ -13,8 +13,8 @@ function getVolumeViewportsContainingVolumeId(volumeId, renderingEngineId) {
13
13
  renderingEngines.forEach((renderingEngine) => {
14
14
  const viewports = renderingEngine.getVolumeViewports();
15
15
  const filteredViewports = viewports.filter((vp) => {
16
- const actors = vp.getActors();
17
- return actors.some((actor) => actor.volumeActor && actor.uid === volumeId);
16
+ const actorEntries = vp.getActors();
17
+ return actorEntries.some((actorEntry) => actorEntry.actor && actorEntry.uid === volumeId);
18
18
  });
19
19
  sameVolumeViewports.push(...filteredViewports);
20
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getVolumeViewportsContainingVolumeId.js","sourceRoot":"","sources":["../../../src/utilities/getVolumeViewportsContainingVolumeId.ts"],"names":[],"mappings":";;AACA,8EAG+C;AAQ/C,SAAS,oCAAoC,CAC3C,QAAgB,EAChB,iBAA0B;IAG1B,IAAI,gBAAgB,CAAC;IACrB,IAAI,iBAAiB,EAAE;QACrB,gBAAgB,GAAG,CAAC,IAAA,uCAAkB,EAAC,iBAAiB,CAAC,CAAC,CAAC;KAC5D;SAAM;QACL,gBAAgB,GAAG,IAAA,wCAAmB,GAAE,CAAC;KAC1C;IAED,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAE/B,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;QAC3C,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;QACvD,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CACvD,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,mBAAmB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,kBAAe,oCAAoC,CAAC"}
1
+ {"version":3,"file":"getVolumeViewportsContainingVolumeId.js","sourceRoot":"","sources":["../../../src/utilities/getVolumeViewportsContainingVolumeId.ts"],"names":[],"mappings":";;AACA,8EAG+C;AAQ/C,SAAS,oCAAoC,CAC3C,QAAgB,EAChB,iBAA0B;IAG1B,IAAI,gBAAgB,CAAC;IACrB,IAAI,iBAAiB,EAAE;QACrB,gBAAgB,GAAG,CAAC,IAAA,uCAAkB,EAAC,iBAAiB,CAAC,CAAC,CAAC;KAC5D;SAAM;QACL,gBAAgB,GAAG,IAAA,wCAAmB,GAAE,CAAC;KAC1C;IAED,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAE/B,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;QAC3C,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;QACvD,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAChD,MAAM,YAAY,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,QAAQ,CAChE,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,mBAAmB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,kBAAe,oCAAoC,CAAC"}
@@ -1,4 +1,4 @@
1
- import invertRgbTransferFunction from './invertRgbTransferFunction';
1
+ import csUtils from './invertRgbTransferFunction';
2
2
  import scaleRgbTransferFunction from './scaleRgbTransferFunction';
3
3
  import triggerEvent from './triggerEvent';
4
4
  import uuidv4 from './uuidv4';
@@ -23,6 +23,10 @@ import loadImageToCanvas from './loadImageToCanvas';
23
23
  import renderToCanvas from './renderToCanvas';
24
24
  import worldToImageCoords from './worldToImageCoords';
25
25
  import imageToWorldCoords from './imageToWorldCoords';
26
+ import getSliceRange from './getSliceRange';
27
+ import snapFocalPointToSlice from './snapFocalPointToSlice';
28
+ import getImageSliceDataForVolumeViewport from './getImageSliceDataForVolumeViewport';
29
+ import getScalingParameters from './getScalingParameters';
26
30
  import * as planar from './planar';
27
31
  import * as windowLevel from './windowLevel';
28
- export { invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getVolumeViewportsContainingVolumeId, transformWorldToIndex, prefetchStack, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, };
32
+ export { csUtils as invertRgbTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, calibratedPixelSpacingMetadataProvider, uuidv4, planar, getMinMax, getRuntimeId, isEqual, isOpposite, createFloat32SharedArray, createUint8SharedArray, windowLevel, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getVolumeViewportsContainingVolumeId, transformWorldToIndex, prefetchStack, loadImageToCanvas, renderToCanvas, worldToImageCoords, imageToWorldCoords, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, getScalingParameters, };
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.imageToWorldCoords = exports.worldToImageCoords = exports.renderToCanvas = exports.loadImageToCanvas = exports.prefetchStack = exports.transformWorldToIndex = exports.getVolumeViewportsContainingVolumeId = exports.getVolumeViewportsContainingSameVolumes = exports.indexWithinDimensions = exports.getVolumeActorCorners = exports.getTargetVolumeAndSpacingInNormalDir = exports.getSpacingInNormalDirection = exports.getClosestImageId = exports.windowLevel = exports.createUint8SharedArray = exports.createFloat32SharedArray = exports.isOpposite = exports.isEqual = exports.getRuntimeId = exports.getMinMax = exports.planar = exports.uuidv4 = exports.calibratedPixelSpacingMetadataProvider = exports.imageIdToURI = exports.triggerEvent = exports.scaleRgbTransferFunction = exports.invertRgbTransferFunction = void 0;
25
+ exports.getScalingParameters = exports.getImageSliceDataForVolumeViewport = exports.snapFocalPointToSlice = exports.getSliceRange = exports.imageToWorldCoords = exports.worldToImageCoords = exports.renderToCanvas = exports.loadImageToCanvas = exports.prefetchStack = exports.transformWorldToIndex = exports.getVolumeViewportsContainingVolumeId = exports.getVolumeViewportsContainingSameVolumes = exports.indexWithinDimensions = exports.getVolumeActorCorners = exports.getTargetVolumeAndSpacingInNormalDir = exports.getSpacingInNormalDirection = exports.getClosestImageId = exports.windowLevel = exports.createUint8SharedArray = exports.createFloat32SharedArray = exports.isOpposite = exports.isEqual = exports.getRuntimeId = exports.getMinMax = exports.planar = exports.uuidv4 = exports.calibratedPixelSpacingMetadataProvider = exports.imageIdToURI = exports.triggerEvent = exports.scaleRgbTransferFunction = exports.invertRgbTransferFunction = void 0;
26
26
  const invertRgbTransferFunction_1 = __importDefault(require("./invertRgbTransferFunction"));
27
27
  exports.invertRgbTransferFunction = invertRgbTransferFunction_1.default;
28
28
  const scaleRgbTransferFunction_1 = __importDefault(require("./scaleRgbTransferFunction"));
@@ -73,6 +73,14 @@ const worldToImageCoords_1 = __importDefault(require("./worldToImageCoords"));
73
73
  exports.worldToImageCoords = worldToImageCoords_1.default;
74
74
  const imageToWorldCoords_1 = __importDefault(require("./imageToWorldCoords"));
75
75
  exports.imageToWorldCoords = imageToWorldCoords_1.default;
76
+ const getSliceRange_1 = __importDefault(require("./getSliceRange"));
77
+ exports.getSliceRange = getSliceRange_1.default;
78
+ const snapFocalPointToSlice_1 = __importDefault(require("./snapFocalPointToSlice"));
79
+ exports.snapFocalPointToSlice = snapFocalPointToSlice_1.default;
80
+ const getImageSliceDataForVolumeViewport_1 = __importDefault(require("./getImageSliceDataForVolumeViewport"));
81
+ exports.getImageSliceDataForVolumeViewport = getImageSliceDataForVolumeViewport_1.default;
82
+ const getScalingParameters_1 = __importDefault(require("./getScalingParameters"));
83
+ exports.getScalingParameters = getScalingParameters_1.default;
76
84
  const planar = __importStar(require("./planar"));
77
85
  exports.planar = planar;
78
86
  const windowLevel = __importStar(require("./windowLevel"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAAoE;AA+BlE,oCA/BK,mCAAyB,CA+BL;AA9B3B,0FAAkE;AA+BhE,mCA/BK,kCAAwB,CA+BL;AA9B1B,kEAA0C;AA+BxC,uBA/BK,sBAAY,CA+BL;AA9Bd,sDAA8B;AAiC5B,iBAjCK,gBAAM,CAiCL;AAhCR,4DAAoC;AAkClC,oBAlCK,mBAAS,CAkCL;AAjCX,kEAA0C;AAkCxC,uBAlCK,sBAAY,CAkCL;AAjCd,kEAA0C;AA4BxC,uBA5BK,sBAAY,CA4BL;AA3Bd,sHAA8F;AA4B5F,iDA5BK,gDAAsC,CA4BL;AA3BxC,wDAAgC;AAgC9B,kBAhCK,iBAAO,CAgCL;AA/BT,8DAAsC;AAgCpC,qBAhCK,oBAAU,CAgCL;AA/BZ,sFAA8D;AAiC5D,iCAjCK,gCAAsB,CAiCL;AAhCxB,0FAAkE;AA+BhE,mCA/BK,kCAAwB,CA+BL;AA9B1B,4EAAoD;AAiClD,4BAjCK,2BAAiB,CAiCL;AAhCnB,gGAAwE;AAiCtE,sCAjCK,qCAA2B,CAiCL;AAhC7B,kHAA0F;AAiCxF,+CAjCK,8CAAoC,CAiCL;AAhCtC,oFAA4D;AAiC1D,gCAjCK,+BAAqB,CAiCL;AAhCvB,oFAA4D;AAiC1D,gCAjCK,+BAAqB,CAiCL;AAhCvB,wHAAgG;AAiC9F,kDAjCK,iDAAuC,CAiCL;AAhCzC,kHAA0F;AAiCxF,+CAjCK,8CAAoC,CAiCL;AAhCtC,oFAA4D;AAiC1D,gCAjCK,+BAAqB,CAiCL;AAhCvB,oEAA4C;AAiC1C,wBAjCK,uBAAa,CAiCL;AAhCf,4EAAoD;AAiClD,4BAjCK,2BAAiB,CAiCL;AAhCnB,sEAA8C;AAiC5C,yBAjCK,wBAAc,CAiCL;AAhChB,8EAAsD;AAiCpD,6BAjCK,4BAAkB,CAiCL;AAhCpB,8EAAsD;AAiCpD,6BAjCK,4BAAkB,CAiCL;AA9BpB,iDAAmC;AAUjC,wBAAM;AATR,2DAA6C;AAgB3C,kCAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAAkD;AAmCrC,oCAnCN,mCAAO,CAmCwB;AAlCtC,0FAAkE;AAmChE,mCAnCK,kCAAwB,CAmCL;AAlC1B,kEAA0C;AAmCxC,uBAnCK,sBAAY,CAmCL;AAlCd,sDAA8B;AAqC5B,iBArCK,gBAAM,CAqCL;AApCR,4DAAoC;AAsClC,oBAtCK,mBAAS,CAsCL;AArCX,kEAA0C;AAsCxC,uBAtCK,sBAAY,CAsCL;AArCd,kEAA0C;AAgCxC,uBAhCK,sBAAY,CAgCL;AA/Bd,sHAA8F;AAgC5F,iDAhCK,gDAAsC,CAgCL;AA/BxC,wDAAgC;AAoC9B,kBApCK,iBAAO,CAoCL;AAnCT,8DAAsC;AAoCpC,qBApCK,oBAAU,CAoCL;AAnCZ,sFAA8D;AAqC5D,iCArCK,gCAAsB,CAqCL;AApCxB,0FAAkE;AAmChE,mCAnCK,kCAAwB,CAmCL;AAlC1B,4EAAoD;AAqClD,4BArCK,2BAAiB,CAqCL;AApCnB,gGAAwE;AAqCtE,sCArCK,qCAA2B,CAqCL;AApC7B,kHAA0F;AAqCxF,+CArCK,8CAAoC,CAqCL;AApCtC,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,wHAAgG;AAqC9F,kDArCK,iDAAuC,CAqCL;AApCzC,kHAA0F;AAqCxF,+CArCK,8CAAoC,CAqCL;AApCtC,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,oEAA4C;AAqC1C,wBArCK,uBAAa,CAqCL;AApCf,4EAAoD;AAqClD,4BArCK,2BAAiB,CAqCL;AApCnB,sEAA8C;AAqC5C,yBArCK,wBAAc,CAqCL;AApChB,8EAAsD;AAqCpD,6BArCK,4BAAkB,CAqCL;AApCpB,8EAAsD;AAqCpD,6BArCK,4BAAkB,CAqCL;AApCpB,oEAA4C;AAqC1C,wBArCK,uBAAa,CAqCL;AApCf,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,8GAAsF;AAqCpF,6CArCK,4CAAkC,CAqCL;AApCpC,kFAA0D;AAqCxD,+BArCK,8BAAoB,CAqCL;AAlCtB,iDAAmC;AAUjC,wBAAM;AATR,2DAA6C;AAgB3C,kCAAW"}
@@ -27,6 +27,7 @@ const metaData = __importStar(require("../metaData"));
27
27
  const enums_1 = require("../enums");
28
28
  const imageLoadPoolManager_1 = __importDefault(require("../requestPool/imageLoadPoolManager"));
29
29
  const renderToCanvas_1 = __importDefault(require("./renderToCanvas"));
30
+ const getScalingParameters_1 = __importDefault(require("./getScalingParameters"));
30
31
  function loadImageToCanvas(canvas, imageId, requestType = enums_1.RequestType.Thumbnail, priority = -5) {
31
32
  return new Promise((resolve, reject) => {
32
33
  function successCallback(image, imageId) {
@@ -46,15 +47,7 @@ function loadImageToCanvas(canvas, imageId, requestType = enums_1.RequestType.Th
46
47
  errorCallback.call(this, error, imageId);
47
48
  });
48
49
  }
49
- const modalityLutModule = metaData.get('modalityLutModule', imageId) || {};
50
- const suvFactor = metaData.get('scalingModule', imageId) || {};
51
- const generalSeriesModule = metaData.get('generalSeriesModule', imageId) || {};
52
- const scalingParameters = {
53
- rescaleSlope: modalityLutModule.rescaleSlope,
54
- rescaleIntercept: modalityLutModule.rescaleIntercept,
55
- modality: generalSeriesModule.modality,
56
- suvbw: suvFactor.suvbw,
57
- };
50
+ const scalingParameters = (0, getScalingParameters_1.default)(imageId);
58
51
  const options = {
59
52
  targetBuffer: {
60
53
  type: 'Float32Array',
@@ -1 +1 @@
1
- {"version":3,"file":"loadImageToCanvas.js","sourceRoot":"","sources":["../../../src/utilities/loadImageToCanvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadImageToCanvas.js","sourceRoot":"","sources":["../../../src/utilities/loadImageToCanvas.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA,gDAAmD;AACnD,sDAAwC;AACxC,oCAAuC;AACvC,+FAAuE;AACvE,sEAA8C;AAC9C,kFAA0D;AAoB1D,SAAwB,iBAAiB,CACvC,MAAyB,EACzB,OAAe,EACf,WAAW,GAAG,mBAAW,CAAC,SAAS,EACnC,QAAQ,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,eAAe,CAAC,KAAa,EAAE,OAAe;YACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAExE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAA,wBAAc,EAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;QAED,SAAS,aAAa,CAAC,KAAY,EAAE,OAAe;YAClD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO;YACjD,OAAO,IAAA,+BAAiB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAC7C,CAAC,KAAK,EAAE,EAAE;gBACR,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC3D,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC,CACF,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,OAAO,CAAC,CAAC;QAIxD,MAAM,OAAO,GAAG;YACd,YAAY,EAAE;gBACZ,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;aACb;YACD,QAAQ,EAAE;gBACR,iBAAiB;aAClB;YACD,WAAW;SACZ,CAAC;QAEF,8BAAoB,CAAC,UAAU,CAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAC9C,WAAW,EACX,EAAE,OAAO,EAAE,EACX,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAtDD,oCAsDC;AAMD,SAAS,gBAAgB,CAAC,KAAK;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/D,MAAM,mBAAmB,GACvB,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAErD,IACE,iBAAiB,CAAC,YAAY,KAAK,SAAS;QAC5C,iBAAiB,CAAC,gBAAgB,KAAK,SAAS,EAChD;QACA,IAAI,mBAAmB,CAAC,QAAQ,KAAK,IAAI,EAAE;YACzC,OAAO,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC;SACtC;QAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ActorSliceRange, Point3 } from '../types';
2
+ export default function snapFocalPointToSlice(focalPoint: Point3, position: Point3, sliceRange: ActorSliceRange, viewPlaneNormal: Point3, spacingInNormalDirection: number, deltaFrames: number): {
3
+ newFocalPoint: Point3;
4
+ newPosition: Point3;
5
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const gl_matrix_1 = require("gl-matrix");
4
+ function snapFocalPointToSlice(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, deltaFrames) {
5
+ const { min, max, current } = sliceRange;
6
+ const posDiffFromFocalPoint = gl_matrix_1.vec3.create();
7
+ gl_matrix_1.vec3.sub(posDiffFromFocalPoint, position, focalPoint);
8
+ const steps = Math.round((max - min) / spacingInNormalDirection);
9
+ const fraction = (current - min) / (max - min);
10
+ const floatingStepNumber = fraction * steps;
11
+ let frameIndex = Math.round(floatingStepNumber);
12
+ let newFocalPoint = [
13
+ focalPoint[0] -
14
+ viewPlaneNormal[0] * floatingStepNumber * spacingInNormalDirection,
15
+ focalPoint[1] -
16
+ viewPlaneNormal[1] * floatingStepNumber * spacingInNormalDirection,
17
+ focalPoint[2] -
18
+ viewPlaneNormal[2] * floatingStepNumber * spacingInNormalDirection,
19
+ ];
20
+ frameIndex += deltaFrames;
21
+ if (frameIndex > steps) {
22
+ frameIndex = steps;
23
+ }
24
+ else if (frameIndex < 0) {
25
+ frameIndex = 0;
26
+ }
27
+ const newSlicePosFromMin = frameIndex * spacingInNormalDirection;
28
+ newFocalPoint = [
29
+ newFocalPoint[0] + viewPlaneNormal[0] * newSlicePosFromMin,
30
+ newFocalPoint[1] + viewPlaneNormal[1] * newSlicePosFromMin,
31
+ newFocalPoint[2] + viewPlaneNormal[2] * newSlicePosFromMin,
32
+ ];
33
+ const newPosition = [
34
+ newFocalPoint[0] + posDiffFromFocalPoint[0],
35
+ newFocalPoint[1] + posDiffFromFocalPoint[1],
36
+ newFocalPoint[2] + posDiffFromFocalPoint[2],
37
+ ];
38
+ return { newFocalPoint, newPosition };
39
+ }
40
+ exports.default = snapFocalPointToSlice;
41
+ //# sourceMappingURL=snapFocalPointToSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapFocalPointToSlice.js","sourceRoot":"","sources":["../../../src/utilities/snapFocalPointToSlice.ts"],"names":[],"mappings":";;AAAA,yCAAiC;AAkBjC,SAAwB,qBAAqB,CAC3C,UAAkB,EAClB,QAAgB,EAChB,UAA2B,EAC3B,eAAuB,EACvB,wBAAgC,EAChC,WAAmB;IAEnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAGzC,MAAM,qBAAqB,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;IAE5C,gBAAI,CAAC,GAAG,CAAC,qBAAqB,EAAQ,QAAQ,EAAQ,UAAU,CAAC,CAAC;IAGlE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAGjE,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC5C,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAGhD,IAAI,aAAa,GAAW;QAC1B,UAAU,CAAC,CAAC,CAAC;YACX,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG,wBAAwB;QACpE,UAAU,CAAC,CAAC,CAAC;YACX,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG,wBAAwB;QACpE,UAAU,CAAC,CAAC,CAAC;YACX,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG,wBAAwB;KACrE,CAAC;IAGF,UAAU,IAAI,WAAW,CAAC;IAG1B,IAAI,UAAU,GAAG,KAAK,EAAE;QACtB,UAAU,GAAG,KAAK,CAAC;KACpB;SAAM,IAAI,UAAU,GAAG,CAAC,EAAE;QACzB,UAAU,GAAG,CAAC,CAAC;KAChB;IAGD,MAAM,kBAAkB,GAAG,UAAU,GAAG,wBAAwB,CAAC;IAEjE,aAAa,GAAW;QACtB,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB;QAC1D,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB;QAC1D,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,kBAAkB;KAC3D,CAAC;IAEF,MAAM,WAAW,GAAW;QAC1B,aAAa,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAC3C,aAAa,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;QAC3C,aAAa,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;KAC5C,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AA3DD,wCA2DC"}
@@ -104,7 +104,10 @@ class RenderingEngine {
104
104
  if (!viewports.length) {
105
105
  this._clearAnimationFrame();
106
106
  }
107
- this.resize();
107
+ const immediate = true;
108
+ const resetPan = false;
109
+ const resetZoom = false;
110
+ this.resize(immediate, resetPan, resetZoom);
108
111
  }
109
112
  setViewports(publicViewportInputEntries) {
110
113
  const viewportInputEntries = this._normalizeViewportInputEntries(publicViewportInputEntries);
@@ -307,7 +310,8 @@ class RenderingEngine {
307
310
  if (type === ViewportType.STACK) {
308
311
  viewport = new StackViewport(viewportInput);
309
312
  }
310
- else if (type === ViewportType.ORTHOGRAPHIC) {
313
+ else if (type === ViewportType.ORTHOGRAPHIC ||
314
+ type === ViewportType.PERSPECTIVE) {
311
315
  viewport = new VolumeViewport(viewportInput);
312
316
  }
313
317
  else {