@cornerstonejs/core 2.0.0-beta.22 → 2.0.0-beta.24

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 (50) hide show
  1. package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +2 -2
  2. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +1 -0
  3. package/dist/esm/RenderingEngine/StackViewport.js +4 -3
  4. package/dist/esm/cache/cache.d.ts +1 -1
  5. package/dist/esm/cache/cache.js +1 -1
  6. package/dist/esm/cache/classes/BaseStreamingImageVolume.d.ts +85 -0
  7. package/dist/esm/cache/classes/BaseStreamingImageVolume.js +338 -0
  8. package/dist/esm/cache/classes/StreamingDynamicImageVolume.d.ts +52 -0
  9. package/dist/esm/cache/classes/StreamingDynamicImageVolume.js +81 -0
  10. package/dist/esm/cache/classes/StreamingImageVolume.d.ts +8 -0
  11. package/dist/esm/cache/classes/StreamingImageVolume.js +21 -0
  12. package/dist/esm/cache/index.d.ts +3 -1
  13. package/dist/esm/cache/index.js +3 -1
  14. package/dist/esm/enums/Events.d.ts +2 -1
  15. package/dist/esm/enums/Events.js +1 -0
  16. package/dist/esm/index.d.ts +3 -1
  17. package/dist/esm/index.js +3 -1
  18. package/dist/esm/loaders/cornerstoneStreamingDynamicImageVolumeLoader.d.ts +10 -0
  19. package/dist/esm/loaders/cornerstoneStreamingDynamicImageVolumeLoader.js +58 -0
  20. package/dist/esm/loaders/cornerstoneStreamingImageVolumeLoader.d.ts +12 -0
  21. package/dist/esm/loaders/cornerstoneStreamingImageVolumeLoader.js +73 -0
  22. package/dist/esm/loaders/volumeLoader.js +0 -8
  23. package/dist/esm/types/IBaseVolumeViewport.d.ts +2 -0
  24. package/dist/esm/types/IBaseVolumeViewport.js +1 -0
  25. package/dist/esm/types/IStackViewport.d.ts +2 -69
  26. package/dist/esm/types/IVideoViewport.d.ts +2 -40
  27. package/dist/esm/types/IViewport.d.ts +2 -88
  28. package/dist/esm/types/IVolumeViewport.d.ts +3 -45
  29. package/dist/esm/types/IVoxelManager.d.ts +2 -54
  30. package/dist/esm/types/IWSIViewport.d.ts +3 -16
  31. package/dist/esm/types/ImageLoadRequests.d.ts +24 -0
  32. package/dist/esm/types/ImageLoadRequests.js +1 -0
  33. package/dist/esm/types/MetadataModuleTypes.d.ts +1 -0
  34. package/dist/esm/types/index.d.ts +3 -1
  35. package/dist/esm/utilities/VoxelManager.d.ts +6 -5
  36. package/dist/esm/utilities/VoxelManager.js +12 -3
  37. package/dist/esm/utilities/autoLoad.d.ts +2 -0
  38. package/dist/esm/utilities/autoLoad.js +28 -0
  39. package/dist/esm/utilities/generateVolumePropsFromImageIds.js +2 -2
  40. package/dist/esm/utilities/getDynamicVolumeInfo.d.ts +6 -0
  41. package/dist/esm/utilities/getDynamicVolumeInfo.js +7 -0
  42. package/dist/esm/utilities/index.d.ts +5 -1
  43. package/dist/esm/utilities/index.js +5 -1
  44. package/dist/esm/utilities/scaleArray.d.ts +2 -0
  45. package/dist/esm/utilities/scaleArray.js +15 -0
  46. package/dist/esm/utilities/splitImageIdsBy4DTags.d.ts +5 -0
  47. package/dist/esm/utilities/splitImageIdsBy4DTags.js +161 -0
  48. package/dist/umd/index.js +1 -1
  49. package/dist/umd/index.js.map +1 -1
  50. package/package.json +2 -2
@@ -33,6 +33,7 @@ declare enum Events {
33
33
  VOLUME_VIEWPORT_SCROLL = "VOLUME_VIEWPORT_SCROLL",
34
34
  CLIPPING_PLANES_UPDATED = "CORNERSTONE_CLIPPING_PLANES_UPDATED",
35
35
  WEB_WORKER_PROGRESS = "CORNERSTONE_WEB_WORKER_PROGRESS",
36
- COLORMAP_MODIFIED = "CORNERSTONE_COLORMAP_MODIFIED"
36
+ COLORMAP_MODIFIED = "CORNERSTONE_COLORMAP_MODIFIED",
37
+ DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED = "DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED"
37
38
  }
38
39
  export default Events;
@@ -35,5 +35,6 @@ var Events;
35
35
  Events["CLIPPING_PLANES_UPDATED"] = "CORNERSTONE_CLIPPING_PLANES_UPDATED";
