use pdfrum_common::{LimitExceeded, PageIndex};
use pdfrum_object::ObjRef;
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("no object at offset {0}")]
NoObject(u64),
#[error("object nesting deeper than {0}")]
TooDeep(u32),
#[error("no usable cross-reference information")]
XrefBroken,
#[error("no document catalog")]
NoCatalog,
#[error("no object for reference {}:{}", .0.num, .0.generation)]
Unresolved(ObjRef),
#[error("reference cycle while fetching {}:{}", .0.num, .0.generation)]
Cycle(ObjRef),
#[error("no page at index {0}")]
NoPage(PageIndex),
#[error(transparent)]
Limit(LimitExceeded),
}
impl From<Error> for pdfrum_object::Error {
fn from(e: Error) -> Self {
match e {
Error::Cycle(r) => Self::RefLoop(r),
Error::Unresolved(r) => Self::UnresolvedRef(r),
_ => Self::UnresolvedRef(ObjRef::new(0, 0)),
}
}
}