#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Alpha {
Opaque,
Transparent,
Blend,
HighContrast,
}
mod std_impls {
use super::Alpha;
use crate::sys::{c_api::NcAlpha_u32, NcAlpha};
use std::fmt;
impl Default for Alpha {
fn default() -> Self {
Self::Opaque
}
}
impl fmt::Display for Alpha {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use Alpha::*;
write!(
f,
"{}",
match self {
Opaque => "Opaque",
Transparent => "Transparent",
Blend => "Blend",
HighContrast => "HighContrast",
}
)
}
}
impl From<NcAlpha> for Alpha {
fn from(nc: NcAlpha) -> Alpha {
match nc {
NcAlpha::Opaque => Alpha::Opaque,
NcAlpha::Transparent => Alpha::Transparent,
NcAlpha::Blend => Alpha::Blend,
NcAlpha::HighContrast => Alpha::HighContrast,
}
}
}
impl From<Alpha> for NcAlpha {
fn from(alpha: Alpha) -> NcAlpha {
match alpha {
Alpha::Opaque => NcAlpha::Opaque,
Alpha::Transparent => NcAlpha::Transparent,
Alpha::Blend => NcAlpha::Blend,
Alpha::HighContrast => NcAlpha::HighContrast,
}
}
}
impl From<NcAlpha_u32> for Alpha {
fn from(ncu: NcAlpha_u32) -> Alpha {
NcAlpha::from(ncu).into()
}
}
impl From<Alpha> for NcAlpha_u32 {
fn from(align: Alpha) -> NcAlpha_u32 {
NcAlpha::from(align).into()
}
}
}
impl Alpha {
pub fn display_short(&self) -> &str {
use Alpha::*;
match self {
Blend => "B",
HighContrast => "H",
Opaque => "O",
Transparent => "T",
}
}
}