egui_material_icons 0.3.0

Material icons for egui.
Documentation
#![doc = include_str!("../README.md")]
#![forbid(unsafe_code)]

use egui::epaint::text::{FontInsert, FontPriority, InsertFontFamily};
use egui::{Button, FontData, FontFamily, Frame, Response, RichText, Widget};

pub mod icons;

pub const FONT_DATA: &[u8] = include_bytes!("../MaterialSymbolsRounded_Filled-Regular.ttf");

pub fn font_insert() -> FontInsert {
    let mut data = FontData::from_static(FONT_DATA);
    data.tweak.y_offset_factor = 0.05;

    FontInsert::new(
        "material-icons",
        data,
        vec![InsertFontFamily {
            family: FontFamily::Proportional,
            priority: FontPriority::Lowest,
        }],
    )
}

pub fn initialize(ctx: &egui::Context) {
    ctx.add_font(font_insert());
}

pub fn icon_button(ui: &mut egui::Ui, icon: &str) -> Response {
    Frame::new()
        .show(ui, |ui| {
            Button::new(RichText::new(icon).size(18.0))
                .frame(false)
                .ui(ui)
        })
        .inner
}

pub fn icon_text(icon: &str) -> RichText {
    RichText::new(icon)
}