use egui::{Color32, epaint::Shadow};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum Elevation {
Flat = 0,
Card = 1,
Popover = 2,
Modal = 3,
}
impl Elevation {
pub fn shadow(self, dark: bool) -> Shadow {
let (offset_y, blur, spread, alpha_light) = match self {
Self::Flat => return Shadow::NONE,
Self::Card => (1i8, 2u8, 0u8, 15u8),
Self::Popover => (4, 12, 0, 26),
Self::Modal => (12, 32, 0, 36),
};
let color = if dark {
let a = ((alpha_light as u16) * 160 / 100).min(255) as u8;
Color32::from_rgba_premultiplied(0, 0, 0, a)
} else {
Color32::from_rgba_premultiplied(20, 25, 20, alpha_light)
};
Shadow {
offset: [0, offset_y],
blur,
spread,
color,
}
}
}