apng_encoder/apng/
errors.rs

1
2use failure::Fail;
3use std::io::Error as IOError;
4
5
6pub type ApngResult<T> = Result<T, ApngError>;
7
8
9
10#[derive(Fail, Debug)]
11pub enum ApngError {
12    #[fail(display = "Write a default image at first")]
13    DefaultImageNotAtFirst,
14    #[fail(display = "Invalid argument")]
15    InvalidArgument,
16    #[fail(display = "Invalid color")]
17    InvalidColor,
18    #[fail(display = "Invalid default image size or offset")]
19    InvalidDefaultImageRectangle,
20    #[fail(display = "IO error: {}", 0)]
21    Io(IOError),
22    #[fail(display = "Default image already exists")]
23    MulitiDefaultImage,
24    #[fail(display = "Not enough frames: expected={}, actual={}", 0, 1)]
25    NotEnoughFrames(usize, usize),
26    #[fail(display = "Not enough argument")]
27    NotEnoughArgument,
28    #[fail(display = "Too large image")]
29    TooLargeImage,
30    #[fail(display = "Too many frames: expected={}, actual={}", 0, 1)]
31    TooManyFrames(usize, usize),
32    #[fail(display = "Too small image")]
33    TooSmallImage,
34}
35
36macro_rules! define_error {
37    ($source:ty, $kind:tt) => {
38        impl From<$source> for ApngError {
39            fn from(error: $source) -> ApngError {
40                ApngError::$kind(error)
41            }
42        }
43    }
44}
45
46define_error!(std::io::Error, Io);