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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
mod colors;
mod converters;
mod error;
mod from_str;
mod normalize;
#[cfg(test)]
mod tests;
pub use colors::{Hsl, Hsla, Rgb, Rgba};
pub use error::ParseError;
pub type ColorTuple = (f32, f32, f32);
pub type ColorTupleA = (f32, f32, f32, f32);
pub trait Color {
type Tuple;
fn new() -> Self;
fn to_rgb(&self) -> Rgb;
fn to_rgba(&self) -> Rgba;
fn to_hsl(&self) -> Hsl;
fn to_hsla(&self) -> Hsla;
fn to_css_string(&self) -> String;
fn from_tuple(tuple: Self::Tuple) -> Self;
fn as_tuple(&self) -> Self::Tuple;
fn adjust_hue(&self, amt: f32) -> Self;
fn lighten(&self, amt: f32) -> Self;
fn saturate(&self, amt: f32) -> Self;
fn adjust_color(&self, col_name: RgbColor, val: f32) -> Self;
fn get_red(&self) -> f32;
fn get_green(&self) -> f32;
fn get_blue(&self) -> f32;
fn set_red(&self, val: f32) -> Self;
fn set_green(&self, val: f32) -> Self;
fn set_blue(&self, val: f32) -> Self;
fn get_hue(&self) -> f32;
fn get_saturation(&self) -> f32;
fn get_lightness(&self) -> f32;
fn set_hue(&self, val: f32) -> Self;
fn set_saturation(&self, val: f32) -> Self;
fn set_lightness(&self, val: f32) -> Self;
}
pub trait AlphaColor {
fn get_alpha(&self) -> f32;
fn set_alpha(&self, a: f32) -> Self;
fn opacify(&self, o: f32) -> Self;
}
#[derive(Clone, Copy)]
pub enum RgbColor {
Red,
Green,
Blue,
}