use crate::sys;
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[repr(i32)]
pub enum TextureStatus {
OK = sys::ImTextureStatus_OK as i32,
Destroyed = sys::ImTextureStatus_Destroyed as i32,
WantCreate = sys::ImTextureStatus_WantCreate as i32,
WantUpdates = sys::ImTextureStatus_WantUpdates as i32,
WantDestroy = sys::ImTextureStatus_WantDestroy as i32,
}
impl From<sys::ImTextureStatus> for TextureStatus {
fn from(status: sys::ImTextureStatus) -> Self {
match status {
sys::ImTextureStatus_OK => TextureStatus::OK,
sys::ImTextureStatus_Destroyed => TextureStatus::Destroyed,
sys::ImTextureStatus_WantCreate => TextureStatus::WantCreate,
sys::ImTextureStatus_WantUpdates => TextureStatus::WantUpdates,
sys::ImTextureStatus_WantDestroy => TextureStatus::WantDestroy,
_ => TextureStatus::Destroyed, }
}
}
impl From<TextureStatus> for sys::ImTextureStatus {
fn from(status: TextureStatus) -> Self {
status as sys::ImTextureStatus
}
}
pub fn get_status_name(status: TextureStatus) -> &'static str {
unsafe {
let ptr = sys::igImTextureDataGetStatusName(status.into());
if ptr.is_null() {
"Unknown"
} else {
std::ffi::CStr::from_ptr(ptr).to_str().unwrap_or("Invalid")
}
}
}