pub mod candela {
pub fn to_millicandela(value: f64) -> f64 {
value * 1000.0
}
pub fn to_kilocandela(value: f64) -> f64 {
value / 1000.0
}
pub fn to_hefnerkerze(value: f64) -> f64 {
value * 1.11
}
pub fn to_international_candle(value: f64) -> f64 {
value * 0.98
}
pub fn to_decimal_candle(value: f64) -> f64 {
value
}
}
pub mod millicandela {
pub fn to_candela(value: f64) -> f64 {
value / 1000.0
}
pub fn to_kilocandela(value: f64) -> f64 {
super::candela::to_kilocandela(to_candela(value))
}
pub fn to_hefnerkerze(value: f64) -> f64 {
super::candela::to_hefnerkerze(to_candela(value))
}
pub fn to_international_candle(value: f64) -> f64 {
super::candela::to_international_candle(to_candela(value))
}
pub fn to_decimal_candle(value: f64) -> f64 {
super::candela::to_decimal_candle(to_candela(value))
}
}
pub mod kilocandela {
pub fn to_candela(value: f64) -> f64 {
value * 1000.0
}
pub fn to_millicandela(value: f64) -> f64 {
super::candela::to_millicandela(to_candela(value))
}
pub fn to_hefnerkerze(value: f64) -> f64 {
super::candela::to_hefnerkerze(to_candela(value))
}
pub fn to_international_candle(value: f64) -> f64 {
super::candela::to_international_candle(to_candela(value))
}
pub fn to_decimal_candle(value: f64) -> f64 {
super::candela::to_decimal_candle(to_candela(value))
}
}
pub mod hefnerkerze {
pub fn to_candela(value: f64) -> f64 {
value / 1.11
}
pub fn to_millicandela(value: f64) -> f64 {
super::candela::to_millicandela(to_candela(value))
}
pub fn to_kilocandela(value: f64) -> f64 {
super::candela::to_kilocandela(to_candela(value))
}
pub fn to_international_candle(value: f64) -> f64 {
super::candela::to_international_candle(to_candela(value))
}
pub fn to_decimal_candle(value: f64) -> f64 {
super::candela::to_decimal_candle(to_candela(value))
}
}
pub mod international_candle {
pub fn to_candela(value: f64) -> f64 {
value / 0.98
}
pub fn to_millicandela(value: f64) -> f64 {
super::candela::to_millicandela(to_candela(value))
}
pub fn to_kilocandela(value: f64) -> f64 {
super::candela::to_kilocandela(to_candela(value))
}
pub fn to_hefnerkerze(value: f64) -> f64 {
super::candela::to_hefnerkerze(to_candela(value))
}
pub fn to_decimal_candle(value: f64) -> f64 {
super::candela::to_decimal_candle(to_candela(value))
}
}
pub mod decimal_candle {
pub fn to_candela(value: f64) -> f64 {
value
}
pub fn to_millicandela(value: f64) -> f64 {
super::candela::to_millicandela(to_candela(value))
}
pub fn to_kilocandela(value: f64) -> f64 {
super::candela::to_kilocandela(to_candela(value))
}
pub fn to_hefnerkerze(value: f64) -> f64 {
super::candela::to_hefnerkerze(to_candela(value))
}
pub fn to_international_candle(value: f64) -> f64 {
super::candela::to_international_candle(to_candela(value))
}
}
pub fn candela_to_millicandela(candela: f64) -> f64 {
candela::to_millicandela(candela)
}
pub fn millicandela_to_candela(millicandela: f64) -> f64 {
millicandela::to_candela(millicandela)
}
pub fn candela_to_kilocandela(candela: f64) -> f64 {
candela::to_kilocandela(candela)
}
pub fn kilocandela_to_candela(kilocandela: f64) -> f64 {
kilocandela::to_candela(kilocandela)
}
pub fn candela_to_hefnerkerze(candela: f64) -> f64 {
candela::to_hefnerkerze(candela)
}
pub fn hefnerkerze_to_candela(hefnerkerze: f64) -> f64 {
hefnerkerze::to_candela(hefnerkerze)
}
pub fn convert_luminous_intensity(
value: f64,
from_unit: &str,
to_unit: &str,
) -> Result<f64, String> {
let from_unit = from_unit.to_lowercase();
let to_unit = to_unit.to_lowercase();
let candela = match from_unit.as_str() {
"cd" | "candela" => value,
"mcd" | "millicandela" => millicandela::to_candela(value),
"kcd" | "kilocandela" => kilocandela::to_candela(value),
"hk" | "hefnerkerze" => hefnerkerze::to_candela(value),
"ic" | "international_candle" | "intl_candle" => international_candle::to_candela(value),
"dc" | "decimal_candle" => decimal_candle::to_candela(value),
_ => {
return Err(format!(
"Unsupported luminous intensity unit: {}",
from_unit
))
}
};
let result = match to_unit.as_str() {
"cd" | "candela" => candela,
"mcd" | "millicandela" => candela::to_millicandela(candela),
"kcd" | "kilocandela" => candela::to_kilocandela(candela),
"hk" | "hefnerkerze" => candela::to_hefnerkerze(candela),
"ic" | "international_candle" | "intl_candle" => candela::to_international_candle(candela),
"dc" | "decimal_candle" => candela::to_decimal_candle(candela),
_ => return Err(format!("Unsupported luminous intensity unit: {}", to_unit)),
};
Ok(result)
}