36
36
  Events["WEB_WORKER_PROGRESS"] = "CORNERSTONE_WEB_WORKER_PROGRESS";
37
37
  Events["COLORMAP_MODIFIED"] = "CORNERSTONE_COLORMAP_MODIFIED";
38
+ Events["DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED"] = "DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED";
38
39
  })(Events || (Events = {}));
39
40
  export default Events;
@@ -31,6 +31,8 @@ import type { IRetrieveConfiguration, IImagesLoader, RetrieveOptions, RetrieveSt
31
31
  import * as utilities from './utilities';
32
32
  import { registerImageLoader } from './loaders/imageLoader';
33
33
  import triggerEvent from './utilities/triggerEvent';
34
+ import { cornerstoneStreamingImageVolumeLoader } from './loaders/cornerstoneStreamingImageVolumeLoader';
35
+ import { cornerstoneStreamingDynamicImageVolumeLoader } from './loaders/cornerstoneStreamingDynamicImageVolumeLoader';
34
36
  import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports } from './RenderingEngine/helpers';
35
37
  export type { Types, IRetrieveConfiguration, RetrieveOptions, RetrieveStage, ImageLoadListener, IImagesLoader, };
36
- export { init, isCornerstoneInitialized, peerImport, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, };
38
+ export { init, isCornerstoneInitialized, peerImport, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, };
package/dist/esm/index.js CHANGED
@@ -29,5 +29,7 @@ import ProgressiveRetrieveImages from './loaders/ProgressiveRetrieveImages';
29
29
  import * as utilities from './utilities';
30
30
  import { registerImageLoader } from './loaders/imageLoader';
31
31
  import triggerEvent from './utilities/triggerEvent';
32
+ import { cornerstoneStreamingImageVolumeLoader } from './loaders/cornerstoneStreamingImageVolumeLoader';
33
+ import { cornerstoneStreamingDynamicImageVolumeLoader } from './loaders/cornerstoneStreamingDynamicImageVolumeLoader';
32
34
  import { setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, } from './RenderingEngine/helpers';
