1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use std::fmt;

#[derive(Clone, Copy, PartialEq, Debug)]
pub struct CmykColor {
    pub cyan: f64,    // cyan
    pub magenta: f64, // magenta
    pub yellow: f64,  // yellow
    pub key: f64,     // key color
}

impl CmykColor {
    pub fn new(c: f64, m: f64, y: f64, k: f64) -> Self {
        Self {
            cyan: c,
            magenta: m,
            yellow: y,
            key: k,
        }
    }
}

impl fmt::Display for CmykColor {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(
            f,
            "cmyk({}%, {}%, {}%, {}%)",
            self.cyan, self.magenta, self.yellow, self.key
        )
    }
}