use zenpixels::BufferError;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum PdfError {
#[error("invalid PDF: {0}")]
InvalidPdf(String),
#[error("page {index} out of range (document has {count} pages)")]
PageOutOfRange { index: u32, count: u32 },
#[error("rendered dimensions {width}x{height} exceed u16 max (65535)")]
DimensionOverflow { width: u32, height: u32 },
#[error("render bounds produced zero-size output for page {page}")]
ZeroDimensions { page: u32 },
#[error("requested {requested} pages, limit is {limit}")]
TooManyPages { requested: usize, limit: usize },
#[error("page would produce {pixels} pixels, limit is {limit}")]
PixelLimitExceeded { pixels: u64, limit: u64 },
#[error("pixel buffer error: {0}")]
Buffer(#[from] whereat::At<BufferError>),
#[cfg(feature = "zencodec")]
#[error("unsupported: {0}")]
Unsupported(#[from] zencodec::UnsupportedOperation),
#[cfg(feature = "zencodec")]
#[error("sink error: {0}")]
Sink(#[source] zencodec::decode::SinkError),
#[cfg(feature = "zencodec")]
#[error("limit exceeded: {0}")]
LimitExceeded(#[from] zencodec::LimitExceeded),
}
pub type Result<T> = core::result::Result<T, PdfError>;