@cornerstonejs/core 2.0.0-beta.23 → 2.0.0-beta.25

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 (68) hide show
  1. package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +2 -2
  2. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +4 -0
  3. package/dist/esm/RenderingEngine/CanvasActor/index.d.ts +1 -2
  4. package/dist/esm/RenderingEngine/RenderingEngine.d.ts +1 -2
  5. package/dist/esm/RenderingEngine/RenderingEngine.js +1 -12
  6. package/dist/esm/RenderingEngine/StackViewport.d.ts +11 -4
  7. package/dist/esm/RenderingEngine/StackViewport.js +61 -47
  8. package/dist/esm/RenderingEngine/VideoViewport.d.ts +2 -2
  9. package/dist/esm/RenderingEngine/Viewport.d.ts +8 -3
  10. package/dist/esm/RenderingEngine/Viewport.js +8 -8
  11. package/dist/esm/RenderingEngine/VolumeViewport.d.ts +1 -0
  12. package/dist/esm/RenderingEngine/VolumeViewport.js +9 -0
  13. package/dist/esm/RenderingEngine/VolumeViewport3D.d.ts +5 -1
  14. package/dist/esm/RenderingEngine/VolumeViewport3D.js +31 -3
  15. package/dist/esm/RenderingEngine/WSIViewport.d.ts +3 -3
  16. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +5 -11
  17. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +1 -1
  18. package/dist/esm/cache/cache.d.ts +3 -3
  19. package/dist/esm/cache/cache.js +1 -1
  20. package/dist/esm/cache/classes/BaseStreamingImageVolume.js +0 -1
  21. package/dist/esm/cache/classes/Contour.d.ts +2 -2
  22. package/dist/esm/cache/classes/ContourSet.d.ts +2 -2
  23. package/dist/esm/cache/classes/ImageVolume.d.ts +2 -2
  24. package/dist/esm/cache/classes/Surface.d.ts +2 -2
  25. package/dist/esm/enums/Events.d.ts +1 -1
  26. package/dist/esm/enums/Events.js +1 -1
  27. package/dist/esm/enums/GeometryType.d.ts +2 -2
  28. package/dist/esm/enums/GeometryType.js +2 -2
  29. package/dist/esm/enums/ViewportType.d.ts +1 -1
  30. package/dist/esm/enums/ViewportType.js +1 -1
  31. package/dist/esm/index.d.ts +2 -2
  32. package/dist/esm/index.js +2 -2
  33. package/dist/esm/init.d.ts +2 -1
  34. package/dist/esm/init.js +4 -1
  35. package/dist/esm/loaders/geometryLoader.js +3 -3
  36. package/dist/esm/loaders/utils/contourSet/createContourSet.js +1 -1
  37. package/dist/esm/loaders/utils/surface/createSurface.js +1 -1
  38. package/dist/esm/loaders/volumeLoader.d.ts +2 -2
  39. package/dist/esm/loaders/volumeLoader.js +0 -8
  40. package/dist/esm/types/IActor.d.ts +2 -7
  41. package/dist/esm/types/IBaseVolumeViewport.d.ts +2 -0
  42. package/dist/esm/types/IContour.d.ts +2 -14
  43. package/dist/esm/types/IContourSet.d.ts +2 -22
  44. package/dist/esm/types/IImageVolume.d.ts +2 -45
  45. package/dist/esm/types/IPointsManager.d.ts +2 -18
  46. package/dist/esm/types/IRLEVoxelMap.d.ts +2 -11
  47. package/dist/esm/types/IRenderingEngine.d.ts +3 -26
  48. package/dist/esm/types/IStackViewport.d.ts +2 -69
  49. package/dist/esm/types/IStreamingImageVolume.d.ts +1 -0
  50. package/dist/esm/types/ISurface.d.ts +2 -13
  51. package/dist/esm/types/IVideoViewport.d.ts +2 -40
  52. package/dist/esm/types/IViewport.d.ts +4 -90
  53. package/dist/esm/types/IVolumeViewport.d.ts +3 -45
  54. package/dist/esm/types/IVoxelManager.d.ts +2 -54
  55. package/dist/esm/types/IWSIViewport.d.ts +3 -16
  56. package/dist/esm/types/MetadataModuleTypes.d.ts +1 -0
  57. package/dist/esm/types/index.d.ts +2 -2
  58. package/dist/esm/utilities/PointsManager.d.ts +1 -1
  59. package/dist/esm/utilities/RLEVoxelMap.d.ts +2 -2
  60. package/dist/esm/utilities/VoxelManager.d.ts +7 -6
  61. package/dist/esm/utilities/VoxelManager.js +12 -3
  62. package/dist/esm/utilities/convertStackToVolumeViewport.js +2 -2
  63. package/dist/esm/utilities/generateVolumePropsFromImageIds.js +2 -2
  64. package/dist/umd/index.js +1 -1
  65. package/dist/umd/index.js.map +1 -1
  66. package/package.json +13 -5
  67. package/dist/esm/types/WSIViewportTypes.d.ts +0 -13
  68. /package/dist/esm/types/{WSIViewportTypes.js → IBaseVolumeViewport.js} +0 -0
