libobs-wrapper 9.0.4+32.0.2

A safe wrapper around libobs
use libobs::{
    gs_color_format_GS_A8, gs_color_format_GS_BGRA, gs_color_format_GS_BGRA_UNORM,
    gs_color_format_GS_BGRX, gs_color_format_GS_BGRX_UNORM, gs_color_format_GS_DXT1,
    gs_color_format_GS_DXT3, gs_color_format_GS_DXT5, gs_color_format_GS_R10G10B10A2,
    gs_color_format_GS_R16, gs_color_format_GS_R16F, gs_color_format_GS_R32F,
    gs_color_format_GS_R8, gs_color_format_GS_R8G8, gs_color_format_GS_RG16,
    gs_color_format_GS_RG16F, gs_color_format_GS_RG32F, gs_color_format_GS_RGBA,
    gs_color_format_GS_RGBA16, gs_color_format_GS_RGBA16F, gs_color_format_GS_RGBA32F,
    gs_color_format_GS_RGBA_UNORM, gs_color_format_GS_UNKNOWN, gs_zstencil_format_GS_Z16,
    gs_zstencil_format_GS_Z24_S8, gs_zstencil_format_GS_Z32F, gs_zstencil_format_GS_Z32F_S8X24,
    gs_zstencil_format_GS_ZS_NONE,
};
use num_derive::{FromPrimitive, ToPrimitive};

#[cfg_attr(target_os = "windows", repr(i32))]
#[cfg_attr(not(target_os = "windows"), repr(u32))]
#[derive(Clone, Copy, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)]
pub enum GsColorFormat {
    Unknown = gs_color_format_GS_UNKNOWN,
    A8 = gs_color_format_GS_A8,
    R8 = gs_color_format_GS_R8,
    RGBA = gs_color_format_GS_RGBA,
    BGRX = gs_color_format_GS_BGRX,
    BGRA = gs_color_format_GS_BGRA,
    R10G10B10A2 = gs_color_format_GS_R10G10B10A2,
    RGBA16 = gs_color_format_GS_RGBA16,
    R16 = gs_color_format_GS_R16,
    RGBA16F = gs_color_format_GS_RGBA16F,
    RGBA32F = gs_color_format_GS_RGBA32F,
    RG16F = gs_color_format_GS_RG16F,
    RG32F = gs_color_format_GS_RG32F,
    R16F = gs_color_format_GS_R16F,
    R32F = gs_color_format_GS_R32F,
    DXT1 = gs_color_format_GS_DXT1,
    DXT3 = gs_color_format_GS_DXT3,
    DXT5 = gs_color_format_GS_DXT5,
    R8G8 = gs_color_format_GS_R8G8,
    RGBAUnorm = gs_color_format_GS_RGBA_UNORM,
    BGRXUnorm = gs_color_format_GS_BGRX_UNORM,
    BGRAUnorm = gs_color_format_GS_BGRA_UNORM,
    RG16 = gs_color_format_GS_RG16,
}

#[cfg_attr(target_os = "windows", repr(i32))]
#[cfg_attr(not(target_os = "windows"), repr(u32))]
#[derive(Clone, Copy, Debug, PartialEq, Eq, FromPrimitive, ToPrimitive)]
pub enum GsZstencilFormat {
    ZSNone = gs_zstencil_format_GS_ZS_NONE,
    Z16 = gs_zstencil_format_GS_Z16,
    Z24s8 = gs_zstencil_format_GS_Z24_S8,
    Z32F = gs_zstencil_format_GS_Z32F,
    Z32s8X24 = gs_zstencil_format_GS_Z32F_S8X24,
}