inkanim_types/ink/widget/
properties.rs1use 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}