@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.
- package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +2 -2
- package/dist/esm/RenderingEngine/BaseVolumeViewport.js +4 -0
- package/dist/esm/RenderingEngine/CanvasActor/index.d.ts +1 -2
- package/dist/esm/RenderingEngine/RenderingEngine.d.ts +1 -2
- package/dist/esm/RenderingEngine/RenderingEngine.js +1 -12
- package/dist/esm/RenderingEngine/StackViewport.d.ts +11 -4
- package/dist/esm/RenderingEngine/StackViewport.js +61 -47
- package/dist/esm/RenderingEngine/VideoViewport.d.ts +2 -2
- package/dist/esm/RenderingEngine/Viewport.d.ts +8 -3
- package/dist/esm/RenderingEngine/Viewport.js +8 -8
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +1 -0
- package/dist/esm/RenderingEngine/VolumeViewport.js +9 -0
- package/dist/esm/RenderingEngine/VolumeViewport3D.d.ts +5 -1
- package/dist/esm/RenderingEngine/VolumeViewport3D.js +31 -3
- package/dist/esm/RenderingEngine/WSIViewport.d.ts +3 -3
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +5 -11
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +1 -1
- package/dist/esm/cache/cache.d.ts +3 -3
- package/dist/esm/cache/cache.js +1 -1
- package/dist/esm/cache/classes/BaseStreamingImageVolume.js +0 -1
- package/dist/esm/cache/classes/Contour.d.ts +2 -2
- package/dist/esm/cache/classes/ContourSet.d.ts +2 -2
- package/dist/esm/cache/classes/ImageVolume.d.ts +2 -2
- package/dist/esm/cache/classes/Surface.d.ts +2 -2
- package/dist/esm/enums/Events.d.ts +1 -1
- package/dist/esm/enums/Events.js +1 -1
- package/dist/esm/enums/GeometryType.d.ts +2 -2
- package/dist/esm/enums/GeometryType.js +2 -2
- package/dist/esm/enums/ViewportType.d.ts +1 -1
- package/dist/esm/enums/ViewportType.js +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/init.d.ts +2 -1
- package/dist/esm/init.js +4 -1
- package/dist/esm/loaders/geometryLoader.js +3 -3
- package/dist/esm/loaders/utils/contourSet/createContourSet.js +1 -1
- package/dist/esm/loaders/utils/surface/createSurface.js +1 -1
- package/dist/esm/loaders/volumeLoader.d.ts +2 -2
- package/dist/esm/loaders/volumeLoader.js +0 -8
- package/dist/esm/types/IActor.d.ts +2 -7
- package/dist/esm/types/IBaseVolumeViewport.d.ts +2 -0
- package/dist/esm/types/IContour.d.ts +2 -14
- package/dist/esm/types/IContourSet.d.ts +2 -22
- package/dist/esm/types/IImageVolume.d.ts +2 -45
- package/dist/esm/types/IPointsManager.d.ts +2 -18
- package/dist/esm/types/IRLEVoxelMap.d.ts +2 -11
- package/dist/esm/types/IRenderingEngine.d.ts +3 -26
- package/dist/esm/types/IStackViewport.d.ts +2 -69
- package/dist/esm/types/IStreamingImageVolume.d.ts +1 -0
- package/dist/esm/types/ISurface.d.ts +2 -13
- package/dist/esm/types/IVideoViewport.d.ts +2 -40
- package/dist/esm/types/IViewport.d.ts +4 -90
- package/dist/esm/types/IVolumeViewport.d.ts +3 -45
- package/dist/esm/types/IVoxelManager.d.ts +2 -54
- package/dist/esm/types/IWSIViewport.d.ts +3 -16
- package/dist/esm/types/MetadataModuleTypes.d.ts +1 -0
- package/dist/esm/types/index.d.ts +2 -2
- package/dist/esm/utilities/PointsManager.d.ts +1 -1
- package/dist/esm/utilities/RLEVoxelMap.d.ts +2 -2
- package/dist/esm/utilities/VoxelManager.d.ts +7 -6
- package/dist/esm/utilities/VoxelManager.js +12 -3
- package/dist/esm/utilities/convertStackToVolumeViewport.js +2 -2
- package/dist/esm/utilities/generateVolumePropsFromImageIds.js +2 -2
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +13 -5
- package/dist/esm/types/WSIViewportTypes.d.ts +0 -13
- /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
|
|
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
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
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 {
|
|
2
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
export
|
|
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 };
|
|
@@ -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
|
-
|
|
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>
|
|
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 {
|
|
2
|
-
export default class RLEVoxelMap<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>
|
|
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
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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];
|