@cornerstonejs/core
Version:
Cornerstone3D Core
58 lines (57 loc) • 2.15 kB
TypeScript
import type Point3 from '../types/Point3.js';
import type BoundsIJK from '../types/BoundsIJK.js';
import type { PixelDataTypedArray } from '../types/index.js';
export type RLERun<T> = {
value: T;
start: number;
end: number;
};
export type PlaneNormalizer = {
toIJK: (ijkPrime: Point3) => Point3;
fromIJK: (ijk: Point3) => Point3;
boundsIJKPrime: BoundsIJK;
};
export default class RLEVoxelMap<T> {
normalizer: PlaneNormalizer;
protected rows: Map<number, RLERun<T>[]>;
height: number;
width: number;
depth: number;
protected jMultiple: number;
protected kMultiple: number;
protected numComps: number;
defaultValue: T;
pixelDataConstructor: Uint8ArrayConstructor;
static copyMap<T>(destination: RLEVoxelMap<T>, source: RLEVoxelMap<T>): void;
constructor(width: number, height: number, depth?: number);
static getScalarData: (ArrayType?: Uint8ClampedArrayConstructor) => Uint8ClampedArray;
updateScalarData: (scalarData: PixelDataTypedArray) => void;
get: (index: number) => T;
toIJK(index: number): Point3;
toIndex([i, j, k]: Point3): number;
protected getRLE(i: number, j: number, k?: number): RLERun<T>;
has(index: number): boolean;
delete(index: number): void;
protected findIndex(row: RLERun<T>[], i: number): number;
forEach(callback: any, options?: {
rowModified?: boolean;
}): void;
forEachRow(callback: any): void;
getRun: (j: number, k: number) => RLERun<T>[];
set: (index: number, value: T) => void;
clear(): void;
keys(): number[];
getPixelData(k?: number, pixelData?: PixelDataTypedArray): PixelDataTypedArray;
floodFill(i: number, j: number, k: number, value: T, options?: {
planar?: boolean;
diagonals?: boolean;
singlePlane?: boolean;
}): number;
private flood;
fillFrom(getter: (i: number, j: number, k: number) => T, boundsIJK: BoundsIJK): void;
findAdjacents(item: [RLERun<T>, number, number, Point3[]?], { diagonals, planar, singlePlane }: {
diagonals?: boolean;
planar?: boolean;
singlePlane?: boolean;
}): any[];
}