use std::fmt;
#[derive(Debug, Clone, PartialEq)]
pub enum FontMeshError {
ParseError(String),
GlyphNotFound(char),
OutlineExtractionFailed(String),
LinearizationFailed(String),
TriangulationFailed(String),
ExtrusionFailed(String),
InvalidQuality(u8),
NoOutline,
}
impl fmt::Display for FontMeshError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::ParseError(msg) => write!(f, "Font parse error: {}", msg),
Self::GlyphNotFound(c) => write!(f, "Glyph not found for character: '{}'", c),
Self::OutlineExtractionFailed(msg) => write!(f, "Outline extraction failed: {}", msg),
Self::LinearizationFailed(msg) => write!(f, "Linearization failed: {}", msg),
Self::TriangulationFailed(msg) => write!(f, "Triangulation failed: {}", msg),
Self::ExtrusionFailed(msg) => write!(f, "Extrusion failed: {}", msg),
Self::InvalidQuality(q) => write!(f, "Invalid quality parameter: {}", q),
Self::NoOutline => write!(f, "Glyph has no outline"),
}
}
}
impl std::error::Error for FontMeshError {}
pub type Result<T> = std::result::Result<T, FontMeshError>;