charming_fork_zephyr/element/
anchor.rs1use 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}