use std::fmt;
#[derive(Debug)]
pub enum Error {
NotFound,
NotSfnt,
Collection,
Woff,
InvalidFont(String),
InvalidTable(String),
Validation(String),
Io(std::io::Error),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::NotFound => write!(f, "no C2PA table found in font"),
Self::NotSfnt => write!(f, "not a supported SFNT (TrueType/OpenType) font"),
Self::Collection => write!(f, "font collections (ttcf) are not supported"),
Self::Woff => write!(
f,
"WOFF/WOFF2 fonts are not supported; decompress to SFNT first"
),
Self::InvalidFont(s) => write!(f, "invalid font: {s}"),
Self::InvalidTable(s) => write!(f, "invalid C2PA table: {s}"),
Self::Validation(s) => write!(f, "validation failed: {s}"),
Self::Io(e) => write!(f, "I/O error: {e}"),
}
}
}
impl std::error::Error for Error {}
impl From<std::io::Error> for Error {
fn from(e: std::io::Error) -> Self {
Self::Io(e)
}
}