Newer
Older
use crate::color::with_alpha;
use crate::egui::{InnerResponse, Ui};
const FADE_DURATION: f64 = 0.6;
/// 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))
}