UNPKG

@cornerstonejs/core

Version:
99 lines (98 loc) 3.61 kB
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; }