extendr_api/graphics/
color.rs
1pub struct Color(i32);
2
3impl Color {
4 pub fn to_i32(&self) -> i32 {
6 self.0
7 }
8
9 pub fn hex(hex: u32) -> Color {
12 let red = (hex >> 16) & 0xff;
13 let green = (hex >> 8) & 0xff;
14 let blue = hex & 0xff;
15 Color(red as i32 | (green as i32) << 8 | (blue as i32) << 16 | 0xff << 24)
16 }
17
18 pub fn hex3(hex: u32) -> Color {
21 let red = ((hex >> 8) & 0xf) * 0xff / 0x0f;
22 let green = ((hex >> 4) & 0xf) * 0xff / 0x0f;
23 let blue = (hex & 0xf) * 0xff / 0x0f;
24 Color(red as i32 | (green as i32) << 8 | (blue as i32) << 16 | 0xff << 24)
25 }
26
27 pub fn rgb(red: u8, green: u8, blue: u8) -> Color {
29 Color(red as i32 | (green as i32) << 8 | (blue as i32) << 16 | 0xff << 24)
30 }
31
32 pub fn rgba(red: u8, green: u8, blue: u8, alpha: u8) -> Color {
34 Color(red as i32 | (green as i32) << 8 | (blue as i32) << 16 | (alpha as i32) << 24)
35 }
36}
37
38pub mod predefined {
39 use super::Color;
40
41 pub fn aliceblue() -> Color {
43 Color::hex(0xF0F8FF)
44 }
45 pub fn antiquewhite() -> Color {
46 Color::hex(0xFAEBD7)
47 }
48 pub fn aqua() -> Color {
49 Color::hex(0x00FFFF)
50 }
51 pub fn aquamarine() -> Color {
52 Color::hex(0x7FFFD4)
53 }
54 pub fn azure() -> Color {
55 Color::hex(0xF0FFFF)
56 }
57 pub fn beige() -> Color {
58 Color::hex(0xF5F5DC)
59 }
60 pub fn bisque() -> Color {
61 Color::hex(0xFFE4C4)
62 }
63 pub fn black() -> Color {
64 Color::hex(0x000000)
65 }
66 pub fn blanchedalmond() -> Color {
67 Color::hex(0xFFEBCD)
68 }
69 pub fn blue() -> Color {
70 Color::hex(0x0000FF)
71 }
72 pub fn blueviolet() -> Color {
73 Color::hex(0x8A2BE2)
74 }
75 pub fn brown() -> Color {
76 Color::hex(0xA52A2A)
77 }
78 pub fn burlywood() -> Color {
79 Color::hex(0xDEB887)
80 }
81 pub fn cadetblue() -> Color {
82 Color::hex(0x5F9EA0)
83 }
84 pub fn chartreuse() -> Color {
85 Color::hex(0x7FFF00)
86 }
87 pub fn chocolate() -> Color {
88 Color::hex(0xD2691E)
89 }
90 pub fn coral() -> Color {
91 Color::hex(0xFF7F50)
92 }
93 pub fn cornflowerblue() -> Color {
94 Color::hex(0x6495ED)
95 }
96 pub fn cornsilk() -> Color {
97 Color::hex(0xFFF8DC)
98 }
99 pub fn crimson() -> Color {
100 Color::hex(0xDC143C)
101 }
102 pub fn cyan() -> Color {
103 Color::hex(0x00FFFF)
104 }
105 pub fn darkblue() -> Color {
106 Color::hex(0x00008B)
107 }
108 pub fn darkcyan() -> Color {
109 Color::hex(0x008B8B)
110 }
111 pub fn darkgoldenrod() -> Color {
112 Color::hex(0xB8860B)
113 }
114 pub fn darkgray() -> Color {
115 Color::hex(0xA9A9A9)
116 }
117 pub fn darkgreen() -> Color {
118 Color::hex(0x006400)
119 }
120 pub fn darkgrey() -> Color {
121 Color::hex(0xA9A9A9)
122 }
123 pub fn darkkhaki() -> Color {
124 Color::hex(0xBDB76B)
125 }
126 pub fn darkmagenta() -> Color {
127 Color::hex(0x8B008B)
128 }
129 pub fn darkolivegreen() -> Color {
130 Color::hex(0x556B2F)
131 }
132 pub fn darkorange() -> Color {
133 Color::hex(0xFF8C00)
134 }
135 pub fn darkorchid() -> Color {
136 Color::hex(0x9932CC)
137 }
138 pub fn darkred() -> Color {
139 Color::hex(0x8B0000)
140 }
141 pub fn darksalmon() -> Color {
142 Color::hex(0xE9967A)
143 }
144 pub fn darkseagreen() -> Color {
145 Color::hex(0x8FBC8F)
146 }
147 pub fn darkslateblue() -> Color {
148 Color::hex(0x483D8B)
149 }
150 pub fn darkslategray() -> Color {
151 Color::hex(0x2F4F4F)
152 }
153 pub fn darkslategrey() -> Color {
154 Color::hex(0x2F4F4F)
155 }
156 pub fn darkturquoise() -> Color {
157 Color::hex(0x00CED1)
158 }
159 pub fn darkviolet() -> Color {
160 Color::hex(0x9400D3)
161 }
162 pub fn deeppink() -> Color {
163 Color::hex(0xFF1493)
164 }
165 pub fn deepskyblue() -> Color {
166 Color::hex(0x00BFFF)
167 }
168 pub fn dimgray() -> Color {
169 Color::hex(0x696969)
170 }
171 pub fn dimgrey() -> Color {
172 Color::hex(0x696969)
173 }
174 pub fn dodgerblue() -> Color {
175 Color::hex(0x1E90FF)
176 }
177 pub fn firebrick() -> Color {
178 Color::hex(0xB22222)
179 }
180 pub fn floralwhite() -> Color {
181 Color::hex(0xFFFAF0)
182 }
183 pub fn forestgreen() -> Color {
184 Color::hex(0x228B22)
185 }
186 pub fn fuchsia() -> Color {
187 Color::hex(0xFF00FF)
188 }
189 pub fn gainsboro() -> Color {
190 Color::hex(0xDCDCDC)
191 }
192 pub fn ghostwhite() -> Color {
193 Color::hex(0xF8F8FF)
194 }
195 pub fn gold() -> Color {
196 Color::hex(0xFFD700)
197 }
198 pub fn goldenrod() -> Color {
199 Color::hex(0xDAA520)
200 }
201 pub fn gray() -> Color {
202 Color::hex(0x808080)
203 }
204 pub fn green() -> Color {
205 Color::hex(0x008000)
206 }
207 pub fn greenyellow() -> Color {
208 Color::hex(0xADFF2F)
209 }
210 pub fn grey() -> Color {
211 Color::hex(0x808080)
212 }
213 pub fn honeydew() -> Color {
214 Color::hex(0xF0FFF0)
215 }
216 pub fn hotpink() -> Color {
217 Color::hex(0xFF69B4)
218 }
219 pub fn indianred() -> Color {
220 Color::hex(0xCD5C5C)
221 }
222 pub fn indigo() -> Color {
223 Color::hex(0x4B0082)
224 }
225 pub fn ivory() -> Color {
226 Color::hex(0xFFFFF0)
227 }
228 pub fn khaki() -> Color {
229 Color::hex(0xF0E68C)
230 }
231 pub fn lavender() -> Color {
232 Color::hex(0xE6E6FA)
233 }
234 pub fn lavenderblush() -> Color {
235 Color::hex(0xFFF0F5)
236 }
237 pub fn lawngreen() -> Color {
238 Color::hex(0x7CFC00)
239 }
240 pub fn lemonchiffon() -> Color {
241 Color::hex(0xFFFACD)
242 }
243 pub fn lightblue() -> Color {
244 Color::hex(0xADD8E6)
245 }
246 pub fn lightcoral() -> Color {
247 Color::hex(0xF08080)
248 }
249 pub fn lightcyan() -> Color {
250 Color::hex(0xE0FFFF)
251 }
252 pub fn lightgoldenrodyellow() -> Color {
253 Color::hex(0xFAFAD2)
254 }
255 pub fn lightgray() -> Color {
256 Color::hex(0xD3D3D3)
257 }
258 pub fn lightgreen() -> Color {
259 Color::hex(0x90EE90)
260 }
261 pub fn lightgrey() -> Color {
262 Color::hex(0xD3D3D3)
263 }
264 pub fn lightpink() -> Color {
265 Color::hex(0xFFB6C1)
266 }
267 pub fn lightsalmon() -> Color {
268 Color::hex(0xFFA07A)
269 }
270 pub fn lightseagreen() -> Color {
271 Color::hex(0x20B2AA)
272 }
273 pub fn lightskyblue() -> Color {
274 Color::hex(0x87CEFA)
275 }
276 pub fn lightslategray() -> Color {
277 Color::hex(0x778899)
278 }
279 pub fn lightslategrey() -> Color {
280 Color::hex(0x778899)
281 }
282 pub fn lightsteelblue() -> Color {
283 Color::hex(0xB0C4DE)
284 }
285 pub fn lightyellow() -> Color {
286 Color::hex(0xFFFFE0)
287 }
288 pub fn lime() -> Color {
289 Color::hex(0x00FF00)
290 }
291 pub fn limegreen() -> Color {
292 Color::hex(0x32CD32)
293 }
294 pub fn linen() -> Color {
295 Color::hex(0xFAF0E6)
296 }
297 pub fn magenta() -> Color {
298 Color::hex(0xFF00FF)
299 }
300 pub fn maroon() -> Color {
301 Color::hex(0x800000)
302 }
303 pub fn mediumaquamarine() -> Color {
304 Color::hex(0x66CDAA)
305 }
306 pub fn mediumblue() -> Color {
307 Color::hex(0x0000CD)
308 }
309 pub fn mediumorchid() -> Color {
310 Color::hex(0xBA55D3)
311 }
312 pub fn mediumpurple() -> Color {
313 Color::hex(0x9370DB)
314 }
315 pub fn mediumseagreen() -> Color {
316 Color::hex(0x3CB371)
317 }
318 pub fn mediumslateblue() -> Color {
319 Color::hex(0x7B68EE)
320 }
321 pub fn mediumspringgreen() -> Color {
322 Color::hex(0x00FA9A)
323 }
324 pub fn mediumturquoise() -> Color {
325 Color::hex(0x48D1CC)
326 }
327 pub fn mediumvioletred() -> Color {
328 Color::hex(0xC71585)
329 }
330 pub fn midnightblue() -> Color {
331 Color::hex(0x191970)
332 }
333 pub fn mintcream() -> Color {
334 Color::hex(0xF5FFFA)
335 }
336 pub fn mistyrose() -> Color {
337 Color::hex(0xFFE4E1)
338 }
339 pub fn moccasin() -> Color {
340 Color::hex(0xFFE4B5)
341 }
342 pub fn navajowhite() -> Color {
343 Color::hex(0xFFDEAD)
344 }
345 pub fn navy() -> Color {
346 Color::hex(0x000080)
347 }
348 pub fn oldlace() -> Color {
349 Color::hex(0xFDF5E6)
350 }
351 pub fn olive() -> Color {
352 Color::hex(0x808000)
353 }
354 pub fn olivedrab() -> Color {
355 Color::hex(0x6B8E23)
356 }
357 pub fn orange() -> Color {
358 Color::hex(0xFFA500)
359 }
360 pub fn orangered() -> Color {
361 Color::hex(0xFF4500)
362 }
363 pub fn orchid() -> Color {
364 Color::hex(0xDA70D6)
365 }
366 pub fn palegoldenrod() -> Color {
367 Color::hex(0xEEE8AA)
368 }
369 pub fn palegreen() -> Color {
370 Color::hex(0x98FB98)
371 }
372 pub fn paleturquoise() -> Color {
373 Color::hex(0xAFEEEE)
374 }
375 pub fn palevioletred() -> Color {
376 Color::hex(0xDB7093)
377 }
378 pub fn papayawhip() -> Color {
379 Color::hex(0xFFEFD5)
380 }
381 pub fn peachpuff() -> Color {
382 Color::hex(0xFFDAB9)
383 }
384 pub fn peru() -> Color {
385 Color::hex(0xCD853F)
386 }
387 pub fn pink() -> Color {
388 Color::hex(0xFFC0CB)
389 }
390 pub fn plum() -> Color {
391 Color::hex(0xDDA0DD)
392 }
393 pub fn powderblue() -> Color {
394 Color::hex(0xB0E0E6)
395 }
396 pub fn purple() -> Color {
397 Color::hex(0x800080)
398 }
399 pub fn red() -> Color {
400 Color::hex(0xFF0000)
401 }
402 pub fn rosybrown() -> Color {
403 Color::hex(0xBC8F8F)
404 }
405 pub fn royalblue() -> Color {
406 Color::hex(0x4169E1)
407 }
408 pub fn saddlebrown() -> Color {
409 Color::hex(0x8B4513)
410 }
411 pub fn salmon() -> Color {
412 Color::hex(0xFA8072)
413 }
414 pub fn sandybrown() -> Color {
415 Color::hex(0xF4A460)
416 }
417 pub fn seagreen() -> Color {
418 Color::hex(0x2E8B57)
419 }
420 pub fn seashell() -> Color {
421 Color::hex(0xFFF5EE)
422 }
423 pub fn sienna() -> Color {
424 Color::hex(0xA0522D)
425 }
426 pub fn silver() -> Color {
427 Color::hex(0xC0C0C0)
428 }
429 pub fn skyblue() -> Color {
430 Color::hex(0x87CEEB)
431 }
432 pub fn slateblue() -> Color {
433 Color::hex(0x6A5ACD)
434 }
435 pub fn slategray() -> Color {
436 Color::hex(0x708090)
437 }
438 pub fn slategrey() -> Color {
439 Color::hex(0x708090)
440 }
441 pub fn snow() -> Color {
442 Color::hex(0xFFFAFA)
443 }
444 pub fn springgreen() -> Color {
445 Color::hex(0x00FF7F)
446 }
447 pub fn steelblue() -> Color {
448 Color::hex(0x4682B4)
449 }
450 pub fn tan() -> Color {
451 Color::hex(0xD2B48C)
452 }
453 pub fn teal() -> Color {
454 Color::hex(0x008080)
455 }
456 pub fn thistle() -> Color {
457 Color::hex(0xD8BFD8)
458 }
459 pub fn tomato() -> Color {
460 Color::hex(0xFF6347)
461 }
462 pub fn turquoise() -> Color {
463 Color::hex(0x40E0D0)
464 }
465 pub fn violet() -> Color {
466 Color::hex(0xEE82EE)
467 }
468 pub fn wheat() -> Color {
469 Color::hex(0xF5DEB3)
470 }
471 pub fn white() -> Color {
472 Color::hex(0xFFFFFF)
473 }
474 pub fn whitesmoke() -> Color {
475 Color::hex(0xF5F5F5)
476 }
477 pub fn yellow() -> Color {
478 Color::hex(0xFFFF00)
479 }
480 pub fn yellowgreen() -> Color {
481 Color::hex(0x9ACD32)
482 }
483}