33
- export { init, isCornerstoneInitialized, peerImport, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, };
35
+ export { init, isCornerstoneInitialized, peerImport, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, Enums, CONSTANTS, Events as EVENTS, Settings, BaseVolumeViewport, VolumeViewport, VolumeViewport3D, Viewport, StackViewport, VideoViewport, WSIViewport, RenderingEngine, ImageVolume, Surface, getRenderingEngine, getRenderingEngines, getEnabledElement, getEnabledElementByIds, getEnabledElements, getEnabledElementByViewportId, createVolumeActor, getOrCreateCanvas, createVolumeMapper, cache, eventTarget, triggerEvent, imageLoader, registerImageLoader, volumeLoader, metaData, utilities, setVolumesForViewports, addVolumesToViewports, addImageSlicesToViewports, imageLoadPoolManager as requestPoolManager, imageRetrievalPoolManager, imageLoadPoolManager, getShouldUseCPURendering, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, geometryLoader, ProgressiveRetrieveImages, cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, };
@@ -0,0 +1,10 @@
1
+ import { StreamingDynamicImageVolume } from '../cache';
2
+ interface IVolumeLoader {
3
+ promise: Promise<StreamingDynamicImageVolume>;
4
+ cancel: () => void;
5
+ decache: () => void;
6
+ }
7
+ declare function cornerstoneStreamingDynamicImageVolumeLoader(volumeId: string, options: {
8
+ imageIds: string[];
9
+ }): IVolumeLoader;
10
+ export { cornerstoneStreamingDynamicImageVolumeLoader };
@@ -0,0 +1,58 @@
1
+ import { StreamingDynamicImageVolume } from '../cache';
2
+ import { generateVolumePropsFromImageIds, sortImageIdsAndGetSpacing, splitImageIdsBy4DTags, VoxelManager, } from '../utilities';
3
+ function cornerstoneStreamingDynamicImageVolumeLoader(volumeId, options) {
4
+ if (!options || !options.imageIds || !options.imageIds.length) {
5
+ throw new Error('ImageIds must be provided to create a 4D streaming image volume');
6
+ }
7
+ const { imageIds } = options;
8
+ const { splittingTag, imageIdGroups } = splitImageIdsBy4DTags(imageIds);
9
+ const volumeProps = generateVolumePropsFromImageIds(imageIdGroups[0], volumeId);
10
+ const { metadata: volumeMetadata, dimensions, spacing, direction, sizeInBytes, origin, numberOfComponents, dataType, } = volumeProps;
11
+ const scanAxisNormal = direction.slice(6, 9);
12
+ const sortedImageIdGroups = imageIdGroups.map((imageIds) => {
13
+ const sortedImageIds = sortImageIdsAndGetSpacing(imageIds, scanAxisNormal).sortedImageIds;
14
+ return sortedImageIds;
15
+ });
16
+ const sortedFlatImageIds = sortedImageIdGroups.flat();
17
+ const voxelManager = VoxelManager.createScalarDynamicVolumeVoxelManager({
18
+ dimensions,
19
+ imageIdGroups: sortedImageIdGroups,
20
+ timePoint: 0,
21
+ numberOfComponents,
22
+ });
23
+ let streamingImageVolume = new StreamingDynamicImageVolume({
24
+ volumeId,
25
+ metadata: volumeMetadata,
26
+ dimensions,
27
+ spacing,
28
+ origin,
29
+ direction,
30
+ sizeInBytes,
31
+ imageIds: sortedFlatImageIds,
32
+ imageIdGroups: sortedImageIdGroups,
33
+ splittingTag,
34
+ voxelManager,
35
+ numberOfComponents,
36
+ dataType,
37
+ }, {
38
+ imageIds: sortedFlatImageIds,
39
+ loadStatus: {
40
+ loaded: false,
41
+ loading: false,
42
+ cancelled: false,
43
+ cachedFrames: [],
44
+ callbacks: [],
45
+ },
46
+ });
47
+ return {
48
+ promise: Promise.resolve(streamingImageVolume),
49
+ decache: () => {
50
+ streamingImageVolume.destroy();
51
+ streamingImageVolume = null;
52
+ },
53
+ cancel: () => {
54
+ streamingImageVolume.cancelLoading();
55
+ },
56
+ };
57
+ }
58
+ export { cornerstoneStreamingDynamicImageVolumeLoader };
@@ -0,0 +1,12 @@
1
+ import StreamingImageVolume from '../cache/classes/StreamingImageVolume';
2
+ import type { IRetrieveConfiguration } from '../types';
3
+ interface IVolumeLoader {
4
+ promise: Promise<StreamingImageVolume>;
5
+ cancel: () => void;
6
+ decache: () => void;
7
+ }
8
+ declare function cornerstoneStreamingImageVolumeLoader(volumeId: string, options: {
9
+ imageIds: string[];
10
+ progressiveRendering?: boolean | IRetrieveConfiguration;
11
+ }): IVolumeLoader;
12
+ export { cornerstoneStreamingImageVolumeLoader };
@@ -0,0 +1,73 @@
1
+ import StreamingImageVolume from '../cache/classes/StreamingImageVolume';
2
+ import { RequestType } from '../enums';
3
+ import imageLoadPoolManager from '../requestPool/imageLoadPoolManager';
4
+ import { generateVolumePropsFromImageIds } from '../utilities';
5
+ import { loadImage } from './imageLoader';
6
+ function cornerstoneStreamingImageVolumeLoader(volumeId, options) {
7
+ if (!options || !options.imageIds || !options.imageIds.length) {
8
+ throw new Error('ImageIds must be provided to create a streaming image volume');
9
+ }
10
+ async function getStreamingImageVolume() {
11
+ if (options.imageIds[0].split(':')[0] === 'wadouri') {
12
+ const [middleImageIndex, lastImageIndex] = [
13
+ Math.floor(options.imageIds.length / 2),
14
+ options.imageIds.length - 1,
15
+ ];
16
+ const indexesToPrefetch = [0, middleImageIndex, lastImageIndex];
17
+ await Promise.all(indexesToPrefetch.map((index) => {
18
+ return new Promise((resolve, reject) => {
19
+ const imageId = options.imageIds[index];
20
+ imageLoadPoolManager.addRequest(async () => {
21
+ loadImage(imageId)
22
+ .then(() => {
23
+ console.log(`Prefetched imageId: ${imageId}`);
24
+ resolve(true);
25
+ })
26
+ .catch((err) => {
27
+ reject(err);
28
+ });
29
+ }, RequestType.Prefetch, { volumeId }, 1);
30
+ });
31
+ })).catch(console.error);
32
+ }
33
+ const volumeProps = generateVolumePropsFromImageIds(options.imageIds, volumeId);
34
+ const { dimensions, spacing, origin, direction, metadata, imageIds, dataType, numberOfComponents, } = volumeProps;
35
+ const streamingImageVolume = new StreamingImageVolume({
36
+ volumeId,
37
+ metadata,
38
+ dimensions,
39
+ spacing,
40
+ origin,
41
+ direction,
42
+ imageIds,
43
+ dataType,
44
+ numberOfComponents,
45
+ }, {
46
+ imageIds,
47
+ loadStatus: {
48
+ loaded: false,
49
+ loading: false,
50
+ cancelled: false,
51
+ cachedFrames: [],
52
+ callbacks: [],
53
+ },
54
+ });
55
+ return streamingImageVolume;
56
+ }
57
+ const streamingImageVolumePromise = getStreamingImageVolume();
58
+ return {
59
+ promise: streamingImageVolumePromise,
60
+ decache: () => {
61
+ streamingImageVolumePromise.then((streamingImageVolume) => {
62
+ streamingImageVolume.destroy();
63
+ streamingImageVolume = null;
64
+ });
65
+ },
66
+ cancel: () => {
67
+ streamingImageVolumePromise.then((streamingImageVolume) => {
68
+ streamingImageVolume.cancelLoading();
69
+ });
70
+ },
71
+ };
72
+ }
73
+ export { cornerstoneStreamingImageVolumeLoader };
@@ -68,14 +68,6 @@ export function createAndCacheDerivedVolume(referencedVolumeId, options) {
68
68
  }
