Skip to main content

fre_rs/
misc.rs

1//! 
2//! Miscellaneous items that do not yet have a clear module placement.
3//! Their current structure is not ideal and may be refactored as the crate
4//! evolves or as the underlying ANE C API improves.
5//! 
6
7
8use super::*;
9
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub enum RenderMode {
13    Unknown,
14    None,
15    Cpu,
16    DirectOgles,
17    DirectOgl,
18    DirectD3d9,
19    DirectD3d10,
20    DirectD3d11,
21    SoftwareGdi,
22    GpuOgles,
23    Unexpected(FRERenderMode),
24}
25impl From<FRERenderMode> for RenderMode {
26    fn from(value: FRERenderMode) -> Self {
27        match value {
28            FRERenderMode::FRE_RENDERMODE_UNKNOWN           => Self::Unknown,
29            FRERenderMode::FRE_RENDERMODE_NONE              => Self::None,
30            FRERenderMode::FRE_RENDERMODE_CPU               => Self::Cpu,
31            FRERenderMode::FRE_RENDERMODE_DIRECT_OGLES      => Self::DirectOgles,
32            FRERenderMode::FRE_RENDERMODE_DIRECT_OGL        => Self::DirectOgl,
33            FRERenderMode::FRE_RENDERMODE_DIRECT_D3D9       => Self::DirectD3d9,
34            FRERenderMode::FRE_RENDERMODE_DIRECT_D3D10      => Self::DirectD3d10,
35            FRERenderMode::FRE_RENDERMODE_DIRECT_D3D11      => Self::DirectD3d11,
36            FRERenderMode::FRE_RENDERMODE_SOFTWARE_GDI      => Self::SoftwareGdi,
37            FRERenderMode::FRE_RENDERMODE_GPU_OGLES         => Self::GpuOgles,
38            _ => Self::Unexpected(value),
39        }
40    }
41}
42impl Display for RenderMode {
43    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44        match *self {
45            Self::Unknown           => write!(f, "Unknown"),
46            Self::None              => write!(f, "None"),
47            Self::Cpu               => write!(f, "CPU"),
48            Self::DirectOgles       => write!(f, "Direct (OpenGL ES)"),
49            Self::DirectOgl         => write!(f, "Direct (OpenGL)"),
50            Self::DirectD3d9        => write!(f, "Direct (Direct3D 9)"),
51            Self::DirectD3d10       => write!(f, "Direct (Direct3D 10)"),
52            Self::DirectD3d11       => write!(f, "Direct (Direct3D 11)"),
53            Self::SoftwareGdi       => write!(f, "Software (GDI)"),
54            Self::GpuOgles          => write!(f, "GPU (OpenGL ES)"),
55            Self::Unexpected(rm) => write!(f, "Unexpected FRERenderMode. ({rm:#08X})"),
56        }
57    }
58}