1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4#[non_exhaustive]
5pub enum CvdType {
6 Protan,
8 Deutan,
10 Tritan,
12 Achromat,
14}
15
16#[derive(Debug, Clone, Copy, PartialEq)]
20#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
21pub struct Severity(f64);
22
23impl Severity {
24 #[must_use]
26 pub fn new(value: f64) -> Self {
27 Self(value.clamp(0.0, 1.0))
28 }
29
30 #[must_use]
32 pub fn value(self) -> f64 {
33 self.0
34 }
35
36 pub const FULL: Self = Self(1.0);
38
39 pub const NONE: Self = Self(0.0);
41}
42
43impl Default for Severity {
44 fn default() -> Self {
45 Self::FULL
46 }
47}