#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub enum CvdType {
Protan,
Deutan,
Tritan,
Achromat,
}
#[derive(Debug, Clone, Copy, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Severity(f64);
impl Severity {
#[must_use]
pub fn new(value: f64) -> Self {
Self(value.clamp(0.0, 1.0))
}
#[must_use]
pub fn value(self) -> f64 {
self.0
}
pub const FULL: Self = Self(1.0);
pub const NONE: Self = Self(0.0);
}
impl Default for Severity {
fn default() -> Self {
Self::FULL
}
}