umya_spreadsheet/structs/drawing/charts/
series_text.rs1use crate::reader::driver::*;
3use crate::structs::StringValue;
4use crate::writer::driver::*;
5use quick_xml::events::{BytesStart, Event};
6use quick_xml::Reader;
7use quick_xml::Writer;
8use std::io::Cursor;
9
10#[derive(Clone, Default, Debug)]
11pub struct SeriesText {
12 value: StringValue,
13}
14
15impl SeriesText {
16 pub fn get_value(&self) -> &str {
17 self.value.get_value_str()
18 }
19
20 pub fn set_value<S: Into<String>>(&mut self, value: S) -> &mut Self {
21 self.value.set_value(value);
22 self
23 }
24
25 pub(crate) fn set_attributes<R: std::io::BufRead>(
26 &mut self,
27 reader: &mut Reader<R>,
28 _e: &BytesStart,
29 ) {
30 xml_read_loop!(
31 reader,
32 Event::Text(e) => {
33 self.set_value(e.unescape().unwrap());
34 },
35 Event::End(ref e) => {
36 if e.name().0 == b"c:tx" {
37 return
38 }
39 },
40 Event::Eof => panic!("Error: Could not find {} end element", "c:tx")
41 );
42 }
43
44 pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
45 write_start_tag(writer, "c:tx", vec![], false);
47
48 write_start_tag(writer, "c:v", vec![], false);
50 write_text_node(writer, self.value.get_value_str());
51 write_end_tag(writer, "c:v");
52
53 write_end_tag(writer, "c:tx");
54 }
55}