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() }}; }