use serde::ser::SerializeStruct;
use serde::{Deserialize, Serialize, Serializer};
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Deserialize, Default)]
pub struct ImageMetadata {
pub width: usize,
pub height: usize,
pub aspect_ratio: Option<f64>,
pub stream_size: Option<usize>,
pub color_type: Option<String>,
pub format: Option<String>,
pub chroma_subsampling: Option<String>,
pub compression: Option<String>,
pub bit_depth: Option<u32>,
}
impl Serialize for ImageMetadata {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut state = serializer.serialize_struct("ImageMetadata", 9)?;
state.serialize_field("width", &self.width)?;
state.serialize_field("height", &self.height)?;
crate::serialize_optional!(state, self.aspect_ratio, "aspect_ratio");
crate::serialize_optional!(state, self.stream_size, "stream_size");
crate::serialize_optional!(state, self.color_type, "color_type");
crate::serialize_optional!(state, self.format, "format");
crate::serialize_optional!(state, self.chroma_subsampling, "chroma_subsampling");
crate::serialize_optional!(state, self.compression, "compression");
crate::serialize_optional!(state, self.bit_depth, "bit_depth");
state.end()
}
}
crate::impl_minimal_fallback!(ImageMetadata);