| 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 | |