@cornerstonejs/core 1.25.0 → 1.26.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 (98) hide show
  1. package/dist/cjs/RenderingEngine/BaseVolumeViewport.d.ts +1 -1
  2. package/dist/cjs/RenderingEngine/BaseVolumeViewport.js.map +1 -1
  3. package/dist/cjs/RenderingEngine/RenderingEngine.d.ts +5 -2
  4. package/dist/cjs/RenderingEngine/RenderingEngine.js +13 -5
  5. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  6. package/dist/cjs/RenderingEngine/VideoViewport.d.ts +51 -0
  7. package/dist/cjs/RenderingEngine/VideoViewport.js +355 -0
  8. package/dist/cjs/RenderingEngine/VideoViewport.js.map +1 -0
  9. package/dist/cjs/RenderingEngine/VolumeViewport.js +6 -0
  10. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  11. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  12. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
  13. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
  14. package/dist/cjs/enums/VideoViewport.d.ts +5 -0
  15. package/dist/cjs/enums/VideoViewport.js +10 -0
  16. package/dist/cjs/enums/VideoViewport.js.map +1 -0
  17. package/dist/cjs/enums/ViewportType.d.ts +2 -1
  18. package/dist/cjs/enums/ViewportType.js +1 -0
  19. package/dist/cjs/enums/ViewportType.js.map +1 -1
  20. package/dist/cjs/enums/index.d.ts +2 -1
  21. package/dist/cjs/enums/index.js +26 -1
  22. package/dist/cjs/enums/index.js.map +1 -1
  23. package/dist/cjs/getEnabledElement.js.map +1 -1
  24. package/dist/cjs/index.d.ts +2 -1
  25. package/dist/cjs/index.js +3 -1
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/types/IRenderingEngine.d.ts +5 -2
  28. package/dist/cjs/types/IVideoViewport.d.ts +12 -0
  29. package/dist/cjs/types/IVideoViewport.js +3 -0
  30. package/dist/cjs/types/IVideoViewport.js.map +1 -0
  31. package/dist/cjs/types/VideoViewportProperties.d.ts +10 -0
  32. package/dist/cjs/types/VideoViewportProperties.js +3 -0
  33. package/dist/cjs/types/VideoViewportProperties.js.map +1 -0
  34. package/dist/cjs/types/VideoViewportTypes.d.ts +18 -0
  35. package/dist/cjs/types/VideoViewportTypes.js +3 -0
  36. package/dist/cjs/types/VideoViewportTypes.js.map +1 -0
  37. package/dist/cjs/types/index.d.ts +4 -1
  38. package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js +10 -2
  39. package/dist/cjs/utilities/getTargetVolumeAndSpacingInNormalDir.js.map +1 -1
  40. package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +1 -1
  41. package/dist/esm/RenderingEngine/BaseVolumeViewport.js.map +1 -1
  42. package/dist/esm/RenderingEngine/RenderingEngine.d.ts +5 -2
  43. package/dist/esm/RenderingEngine/RenderingEngine.js +13 -5
  44. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  45. package/dist/esm/RenderingEngine/VideoViewport.d.ts +51 -0
  46. package/dist/esm/RenderingEngine/VideoViewport.js +330 -0
  47. package/dist/esm/RenderingEngine/VideoViewport.js.map +1 -0
  48. package/dist/esm/RenderingEngine/VolumeViewport.js +6 -0
  49. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  50. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  51. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
  52. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
  53. package/dist/esm/enums/VideoViewport.d.ts +5 -0
  54. package/dist/esm/enums/VideoViewport.js +7 -0
  55. package/dist/esm/enums/VideoViewport.js.map +1 -0
  56. package/dist/esm/enums/ViewportType.d.ts +2 -1
  57. package/dist/esm/enums/ViewportType.js +1 -0
  58. package/dist/esm/enums/ViewportType.js.map +1 -1
  59. package/dist/esm/enums/index.d.ts +2 -1
  60. package/dist/esm/enums/index.js +2 -1
  61. package/dist/esm/enums/index.js.map +1 -1
  62. package/dist/esm/getEnabledElement.js.map +1 -1
  63. package/dist/esm/index.d.ts +2 -1
  64. package/dist/esm/index.js +2 -1
  65. package/dist/esm/index.js.map +1 -1
  66. package/dist/esm/types/IRenderingEngine.d.ts +5 -2
  67. package/dist/esm/types/IVideoViewport.d.ts +12 -0
  68. package/dist/esm/types/IVideoViewport.js +2 -0
  69. package/dist/esm/types/IVideoViewport.js.map +1 -0
  70. package/dist/esm/types/VideoViewportProperties.d.ts +10 -0
  71. package/dist/esm/types/VideoViewportProperties.js +2 -0
  72. package/dist/esm/types/VideoViewportProperties.js.map +1 -0
  73. package/dist/esm/types/VideoViewportTypes.d.ts +18 -0
  74. package/dist/esm/types/VideoViewportTypes.js +2 -0
  75. package/dist/esm/types/VideoViewportTypes.js.map +1 -0
  76. package/dist/esm/types/index.d.ts +4 -1
  77. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +10 -2
  78. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js.map +1 -1
  79. package/dist/umd/index.js +1 -1
  80. package/dist/umd/index.js.map +1 -1
  81. package/package.json +2 -2
  82. package/src/RenderingEngine/BaseVolumeViewport.ts +2 -5
  83. package/src/RenderingEngine/RenderingEngine.ts +38 -21
  84. package/src/RenderingEngine/VideoViewport.ts +523 -0
  85. package/src/RenderingEngine/VolumeViewport.ts +8 -0
  86. package/src/RenderingEngine/helpers/viewportTypeToViewportClass.ts +2 -0
  87. package/src/enums/VideoViewport.ts +9 -0
  88. package/src/enums/ViewportType.ts +1 -0
  89. package/src/enums/index.ts +2 -0
  90. package/src/getEnabledElement.ts +4 -2
  91. package/src/index.ts +2 -0
  92. package/src/types/IEnabledElement.ts +4 -1
  93. package/src/types/IRenderingEngine.ts +5 -2
  94. package/src/types/IVideoViewport.ts +35 -0
  95. package/src/types/VideoViewportProperties.ts +17 -0
  96. package/src/types/VideoViewportTypes.ts +20 -0
  97. package/src/types/index.ts +11 -0
  98. package/src/utilities/getTargetVolumeAndSpacingInNormalDir.ts +25 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "1.25.0",
