Skip to main content

umya_spreadsheet/structs/drawing/charts/
data_labels.rs

1// c:dLbls
2use std::io::Cursor;
3
4use quick_xml::{
5    Reader,
6    Writer,
7    events::{
8        BytesStart,
9        Event,
10    },
11};
12
13use super::{
14    ShowBubbleSize,
15    ShowCategoryName,
16    ShowLeaderLines,
17    ShowLegendKey,
18    ShowPercent,
19    ShowSeriesName,
20    ShowValue,
21    TextProperties,
22};
23use crate::{
24    reader::driver::xml_read_loop,
25    writer::driver::{
26        write_end_tag,
27        write_start_tag,
28    },
29};
30
31#[derive(Clone, Default, Debug)]
32pub struct DataLabels {
33    show_legend_key:    ShowLegendKey,
34    show_value:         ShowValue,
35    show_category_name: ShowCategoryName,
36    show_series_name:   ShowSeriesName,
37    show_percent:       ShowPercent,
38    show_bubble_size:   ShowBubbleSize,
39    show_leader_lines:  Option<ShowLeaderLines>,
40    text_properties:    Option<TextProperties>,
41}
42
43impl DataLabels {
44    #[must_use]
45    pub fn show_legend_key(&self) -> &ShowLegendKey {
46        &self.show_legend_key
47    }
48
49    #[must_use]
50    #[deprecated(since = "3.0.0", note = "Use show_legend_key()")]
51    pub fn get_show_legend_key(&self) -> &ShowLegendKey {
52        self.show_legend_key()
53    }
54
55    pub fn show_legend_key_mut(&mut self) -> &mut ShowLegendKey {
56        &mut self.show_legend_key
57    }
58
59    #[deprecated(since = "3.0.0", note = "Use show_legend_key_mut()")]
60    pub fn get_show_legend_key_mut(&mut self) -> &mut ShowLegendKey {
61        self.show_legend_key_mut()
62    }
63
64    pub fn set_show_legend_key(&mut self, value: ShowLegendKey) -> &mut Self {
65        self.show_legend_key = value;
66        self
67    }
68
69    #[must_use]
70    pub fn show_value(&self) -> &ShowValue {
71        &self.show_value
72    }
73
74    #[must_use]
75    #[deprecated(since = "3.0.0", note = "Use show_value()")]
76    pub fn get_show_value(&self) -> &ShowValue {
77        self.show_value()
78    }
79
80    pub fn show_value_mut(&mut self) -> &mut ShowValue {
81        &mut self.show_value
82    }
83
84    #[deprecated(since = "3.0.0", note = "Use show_value_mut()")]
85    pub fn get_show_value_mut(&mut self) -> &mut ShowValue {
86        self.show_value_mut()
87    }
88
89    pub fn set_show_value(&mut self, value: ShowValue) -> &mut Self {
90        self.show_value = value;
91        self
92    }
93
94    #[must_use]
95    pub fn show_category_name(&self) -> &ShowCategoryName {
96        &self.show_category_name
97    }
98
99    #[must_use]
100    #[deprecated(since = "3.0.0", note = "Use show_category_name()")]
101    pub fn get_show_category_name(&self) -> &ShowCategoryName {
102        self.show_category_name()
103    }
104
105    pub fn show_category_name_mut(&mut self) -> &mut ShowCategoryName {
106        &mut self.show_category_name
107    }
108
109    #[deprecated(since = "3.0.0", note = "Use show_category_name_mut()")]
110    pub fn get_show_category_name_mut(&mut self) -> &mut ShowCategoryName {
111        self.show_category_name_mut()
112    }
113
114    pub fn set_show_category_name(&mut self, value: ShowCategoryName) -> &mut Self {
115        self.show_category_name = value;
116        self
117    }
118
119    #[must_use]
120    pub fn show_series_name(&self) -> &ShowSeriesName {
121        &self.show_series_name
122    }
123
124    #[must_use]
125    #[deprecated(since = "3.0.0", note = "Use show_series_name()")]
126    pub fn get_show_series_name(&self) -> &ShowSeriesName {
127        self.show_series_name()
128    }
129
130    pub fn show_series_name_mut(&mut self) -> &mut ShowSeriesName {
131        &mut self.show_series_name
132    }
133
134    #[deprecated(since = "3.0.0", note = "Use show_series_name_mut()")]
135    pub fn get_show_series_name_mut(&mut self) -> &mut ShowSeriesName {
136        self.show_series_name_mut()
137    }
138
139    pub fn set_show_series_name(&mut self, value: ShowSeriesName) -> &mut Self {
140        self.show_series_name = value;
141        self
142    }
143
144    #[must_use]
145    pub fn show_percent(&self) -> &ShowPercent {
146        &self.show_percent
147    }
148
149    #[must_use]
150    #[deprecated(since = "3.0.0", note = "Use show_percent()")]
151    pub fn get_show_percent(&self) -> &ShowPercent {
152        self.show_percent()
153    }
154
155    pub fn show_percent_mut(&mut self) -> &mut ShowPercent {
156        &mut self.show_percent
157    }
158
159    #[deprecated(since = "3.0.0", note = "Use show_percent_mut()")]
160    pub fn get_show_percent_mut(&mut self) -> &mut ShowPercent {
161        self.show_percent_mut()
162    }
163
164    pub fn set_show_percent(&mut self, value: ShowPercent) -> &mut Self {
165        self.show_percent = value;
166        self
167    }
168
169    #[must_use]
170    pub fn show_bubble_size(&self) -> &ShowBubbleSize {
171        &self.show_bubble_size
172    }
173
174    #[must_use]
175    #[deprecated(since = "3.0.0", note = "Use show_bubble_size()")]
176    pub fn get_show_bubble_size(&self) -> &ShowBubbleSize {
177        self.show_bubble_size()
178    }
179
180    pub fn show_bubble_size_mut(&mut self) -> &mut ShowBubbleSize {
181        &mut self.show_bubble_size
182    }
183
184    #[deprecated(since = "3.0.0", note = "Use show_bubble_size_mut()")]
185    pub fn get_show_bubble_size_mut(&mut self) -> &mut ShowBubbleSize {
186        self.show_bubble_size_mut()
187    }
188
189    pub fn set_show_bubble_size(&mut self, value: ShowBubbleSize) -> &mut Self {
190        self.show_bubble_size = value;
191        self
192    }
193
194    #[must_use]
195    pub fn show_leader_lines(&self) -> Option<&ShowLeaderLines> {
196        self.show_leader_lines.as_ref()
197    }
198
199    #[must_use]
200    #[deprecated(since = "3.0.0", note = "Use show_leader_lines()")]
201    pub fn get_show_leader_lines(&self) -> Option<&ShowLeaderLines> {
202        self.show_leader_lines()
203    }
204
205    pub fn show_leader_lines_mut(&mut self) -> Option<&mut ShowLeaderLines> {
206        self.show_leader_lines.as_mut()
207    }
208
209    #[deprecated(since = "3.0.0", note = "Use show_leader_lines_mut()")]
210    pub fn get_show_leader_lines_mut(&mut self) -> Option<&mut ShowLeaderLines> {
211        self.show_leader_lines_mut()
212    }
213
214    pub fn set_show_leader_lines(&mut self, value: ShowLeaderLines) -> &mut Self {
215        self.show_leader_lines = Some(value);
216        self
217    }
218
219    #[must_use]
220    pub fn text_properties(&self) -> Option<&TextProperties> {
221        self.text_properties.as_ref()
222    }
223
224    #[must_use]
225    #[deprecated(since = "3.0.0", note = "Use text_properties()")]
226    pub fn get_text_properties(&self) -> Option<&TextProperties> {
227        self.text_properties()
228    }
229
230    pub fn text_properties_mut(&mut self) -> Option<&mut TextProperties> {
231        self.text_properties.as_mut()
232    }
233
234    #[deprecated(since = "3.0.0", note = "Use text_properties_mut()")]
235    pub fn get_text_properties_mut(&mut self) -> Option<&mut TextProperties> {
236        self.text_properties_mut()
237    }
238
239    pub fn set_text_properties(&mut self, value: TextProperties) -> &mut Self {
240        self.text_properties = Some(value);
241        self
242    }
243
244    pub(crate) fn set_attributes<R: std::io::BufRead>(
245        &mut self,
246        reader: &mut Reader<R>,
247        _e: &BytesStart,
248    ) {
249        xml_read_loop!(
250            reader,
251            Event::Start(ref e) => {
252                if e.name().into_inner() == b"c:txPr" {
253                    let mut obj = TextProperties::default();
254                    obj.set_attributes(reader, e);
255                    self.set_text_properties(obj);
256                }
257            },
258            Event::Empty(ref e) => {
259                match e.name().into_inner() {
260                    b"c:showLegendKey" => {
261                        self.show_legend_key.set_attributes(reader, e);
262                    }
263                    b"c:showVal" => {
264                        self.show_value.set_attributes(reader, e);
265                    }
266                    b"c:showCatName" => {
267                        self.show_category_name.set_attributes(reader, e);
268                    }
269                    b"c:showSerName" => {
270                        self.show_series_name.set_attributes(reader, e);
271                    }
272                    b"c:showPercent" => {
273                        self.show_percent.set_attributes(reader, e);
274                    }
275                    b"c:showBubbleSize" => {
276                        self.show_bubble_size.set_attributes(reader, e);
277                    }
278                    b"c:showLeaderLines" => {
279                        let mut obj = ShowLeaderLines::default();
280                        obj.set_attributes(reader, e);
281                        self.set_show_leader_lines(obj);
282                    }
283                    _ => (),
284                }
285            },
286            Event::End(ref e) => {
287                if e.name().into_inner() == b"c:dLbls" {
288                    return
289                }
290            },
291            Event::Eof => panic!("Error: Could not find {} end element", "c:dLbls")
292        );
293    }
294
295    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
296        // c:dLbls
297        write_start_tag(writer, "c:dLbls", vec![], false);
298
299        // c:txPr
300        if let Some(v) = &self.text_properties {
301            v.write_to(writer);
302        }
303
304        // c:showLegendKey
305        self.show_legend_key.write_to(writer);
306
307        // c:showVal
308        self.show_value.write_to(writer);
309
310        // c:showCatName
311        self.show_category_name.write_to(writer);
312
313        // c:showSerName
314        self.show_series_name.write_to(writer);
315
316        // c:showPercent
317        self.show_percent.write_to(writer);
318
319        // c:showBubbleSize
320        self.show_bubble_size.write_to(writer);
321
322        // c:showLeaderLines
323        if let Some(v) = &self.show_leader_lines {
324            v.write_to(writer);
325        }
326
327        write_end_tag(writer, "c:dLbls");
328    }
329}