ofps-suite 0.1.0

GUI tool for OFPS
use egui::*;

pub fn jlabel(ui: &mut Ui, label: impl Into<WidgetText>) {
    ui.vertical_centered_justified(|ui| {
        ui.label(label);
    });
}

pub fn transparent_windows(ctx: &Context, handler: impl FnOnce()) {
    let mut visuals = ctx.style().visuals.clone();
    let prev_visuals = visuals.clone();
    let prev = visuals.widgets.noninteractive.bg_fill;
    visuals.widgets.noninteractive.bg_fill =
        Color32::from_rgba_unmultiplied(prev.r(), prev.g(), prev.b(), 150);
    ctx.set_visuals(visuals);

    handler();

    ctx.set_visuals(prev_visuals);
}

pub fn realtime_processing(ui: &mut Ui, realtime_processing: &mut bool) {
    ui.checkbox(realtime_processing, "Realtime")
        .on_hover_ui(|ui| {
            ui.label("Do not process frames faster than the framerate of the video.");
        });
}

pub fn realtime_processing_fn(realtime_processing: &mut bool) -> impl FnOnce(&mut Ui) + '_ {
    move |ui| self::realtime_processing(ui, realtime_processing)
}