1use thiserror::Error;
2
3#[derive(Debug, Error)]
7pub enum DecodeError {
8 #[error("file too short for header")]
9 TruncatedHeader,
10
11 #[error("invalid magic bytes: expected LIF, got {0:?}")]
12 InvalidMagic([u8; 4]),
13
14 #[error("unsupported format version: {0}")]
15 UnsupportedVersion(u16),
16
17 #[error("unknown flag bits set: {0:#06x}")]
18 UnknownFlags(u16),
19
20 #[error("missing required pixel data chunk")]
21 MissingPixelData,
22
23 #[error("multiple pixel data chunks")]
24 MultiplePixelData,
25
26 #[error("pixel data size mismatch: expected {expected}, got {actual}")]
27 SizeMismatch { expected: usize, actual: usize },
28
29 #[error("zstd decompression failed: {0}")]
30 ZstdError(#[from] std::io::Error),
31
32 #[error("unexpected end of file")]
33 TruncatedChunk,
34}
35
36#[derive(Debug, Error)]
40pub enum EncodeError {
41 #[error("image dimensions too large: {width}x{height}")]
42 DimensionsTooLarge { width: u32, height: u32 },
43
44 #[error("pixel buffer size mismatch: expected {expected}, got {actual}")]
45 BufferSizeMismatch { expected: usize, actual: usize },
46
47 #[error("zstd compression failed: {0}")]
48 ZstdError(#[from] std::io::Error),
49}