use image::ImageError;
use thiserror::Error;
use crate::utils::IVec2;
#[derive(Debug, Error)]
pub enum Error {
#[error("the specified coordonates `{provided:?}` are out of bounds (max: `{max:?}`)")]
OutOfBounds {
max: IVec2,
provided: IVec2,
},
#[error("attempted to make a sprite sheet or an unordered sprite sheet from sprites of different sizes \
(started with size `{required:?}`, encountered size `{provided:?}`)")]
MismatchedSpriteSize {
required: IVec2,
provided: IVec2,
},
#[error("attempted to make an empty unordered sprite sheet")]
EmptyUnorderedSpriteSheet,
#[error("attempted to concatenate unordered sprite sheets from an empty iterator")]
EmptyIterator,
#[error("attempted to push one or more sprites into a full sprite sheet (sprites that were able to be fitted: `{amount_fitted}`)")]
SheetFull {
amount_fitted: u32,
},
#[error("internal image error")]
ImageError(#[from] ImageError),
}
pub type Result<T> = std::result::Result<T, Error>;