umya_spreadsheet/structs/drawing/charts/
data_labels.rs1use 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 write_start_tag(writer, "c:dLbls", vec![], false);
298
299 if let Some(v) = &self.text_properties {
301 v.write_to(writer);
302 }
303
304 self.show_legend_key.write_to(writer);
306
307 self.show_value.write_to(writer);
309
310 self.show_category_name.write_to(writer);
312
313 self.show_series_name.write_to(writer);
315
316 self.show_percent.write_to(writer);
318
319 self.show_bubble_size.write_to(writer);
321
322 if let Some(v) = &self.show_leader_lines {
324 v.write_to(writer);
325 }
326
327 write_end_tag(writer, "c:dLbls");
328 }
329}