inkanim_types/ink/widget/
properties.rs

1use serde::{
2    Deserialize, Serialize,
3    ser::{SerializeSeq, SerializeStruct},
4};
5
6use crate::{HandleId, Name};
7
8#[allow(non_camel_case_types)]
9#[derive(Debug, Default, Clone, Deserialize, PartialEq)]
10#[serde(tag = "$type", rename_all = "camelCase")]
11pub struct inkPropertyBinding {
12    pub property_name: Name,
13    pub style_path: Name,
14}
15
16impl Serialize for inkPropertyBinding {
17    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
18    where
19        S: serde::Serializer,
20    {
21        let mut s = serializer.serialize_struct("inkPropertyBinding", 2)?;
22        s.serialize_field("propertyName", &self.property_name)?;
23        s.serialize_field("stylePath", &self.style_path)?;
24        s.end()
25    }
26}
27
28#[allow(non_camel_case_types)]
29#[derive(Debug, Default, Clone, Deserialize, PartialEq)]
30#[serde(tag = "$type")]
31pub struct inkPropertyManager {
32    pub bindings: Vec<inkPropertyBinding>,
33}
34
35impl Serialize for inkPropertyManager {
36    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
37    where
38        S: serde::Serializer,
39    {
40        let mut seq = serializer.serialize_seq(Some(self.bindings.len()))?;
41        for elem in self.bindings.iter() {
42            seq.serialize_element(elem)?;
43        }
44        seq.end()
45    }
46}
47
48#[derive(Debug, Default, Clone, Deserialize, PartialEq)]
49#[serde(rename_all = "PascalCase")]
50pub struct PropertyManager {
51    pub handle_id: HandleId,
52    pub data: inkPropertyManager,
53}
54
55impl Serialize for PropertyManager {
56    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
57    where
58        S: serde::Serializer,
59    {
60        self.data.serialize(serializer)
61    }
62}