use deku::DekuError;
use image::ImageError;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum GreenfieldError {
#[error("Invalid quantization levels: {0} {1} {2}. Levels must be between 1 and 8.")]
InvalidQuantizationLevel(u8, u8, u8),
#[error("Each color should be represented by {0} bits, but {1} bits has been found instead.")]
InvalidDataSize(usize, usize),
#[error("Invalid image dimensions: {0} Pixels found (expected {1})")]
InvalidImageDimension(usize, usize),
#[error("Error while io: {0}")]
IoError(#[from] std::io::Error),
#[error("Deku error: {0}")]
DekuError(#[from] DekuError),
#[error("Image error: {0}")]
ImageError(#[from] ImageError),
}
impl From<GreenfieldError> for DekuError {
fn from(e: GreenfieldError) -> Self {
DekuError::Unexpected(e.to_string())
}
}
pub type GreenfieldResult<T> = Result<T, GreenfieldError>;