mod methods;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum NcBlitter {
Default = c_api::NCBLIT_DEFAULT,
Ascii = c_api::NCBLIT_1x1,
Half = c_api::NCBLIT_2x1,
Quadrant = c_api::NCBLIT_2x2,
Sextant = c_api::NCBLIT_3x2,
Braille = c_api::NCBLIT_BRAILLE,
Pixel = c_api::NCBLIT_PIXEL,
_4x1 = c_api::NCBLIT_4x1,
_8x1 = c_api::NCBLIT_8x1,
}
impl NcBlitter {
pub const _1x1: NcBlitter = NcBlitter::Ascii;
pub const _2x1: NcBlitter = NcBlitter::Half;
pub const _2x2: NcBlitter = NcBlitter::Quadrant;
pub const _3x2: NcBlitter = NcBlitter::Sextant;
}
mod std_impls {
use super::{c_api, NcBlitter};
use std::fmt;
impl Default for NcBlitter {
fn default() -> Self {
Self::Default
}
}
impl fmt::Display for NcBlitter {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use NcBlitter::*;
write!(
f,
"{}",
match self {
Default => "Default",
Ascii => "Ascii",
Half => "Half",
Quadrant => "Quadrant",
Sextant => "Sextant",
Braille => "Braille",
Pixel => "Pixel",
_4x1 => "4x1",
_8x1 => "8x1",
}
)
}
}
impl From<c_api::NcBlitter_u32> for NcBlitter {
fn from(blitter: c_api::NcBlitter_u32) -> Self {
use {c_api::*, NcBlitter::*};
match blitter {
NCBLIT_DEFAULT => Default,
NCBLIT_1x1 => Ascii,
NCBLIT_2x1 => Half,
NCBLIT_2x2 => Quadrant,
NCBLIT_3x2 => Sextant,
NCBLIT_BRAILLE => Braille,
NCBLIT_PIXEL => Pixel,
NCBLIT_4x1 => _4x1,
NCBLIT_8x1 => _8x1,
_ => Self::default(),
}
}
}
impl From<NcBlitter> for c_api::NcBlitter_u32 {
fn from(blitter: NcBlitter) -> Self {
use {c_api::*, NcBlitter::*};
match blitter {
Default => NCBLIT_DEFAULT,
Ascii => NCBLIT_1x1,
Half => NCBLIT_2x1,
Quadrant => NCBLIT_2x2,
Sextant => NCBLIT_3x2,
Braille => NCBLIT_BRAILLE,
Pixel => NCBLIT_PIXEL,
_4x1 => NCBLIT_4x1,
_8x1 => NCBLIT_8x1,
}
}
}
}
pub(crate) mod c_api {
use crate::c_api::ffi;
pub type NcBlitter_u32 = ffi::ncblitter_e;
pub const NCBLIT_DEFAULT: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_DEFAULT;
pub const NCBLIT_1x1: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_1x1;
pub const NCBLIT_2x1: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_2x1;
pub const NCBLIT_2x2: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_2x2;
pub const NCBLIT_3x2: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_3x2;
pub const NCBLIT_4x1: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_4x1;
pub const NCBLIT_8x1: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_8x1;
pub const NCBLIT_BRAILLE: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_BRAILLE;
pub const NCBLIT_PIXEL: NcBlitter_u32 = ffi::ncblitter_e_NCBLIT_PIXEL;
}