use crate::bind;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum BitmapPixelOrder {
_4321,
_1234,
}
impl BitmapPixelOrder {
#[allow(clippy::unnecessary_cast)]
pub(super) fn as_raw(self) -> u32 {
(match self {
BitmapPixelOrder::_4321 => bind::SDL_BITMAPORDER_4321,
BitmapPixelOrder::_1234 => bind::SDL_BITMAPORDER_1234,
}) as u32
}
}
impl From<bind::SDL_PixelFormatEnum> for BitmapPixelOrder {
fn from(raw: bind::SDL_PixelFormatEnum) -> Self {
match (raw >> 20) & 0xf {
bind::SDL_BITMAPORDER_4321 => BitmapPixelOrder::_4321,
bind::SDL_BITMAPORDER_1234 => BitmapPixelOrder::_1234,
_ => unreachable!(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum PackedPixelOrder {
Xrgb,
Rgbx,
Argb,
Rgba,
Xbgr,
Bgrx,
Abgr,
Bgra,
}
impl PackedPixelOrder {
#[allow(clippy::unnecessary_cast)]
pub(super) fn as_raw(self) -> u32 {
(match self {
PackedPixelOrder::Xrgb => bind::SDL_PACKEDORDER_XRGB,
PackedPixelOrder::Rgbx => bind::SDL_PACKEDORDER_RGBX,
PackedPixelOrder::Argb => bind::SDL_PACKEDORDER_ARGB,
PackedPixelOrder::Rgba => bind::SDL_PACKEDORDER_RGBA,
PackedPixelOrder::Xbgr => bind::SDL_PACKEDORDER_XBGR,
PackedPixelOrder::Bgrx => bind::SDL_PACKEDORDER_BGRX,
PackedPixelOrder::Abgr => bind::SDL_PACKEDORDER_ABGR,
PackedPixelOrder::Bgra => bind::SDL_PACKEDORDER_BGRA,
}) as u32
}
}
impl From<bind::SDL_PixelFormatEnum> for PackedPixelOrder {
fn from(raw: bind::SDL_PixelFormatEnum) -> Self {
match (raw >> 20) & 0xf {
bind::SDL_PACKEDORDER_XRGB => PackedPixelOrder::Xrgb,
bind::SDL_PACKEDORDER_RGBX => PackedPixelOrder::Rgbx,
bind::SDL_PACKEDORDER_ARGB => PackedPixelOrder::Argb,
bind::SDL_PACKEDORDER_RGBA => PackedPixelOrder::Rgba,
bind::SDL_PACKEDORDER_XBGR => PackedPixelOrder::Xbgr,
bind::SDL_PACKEDORDER_BGRX => PackedPixelOrder::Bgrx,
bind::SDL_PACKEDORDER_ABGR => PackedPixelOrder::Abgr,
bind::SDL_PACKEDORDER_BGRA => PackedPixelOrder::Bgra,
_ => unreachable!(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ArrayPixelOrder {
Rgb,
Rgba,
Argb,
Bgr,
Bgra,
Abgr,
}
impl ArrayPixelOrder {
#[allow(clippy::unnecessary_cast)]
pub(super) fn as_raw(self) -> u32 {
(match self {
ArrayPixelOrder::Rgb => bind::SDL_ARRAYORDER_RGB,
ArrayPixelOrder::Rgba => bind::SDL_ARRAYORDER_RGBA,
ArrayPixelOrder::Argb => bind::SDL_ARRAYORDER_ARGB,
ArrayPixelOrder::Bgr => bind::SDL_ARRAYORDER_BGR,
ArrayPixelOrder::Bgra => bind::SDL_ARRAYORDER_BGRA,
ArrayPixelOrder::Abgr => bind::SDL_ARRAYORDER_ABGR,
}) as u32
}
}
impl From<bind::SDL_PixelFormatEnum> for ArrayPixelOrder {
fn from(raw: bind::SDL_PixelFormatEnum) -> Self {
match (raw >> 20) & 0xf {
bind::SDL_ARRAYORDER_RGB => ArrayPixelOrder::Rgb,
bind::SDL_ARRAYORDER_RGBA => ArrayPixelOrder::Rgba,
bind::SDL_ARRAYORDER_ARGB => ArrayPixelOrder::Argb,
bind::SDL_ARRAYORDER_BGR => ArrayPixelOrder::Bgr,
bind::SDL_ARRAYORDER_BGRA => ArrayPixelOrder::Bgra,
bind::SDL_ARRAYORDER_ABGR => ArrayPixelOrder::Abgr,
_ => unreachable!(),
}
}
}