@cornerstonejs/core 1.77.13 → 1.78.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 (118) hide show
  1. package/dist/cjs/RenderingEngine/RenderingEngine.d.ts +0 -2
  2. package/dist/cjs/RenderingEngine/RenderingEngine.js +0 -9
  3. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  4. package/dist/cjs/RenderingEngine/StackViewport.js +2 -2
  5. package/dist/cjs/RenderingEngine/VideoViewport.d.ts +2 -1
  6. package/dist/cjs/RenderingEngine/VideoViewport.js +15 -6
  7. package/dist/cjs/RenderingEngine/VideoViewport.js.map +1 -1
  8. package/dist/cjs/RenderingEngine/Viewport.d.ts +2 -1
  9. package/dist/cjs/RenderingEngine/Viewport.js +3 -0
  10. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  11. package/dist/cjs/RenderingEngine/WSIViewport.d.ts +82 -0
  12. package/dist/cjs/RenderingEngine/WSIViewport.js +447 -0
  13. package/dist/cjs/RenderingEngine/WSIViewport.js.map +1 -0
  14. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  15. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
  16. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
  17. package/dist/cjs/enums/MetadataModules.d.ts +2 -1
  18. package/dist/cjs/enums/MetadataModules.js +1 -0
  19. package/dist/cjs/enums/MetadataModules.js.map +1 -1
  20. package/dist/cjs/enums/ViewportType.d.ts +2 -1
  21. package/dist/cjs/enums/ViewportType.js +1 -0
  22. package/dist/cjs/enums/ViewportType.js.map +1 -1
  23. package/dist/cjs/index.d.ts +2 -1
  24. package/dist/cjs/index.js +4 -2
  25. package/dist/cjs/index.js.map +1 -1
  26. package/dist/cjs/types/IRenderingEngine.d.ts +0 -2
  27. package/dist/cjs/types/IViewport.d.ts +7 -0
  28. package/dist/cjs/types/IWSIViewport.d.ts +13 -0
  29. package/dist/cjs/types/IWSIViewport.js +3 -0
  30. package/dist/cjs/types/IWSIViewport.js.map +1 -0
  31. package/dist/cjs/types/WSIViewportProperties.d.ts +3 -0
  32. package/dist/cjs/types/WSIViewportProperties.js +3 -0
  33. package/dist/cjs/types/WSIViewportProperties.js.map +1 -0
  34. package/dist/cjs/types/WSIViewportTypes.d.ts +13 -0
  35. package/dist/cjs/types/WSIViewportTypes.js +3 -0
  36. package/dist/cjs/types/WSIViewportTypes.js.map +1 -0
  37. package/dist/cjs/types/index.d.ts +5 -2
  38. package/dist/cjs/utilities/genericMetadataProvider.js +3 -1
  39. package/dist/cjs/utilities/genericMetadataProvider.js.map +1 -1
  40. package/dist/cjs/utilities/uuidv4.js +1 -1
  41. package/dist/cjs/utilities/uuidv4.js.map +1 -1
  42. package/dist/esm/RenderingEngine/RenderingEngine.js +0 -9
  43. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  44. package/dist/esm/RenderingEngine/StackViewport.js +2 -2
  45. package/dist/esm/RenderingEngine/VideoViewport.js +14 -6
  46. package/dist/esm/RenderingEngine/VideoViewport.js.map +1 -1
  47. package/dist/esm/RenderingEngine/Viewport.js +3 -0
  48. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  49. package/dist/esm/RenderingEngine/WSIViewport.js +405 -0
  50. package/dist/esm/RenderingEngine/WSIViewport.js.map +1 -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/MetadataModules.js +1 -0
  54. package/dist/esm/enums/MetadataModules.js.map +1 -1
  55. package/dist/esm/enums/ViewportType.js +1 -0
  56. package/dist/esm/enums/ViewportType.js.map +1 -1
  57. package/dist/esm/index.js +2 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/types/IWSIViewport.js +2 -0
  60. package/dist/esm/types/IWSIViewport.js.map +1 -0
  61. package/dist/esm/types/WSIViewportProperties.js +2 -0
  62. package/dist/esm/types/WSIViewportProperties.js.map +1 -0
  63. package/dist/esm/types/WSIViewportTypes.js +2 -0
  64. package/dist/esm/types/WSIViewportTypes.js.map +1 -0
  65. package/dist/esm/utilities/genericMetadataProvider.js +2 -1
  66. package/dist/esm/utilities/genericMetadataProvider.js.map +1 -1
  67. package/dist/esm/utilities/uuidv4.js +1 -1
  68. package/dist/esm/utilities/uuidv4.js.map +1 -1
  69. package/dist/types/RenderingEngine/RenderingEngine.d.ts +0 -2
  70. package/dist/types/RenderingEngine/RenderingEngine.d.ts.map +1 -1
  71. package/dist/types/RenderingEngine/VideoViewport.d.ts +2 -1
  72. package/dist/types/RenderingEngine/VideoViewport.d.ts.map +1 -1
  73. package/dist/types/RenderingEngine/Viewport.d.ts +2 -1
  74. package/dist/types/RenderingEngine/Viewport.d.ts.map +1 -1
  75. package/dist/types/RenderingEngine/WSIViewport.d.ts +83 -0
  76. package/dist/types/RenderingEngine/WSIViewport.d.ts.map +1 -0
  77. package/dist/types/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  78. package/dist/types/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts.map +1 -1
  79. package/dist/types/enums/MetadataModules.d.ts +2 -1
  80. package/dist/types/enums/MetadataModules.d.ts.map +1 -1
  81. package/dist/types/enums/ViewportType.d.ts +2 -1
  82. package/dist/types/enums/ViewportType.d.ts.map +1 -1
  83. package/dist/types/index.d.ts +2 -1
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/types/IRenderingEngine.d.ts +0 -2
  86. package/dist/types/types/IRenderingEngine.d.ts.map +1 -1
  87. package/dist/types/types/IViewport.d.ts +7 -0
  88. package/dist/types/types/IViewport.d.ts.map +1 -1
  89. package/dist/types/types/IWSIViewport.d.ts +14 -0
  90. package/dist/types/types/IWSIViewport.d.ts.map +1 -0
  91. package/dist/types/types/WSIViewportProperties.d.ts +4 -0
  92. package/dist/types/types/WSIViewportProperties.d.ts.map +1 -0
  93. package/dist/types/types/WSIViewportTypes.d.ts +14 -0
  94. package/dist/types/types/WSIViewportTypes.d.ts.map +1 -0
  95. package/dist/types/types/index.d.ts +5 -2
  96. package/dist/types/types/index.d.ts.map +1 -1
  97. package/dist/types/utilities/genericMetadataProvider.d.ts.map +1 -1
  98. package/dist/types/utilities/uuidv4.d.ts.map +1 -1
  99. package/dist/umd/index.js +1 -1
  100. package/dist/umd/index.js.map +1 -1
  101. package/package.json +2 -2
  102. package/src/RenderingEngine/RenderingEngine.ts +0 -20
  103. package/src/RenderingEngine/StackViewport.ts +2 -2
  104. package/src/RenderingEngine/VideoViewport.ts +38 -10
  105. package/src/RenderingEngine/Viewport.ts +8 -0
  106. package/src/RenderingEngine/WSIViewport.ts +661 -0
  107. package/src/RenderingEngine/helpers/viewportTypeToViewportClass.ts +2 -0
  108. package/src/enums/MetadataModules.ts +5 -0
  109. package/src/enums/ViewportType.ts +4 -0
  110. package/src/index.ts +2 -0
  111. package/src/types/IRenderingEngine.ts +0 -2
  112. package/src/types/IViewport.ts +20 -0
  113. package/src/types/IWSIViewport.ts +59 -0
  114. package/src/types/WSIViewportProperties.ts +8 -0
  115. package/src/types/WSIViewportTypes.ts +14 -0
  116. package/src/types/index.ts +8 -0
  117. package/src/utilities/genericMetadataProvider.ts +3 -2
  118. package/src/utilities/uuidv4.ts +1 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "1.77.13",
