umya_spreadsheet/structs/drawing/
glow.rs

1// a:glow
2use super::super::super::Int64Value;
3use super::SchemeColor;
4use crate::reader::driver::*;
5use crate::writer::driver::*;
6use quick_xml::events::{BytesStart, Event};
7use quick_xml::Reader;
8use quick_xml::Writer;
9use std::io::Cursor;
10
11#[derive(Clone, Default, Debug)]
12pub struct Glow {
13    radius: Int64Value,
14    scheme_color: Option<Box<SchemeColor>>,
15}
16
17impl Glow {
18    #[inline]
19    pub fn get_radius(&self) -> &i64 {
20        self.radius.get_value()
21    }
22
23    #[inline]
24    pub fn set_radius(&mut self, value: i64) -> &mut Glow {
25        self.radius.set_value(value);
26        self
27    }
28
29    #[inline]
30    pub fn get_scheme_color(&self) -> Option<&SchemeColor> {
31        self.scheme_color.as_deref()
32    }
33
34    #[inline]
35    pub fn set_scheme_color(&mut self, value: SchemeColor) {
36        self.scheme_color = Some(Box::new(value));
37    }
38
39    pub(crate) fn set_attributes<R: std::io::BufRead>(
40        &mut self,
41        reader: &mut Reader<R>,
42        e: &BytesStart,
43    ) {
44        self.radius
45            .set_value_string(get_attribute(e, b"rad").unwrap());
46
47        xml_read_loop!(
48            reader,
49            Event::Start(ref e) => {
50                if e.name().into_inner() == b"a:schemeClr" {
51                    let mut obj = SchemeColor::default();
52                    obj.set_attributes(reader, e, false);
53                    self.set_scheme_color(obj);
54                }
55            },
56            Event::End(ref e) => {
57                if e.name().into_inner() == b"a:glow" {
58                    return;
59                }
60            },
61            Event::Eof => panic!("Error: Could not find {} end element", "a:glow")
62        );
63    }
64
65    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
66        // a:glow
67        write_start_tag(
68            writer,
69            "a:glow",
70            vec![("rad", &self.radius.get_value_string())],
71            false,
72        );
73
74        // a:schemeClr
75        if let Some(v) = &self.scheme_color {
76            v.write_to(writer);
77        }
78
79        write_end_tag(writer, "a:glow");
80    }
81}