@cornerstonejs/core
Version:
Cornerstone3D Core
161 lines (160 loc) • 6.95 kB
TypeScript
import { InterpolationType } from '../enums/index.js';
import type { BoundsIJK, Mat3, Point3, PixelDataTypedArray, IImage, RGB, CPUImageData, IVoxelManager, IRLEVoxelMap, Point2 } from '../types/index.js';
import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
type VoxelVolumeGeometry = {
origin: Point3;
spacing: Point3;
direction: Mat3;
};
type SampleableVoxelVolume = VoxelVolumeGeometry & {
dimensions: Point3;
voxelManager?: IVoxelManager<number> | IVoxelManager<RGB>;
};
export default class VoxelManager<T> {
modifiedSlices: Set<number>;
private boundsIJK;
map: Map<number, T> | IRLEVoxelMap<T>;
sourceVoxelManager: IVoxelManager<T>;
isInObject: (pointLPS: any, pointIJK: any) => boolean;
readonly dimensions: Point3;
readonly numberOfComponents: number;
getCompleteScalarDataArray?: () => ArrayLike<number>;
setCompleteScalarDataArray?: (scalarData: ArrayLike<number>) => void;
invalidateCache?: () => void;
getRange: () => [number, number];
private scalarData;
private _scalarDataIsCachedExpansion;
private _sliceDataCache;
readonly _id: string;
points: Set<number>;
width: number;
frameSize: number;
readonly _get: (index: number) => T;
readonly _set: (index: number, v: T) => boolean;
readonly _getConstructor?: () => new (length: number) => PixelDataTypedArray;
_getScalarDataLength?: () => number;
_getScalarData?: () => ArrayLike<number>;
_updateScalarData?: (scalarData: ArrayLike<number>) => PixelDataTypedArray;
_getSliceData: (args: {
sliceIndex: number;
slicePlane: number;
}) => PixelDataTypedArray;
get id(): string;
constructor(dimensions: any, options: {
_get: (index: number) => T;
_set?: (index: number, v: T) => boolean;
_getScalarData?: () => ArrayLike<number>;
_id?: string;
_updateScalarData?: (scalarData: ArrayLike<number>) => PixelDataTypedArray;
numberOfComponents?: number;
scalarData?: ArrayLike<number>;
_getConstructor?: () => new (length: number) => PixelDataTypedArray;
});
getAtIJK: (i: any, j: any, k: any) => T;
setAtIJK: (i: number, j: number, k: number, v: any) => boolean;
getAtIJKPoint: ([i, j, k]: [any, any, any]) => T;
setAtIJKPoint: ([i, j, k]: Point3, v: any) => void;
getAtIndex: (index: any) => T;
getMinMax(): {
min: any;
max: any;
};
setAtIndex: (index: any, v: any) => boolean;
private invalidateCachedScalarExpansion;
toIJK(index: number): Point3;
getMiddleSliceData: () => PixelDataTypedArray;
toIndex(ijk: Point3): number;
getDefaultBounds(): BoundsIJK;
getBoundsIJK(): BoundsIJK;
forEach: (callback: (args: {
value: unknown;
index: number;
pointIJK: Point3;
pointLPS: Point3;
}) => void, options?: {
boundsIJK?: BoundsIJK;
isInObject?: (pointLPS: any, pointIJK: any) => boolean;
returnPoints?: boolean;
imageData?: vtkImageData | CPUImageData;
}) => void | any[];
rleForEach(callback: any, options?: any): void;
getScalarData(storeScalarData?: boolean): PixelDataTypedArray;
setScalarData(newScalarData: PixelDataTypedArray): void;
getScalarDataLength(): number;
get sizeInBytes(): number;
get bytePerVoxel(): number;
clearBounds(): void;
clear(): void;
getConstructor(): new (length: number) => PixelDataTypedArray;
getArrayOfModifiedSlices(): number[];
resetModifiedSlices(): void;
setBounds(bounds: BoundsIJK): void;
static addBounds(bounds: BoundsIJK, point: Point3): void;
private static getWorldToIndexTransform;
static worldToIndexContinuous(volumeGeometry: VoxelVolumeGeometry, worldPos: Point3): Point3;
static sampleAtWorldCoordinates(volume: SampleableVoxelVolume, worldX: number, worldY: number, worldZ: number, interpolationType?: InterpolationType): number;
static sampleAtWorld(volume: SampleableVoxelVolume, worldPos: Point3, interpolationType?: InterpolationType): number;
static sampleAtContinuousIndex(voxelManager: IVoxelManager<number> | IVoxelManager<RGB>, dimensions: Point3, continuousIndex: Point3, interpolationType?: InterpolationType): number;
private static sampleAtContinuousCoordinates;
private static sampleNearestAtContinuousCoordinates;
private static sampleLinearAtContinuousCoordinates;
addPoint(point: Point3 | number): void;
getPoints(): Point3[];
getSliceData: ({ sliceIndex, slicePlane, }: {
sliceIndex: number;
slicePlane: number;
}) => PixelDataTypedArray;
private setSliceDataValue;
private toNumber;
private static _createRGBScalarVolumeVoxelManager;
static createImageVolumeVoxelManager({ dimensions, imageIds, numberOfComponents, id, }: {
dimensions: Point3;
imageIds: string[];
numberOfComponents: number;
id?: string;
}): IVoxelManager<number> | IVoxelManager<RGB>;
static createScalarVolumeVoxelManager({ dimensions, scalarData, numberOfComponents, id, }: {
dimensions: Point3;
scalarData: any;
numberOfComponents?: number;
id?: string;
}): IVoxelManager<number> | IVoxelManager<RGB>;
static createScalarDynamicVolumeVoxelManager({ imageIdGroups, dimensions, dimensionGroupNumber, timePoint, numberOfComponents, id, }: {
imageIdGroups: string[][];
dimensions: Point3;
dimensionGroupNumber?: number;
timePoint?: number;
numberOfComponents?: number;
id?: string;
}): IVoxelManager<number> | IVoxelManager<RGB>;
static createImageVoxelManager({ width, height, scalarData, numberOfComponents, id, }: {
width: number;
height: number;
scalarData: PixelDataTypedArray;
numberOfComponents?: number;
id?: string;
}): IVoxelManager<number> | IVoxelManager<RGB>;
private static _createNumberVolumeVoxelManager;
static createMapVoxelManager<T>({ dimension, id, }: {
dimension: Point3;
id?: string;
}): IVoxelManager<T>;
static createHistoryVoxelManager<T>(sourceVoxelManager: VoxelManager<T>, id?: string): VoxelManager<T>;
static createRLEHistoryVoxelManager<T>(sourceVoxelManager: VoxelManager<T>, id?: string): VoxelManager<T>;
static createLazyVoxelManager<T>({ dimensions, planeFactory, id, }: {
dimensions: Point3;
planeFactory: (width: number, height: number) => T;
id?: string;
}): VoxelManager<T>;
static createRLEVolumeVoxelManager<T>({ dimensions, id, }: {
dimensions: Point3;
id?: string;
}): VoxelManager<T>;
static createRLEImageVoxelManager<T>({ dimensions, id, }: {
dimensions: Point2;
id?: string;
}): VoxelManager<T>;
static addInstanceToImage(image: IImage): void;
static: any;
}
export type { VoxelManager };