import { Euler, Vector2, Vector3 } from "three"; import Volume from "./Volume.js"; import type { Bounds } from "./types.js"; /** * Marks groups of related settings that may have changed. */ export declare enum SettingsFlags { /** parameters: translation, rotation, scale, flipAxes */ TRANSFORM = 1, /** parameters: gammaMin, gammaLevel, gammaMax, brightness*/ CAMERA = 2, /** parameters: showBoundingBox, boundingBoxColor */ BOUNDING_BOX = 4, /** parameters: bounds, zSlice */ ROI = 8, /** parameters: maskAlpha */ MASK_ALPHA = 16, /** parameters: density, diffuse, specular, emissive, glossiness */ MATERIAL = 32, /** parameters: resolution, useInterpolation, pixelSamplingRate, primaryRayStepSize, secondaryRayStepSize*/ SAMPLING = 64, /** parameters: isOrtho, orthoScale, viewAxis, visible, maxProjectMode */ VIEW = 128, /** parameters: maskChannelIndex */ MASK_DATA = 256, ALL = 1023 } export declare enum Axis { X = "x", Y = "y", Z = "z", /** Alias for NONE, indicates 3D mode */ XYZ = "", /** No current axis, indicates 3D mode */ NONE = "" } /** * Holds shared settings for configuring `VolumeRenderImpl` instances. */ export declare class VolumeRenderSettings { translation: Vector3; rotation: Euler; scale: Vector3; flipAxes: Vector3; isOrtho: boolean; orthoScale: number; viewAxis: Axis; visible: boolean; maxProjectMode: boolean; gammaMin: number; gammaLevel: number; gammaMax: number; brightness: number; maskChannelIndex: number; maskAlpha: number; density: number; diffuse: [number, number, number][]; specular: [number, number, number][]; emissive: [number, number, number][]; glossiness: number[]; bounds: Bounds; zSlice: number; showBoundingBox: boolean; boundingBoxColor: [number, number, number]; resolution: Vector2; useInterpolation: boolean; pixelSamplingRate: number; primaryRayStepSize: number; secondaryRayStepSize: number; /** * Creates a new VolumeRenderSettings object with default fields. * @param volume Optional volume data parameter used to initialize size-dependent settings. */ constructor(volume?: Volume); resizeWithVolume(volume: Volume): void; /** * Recursively compares two arrays. * Non-array elements are compared using strict equality comparison. */ private static compareArray; /** * Compares two VolumeRenderSettings objects. * @returns true if both objects have identical settings. */ isEqual(o2: VolumeRenderSettings): boolean; /** * Recursively creates and returns a deep copy of an array. * Note: assumes values in the array are either primitives (numbers) or arrays of primitives. */ private static deepCopyArray; /** * Creates a deep copy of this VolumeRenderSettings object. * @param src The object to create a clone of. * @returns a new VolumeRenderSettings object with identical fields that do not * share references with the original settings object. */ clone(): VolumeRenderSettings; }