blp 0.1.37

Blizzard BLP image format reader/writer (Warcraft/World of Warcraft textures)
Documentation
use eframe::egui::{CornerRadius, Frame, Response, TextEdit, Ui, Widget};
use eframe::epaint::Margin;

pub trait TextEditLikeButtonChain<'a> {
    fn like_button(self) -> TextEditLikeButton<'a>;
}

impl<'a> TextEditLikeButtonChain<'a> for TextEdit<'a> {
    #[inline]
    fn like_button(self) -> TextEditLikeButton<'a> {
        TextEditLikeButton { inner: self }
    }
}

pub struct TextEditLikeButton<'a> {
    inner: TextEdit<'a>,
}

impl<'a> Widget for TextEditLikeButton<'a> {
    fn ui(self, ui: &mut Ui) -> Response {
        let v = ui.visuals().clone();
        let w = &v.widgets;
        let corner: CornerRadius = w.inactive.corner_radius;
        let fill = v
            .text_edit_bg_color
            .unwrap_or(w.inactive.bg_fill);

        let out = Frame {
            fill, //
            stroke: w.hovered.bg_stroke,
            inner_margin: Margin { left: 0, right: 0, top: 5, bottom: 5 },
            corner_radius: corner,
            ..Frame::default()
        }
        .show(ui, |ui| ui.add(self.inner.frame(false)));

        out.response.union(out.inner)
    }
}