embedded_graphics/style/mod.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
//! Styling struct to customize the look of objects.
mod primitive_style;
mod styled;
mod text_style;
pub use primitive_style::{PrimitiveStyle, PrimitiveStyleBuilder};
pub use styled::Styled;
pub use text_style::{TextStyle, TextStyleBuilder};
/// Create a [`PrimitiveStyle`]
///
/// All properties on [`PrimitiveStyle`] are supported. Any properties not specified in the macro
/// call will use the values provided by `PrimitiveStyle::default()`.
///
/// ```rust
/// use embedded_graphics::{
/// pixelcolor::{Rgb565, RgbColor},
/// primitive_style,
/// };
///
/// let style = primitive_style!(fill_color = Rgb565::RED);
/// ```
///
/// [`PrimitiveStyle`]: ./style/struct.PrimitiveStyle.html
#[macro_export]
macro_rules! primitive_style {
($($style_key:ident = $style_value:expr ),* $(,)?) => {{
#[allow(unused_mut)]
let builder = $crate::style::PrimitiveStyleBuilder::new();
$( let builder = builder.$style_key($style_value); )*
builder.build()
}};
}
/// Create a [`TextStyle`]
///
/// All properties on [`TextStyle`] are supported. At least `font` is required, and must be the
/// first property passed to the macro.
///
/// ## Examples
///
/// ### Create a default text style
///
/// This example uses [`Font8x16`] and the [`Rgb565`] color space to create a default text style.
/// This will result in a white font with transparent background.
///
/// ```rust
/// use embedded_graphics::{
/// fonts::Font8x16,
/// pixelcolor::{Rgb565, RgbColor},
/// style::TextStyle,
/// text_style,
/// };
///
/// let style: TextStyle<Rgb565, _> = text_style!(font = Font8x16);
/// #
/// # assert_eq!(
/// # style,
/// # embedded_graphics::style::TextStyleBuilder::new(Font8x16).build()
/// # );
/// ```
///
/// ### Create colored text with background
///
/// This example uses [`Font6x8`] and the [`Rgb565`] color space to create a text style with red
/// text on a green background.
///
/// ```rust
/// use embedded_graphics::{
/// fonts::Font6x8,
/// pixelcolor::{Rgb565, RgbColor},
/// style::TextStyle,
/// text_style,
/// };
///
/// let style = text_style!(
/// font = Font6x8,
/// text_color = Rgb565::RED,
/// background_color = Rgb565::GREEN
/// );
/// #
/// # assert_eq!(
/// # style,
/// # embedded_graphics::style::TextStyleBuilder::new(Font6x8)
/// # .text_color(Rgb565::RED)
/// # .background_color(Rgb565::GREEN)
/// # .build()
/// # );
/// ```
///
/// [`TextStyle`]: ./style/struct.TextStyle.html
#[macro_export]
macro_rules! text_style {
(font = $font:expr, $( $style_key:ident = $style_value:expr ),* $(,)?) => {{
let builder = $crate::style::TextStyleBuilder::new($font);
$( let builder = builder.$style_key($style_value); )*
builder.build()
}};
(font = $font:expr $(,)?) => {{
$crate::style::TextStyleBuilder::new($font).build()
}};
}