charming_fork_zephyr/element/
pointer.rs1use serde::Serialize;
2
3use super::{icon::Icon, item_style::ItemStyle};
4
5#[derive(Serialize)]
6#[serde(rename_all = "camelCase")]
7pub struct Pointer {
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 icon: Option<Icon>,
16
17 #[serde(skip_serializing_if = "Option::is_none")]
18 offset_center: Option<(String, String)>,
19
20 #[serde(skip_serializing_if = "Option::is_none")]
21 length: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
24 width: Option<i64>,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
27 keep_aspect: Option<bool>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
30 item_style: Option<ItemStyle>,
31}
32
33impl Pointer {
34 pub fn new() -> Self {
35 Self {
36 show: None,
37 show_above: None,
38 icon: None,
39 offset_center: None,
40 length: None,
41 width: None,
42 keep_aspect: None,
43 item_style: None,
44 }
45 }
46
47 pub fn show(mut self, show: bool) -> Self {
48 self.show = Some(show);
49 self
50 }
51
52 pub fn show_above(mut self, show_above: bool) -> Self {
53 self.show_above = Some(show_above);
54 self
55 }
56
57 pub fn icon<S: Into<Icon>>(mut self, icon: S) -> Self {
58 self.icon = Some(icon.into());
59 self
60 }
61
62 pub fn offset_center<S: Into<String>>(mut self, offset_center: (S, S)) -> Self {
63 self.offset_center = Some((offset_center.0.into(), offset_center.1.into()));
64 self
65 }
66
67 pub fn length<S: Into<String>>(mut self, length: S) -> Self {
68 self.length = Some(length.into());
69 self
70 }
71
72 pub fn width<F: Into<i64>>(mut self, width: F) -> Self {
73 self.width = Some(width.into());
74 self
75 }
76
77 pub fn keep_aspect(mut self, keep_aspect: bool) -> Self {
78 self.keep_aspect = Some(keep_aspect);
79 self
80 }
81
82 pub fn item_style<S: Into<ItemStyle>>(mut self, item_style: S) -> Self {
83 self.item_style = Some(item_style.into());
84 self
85 }
86}