#[repr(u32)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Default, Hash)]
pub enum LayerType {
#[default]
Background = 0,
Normal = 1,
Top = 2,
Panel = 3,
Overlay = 4,
Lock = 5,
Cursor = 6,
}
impl LayerType {
#[inline]
pub fn from_u32(value: u32) -> Option<Self> {
match value {
0 => Some(Self::Background),
1 => Some(Self::Normal),
2 => Some(Self::Top),
3 => Some(Self::Panel),
4 => Some(Self::Overlay),
5 => Some(Self::Lock),
6 => Some(Self::Cursor),
_ => None,
}
}
#[inline]
pub const fn as_u32(&self) -> u32 {
*self as u32
}
#[inline]
pub const fn name(&self) -> &'static str {
match self {
Self::Background => "Background",
Self::Normal => "Normal",
Self::Top => "Top",
Self::Panel => "Panel",
Self::Overlay => "Overlay",
Self::Lock => "Lock",
Self::Cursor => "Cursor",
}
}
#[inline]
pub const fn receives_input(&self) -> bool {
matches!(self, Self::Normal | Self::Top | Self::Panel | Self::Overlay)
}
#[inline]
pub const fn blocks_below(&self) -> bool {
matches!(self, Self::Lock)
}
}