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
use crate::{api::prelude::*, proc_macros::*, theme::prelude::*};

widget!(
    /// The `FontIconBlock` widget is used to draw text. It is not interactive.
    ///
    /// **style:** `font-icon-block`
    FontIconBlock {
        /// Sets or shares the icon property.
        icon: String,

        /// Sets or shares the icon brush property.
        icon_brush: Brush,

        /// Sets or share the icon font size property.
        icon_size: f64,

        /// Sets or shares the icon font property.
        icon_font: String
    }
);

impl Template for FontIconBlock {
    fn template(self, _: Entity, _: &mut BuildContext) -> Self {
        self.name("FontIconBlock")
            .style("font-icon-block")
            .icon("")
            .icon_brush(colors::LINK_WATER_COLOR)
            .icon_size(fonts::ICON_FONT_SIZE_12)
            .icon_font("MaterialIcons-Regular")
    }

    fn render_object(&self) -> Box<dyn RenderObject> {
        Box::new(FontIconRenderObject)
    }

    fn layout(&self) -> Box<dyn Layout> {
        Box::new(FixedSizeLayout::new())
    }
}