phasm_core/codec/jpeg/
error.rs1use std::fmt;
8
9#[derive(Debug, Clone, PartialEq, Eq)]
11pub enum JpegError {
12 UnexpectedEof,
14 InvalidSoi,
16 MissingEoi,
18 UnsupportedMarker(u8),
20 InvalidMarkerData(&'static str),
22 HuffmanDecode,
24 InvalidQuantTableId(u8),
26 InvalidHuffmanTableId(u8),
28 UnknownComponentId(u8),
30 InvalidDimensions,
32 UnsupportedPrecision(u8),
34}
35
36impl fmt::Display for JpegError {
37 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
38 match self {
39 Self::UnexpectedEof => write!(f, "unexpected end of JPEG data"),
40 Self::InvalidSoi => write!(f, "missing SOI marker (not a JPEG)"),
41 Self::MissingEoi => write!(f, "missing EOI marker"),
42 Self::UnsupportedMarker(m) => write!(f, "unsupported JPEG marker: 0xFF{m:02X}"),
43 Self::InvalidMarkerData(msg) => write!(f, "invalid marker data: {msg}"),
44 Self::HuffmanDecode => write!(f, "Huffman decode error"),
45 Self::InvalidQuantTableId(id) => write!(f, "invalid quantization table ID: {id}"),
46 Self::InvalidHuffmanTableId(id) => write!(f, "invalid Huffman table ID: {id}"),
47 Self::UnknownComponentId(id) => write!(f, "unknown component ID in SOS: {id}"),
48 Self::InvalidDimensions => write!(f, "invalid image dimensions or sampling factors"),
49 Self::UnsupportedPrecision(p) => write!(f, "unsupported sample precision: {p}-bit"),
50 }
51 }
52}
53
54impl std::error::Error for JpegError {}
55
56pub type Result<T> = std::result::Result<T, JpegError>;