3
+ "version": "1.78.1",
4
4
  "description": "",
5
5
  "main": "src/index.ts",
6
6
  "types": "dist/types/index.d.ts",
@@ -47,5 +47,5 @@
47
47
  "type": "individual",
48
48
  "url": "https://ohif.org/donate"
49
49
  },
50
- "gitHead": "829144d11850aa0d3f9ea1f7068bbf0e24a19e8f"
50
+ "gitHead": "a3f12ef5eecb12158a9067945c7dc779f6feb3ea"
51
51
  }
@@ -11,11 +11,9 @@ 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';
15
14
  import type IRenderingEngine from '../types/IRenderingEngine';
16
15
  import type IVolumeViewport from '../types/IVolumeViewport';
17
16
  import type { IViewport } from '../types/IViewport';
18
- import VideoViewport from './VideoViewport';
19
17
  import viewportTypeToViewportClass from './helpers/viewportTypeToViewportClass';
20
18
 
21
19
  import type * as EventTypes from '../types/EventTypes';
@@ -389,24 +387,6 @@ class RenderingEngine implements IRenderingEngine {
389
387
  return viewports.filter(isStackViewport) as Array<IStackViewport>;
390
388
  }
391
389
 
392
- /**
393
- * Filters all the available viewports and return the stack viewports
394
- * @returns stack viewports registered on the rendering Engine
395
- */
396
- public getVideoViewports(): Array<IVideoViewport> {
397
- this._throwIfDestroyed();
398
-
399
- const viewports = this.getViewports();
400
-
401
- const isVideoViewport = (
402
- viewport: IViewport
403
- ): viewport is VideoViewport => {
404
- return viewport instanceof VideoViewport;
405
- };
406
-
407
- return viewports.filter(isVideoViewport) as Array<IVideoViewport>;
408
- }
409
-
410
390
  /**
411
391
  * Return all the viewports that are volume viewports
412
392
  * @returns An array of VolumeViewport objects.
@@ -2760,7 +2760,7 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader {
2760
2760
 
2761
2761
  const diff = vec3.subtract(vec3.create(), worldPos, origin);
2762
2762
 
2763
- const worldPoint: Point2 = [
2763
+ const indexPoint: Point2 = [
2764
2764
  vec3.dot(diff, iVector) / spacing[0],
2765
2765
  vec3.dot(diff, jVector) / spacing[1],
2766
2766
  ];
@@ -2768,7 +2768,7 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader {
2768
2768
  // pixel to canvas
2769
2769
  const canvasPoint = pixelToCanvas(
2770
2770
  this._cpuFallbackEnabledElement,
2771
- worldPoint
2771
+ indexPoint
2772
2772
  );
2773
2773
  return canvasPoint;
2774
2774
  };
@@ -18,6 +18,7 @@ import type {
18
18
  ViewReferenceSpecifier,
19
19
  ViewReference,
20
20
  ReferenceCompatibleOptions,
21
+ ImageSetOptions,
21
22
  } from '../types';
22
23
  import * as metaData from '../metaData';
23
24
  import { Transform } from './helpers/cpuFallback/rendering/transform';
@@ -81,7 +82,7 @@ class VideoViewport extends Viewport implements IVideoViewport {
81
82
  private fps = 30;
82
83
 
83
84
  /** The number of frames in the video */
