use crate::constants::*;
use crate::error::Result;
mod types;
pub(crate) mod coordinate_transforms;
pub(crate) mod hue_conversions;
#[allow(dead_code)]
pub(crate) mod interpolation_methods;
mod color_space;
mod xyy_to_munsell;
mod renotation;
mod value_computation;
mod unused_methods;
#[cfg(test)]
mod tests;
pub use types::{Illuminant, ChromaticAdaptation, MunsellSpecification, CieXyY};
#[allow(dead_code)]
const TOLERANCE_ABSOLUTE_DEFAULT: f64 = 1e-8;
const MAX_OUTER_ITERATIONS: usize = 64;
pub struct MathematicalMunsellConverter {
pub(crate) renotation_data: &'static [((&'static str, f64, f64), (f64, f64, f64))],
source_illuminant: Illuminant,
target_illuminant: Illuminant,
adaptation_method: ChromaticAdaptation,
}
impl MathematicalMunsellConverter {
pub fn new() -> Result<Self> {
Ok(Self {
renotation_data: MUNSELL_RENOTATION_DATA,
source_illuminant: Illuminant::D65,
target_illuminant: Illuminant::D65,
adaptation_method: ChromaticAdaptation::Bradford,
})
}
pub fn with_illuminants(
source: Illuminant, target: Illuminant, method: ChromaticAdaptation,
) -> Result<Self> {
Ok(Self {
renotation_data: MUNSELL_RENOTATION_DATA,
source_illuminant: source,
target_illuminant: target,
adaptation_method: method,
})
}
}