charming_fork_zephyr/element/
anchor.rs

1use serde::Serialize;
2
3use super::{icon::Icon, item_style::ItemStyle};
4
5#[derive(Serialize)]
6#[serde(rename_all = "camelCase")]
7pub struct Anchor {
8    #[serde(skip_serializing_if = "Option::is_none")]
9    show: Option<bool>,
10
11    #[serde(skip_serializing_if = "Option::is_none")]
12    show_above: Option<bool>,
13
14    #[serde(skip_serializing_if = "Option::is_none")]
15    size: Option<i64>,
16
17    #[serde(skip_serializing_if = "Option::is_none")]
18    icon: Option<Icon>,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    offset_center: Option<(String, String)>,
22
23    #[serde(skip_serializing_if = "Option::is_none")]
24    keep_aspect: Option<bool>,
25
26    #[serde(skip_serializing_if = "Option::is_none")]
27    item_style: Option<ItemStyle>,
28}
29
30impl Anchor {
31    pub fn new() -> Self {
32        Self {
33            show: None,
34            show_above: None,
35            size: None,
36            icon: None,
37            offset_center: None,
38            keep_aspect: None,
39            item_style: None,
40        }
41    }
42
43    pub fn show(mut self, show: bool) -> Self {
44        self.show = Some(show);
45        self
46    }
47
48    pub fn show_above(mut self, show_above: bool) -> Self {
49        self.show_above = Some(show_above);
50        self
51    }
52
53    pub fn size<F: Into<i64>>(mut self, size: F) -> Self {
54        self.size = Some(size.into());
55        self
56    }
57
58    pub fn icon<S: Into<Icon>>(mut self, icon: S) -> Self {
59        self.icon = Some(icon.into());
60        self
61    }
62
63    pub fn offset_center<S: Into<String>>(mut self, offset_center: (S, S)) -> Self {
64        self.offset_center = Some((offset_center.0.into(), offset_center.1.into()));
65        self
66    }
67
68    pub fn keep_aspect(mut self, keep_aspect: bool) -> Self {
69        self.keep_aspect = Some(keep_aspect);
70        self
71    }
72
73    pub fn item_style<S: Into<ItemStyle>>(mut self, item_style: S) -> Self {
74        self.item_style = Some(item_style.into());
75        self
76    }
77}