1use serde::{Deserialize, Serialize};
2use strum_macros::{Display, EnumIter, EnumString};
3
4#[derive(Serialize, Deserialize, Debug, Clone, Copy, Display, EnumIter, EnumString)]
5#[strum(ascii_case_insensitive)]
6pub enum Color {
7 Black,
8 White,
9 Red,
10 Green,
11 Blue,
12 Yellow,
13 Magenta,
14 Gray,
15 Silver,
16 Maroon,
17 Olive,
18 Lime,
19 Navy,
20 Teal,
21 Purple,
22 Orange,
23 Brown,
24 Pink,
25 Gold,
26}
27
28impl Color {
29 pub fn into_hex(&self) -> String {
30 match self {
31 self::Color::Black => "#000000".to_owned(),
32 self::Color::White => "#FFFFFF".to_owned(),
33 self::Color::Red => "#FF0000".to_owned(),
34 self::Color::Green => "#008000".to_owned(),
35 self::Color::Blue => "#0000FF".to_owned(),
36 self::Color::Yellow => "#FFFF00".to_owned(),
37 self::Color::Magenta => "#FF00FF".to_owned(),
38 self::Color::Gray => "#808080".to_owned(),
39 self::Color::Silver => "#C0C0C0".to_owned(),
40 self::Color::Maroon => "#800000".to_owned(),
41 self::Color::Olive => "#808000".to_owned(),
42 self::Color::Lime => "#00FF00".to_owned(),
43 self::Color::Navy => "#000080".to_owned(),
44 self::Color::Teal => "#008080".to_owned(),
45 self::Color::Purple => "#800080".to_owned(),
46 self::Color::Orange => "#FFA500".to_owned(),
47 self::Color::Brown => "#A52A2A".to_owned(),
48 self::Color::Pink => "#FFC0CB".to_owned(),
49 self::Color::Gold => "#FFD700".to_owned(),
50 }
51 }
52}