69
69
  const { metadata, dimensions, spacing, origin, direction } = referencedVolume;
70
70
  const referencedImageIds = referencedVolume.imageIds ?? [];
71
- const byteLength = referencedImageIds.reduce((total, imageId) => {
72
- const image = cache.getImage(imageId);
73
- return total + image.sizeInBytes;
74
- }, 0);
75
- const isCacheable = cache.isCacheable(byteLength);
76
- if (!isCacheable) {
77
- throw new Error(`Cannot created derived volume: Referenced volume with id ${referencedVolumeId} does not exist.`);
78
- }
79
71
  const derivedImages = createAndCacheDerivedImages(referencedImageIds, {
80
72
  targetBufferType: options.targetBufferType,
81
73
  });
@@ -0,0 +1,2 @@
1
+ import type BaseVolumeViewport from '../RenderingEngine/BaseVolumeViewport';
2
+ export type IBaseVolumeViewport = BaseVolumeViewport;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,69 +1,2 @@
1
- import type CPUIImageData from './CPUIImageData';
2
- import type { ActorEntry } from './IActor';
3
- import type ICamera from './ICamera';
4
- import type IImage from './IImage';
5
- import type IImageData from './IImageData';
6
- import type { IStackInput } from './IStackInput';
7
- import type { IViewport } from './IViewport';
8
- import type Point2 from './Point2';
9
- import type Point3 from './Point3';
10
- import type { Scaling } from './ScalingParameters';
11
- import type StackViewportProperties from './StackViewportProperties';
12
- import type { ViewReference, ViewReferenceSpecifier, ReferenceCompatibleOptions } from '../types/IViewport';
13
- import type { ImageDataMetaData } from '../RenderingEngine/StackViewport';
14
- import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
15
- export default interface IStackViewport extends IViewport {
16
- setUseCPURendering(value: boolean): void;
17
- updateRenderingPipeline(): void;
18
- getImageData(): IImageData | CPUIImageData;
19
- getCamera(): ICamera;
20
- setCamera(cameraInterface: ICamera, storeAsInitialCamera?: boolean): void;
21
- getRotation(): number;
22
- unsetColormap(): void;
23
- getImageIds(): string[];
24
- setStack(imageIds: string[], imageIdIndex?: number): Promise<string>;
25
- resetCamera(options?: unknown): boolean;
26
- canvasToWorld(canvasPos: Point2): Point3;
27
- worldToCanvas(worldPos: Point3): Point2;
28
- getRenderer(): vtkRenderer;
29
- getDefaultActor(): ActorEntry;
30
- getActors(): ActorEntry[];
31
- getActor(actorUID: string): ActorEntry;
32
- setActors(actors: ActorEntry[]): void;
33
- addActors(actors: ActorEntry[]): void;
34
- addActor(actorEntry: ActorEntry): void;
35
- removeAllActors(): void;
36
- getFrameOfReferenceUID(): string;
37
- addImages(images: IStackInput[], immediateRender?: boolean, suppressEvents?: boolean): void;
38
- renderImageObject(image: unknown): void;
39
- setProperties(properties: StackViewportProperties, suppressEvents?: boolean): void;
40
- getCurrentImageId(): string;
41
- getImageDataMetadata(image: IImage): ImageDataMetaData;
42
- resize(): void;
43
- setDefaultProperties(ViewportProperties: StackViewportProperties, imageId?: string): void;
44
- clearDefaultProperties(imageId?: string): void;
45
- getDefaultProperties(imageId?: string): StackViewportProperties;
46
- getProperties(): StackViewportProperties;
47
- getCurrentImageIdIndex(): number;
48
- hasImageId(imageId: string): boolean;
49
- hasImageURI(imageURI: string): boolean;
50
- customRenderViewportToCanvas(): {
51
- canvas: HTMLCanvasElement;
52
- element: HTMLDivElement;
53
- viewportId: string;
54
- renderingEngineId: string;
55
- };
56
- getCornerstoneImage(): IImage;
57
- resetToDefaultProperties(): void;
58
- resetProperties(): void;
59
- setImageIdIndex(imageIdIndex: number): Promise<string>;
60
- calibrateSpacing(imageId: string): void;
61
- isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean | unknown;
62
- getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
63
- setViewReference(viewRef: ViewReference): void;
64
- getViewReferenceId(specifier?: ViewReferenceSpecifier): string;
65
- modality: string;
66
- scaling: Scaling;
67
- stackActorReInitialized: boolean;
68
- scroll(delta: number, debounceLoading?: boolean, loop?: boolean): void;
69
- }
1
+ import type { StackViewport } from '../RenderingEngine';
2
+ export type { StackViewport as default };
@@ -1,40 +1,2 @@
1
- import type { IViewport } from './IViewport';
2
- import type { PixelDataTypedArray } from './PixelDataTypedArray';
3
- import type VideoViewportProperties from './VideoViewportProperties';
4
- import type { VOIRange } from './voi';
5
- import type { SpeedUnit } from '../enums/VideoEnums';
6
- import type IImageData from './IImageData';
7
- import type CPUIImageData from './CPUIImageData';
8
- export interface IVideoViewport extends IViewport {
9
- modality: string;
10
- canvasContext: CanvasRenderingContext2D;
11
- setVideo(imageId: string, frameNumber?: number): Promise<unknown>;
12
- setVideoURL(videoURL: string): Promise<unknown>;
13
- togglePlayPause(): boolean;
14
- play(): Promise<void>;
15
- pause(): void;
16
- scroll(delta?: number): Promise<void>;
17
- start(): Promise<void>;
18
- end(): Promise<void>;
19
- setTime(timeInSeconds: number): Promise<void>;
20
- setFrameNumber(frame: number): Promise<void>;
21
- setFrameRange(frameRange: number[]): void;
22
- getFrameRange(): [number, number];
23
- setProperties(props: VideoViewportProperties): void;
24
- setPlaybackRate(rate?: number): void;
25
- setScrollSpeed(scrollSpeed?: number, unit?: SpeedUnit): void;
26
- getProperties(): VideoViewportProperties;
27
- resetProperties(): void;
28
- setVOI(voiRange: VOIRange): void;
29
- setWindowLevel(windowWidth?: number, windowCenter?: number): void;
30
- setAverageWhite(averageWhite: [number, number, number]): void;
31
- getFrameNumber(): number;
32
- getFrameRate(): number;
33
- getMiddleSliceData(): PixelDataTypedArray;
34
- getImageData(): IImageData | CPUIImageData;
35
- getCurrentImageId(): string;
36
- hasImageURI(imageURI: string): boolean;
37
- getNumberOfSlices(): number;
38
- customRenderViewportToCanvas(): void;
39
- useCustomRenderingPipeline: boolean;
40
- }
1
+ import type VideoViewport from '../RenderingEngine/VideoViewport';
2
+ export type IVideoViewport = VideoViewport;
@@ -1,17 +1,10 @@
1
- import type ICamera from './ICamera';
2
1
  import type Point2 from './Point2';
