use std::fmt;
#[repr(i32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum SCFrameStatus {
#[default]
Complete = 0,
Idle = 1,
Blank = 2,
Suspended = 3,
Started = 4,
Stopped = 5,
}
impl SCFrameStatus {
pub const fn from_raw(value: i32) -> Option<Self> {
match value {
0 => Some(Self::Complete),
1 => Some(Self::Idle),
2 => Some(Self::Blank),
3 => Some(Self::Suspended),
4 => Some(Self::Started),
5 => Some(Self::Stopped),
_ => None,
}
}
pub const fn has_content(self) -> bool {
matches!(self, Self::Complete | Self::Started)
}
pub const fn is_complete(self) -> bool {
matches!(self, Self::Complete)
}
}
impl fmt::Display for SCFrameStatus {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Complete => write!(f, "Complete"),
Self::Idle => write!(f, "Idle"),
Self::Blank => write!(f, "Blank"),
Self::Suspended => write!(f, "Suspended"),
Self::Started => write!(f, "Started"),
Self::Stopped => write!(f, "Stopped"),
}
}
}