1 | //! Basic predefined colors. |
2 | use super::{RGBAColor, RGBColor}; |
3 | |
4 | // Taken from https://stackoverflow.com/questions/60905060/prevent-line-break-in-doc-test |
5 | /// Macro for allowing dynamic creation of doc attributes. |
6 | #[macro_export ] |
7 | macro_rules! doc { |
8 | { |
9 | $(#[$m:meta])* |
10 | $( |
11 | [$doc:expr] |
12 | $(#[$n:meta])* |
13 | )* |
14 | @ $thing:item |
15 | } => { |
16 | $(#[$m])* |
17 | $( |
18 | #[doc = $doc] |
19 | $(#[$n])* |
20 | )* |
21 | $thing |
22 | } |
23 | } |
24 | |
25 | /// Defines and names a color based on its R, G, B, A values. |
26 | #[macro_export ] |
27 | macro_rules! define_color { |
28 | ($name:ident, $r:expr, $g:expr, $b:expr, $doc:expr) => { |
29 | doc! { |
30 | [$doc] |
31 | // Format a colored box that will show up in the docs |
32 | [concat!("(<span style='color: rgb(" , $r,"," , $g, "," , $b, "); background-color: #ddd; padding: 0 0.2em;'>■</span>" )] |
33 | [concat!("*rgb = (" , $r,", " , $g, ", " , $b, ")*)" )] |
34 | @pub const $name: RGBColor = RGBColor($r, $g, $b); |
35 | } |
36 | }; |
37 | |
38 | ($name:ident, $r:expr, $g:expr, $b:expr, $a: expr, $doc:expr) => { |
39 | doc! { |
40 | [$doc] |
41 | // Format a colored box that will show up in the docs |
42 | [concat!("(<span style='color: rgba(" , $r,"," , $g, "," , $b, "," , $a, "); background-color: #ddd; padding: 0 0.2em;'>■</span>" )] |
43 | [concat!("*rgba = (" , $r,", " , $g, ", " , $b, ", " , $a, ")*)" )] |
44 | @pub const $name: RGBAColor = RGBAColor($r, $g, $b, $a); |
45 | } |
46 | }; |
47 | } |
48 | |
49 | define_color!(WHITE, 255, 255, 255, "White" ); |
50 | define_color!(BLACK, 0, 0, 0, "Black" ); |
51 | define_color!(RED, 255, 0, 0, "Red" ); |
52 | define_color!(GREEN, 0, 255, 0, "Green" ); |
53 | define_color!(BLUE, 0, 0, 255, "Blue" ); |
54 | define_color!(YELLOW, 255, 255, 0, "Yellow" ); |
55 | define_color!(CYAN, 0, 255, 255, "Cyan" ); |
56 | define_color!(MAGENTA, 255, 0, 255, "Magenta" ); |
57 | define_color!(TRANSPARENT, 0, 0, 0, 0.0, "Transparent" ); |
58 | |
59 | #[cfg (feature = "colormaps" )] |
60 | /// Colormaps can be used to simply go from a scalar value to a color value which will be more/less |
61 | /// intense corresponding to the value of the supplied scalar. |
62 | /// These colormaps can also be defined by the user and be used with lower and upper bounds. |
63 | pub mod colormaps; |
64 | #[cfg (feature = "full_palette" )] |
65 | pub mod full_palette; |
66 | |