use thiserror::Error;
pub type Result<T> = std::result::Result<T, ImageError>;
#[derive(Debug, Error)]
pub enum ImageError {
#[error("Failed to load image from file: {0}")]
FileLoad(String),
#[error("Failed to decode image: {0}")]
Decode(String),
#[error("Invalid base64 data: {0}")]
Base64(String),
#[error("Network error: {0}")]
Network(String),
#[error("Invalid image source: {0}")]
InvalidSource(String),
#[error("Unsupported image format: {0}")]
UnsupportedFormat(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
}
impl From<image::ImageError> for ImageError {
fn from(err: image::ImageError) -> Self {
ImageError::Decode(err.to_string())
}
}
impl From<base64::DecodeError> for ImageError {
fn from(err: base64::DecodeError) -> Self {
ImageError::Base64(err.to_string())
}
}