Use the format that we actually used when decoding. The mime type is usually derived from the file extension which might not always be correct. Issue #43 Part-of: <https://gitlab.gnome.org/Incubator/loupe/-/merge_requests/132>
35 lines
927 B
Rust
35 lines
927 B
Rust
mod heif;
|
|
mod image_rs_other;
|
|
mod svg;
|
|
|
|
pub use heif::Heif;
|
|
pub use image_rs_other::ImageRsOther;
|
|
pub use svg::{Svg, RSVG_MAX_SIZE};
|
|
|
|
use super::{Decoder, UpdateSender};
|
|
|
|
#[derive(Clone, Copy, Debug)]
|
|
pub enum ImageFormat {
|
|
ImageRs(image_rs::ImageFormat),
|
|
// TODO: Add details about contained format
|
|
Heif,
|
|
Svg,
|
|
}
|
|
|
|
impl std::fmt::Display for ImageFormat {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
|
match self {
|
|
Self::ImageRs(format) => {
|
|
let debug = format!("{:?}", format);
|
|
if debug.len() <= 4 {
|
|
// uppercase abbreviations
|
|
write!(f, "{}", debug.to_uppercase())
|
|
} else {
|
|
write!(f, "{}", debug)
|
|
}
|
|
}
|
|
Self::Heif => write!(f, "HEIF Container"),
|
|
Self::Svg => write!(f, "SVG"),
|
|
}
|
|
}
|
|
}
|