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