1macro_rules! css_color_types {
2 ($(
3 $name:ident ($r:literal, $g:literal, $b:literal)
4 )*) => {
5 use crate::{Color, colors::CustomColor};
6 use core::fmt;
7
8 pub(crate) mod dynamic {
9 #[cfg(doc)]
10 use crate::OwoColorize;
11
12 /// Available CSS colors for use with [`OwoColorize::color`](OwoColorize::color)
13 /// or [`OwoColorize::on_color`](OwoColorize::on_color)
14 #[allow(missing_docs)]
15 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
16 pub enum CssColors {
17 $($name,)*
18 }
19 }
20
21 use dynamic::CssColors;
22
23 impl crate::DynColor for CssColors {
24 fn fmt_ansi_fg(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25 let color = match self {
26 $(
27 CssColors::$name => CustomColor::<$r, $g, $b>::ANSI_FG,
28 )*
29 };
30
31 f.write_str(color)
32 }
33
34 fn fmt_ansi_bg(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35 let color = match self {
36 $(
37 CssColors::$name => CustomColor::<$r, $g, $b>::ANSI_BG,
38 )*
39 };
40
41 f.write_str(color)
42 }
43
44 fn fmt_raw_ansi_fg(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45 let color = match self {
46 $(
47 CssColors::$name => CustomColor::<$r, $g, $b>::RAW_ANSI_FG,
48 )*
49 };
50
51 f.write_str(color)
52 }
53
54 fn fmt_raw_ansi_bg(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
55 let color = match self {
56 $(
57 CssColors::$name => CustomColor::<$r, $g, $b>::RAW_ANSI_BG,
58 )*
59 };
60
61 f.write_str(color)
62 }
63
64 #[doc(hidden)]
65 fn get_dyncolors_fg(&self) -> crate::DynColors {
66 crate::DynColors::Css(*self)
67 }
68
69 #[doc(hidden)]
70 fn get_dyncolors_bg(&self) -> crate::DynColors {
71 crate::DynColors::Css(*self)
72 }
73 }
74
75 $(
76 #[allow(missing_docs)]
77 pub type $name = CustomColor<$r, $g, $b>;
78 )*
79 };
80}
81
82css_color_types! {
83 AliceBlue (240, 248, 255)
84 AntiqueWhite (250, 235, 215)
85 Aqua (0, 255, 255)
86 Aquamarine (127, 255, 212)
87 Azure (240, 255, 255)
88 Beige (245, 245, 220)
89 Bisque (255, 228, 196)
90 Black (0, 0, 0)
91 BlanchedAlmond (255, 235, 205)
92 Blue (0, 0, 255)
93 BlueViolet (138, 43, 226)
94 Brown (165, 42, 42)
95 BurlyWood (222, 184, 135)
96 CadetBlue (95, 158, 160)
97 Chartreuse (127, 255, 0)
98 Chocolate (210, 105, 30)
99 Coral (255, 127, 80)
100 CornflowerBlue (100, 149, 237)
101 Cornsilk (255, 248, 220)
102 Crimson (220, 20, 60)
103 DarkBlue (0, 0, 139)
104 DarkCyan (0, 139, 139)
105 DarkGoldenRod (184, 134, 11)
106 DarkGray (169, 169, 169)
107 DarkGrey (169, 169, 169)
108 DarkGreen (0, 100, 0)
109 DarkKhaki (189, 183, 107)
110 DarkMagenta (139, 0, 139)
111 DarkOliveGreen (85, 107, 47)
112 DarkOrange (255, 140, 0)
113 DarkOrchid (153, 50, 204)
114 DarkRed (139, 0, 0)
115 DarkSalmon (233, 150, 122)
116 DarkSeaGreen (143, 188, 143)
117 DarkSlateBlue (72, 61, 139)
118 DarkSlateGray (47, 79, 79)
119 DarkSlateGrey (47, 79, 79)
120 DarkTurquoise (0, 206, 209)
121 DarkViolet (148, 0, 211)
122 DeepPink (255, 20, 147)
123 DeepSkyBlue (0, 191, 255)
124 DimGray (105, 105, 105)
125 DimGrey (105, 105, 105)
126 DodgerBlue (30, 144, 255)
127 FireBrick (178, 34, 34)
128 FloralWhite (255, 250, 240)
129 ForestGreen (34, 139, 34)
130 Fuchsia (255, 0, 255)
131 Gainsboro (220, 220, 220)
132 GhostWhite (248, 248, 255)
133 Gold (255, 215, 0)
134 GoldenRod (218, 165, 32)
135 Gray (128, 128, 128)
136 Grey (128, 128, 128)
137 Green (0, 128, 0)
138 GreenYellow (173, 255, 47)
139 HoneyDew (240, 255, 240)
140 HotPink (255, 105, 180)
141 IndianRed (205, 92, 92)
142 Indigo (75, 0, 130)
143 Ivory (255, 255, 240)
144 Khaki (240, 230, 140)
145 Lavender (230, 230, 250)
146 LavenderBlush (255, 240, 245)
147 LawnGreen (124, 252, 0)
148 LemonChiffon (255, 250, 205)
149 LightBlue (173, 216, 230)
150 LightCoral (240, 128, 128)
151 LightCyan (224, 255, 255)
152 LightGoldenRodYellow (250, 250, 210)
153 LightGray (211, 211, 211)
154 LightGrey (211, 211, 211)
155 LightGreen (144, 238, 144)
156 LightPink (255, 182, 193)
157 LightSalmon (255, 160, 122)
158 LightSeaGreen (32, 178, 170)
159 LightSkyBlue (135, 206, 250)
160 LightSlateGray (119, 136, 153)
161 LightSlateGrey (119, 136, 153)
162 LightSteelBlue (176, 196, 222)
163 LightYellow (255, 255, 224)
164 Lime (0, 255, 0)
165 LimeGreen (50, 205, 50)
166 Linen (250, 240, 230)
167 Magenta (255, 0, 255)
168 Maroon (128, 0, 0)
169 MediumAquaMarine (102, 205, 170)
170 MediumBlue (0, 0, 205)
171 MediumOrchid (186, 85, 211)
172 MediumPurple (147, 112, 219)
173 MediumSeaGreen (60, 179, 113)
174 MediumSlateBlue (123, 104, 238)
175 MediumSpringGreen (0, 250, 154)
176 MediumTurquoise (72, 209, 204)
177 MediumVioletRed (199, 21, 133)
178 MidnightBlue (25, 25, 112)
179 MintCream (245, 255, 250)
180 MistyRose (255, 228, 225)
181 Moccasin (255, 228, 181)
182 NavajoWhite (255, 222, 173)
183 Navy (0, 0, 128)
184 OldLace (253, 245, 230)
185 Olive (128, 128, 0)
186 OliveDrab (107, 142, 35)
187 Orange (255, 165, 0)
188 OrangeRed (255, 69, 0)
189 Orchid (218, 112, 214)
190 PaleGoldenRod (238, 232, 170)
191 PaleGreen (152, 251, 152)
192 PaleTurquoise (175, 238, 238)
193 PaleVioletRed (219, 112, 147)
194 PapayaWhip (255, 239, 213)
195 PeachPuff (255, 218, 185)
196 Peru (205, 133, 63)
197 Pink (255, 192, 203)
198 Plum (221, 160, 221)
199 PowderBlue (176, 224, 230)
200 Purple (128, 0, 128)
201 RebeccaPurple (102, 51, 153)
202 Red (255, 0, 0)
203 RosyBrown (188, 143, 143)
204 RoyalBlue (65, 105, 225)
205 SaddleBrown (139, 69, 19)
206 Salmon (250, 128, 114)
207 SandyBrown (244, 164, 96)
208 SeaGreen (46, 139, 87)
209 SeaShell (255, 245, 238)
210 Sienna (160, 82, 45)
211 Silver (192, 192, 192)
212 SkyBlue (135, 206, 235)
213 SlateBlue (106, 90, 205)
214 SlateGray (112, 128, 144)
215 SlateGrey (112, 128, 144)
216 Snow (255, 250, 250)
217 SpringGreen (0, 255, 127)
218 SteelBlue (70, 130, 180)
219 Tan (210, 180, 140)
220 Teal (0, 128, 128)
221 Thistle (216, 191, 216)
222 Tomato (255, 99, 71)
223 Turquoise (64, 224, 208)
224 Violet (238, 130, 238)
225 Wheat (245, 222, 179)
226 White (255, 255, 255)
227 WhiteSmoke (245, 245, 245)
228 Yellow (255, 255, 0)
229 YellowGreen (154, 205, 50)
230}
231