@cornerstonejs/core
Version:
Cornerstone3D Core
99 lines (98 loc) • 3.61 kB
TypeScript
import { InterpolationType } from '../../../enums/index.js';
import type { CPUFallbackEnabledElement, ICamera, IImage, IImageVolume, Point2, Point3, VOIRange } from '../../../types/index.js';
import type { PlanarDataPresentation } from './PlanarViewportTypes.js';
export type PlanarCPUSampledSliceState = {
image: IImage;
samplingMode: 'source-slice' | 'viewport';
focalPoint: Point3;
translationReferenceFocalPoint: Point3;
right: Point3;
up: Point3;
normal: Point3;
spacingInNormalDirection: number;
canvasWidth: number;
canvasHeight: number;
parallelScale: number;
scaleRatio: number;
interpolationType: InterpolationType;
};
export type PlanarCPUVolumeResampleDecision = 'resample' | 'reuse' | 'defer';
export default class PlanarCPUVolumeSampler {
private sampleSequence;
private scalarViewportSampler;
private scalarRangeCache;
private readonly sliceArrayPool;
clearCachedScalarRange(voxelManager: NonNullable<IImageVolume['voxelManager']>): void;
releaseSampledSliceState(sampledSliceState?: PlanarCPUSampledSliceState): void;
clearSliceArrayPool(): void;
private getScalarDataRange;
getCameraBasis(camera: ICamera<unknown>): {
right: Point3;
up: Point3;
normal: Point3;
};
getResolvedVOIRange(voiRange: VOIRange | undefined, fallbackLower: number, fallbackUpper: number): VOIRange;
getFallbackStoredRange(volume: IImageVolume): {
min: number;
max: number;
};
createOrUpdateEnabledElement(args: {
enabledElement?: CPUFallbackEnabledElement;
canvas: HTMLCanvasElement;
image: IImage;
modality?: string;
}): CPUFallbackEnabledElement;
updateCPUFallbackViewport(args: {
enabledElement: CPUFallbackEnabledElement;
sampledSliceState: PlanarCPUSampledSliceState;
camera: ICamera<unknown> & {
presentationScale?: Point2;
};
dataPresentation?: PlanarDataPresentation;
defaultVOIRange?: VOIRange;
}): void;
needsResample(args: {
sampledSliceState?: PlanarCPUSampledSliceState;
width: number;
height: number;
camera: ICamera<unknown> & {
presentationScale?: Point2;
};
dataPresentation?: PlanarDataPresentation;
deferViewportResample?: boolean;
}): boolean;
getResampleDecision(args: {
sampledSliceState?: PlanarCPUSampledSliceState;
width: number;
height: number;
camera: ICamera<unknown> & {
presentationScale?: Point2;
};
dataPresentation?: PlanarDataPresentation;
deferViewportResample?: boolean;
}): PlanarCPUVolumeResampleDecision;
sampleSliceImage(args: {
volume: IImageVolume;
width: number;
height: number;
camera: ICamera<unknown> & {
presentationScale?: Point2;
};
dataPresentation?: PlanarDataPresentation;
useViewportSamplingForLinear?: boolean;
}): PlanarCPUSampledSliceState;
private trySampleOrthogonalSliceFromVoxelManager;
private sampleVoxelAtContinuousIndex;
private sampleNearestColorAtContinuousIndex;
private sampleLinearColorAtContinuousIndex;
private toColorSample;
private createDefaultColorSample;
private writeVoxelValue;
private getVolumeNumberOfComponents;
private getSliceArrayConstructor;
private acquireSliceArray;
private releaseSliceArray;
private getSliceArrayPoolKey;
private createSliceImage;
private shouldPreserveFloatScalarSamples;
}