@@ -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;
@@ -157,14 +71,14 @@ interface InternalViewportInput {
157
71
  }
158
72
  interface ViewportInput {
159
73
  id: string;
160
- element: HTMLDivElement;
161
- canvas: HTMLCanvasElement;
162
74
  renderingEngineId: string;
163
75
  type: ViewportType;
76
+ element: HTMLDivElement;
164
77
  sx: number;
165
78
  sy: number;
166
79
  sWidth: number;
167
80
  sHeight: number;
168
81
  defaultOptions: ViewportInputOptions;
82
+ canvas: HTMLCanvasElement;
169
83
  }
170
84
  export type { IViewport, ViewportInput, PublicViewportInput, InternalViewportInput, NormalizedViewportInput, };
@@ -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 };
@@ -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;
@@ -81,7 +81,6 @@ import type VideoViewportProperties from './VideoViewportProperties';
81
81
  import type WSIViewportProperties from './WSIViewportProperties';
82
82
  import type { IVideoViewport } from './IVideoViewport';
83
83
  import type { InternalVideoCamera, VideoViewportInput } from './VideoViewportTypes';
84
- import type { WSIViewportInput } from './WSIViewportTypes';
85
84
  import type { ISurface } from './ISurface';
86
85
  import type BoundsIJK from './BoundsIJK';
87
86
  import type { ImageVolumeProps } from './ImageVolumeProps';
@@ -93,4 +92,5 @@ import type { DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, Ima
93
92
  import type { IVoxelManager } from './IVoxelManager';
94
93
  import type { IRLEVoxelMap, RLERun } from './IRLEVoxelMap';
95
94
  import type ImageLoadRequests from './ImageLoadRequests';
96
- 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, };
95
+ import type { IBaseVolumeViewport } from './IBaseVolumeViewport';
96
+ 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, BoundsIJK, BoundsLPS, Color, ColorLUT, VolumeProps, IImageFrame, DicomDateObject, DicomTimeObject, GeneralSeriesModuleMetadata, ImagePlaneModuleMetadata, SopCommonModuleMetadata, ImagePixelModuleMetadata, PatientStudyModuleMetadata, TransferSyntaxMetadata, LocalVolumeOptions, IVoxelManager, IRLEVoxelMap, RLERun, ViewportInput, ImageLoadRequests, IBaseVolumeViewport, };
@@ -2,7 +2,7 @@ import type { IPointsManager, PolyDataPointConfiguration } from '../types';
2
2
  import type Point2 from '../types/Point2';
3
3
  import type Point3 from '../types/Point3';
4
4
  import type { PointsXYZ } from '../types/Point3';