84
- private numberOfFrames = 0;
85
+ private numberOfFrames: number;
85
86
 
86
87
  private videoCamera: InternalVideoCamera = {
87
88
  panWorld: [0, 0],
@@ -214,6 +215,19 @@ class VideoViewport extends Viewport implements IVideoViewport {
214
215
  };
215
216
  }
216
217
 
218
+ /**
219
+ * This is a wrapper for setVideo to allow generic behaviour
220
+ *
221
+ * @param _groupId - the id for the overall set of image ids. Unused for video viewport.
222
+ * @param imageIds - a singleton list containing the imageId of a video.
223
+ */
224
+ public setDataIds(imageIds: string[], options?: ImageSetOptions) {
225
+ this.setVideo(
226
+ imageIds[0],
227
+ (options?.viewReference?.sliceIndex as number) || 1
228
+ );
229
+ }
230
+
217
231
  /**
218
232
  * Sets the video image id to show and hte frame number.
219
233
  * Requirements are to have the imageUrlModule in the metadata
@@ -221,17 +235,24 @@ class VideoViewport extends Viewport implements IVideoViewport {
221
235
  */
222
236
  public setVideo(imageId: string, frameNumber?: number): Promise<unknown> {
223
237
  this.imageId = Array.isArray(imageId) ? imageId[0] : imageId;
224
- const { rendered } = metaData.get(MetadataModules.IMAGE_URL, imageId);
238
+ const imageUrlModule = metaData.get(MetadataModules.IMAGE_URL, imageId);
239
+ if (!imageUrlModule?.rendered) {
240
+ throw new Error(
241
+ `Video Image ID ${imageId} does not have a rendered video view`
242
+ );
243
+ }
244
+ const { rendered } = imageUrlModule;
225
245
  const generalSeries = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
226
246
  this.modality = generalSeries?.Modality;
227
247
  this.metadata = this.getImageDataMetadata(imageId);
248
+ let { cineRate, numberOfFrames } = metaData.get(
249
+ MetadataModules.CINE,
250
+ imageId
251
+ );
252
+ this.numberOfFrames = numberOfFrames;
228
253
 
229
254
  return this.setVideoURL(rendered).then(() => {
230
- let { cineRate, numberOfFrames } = metaData.get(
231
- MetadataModules.CINE,
232
- imageId
233
- );
234
- if (!numberOfFrames) {
255
+ if (!numberOfFrames || numberOfFrames === 1) {
235
256
  numberOfFrames = Math.round(
236
257
  this.videoElement.duration * (cineRate || 30)
237
258
  );
@@ -578,7 +599,7 @@ class VideoViewport extends Viewport implements IVideoViewport {
578
599
  * @param imageURI - containing frame number or range.
579
600
  * @returns
580
601
  */
581
- public hasImageURI(imageURI: string) {
602
+ public hasImageURI(imageURI: string): boolean {
582
603
  // TODO - move annotationFrameRange into core so it can be used here.
583
604
  const framesMatch = imageURI.match(VideoViewport.frameRangeExtractor);
584
605
  const testURI = framesMatch
@@ -826,9 +847,10 @@ class VideoViewport extends Viewport implements IVideoViewport {
826
847
  };
827
848
 
828
849
  public getNumberOfSlices = (): number => {
829
- return Math.round(
850
+ const computedSlices = Math.round(
830
851
  (this.videoElement.duration * this.fps) / this.scrollSpeed
831
852
  );
853
+ return isNaN(computedSlices) ? this.numberOfFrames : computedSlices;
832
854
  };
833
855
 
834
856
  public getFrameOfReferenceUID = (): string => {
@@ -1062,7 +1084,13 @@ class VideoViewport extends Viewport implements IVideoViewport {
1062
1084
  transformationMatrix[5]
1063
1085
  );
1064
1086
 
1065
- ctx.drawImage(this.videoElement, 0, 0, this.videoWidth, this.videoHeight);
1087
+ ctx.drawImage(
1088
+ this.videoElement,
1089
+ 0,
1090
+ 0,
1091
+ this.videoWidth || 1024,
1092
+ this.videoHeight || 1024
1093
+ );
1066
1094
 
1067
1095
  for (const actor of this.getActors()) {
1068
1096
  (actor.actor as ICanvasActor).render(this, this.canvasContext);
@@ -39,6 +39,7 @@ import type {
39
39
  ViewReferenceSpecifier,
40
40
  ReferenceCompatibleOptions,
41
41
  ViewPresentationSelector,
42
+ DataSetOptions,
42
43
  } from '../types/IViewport';
43
44
  import type { vtkSlabCamera } from './vtkClasses/vtkSlabCamera';
44
45
  import { getConfiguration } from '../init';
@@ -1869,6 +1870,13 @@ class Viewport implements IViewport {
1869
1870
  const radius = Math.sqrt(w1 + w2 + w3 || 1) * 0.5;
1870
1871
  return radius;
1871
1872
  }
1873
+
1874
+ /**
1875
+ * This is a wrapper for setStack/setVideo/etc
1876
+ */
1877
+ public setDataIds(_imageIds: string[], _options?: DataSetOptions) {
1878
+ throw new Error('Unsupported operatoin setDataIds');
1879
+ }
1872
1880
  }
1873
1881
 
1874
1882
  export default Viewport;