3
2
  import type Point3 from './Point3';
4
3
  import type ViewportInputOptions from './ViewportInputOptions';
5
- import type { ActorEntry } from './IActor';
6
4
  import type ViewportType from '../enums/ViewportType';
7
- import type ViewportStatus from '../enums/ViewportStatus';
8
5
  import type DisplayArea from './displayArea';
9
6
  import type { BoundsLPS } from './BoundsLPS';
10
- import type { mat4 } from 'gl-matrix';
11
- import type IRenderingEngine from './IRenderingEngine';
12
- import type IImageData from './IImageData';
13
- import type CPUIImageData from './CPUIImageData';
14
- import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
7
+ import type Viewport from '../RenderingEngine/Viewport';
15
8
  export interface ViewReferenceSpecifier {
16
9
  sliceIndex?: number | [number, number];
17
10
  forFrameOfReference?: boolean;
@@ -56,86 +49,7 @@ export interface DataSetOptions {
56
49
  viewSelector?: ViewPresentationSelector;
57
50
  viewReference?: ViewReferenceSpecifier;
58
51
  }
59
- interface IViewport {
60
- id: string;
61
- getImageData: () => IImageData | CPUIImageData | undefined;
62
- getWidget: (id: string) => unknown;
63
- addWidget: (id: string, widget: unknown) => void;
64
- getWidgets: () => unknown;
65
- removeWidgets: () => void;
66
- renderingEngineId: string;
67
- type: ViewportType;
68
- canvas: HTMLCanvasElement;
69
- element: HTMLDivElement;
70
- sx: number;
71
- sy: number;
72
- sWidth: number;
73
- sHeight: number;
74
- _actors: Map<string, unknown>;
75
- defaultOptions: unknown;
76
- options: ViewportInputOptions;
77
- suppressEvents: boolean;
78
- isDisabled: boolean;
79
- viewportStatus: ViewportStatus;
80
- getRotation: () => number;
81
- getFrameOfReferenceUID: () => string;
82
- canvasToWorld: (canvasPos: Point2) => Point3;
83
- worldToCanvas: (worldPos: Point3) => Point2;
84
- getDefaultActor(): ActorEntry;
85
- getActors(): ActorEntry[];
86
- getActor(actorUID: string): ActorEntry;
87
- getActorUIDByIndex(index: number): string;
88
- getActorByIndex(index: number): ActorEntry;
89
- setActors(actors: ActorEntry[]): void;
90
- addActors(actors: ActorEntry[]): void;
91
- addActor(actorEntry: ActorEntry): void;
92
- getActorUIDs(): string[];
93
- removeAllActors(): void;
94
- removeActors(actorUIDs: string[]): void;
95
- getRenderingEngine(): IRenderingEngine;
96
- getRenderer(): vtkRenderer;
97
- render(): void;
98
- setOptions(options: ViewportInputOptions, immediate: boolean): void;
99
- setDisplayArea(displayArea: DisplayArea, callResetCamera?: boolean, suppressEvents?: boolean): any;
100
- getDisplayArea(): DisplayArea | undefined;
101
- reset(immediate: boolean): void;
102
- getCanvas(): HTMLCanvasElement;
103
- getCamera(): ICamera;
104
- setRendered(): void;
105
- getZoom(): number;
106
- setZoom(zoom: number, storeAsInitialCamera?: boolean): any;
107
- getPan(): Point2;
108
- setPan(pan: Point2, storeAsInitialCamera?: boolean): any;
109
- setCamera(cameraInterface: ICamera, storeAsInitialCamera?: boolean): void;
110
- resetCamera({ resetPan, resetZoom, resetToCenter, storeAsInitialCamera, }?: {
111
- resetPan?: boolean;
112
- resetZoom?: boolean;
113
- resetToCenter?: boolean;
114
- storeAsInitialCamera?: boolean;
115
- }): boolean;
116
- getNumberOfSlices(): number;
117
- getCurrentImageIdIndex(): number;
118
- getSliceIndex(): number;
119
- getSliceViewInfo(): {
120
- width: number;
121
- height: number;
122
- sliceIndex: number;
123
- slicePlane: number;
124
- sliceToIndexMatrix: mat4;
125
- indexToSliceMatrix: mat4;
126
- };
127
- getViewReferenceId(viewRefSpecifier?: ViewReferenceSpecifier): string;
128
- getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
129
- isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean | unknown;
130
- getViewPresentation(viewPresSel?: ViewPresentationSelector): ViewPresentation;
131
- setViewReference(viewRef: ViewReference): any;
132
- setViewPresentation(viewPres: ViewPresentation): any;
133
- customRenderViewportToCanvas: () => unknown;
134
- _getCorners(bounds: number[]): number[][];
135
- updateRenderingPipeline: () => void;
136
- getTargetId?: () => string;
137
- setDataIds(dataIds: string[], options?: DataSetOptions): void;
138
- }
52
+ type IViewport = Viewport;
139
53
  interface PublicViewportInput {
140
54
  element: HTMLDivElement;
141
55
  viewportId: string;
@@ -1,45 +1,3 @@
1
- import type Point2 from './Point2';
2
- import type Point3 from './Point3';
3
- import type { IViewport } from './IViewport';
4
- import type { IVolumeInput } from './IVolumeInput';
5
- import type FlipDirection from './FlipDirection';
6
- import type IImageData from './IImageData';
7
- import type { BlendModes, OrientationAxis } from '../enums';
8
- import type VolumeViewportProperties from './VolumeViewportProperties';
9
- export default interface IVolumeViewport extends IViewport {
10
- useCPURendering: boolean;
11
- getFrameOfReferenceUID: () => string;
12
- getDefaultProperties: (volumeId?: string) => VolumeViewportProperties;
13
- getProperties: (volumeId?: string) => VolumeViewportProperties;
14
- canvasToWorld: (canvasPos: Point2) => Point3;
15
- worldToCanvas: (worldPos: Point3) => Point2;
16
- getImageIds: (volumeId?: string) => string[];
17
- getCurrentImageIdIndex: () => number;
18
- hasVolumeId: (volumeId: string) => boolean;
19
- hasImageURI: (imageURI: string) => boolean;
20
- getCurrentImageId: () => string | undefined;
21
- setDefaultProperties(ViewportProperties: VolumeViewportProperties, volumeId?: string): void;
22
- clearDefaultProperties(volumeId?: string): void;
23
- setProperties({ voiRange }: VolumeViewportProperties, volumeId?: string, suppressEvents?: boolean): void;
24
- resetProperties(volumeId: string): void;
25
- setVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
26
- addVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
27
- removeVolumeActors(actorUIDs: string[], immediate?: boolean): void;
28
- getIntensityFromWorld(point: Point3): number;
29
- getBounds(): number[];
30
- flip(flipDirection: FlipDirection): void;
31
- resetCamera({ resetPan, resetZoom, resetToCenter, resetRotation, suppressEvents, }?: {
32
- resetPan?: boolean;
33
- resetZoom?: boolean;
34
- resetToCenter?: boolean;
35
- resetRotation?: boolean;
36
- suppressEvents?: boolean;
37
- }): boolean;
38
- resetSlabThickness(): void;
39
- setBlendMode(blendMode: BlendModes, filterActorUIDs?: string[], immediate?: boolean): void;
40
- setSlabThickness(slabThickness: number, filterActorUIDs?: string[]): void;
41
- getSlabThickness(): number;
42
- getImageData: (volumeId?: string) => IImageData | undefined;
43
- setOrientation(orientation: OrientationAxis): void;
44
- getVolumeId(): string | undefined;
45
- }
1
+ import type { VolumeViewport } from '../RenderingEngine';
2
+ type IVolumeViewport = VolumeViewport;
3
+ export type { IVolumeViewport as default };
@@ -1,54 +1,2 @@
1
- import type { BoundsIJK, Point3, PixelDataTypedArray, CPUImageData, IRLEVoxelMap } from '../types';
2
- import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
3
- interface IVoxelManager<T> {
4
- _get: (index: number) => T;
5
- _set: (index: number, v: T) => boolean | void;
6
- modifiedSlices: Set<number>;
7
- boundsIJK: BoundsIJK;
8
- map: Map<number, T> | IRLEVoxelMap<T>;
9
- sourceVoxelManager: IVoxelManager<T>;
10
- isInObject: (pointLPS: Point3, pointIJK: Point3) => boolean;
11
- readonly dimensions: Point3;
12
- numberOfComponents: number;
13
- getCompleteScalarDataArray?: () => ArrayLike<number>;
14
- setCompleteScalarDataArray?: (scalarData: ArrayLike<number>) => void;
15
- getRange: () => [number, number];
16
- points: Set<number>;
17
- width: number;
18
- frameSize: number;
19
- getAtIJK(i: number, j: number, k: number): T;
20
- setAtIJK(i: number, j: number, k: number, v: T): void;
21
- getAtIJKPoint(point: Point3): T;
22
- setAtIJKPoint(point: Point3, v: T): void;
23
- getAtIndex(index: number): T;
24
- setAtIndex(index: number, v: T): void;
25
- toIJK(index: number): Point3;
26
- getMiddleSliceData(): PixelDataTypedArray;
27
- toIndex(ijk: Point3): number;
28
- getBoundsIJK(): BoundsIJK;
29
- forEach(callback: (args: {
30
- value: unknown;
31
- index: number;
32
- pointIJK: Point3;
33
- pointLPS: Point3;
34
- }) => void, options?: {
35
- boundsIJK?: BoundsIJK;
36
- isInObject?: (pointLPS: Point3, pointIJK: Point3) => boolean;
37
- returnPoints?: boolean;
38
- imageData?: vtkImageData | CPUImageData;
39
- }): unknown[];
40
- getScalarData(): PixelDataTypedArray;
41
- getScalarDataLength(): number;
42
- get sizeInBytes(): number;
43
- get bytePerVoxel(): number;
44
- clear(): void;
45
- getConstructor(): new (length: number) => PixelDataTypedArray;
46
- getArrayOfSlices(): number[];
47
- addPoint(point: Point3 | number): void;
48
- getPoints(): Point3[];
49
- getSliceData(args: {
50
- sliceIndex: number;
51
- slicePlane: number;
52
- }): PixelDataTypedArray;
53
- }
54
- export type { IVoxelManager };
1
+ import type { VoxelManager } from '../utilities';
2
+ export type IVoxelManager<T> = VoxelManager<T>;
@@ -1,16 +1,3 @@
1
- import type { IViewport } from './IViewport';
2
- import type WSIViewportProperties from './WSIViewportProperties';
3
- export default interface IWSIViewport extends IViewport {
4
- resize: () => void;
5
- setProperties(props: WSIViewportProperties, suppressEvents?: boolean): void;
6
- getProperties: () => WSIViewportProperties;
7
- setWSI: (imageIds: string[], client: any) => Promise<unknown>;
8
- resetProperties(): void;
9
- getCurrentImageId(): string;
10
- getFrameNumber(): number;
11
- setFrameNumber(frameNo: number): any;
12
- resetCamera(options?: {
13
- resetPan?: boolean;
14
- resetZoom?: boolean;
15
- }): boolean;
16
- }
1
+ import type WSIViewport from '../RenderingEngine/WSIViewport';
2
+ type IWSIViewport = WSIViewport;
3
+ export type { IWSIViewport as default };
@@ -0,0 +1,24 @@
1
+ import type { RequestType } from '../enums';
2
+ import type { ScalingParameters } from './ScalingParameters';
3
+ export default interface ImageLoadRequests {
4
+ callLoadImage: (imageId: string, imageIdIndex: number, options: unknown) => Promise<void>;
5
+ imageId: string;
6
+ imageIdIndex: number;
7
+ options: {
8
+ targetBuffer: {
9
+ type: string;
10
+ rows: number;
11
+ columns: number;
12
+ };
13
+ preScale: {
14
+ enabled: boolean;
15
+ scalingParameters: ScalingParameters;
16
+ };
17
+ transferPixelData: boolean;
18
+ };
19
+ priority: number;
20
+ requestType: RequestType;
21
+ additionalDetails: {
22
+ volumeId: string;
23
+ };
24
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -35,6 +35,7 @@ export interface ImagePlaneModuleMetadata {
35
35
  pixelSpacing: number[];
36
36
  rowPixelSpacing: number | null;
37
37
  columnPixelSpacing: number | null;
38
+ usingDefaultValues: boolean;
38
39
  }
39
40
  export interface ImagePixelModuleMetadata {
40
41
  samplesPerPixel: number;
@@ -92,4 +92,6 @@ import type IImageFrame from './IImageFrame';
92
92
  import type { DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata } from './MetadataModuleTypes';
93
93
  import type { IVoxelManager } from './IVoxelManager';
94
94
  import type { IRLEVoxelMap, RLERun } from './IRLEVoxelMap';
95
- export type { Cornerstone3DConfig, ICamera, IStackViewport, IVideoViewport, IWSIViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, ImageVolumeProps, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, IPointsManager, PolyDataPointConfiguration, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, ViewReference, DataSetOptions as ImageSetOptions, ViewPresentation, ViewPresentationSelector, ReferenceCompatibleOptions, ViewReferenceSpecifier, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, ImageActor, ICanvasActor, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, IStackInput, StackInputCallback, ViewportPreset, Metadata, OrientationVectors, AABB2, AABB3, Point2, Point3, PointsXYZ, Point4, Mat3, Plane, ViewportInputOptions, VideoViewportProperties, WSIViewportProperties, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, PublicSurfaceData, SurfaceData, ISurface, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, PixelDataTypedArrayString, ImagePixelModule, ImagePlaneModule, AffineMatrix, ImageLoadListener, InternalVideoCamera, VideoViewportInput, WSIViewportInput, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, ViewportInput, };
95
+ import type ImageLoadRequests from './ImageLoadRequests';
96
+ import type { IBaseVolumeViewport } from './IBaseVolumeViewport';
97
+ export type { Cornerstone3DConfig, ICamera, IStackViewport, IVideoViewport, IWSIViewport, IVolumeViewport, IEnabledElement, ICache, IVolume, IViewportId, IImageVolume, ImageVolumeProps, IDynamicImageVolume, IRenderingEngine, ScalingParameters, PTScaling, IPointsManager, PolyDataPointConfiguration, Scaling, IStreamingImageVolume, IImage, IImageData, IImageCalibration, CPUIImageData, CPUImageData, EventTypes, ImageLoaderFn, VolumeLoaderFn, IRegisterImageLoader, IStreamingVolumeProperties, IViewport, ViewReference, DataSetOptions as ImageSetOptions, ViewPresentation, ViewPresentationSelector, ReferenceCompatibleOptions, ViewReferenceSpecifier, StackViewportProperties, VolumeViewportProperties, ViewportProperties, PublicViewportInput, VolumeActor, Actor, ActorEntry, ImageActor, ICanvasActor, IImageLoadObject, IVolumeLoadObject, IVolumeInput, VolumeInputCallback, IStackInput, StackInputCallback, ViewportPreset, Metadata, OrientationVectors, AABB2, AABB3, Point2, Point3, PointsXYZ, Point4, Mat3, Plane, ViewportInputOptions, VideoViewportProperties, WSIViewportProperties, VOIRange, VOI, DisplayArea, FlipDirection, ICachedImage, ICachedVolume, CPUFallbackEnabledElement, CPUFallbackViewport, CPUFallbackTransform, CPUFallbackColormapData, CPUFallbackViewportDisplayedArea, CPUFallbackColormapsData, CPUFallbackColormap, TransformMatrix2D, CPUFallbackLookupTable, CPUFallbackLUT, CPUFallbackRenderingTools, CustomEventType, ActorSliceRange, ImageSliceData, IGeometry, IGeometryLoadObject, ICachedGeometry, PublicContourSetData, ContourSetData, ContourData, IContourSet, IContour, PublicSurfaceData, SurfaceData, ISurface, RGB, ColormapPublic, ColormapRegistration, PixelDataTypedArray, PixelDataTypedArrayString, ImagePixelModule, ImagePlaneModule, AffineMatrix, ImageLoadListener, InternalVideoCamera, VideoViewportInput, WSIViewportInput, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, ViewportInput, ImageLoadRequests, IBaseVolumeViewport, };