UNPKG

@cornerstonejs/core

Version:
58 lines (57 loc) 2.15 kB
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[]; }