Skip to content
Snippets Groups Projects
fade_in.rs 558 B
Newer Older
use crate::color::with_alpha;
use crate::egui::{InnerResponse, Ui};

const FADE_DURATION: f64 = 0.6;

Finn Bear's avatar
Finn Bear committed
/// Fade in some children, assuming the fading in started at [`fade_start`].
pub fn fade_in<R>(
    ui: &mut Ui,
    fade_start: f64,
    add_contents: impl FnOnce(&mut Ui) -> R,
) -> InnerResponse<R> {
    let since_transition = ui.ctx().input().time - fade_start;
    let alpha = (since_transition * (1.0 / FADE_DURATION)).min(1.0) as f32;
    if alpha < 1.0 {
        ui.ctx().request_repaint();
    }
    with_alpha(ui, alpha, |ui| add_contents(ui))
}