pub mod pbm;
pub mod pgm;
pub mod png;
pub mod ppm;
pub use pbm::write_pbm;
pub use pgm::write_pgm;
pub use png::write_png;
pub use ppm::write_ppm;
use std::io;
#[derive(Debug)]
pub enum EncodeError {
Io(io::Error),
UnsupportedMode(&'static str),
PngEncoder(::png::EncodingError),
}
impl std::fmt::Display for EncodeError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Io(e) => write!(f, "I/O error: {e}"),
Self::UnsupportedMode(m) => write!(f, "pixel mode not supported: {m}"),
Self::PngEncoder(e) => write!(f, "PNG encoder error: {e}"),
}
}
}
impl std::error::Error for EncodeError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::Io(e) => Some(e),
Self::PngEncoder(e) => Some(e),
Self::UnsupportedMode(_) => None,
}
}
}
impl From<io::Error> for EncodeError {
fn from(e: io::Error) -> Self {
Self::Io(e)
}
}
impl From<::png::EncodingError> for EncodeError {
fn from(e: ::png::EncodingError) -> Self {
match e {
::png::EncodingError::IoError(io_err) => Self::Io(io_err),
other => Self::PngEncoder(other),
}
}
}