use super::PUA_BASE;
pub const CONTROL_BASE: u32 = 0xE100;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(u8)]
pub enum ControlSymbol {
Start = 0,
End = 1,
Token = 2,
Break = 3,
Meta = 4,
Escape = 5,
}
impl ControlSymbol {
pub const fn as_str(self) -> &'static str {
match self {
Self::Start => "DSK_START",
Self::End => "DSK_END",
Self::Token => "DSK_TOKEN",
Self::Break => "DSK_BREAK",
Self::Meta => "DSK_META",
Self::Escape => "DSK_ESCAPE",
}
}
pub const fn codepoint(self) -> u32 {
CONTROL_BASE + self as u32
}
pub fn as_char(self) -> char {
char::from_u32(self.codepoint()).expect("control symbol")
}
}
pub const DSK_PROJECT_MARK: u32 = 0xE1F0;
pub const DSK_PROJECT_MARK_NAME: &str = "DSK_PROJECT_MARK";
#[inline]
pub const fn is_project_mark(cp: u32) -> bool {
cp == DSK_PROJECT_MARK
}
#[inline]
pub const fn is_control_symbol(cp: u32) -> bool {
cp >= CONTROL_BASE && cp < CONTROL_BASE + 16
}
pub const GLYPH_ENGINE_VERSION: u32 = 2;
pub const FONT_VERSION_MGE2: u32 = 2;
#[inline]
pub const fn symbol_id_of(cp: u32) -> Option<u8> {
if cp >= PUA_BASE && cp < PUA_BASE + 256 {
Some((cp - PUA_BASE) as u8)
} else {
None
}
}