5
- export default class PointsManager<T> implements IPointsManager<T> {
5
+ export default class PointsManager<T> {
6
6
  kIndex: number;
7
7
  sources: IPointsManager<T>[];
8
8
  data: Float32Array;
@@ -1,5 +1,5 @@
1
- import type { IRLEVoxelMap, PixelDataTypedArray, RLERun } from '../types';
2
- export default class RLEVoxelMap<T> implements IRLEVoxelMap<T> {
1
+ import type { PixelDataTypedArray, RLERun } from '../types';
2
+ export default class RLEVoxelMap<T> {
3
3
  protected rows: Map<number, RLERun<T>[]>;
4
4
  protected height: number;
5
5
  protected width: number;
@@ -1,6 +1,6 @@
1
1
  import type { BoundsIJK, Point3, PixelDataTypedArray, IImage, RGB, CPUImageData, IVoxelManager, IRLEVoxelMap } from '../types';
2
2
  import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
3
- export default class VoxelManager<T> implements IVoxelManager<T> {
3
+ export default class VoxelManager<T> {
4
4
  modifiedSlices: Set<number>;
5
5
  boundsIJK: BoundsIJK;
6
6
  map: Map<number, T> | IRLEVoxelMap<T>;
@@ -17,7 +17,7 @@ export default class VoxelManager<T> implements IVoxelManager<T> {
17
17
  width: number;
18
18
  frameSize: number;
19
19
  _get: (index: number) => T;
20
- _set: (index: number, v: T) => boolean | void;
20
+ _set: (index: number, v: T) => boolean;
21
21
  _getConstructor?: () => new (length: number) => PixelDataTypedArray;
22
22
  _getScalarDataLength?: () => number;
23
23
  _getScalarData?: () => PixelDataTypedArray;
@@ -25,13 +25,13 @@ export default class VoxelManager<T> implements IVoxelManager<T> {
25
25
  sliceIndex: number;
26
26
  slicePlane: number;
27
27
  }) => PixelDataTypedArray;
28
- constructor(dimensions: any, _get: (index: number) => T, _set?: (index: number, v: T) => boolean | void);
28
+ constructor(dimensions: any, _get: (index: number) => T, _set?: (index: number, v: T) => boolean);
29
29
  getAtIJK: (i: any, j: any, k: any) => T;
30
- setAtIJK: (i: number, j: number, k: number, v: any) => void;
30
+ setAtIJK: (i: number, j: number, k: number, v: any) => boolean;
31
31
  getAtIJKPoint: ([i, j, k]: [any, any, any]) => T;
32
32
  setAtIJKPoint: ([i, j, k]: Point3, v: any) => void;
33
33
  getAtIndex: (index: any) => T;
34
- setAtIndex: (index: any, v: any) => void;
34
+ setAtIndex: (index: any, v: any) => boolean;
35
35
  toIJK(index: number): Point3;
36
36
  getMiddleSliceData: () => PixelDataTypedArray;
37
37
  toIndex(ijk: Point3): number;
@@ -53,7 +53,8 @@ export default class VoxelManager<T> implements IVoxelManager<T> {
53
53
  get bytePerVoxel(): number;
54
54
  clear(): void;
55
55
  getConstructor(): new (length: number) => PixelDataTypedArray;
56
- getArrayOfSlices(): number[];
56
+ getArrayOfModifiedSlices(): number[];
57
+ resetModifiedSlices(): void;
57
58
  static addBounds(bounds: BoundsIJK, point: Point3): void;
58
59
  addPoint(point: Point3 | number): void;
59
60
  getPoints(): Point3[];
@@ -20,10 +20,12 @@ export default class VoxelManager {
20
20
  };
21
21
  this.setAtIJK = (i, j, k, v) => {
22
22
  const index = this.toIndex([i, j, k]);
23
- if (this._set(index, v) !== false) {
23
+ const changed = this._set(index, v);
24
+ if (changed) {
24
25
  this.modifiedSlices.add(k);
25
26
  VoxelManager.addBounds(this.boundsIJK, [i, j, k]);
26
27
  }
28
+ return changed;
27
29
  };
28
30
  this.getAtIJKPoint = ([i, j, k]) => this.getAtIJK(i, j, k);
29
31
  this.setAtIJKPoint = ([i, j, k], v) => {
@@ -31,11 +33,13 @@ export default class VoxelManager {
31
33
  };
32
34
  this.getAtIndex = (index) => this._get(index);
33
35
  this.setAtIndex = (index, v) => {
34
- if (this._set(index, v) !== false) {
36
+ const changed = this._set(index, v);
37
+ if (changed) {
35
38
  const pointIJK = this.toIJK(index);
36
39
  this.modifiedSlices.add(pointIJK[2]);
37
40
  VoxelManager.addBounds(this.boundsIJK, pointIJK);
38
41
  }
42
+ return changed;
39
43
  };
40
44
  this.getMiddleSliceData = () => {
41
45
  const middleSliceIndex = Math.floor(this.dimensions[2] / 2);
@@ -263,9 +267,12 @@ export default class VoxelManager {
263
267
  console.warn('No scalar data available or can be used to get the constructor');
264
268
  return Float32Array;
265
269
  }
266
- getArrayOfSlices() {
270
+ getArrayOfModifiedSlices() {
267
271
  return Array.from(this.modifiedSlices);
268
272
  }
273
+ resetModifiedSlices() {
274
+ this.modifiedSlices.clear();
275
+ }
269
276
  static addBounds(bounds, point) {
270
277
  if (!bounds) {
271
278
  bounds = [
@@ -613,6 +620,7 @@ export default class VoxelManager {
613
620
  map.set(k, layer);
614
621
  }
615
622
  layer[index % planeSize] = v;
623
+ return true;
616
624
  });
617
625
  voxelManager.map = map;
618
626
  return voxelManager;
@@ -622,6 +630,7 @@ export default class VoxelManager {
622
630
  const map = new RLEVoxelMap(width, height, depth);
623
631
  const voxelManager = new VoxelManager(dimensions, (index) => map.get(index), (index, v) => {
624
632
  map.set(index, v);
633
+ return true;
625
634
  });
626
635
  voxelManager.map = map;
627
636
  voxelManager.getPixelData = map.getPixelData.bind(map);
@@ -21,9 +21,9 @@ async function convertStackToVolumeViewport({ viewport, options, }) {
21
21
  orientation: options.orientation,
22
22
  },
23
23
  });
24
- const volume = await createAndCacheVolume(volumeId, {
24
+ const volume = (await createAndCacheVolume(volumeId, {
25
25
  imageIds,
26
- });
26
+ }));
27
27
  volume.load();
28
28
  const volumeViewport = renderingEngine.getViewport(viewportId);
29
29
  await setVolumesForViewports(renderingEngine, [
@@ -14,7 +14,7 @@ function generateVolumePropsFromImageIds(imageIds, volumeId) {
14
14
  const { zSpacing, origin, sortedImageIds } = sortImageIdsAndGetSpacing(imageIds, scanAxisNormal);
15
15
  const numFrames = imageIds.length;
16
16
  const spacing = [PixelSpacing[1], PixelSpacing[0], zSpacing];
17
- const dimensions = [Columns, Rows, numFrames];
17
+ const dimensions = [Columns, Rows, numFrames].map((it) => Math.floor(it));
18
18
  const direction = [
19
19
  ...rowCosineVec,
20
20
  ...colCosineVec,
@@ -34,7 +34,7 @@ function generateVolumePropsFromImageIds(imageIds, volumeId) {
34
34
  };
35
35
  }
36
36
  function _determineDataType(imageIds, volumeMetadata) {
37
- const { BitsAllocated, PixelRepresentation, PhotometricInterpretation } = volumeMetadata;
37
+ const { BitsAllocated, PixelRepresentation, x } = volumeMetadata;
38
38
  const signed = PixelRepresentation === 1;
39
39
  const imageIdIndex = Math.floor(imageIds.length / 2);
40
40
  const imageId = imageIds[imageIdIndex];