1use crate::validation::Validate;
2use crate::{buffer, extensions, Extras, Index};
3use gltf_derive::Validate;
4use serde_derive::{Deserialize, Serialize};
5
6pub const VALID_MIME_TYPES: &[&str] = &["image/jpeg", "image/png"];
8
9#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
11pub struct Image {
12 #[serde(rename = "bufferView")]
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub buffer_view: Option<Index<buffer::View>>,
17
18 #[serde(rename = "mimeType")]
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub mime_type: Option<MimeType>,
22
23 #[cfg(feature = "names")]
25 #[cfg_attr(feature = "names", serde(skip_serializing_if = "Option::is_none"))]
26 pub name: Option<String>,
27
28 #[serde(skip_serializing_if = "Option::is_none")]
32 pub uri: Option<String>,
33
34 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub extensions: Option<extensions::image::Image>,
37
38 #[serde(default)]
40 #[cfg_attr(feature = "extras", serde(skip_serializing_if = "Option::is_none"))]
41 #[cfg_attr(not(feature = "extras"), serde(skip_serializing))]
42 pub extras: Extras,
43}
44
45#[derive(Clone, Debug, Deserialize, Serialize)]
47pub struct MimeType(pub String);
48
49impl Validate for MimeType {}