/** * ColormapManager module * * Handles colormap assignment and management. * This module contains functions for: * - Setting continuous colormaps * - Setting discrete label colormaps * - Managing colormap and opacity properties */ import type { NVImage } from './index' import { cmapper, type ColorMap } from '@/colortables' import * as IntensityCalibration from '@/nvimage/IntensityCalibration' /** * Set continuous colormap. * Base function for niivue.setColormap(). * Colormaps are continuously interpolated between 256 values (0..256). * * @param nvImage - The NVImage instance * @param cm - Colormap name */ export function setColormap(nvImage: NVImage, cm: string): void { nvImage._colormap = cm IntensityCalibration.calMinMax(nvImage) if (nvImage.onColormapChange) { nvImage.onColormapChange(nvImage) } } /** * Set discrete label colormap. * Base function for niivue.setColormap(). * Label colormaps are discretely sampled from an arbitrary number of colors. * * @param nvImage - The NVImage instance * @param cm - ColorMap object */ export function setColormapLabel(nvImage: NVImage, cm: ColorMap): void { nvImage.colormapLabel = cmapper.makeLabelLut(cm) } /** * Load label colormap from URL. * * @param nvImage - The NVImage instance * @param url - URL to load colormap from */ export async function setColormapLabelFromUrl(nvImage: NVImage, url: string): Promise { nvImage.colormapLabel = await cmapper.makeLabelLutFromUrl(url) } /** * Get colormap name. * * @param nvImage - The NVImage instance * @returns Colormap name */ export function getColormap(nvImage: NVImage): string { return nvImage._colormap } /** * Get opacity value. * * @param nvImage - The NVImage instance * @returns Opacity value */ export function getOpacity(nvImage: NVImage): number { return nvImage._opacity } /** * Set opacity value. * * @param nvImage - The NVImage instance * @param opacity - Opacity value */ export function setOpacity(nvImage: NVImage, opacity: number): void { nvImage._opacity = opacity if (nvImage.onOpacityChange) { nvImage.onOpacityChange(nvImage) } }