Skip to main content

cotis_defaults/element_configs/
image_config.rs

1use cotis::utils::OwnedOrRef;
2
3/// Image payload configuration attached to an element.
4#[derive(Debug, Clone)]
5#[cfg_attr(
6    feature = "serialization",
7    derive(serde::Serialize, serde::Deserialize)
8)]
9#[cfg_attr(
10    feature = "serialization",
11    serde(bound(deserialize = "
12    ImageElementData: serde::de::DeserializeOwned,
13"))
14)]
15pub struct ImageConfig<'render, ImageElementData: 'render> {
16    /// Image payload stored as borrowed or owned data.
17    pub image: OwnedOrRef<'render, ImageElementData>,
18}
19impl<'render, ImageElementData> ImageConfig<'render, ImageElementData> {
20    /// Creates an image config borrowing the payload.
21    pub fn new(image: &'render ImageElementData) -> Self {
22        Self {
23            image: OwnedOrRef::Ref(image),
24        }
25    }
26
27    /// Creates an image config owning the payload.
28    pub fn new_owned(image: ImageElementData) -> Self {
29        Self {
30            image: OwnedOrRef::Owned(Box::new(image)),
31        }
32    }
33}