3
+ "version": "1.26.1",
4
4
  "description": "",
5
5
  "main": "src/index.ts",
6
6
  "types": "dist/esm/index.d.ts",
@@ -46,5 +46,5 @@
46
46
  "type": "individual",
47
47
  "url": "https://ohif.org/donate"
48
48
  },
49
- "gitHead": "d3a8801264dd9284a1839aa74ec4d3685240e163"
49
+ "gitHead": "ae311e637fc7751c06e14c71d704d58ce572a7d4"
50
50
  }
@@ -31,7 +31,6 @@ import type {
31
31
  Point2,
32
32
  Point3,
33
33
  VOIRange,
34
- ViewportProperties,
35
34
  VolumeViewportProperties,
36
35
  } from '../types';
37
36
  import { VoiModifiedEventDetail } from '../types/EventTypes';
@@ -79,7 +78,7 @@ abstract class BaseVolumeViewport extends Viewport implements IVolumeViewport {
79
78
  VolumeViewportProperties
80
79
  >();
81
80
 
82
- private viewportProperties: VolumeViewportProperties = {};
81
+ protected viewportProperties: VolumeViewportProperties = {};
83
82
 
84
83
  constructor(props: ViewportInput) {
85
84
  super(props);
@@ -606,9 +605,7 @@ abstract class BaseVolumeViewport extends Viewport implements IVolumeViewport {
606
605
 
607
606
  if (properties.slabThickness !== undefined) {
608
607
  this.setSlabThickness(properties.slabThickness);
609
- //We need to set the current slabthickness here since setSlabThickness is define in VolumeViewport
610
- // this.currentViewportProperties.get(volumeId).slabThickness =
611
- // properties.slabThickness;
608
+ //We need to set the current slabThickness here since setSlabThickness is define in VolumeViewport
612
609
  this.viewportProperties.slabThickness = properties.slabThickness;
613
610
  }
614
611
 
@@ -11,8 +11,13 @@ import viewportTypeUsesCustomRenderingPipeline from './helpers/viewportTypeUsesC
11
11
  import getOrCreateCanvas from './helpers/getOrCreateCanvas';
12
12
  import { getShouldUseCPURendering, isCornerstoneInitialized } from '../init';
13
13
  import type IStackViewport from '../types/IStackViewport';
14
+ import type IVideoViewport from '../types/IVideoViewport';
14
15
  import type IRenderingEngine from '../types/IRenderingEngine';
15
16
  import type IVolumeViewport from '../types/IVolumeViewport';
17
+ import type { IViewport } from '../types/IViewport';
18
+ import VideoViewport from './VideoViewport';
19
+ import viewportTypeToViewportClass from './helpers/viewportTypeToViewportClass';
20
+
16
21
  import type * as EventTypes from '../types/EventTypes';
17
22
  import type {
18
23
  ViewportInput,
@@ -20,7 +25,7 @@ import type {
20
25
  InternalViewportInput,
21
26
  NormalizedViewportInput,
22
27
  } from '../types/IViewport';
23
- import { OrientationAxis, ViewportStatus } from '../enums';
28
+ import { OrientationAxis } from '../enums';
24
29
  import VolumeViewport3D from './VolumeViewport3D';
25
30
 
26
31
  type ViewportDisplayCoords = {
@@ -73,7 +78,7 @@ class RenderingEngine implements IRenderingEngine {
73
78
  public hasBeenDestroyed: boolean;
74
79
  public offscreenMultiRenderWindow: any;
75
80
  readonly offScreenCanvasContainer: any; // WebGL
76
- private _viewports: Map<string, IStackViewport | IVolumeViewport>;
81
+ private _viewports: Map<string, IViewport>;
77
82
  private _needsRender: Set<string> = new Set();
78
83
  private _animationFrameSet = false;
79
84
  private _animationFrameHandle: number | null = null;
@@ -346,7 +351,7 @@ class RenderingEngine implements IRenderingEngine {
346
351
  *
347
352
  * @returns viewport
348
353
  */
349
- public getViewport(viewportId: string): IStackViewport | IVolumeViewport {
354
+ public getViewport(viewportId: string): IViewport {
350
355
  return this._viewports.get(viewportId);
351
356
  }
352
357
 
@@ -355,7 +360,7 @@ class RenderingEngine implements IRenderingEngine {
355
360
  *
356
361
  * @returns Array of viewports
357
362
  */
358
- public getViewports(): Array<IStackViewport | IVolumeViewport> {
363
+ public getViewports(): Array<IViewport> {
359
364
  this._throwIfDestroyed();
360
365
 
361
366
  return this._getViewportsAsArray();
@@ -371,12 +376,30 @@ class RenderingEngine implements IRenderingEngine {
371
376
  const viewports = this.getViewports();
372
377
 
373
378
  const isStackViewport = (
374
- viewport: IStackViewport | IVolumeViewport
379
+ viewport: IViewport
375
380
  ): viewport is StackViewport => {
376
381
  return viewport instanceof StackViewport;
377
382
  };
378
383
 
379
- return viewports.filter(isStackViewport);
384
+ return viewports.filter(isStackViewport) as Array<IStackViewport>;
385
+ }
386
+
387
+ /**
388
+ * Filters all the available viewports and return the stack viewports
389
+ * @returns stack viewports registered on the rendering Engine
390
+ */
391
+ public getVideoViewports(): Array<IVideoViewport> {
392
+ this._throwIfDestroyed();
393
+
394
+ const viewports = this.getViewports();
395
+
396
+ const isVideoViewport = (
397
+ viewport: IViewport
398
+ ): viewport is VideoViewport => {
399
+ return viewport instanceof VideoViewport;
400
+ };
401
+
402
+ return viewports.filter(isVideoViewport) as Array<IVideoViewport>;
380
403
  }
381
404
 
382
405
  /**
@@ -389,7 +412,7 @@ class RenderingEngine implements IRenderingEngine {
389
412
  const viewports = this.getViewports();
390
413
 
391
414
  const isVolumeViewport = (
392
- viewport: IStackViewport | IVolumeViewport
415
+ viewport: IViewport
393
416
  ): viewport is BaseVolumeViewport => {
394
417
  return viewport instanceof BaseVolumeViewport;
395
418
  };
@@ -822,15 +845,9 @@ class RenderingEngine implements IRenderingEngine {
822
845
  };
823
846
 
824
847
  // 4. Create a proper viewport based on the type of the viewport
848
+ const ViewportType = viewportTypeToViewportClass[type];
825
849
 
826
- if (type !== ViewportType.STACK) {
827
- // In the future these will need to be pluggable, but we aren't there yet
828
- // and these are just Stacks for now.
829
- throw new Error('Support for fully custom viewports not yet implemented');
830
- }
831
-
832
- // 4.a Create stack viewport
833
- const viewport = new StackViewport(viewportInput);
850
+ const viewport = new ViewportType(viewportInput);
834
851
 
835
852
  // 5. Storing the viewports
836
853
  this._viewports.set(viewportId, viewport);
@@ -961,7 +978,7 @@ class RenderingEngine implements IRenderingEngine {
961
978
  * @returns _xOffset the final offset which will be used for the next viewport
962
979
  */
963
980
  private _resize(
964
- viewportsDrivenByVtkJs: Array<IStackViewport | IVolumeViewport>,
981
+ viewportsDrivenByVtkJs: Array<IViewport>,
965
982
  offScreenCanvasWidth: number,
966
983
  offScreenCanvasHeight: number
967
984
  ): number {
@@ -1018,7 +1035,7 @@ class RenderingEngine implements IRenderingEngine {
1018
1035
  * @param _xOffset - xOffSet to draw
1019
1036
  */
1020
1037
  private _getViewportCoordsOnOffScreenCanvas(
1021
- viewport: InternalViewportInput | IStackViewport | IVolumeViewport,
1038
+ viewport: InternalViewportInput | IViewport,
1022
1039
  offScreenCanvasWidth: number,
1023
1040
  offScreenCanvasHeight: number,
1024
1041
  _xOffset: number
@@ -1177,7 +1194,7 @@ class RenderingEngine implements IRenderingEngine {
1177
1194
  * @param viewport - The viewport to render
1178
1195
  */
1179
1196
  private renderViewportUsingCustomOrVtkPipeline(
1180
- viewport: IStackViewport | IVolumeViewport
1197
+ viewport: IViewport
1181
1198
  ): EventTypes.ImageRenderedEventDetail[] {
1182
1199
  let eventDetail;
1183
1200
 
@@ -1187,7 +1204,7 @@ class RenderingEngine implements IRenderingEngine {
1187
1204
  viewport.sWidth < VIEWPORT_MIN_SIZE ||
1188
1205
  viewport.sHeight < VIEWPORT_MIN_SIZE
1189
1206
  ) {
1190
- console.log('Viewport is too small', viewport.sWidth, viewport.sHeight);
1207
+ console.warn('Viewport is too small', viewport.sWidth, viewport.sHeight);
1191
1208
  return;
1192
1209
  }
1193
1210
  if (viewportTypeUsesCustomRenderingPipeline(viewport.type) === true) {
@@ -1221,7 +1238,7 @@ class RenderingEngine implements IRenderingEngine {
1221
1238
  * @param offScreenCanvas - The offscreen canvas to render from.
1222
1239
  */
1223
1240
  private _renderViewportFromVtkCanvasToOnscreenCanvas(
1224
- viewport: IStackViewport | IVolumeViewport,
1241
+ viewport: IViewport,
1225
1242
  offScreenCanvas
1226
1243
  ): EventTypes.ImageRenderedEventDetail {
1227
1244
  const {
@@ -1267,7 +1284,7 @@ class RenderingEngine implements IRenderingEngine {
1267
1284
  *
1268
1285
  * @param viewport - The `Viewport` to render.
1269
1286
  */
1270
- private _resetViewport(viewport: IStackViewport | IVolumeViewport) {
1287
+ private _resetViewport(viewport: IViewport) {
1271
1288
  const renderingEngineId = this.id;
1272
1289
 
1273
1290
  const { element, canvas, id: viewportId } = viewport;