umya_spreadsheet/structs/drawing/
linear_gradient_fill.rs

1// a:lin
2use super::super::super::BooleanValue;
3use super::super::super::Int32Value;
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 LinearGradientFill {
13    angle: Int32Value,
14    scaled: BooleanValue,
15}
16
17impl LinearGradientFill {
18    #[inline]
19    pub fn get_angle(&self) -> &i32 {
20        self.angle.get_value()
21    }
22
23    #[inline]
24    pub fn set_angle(&mut self, value: i32) -> &mut LinearGradientFill {
25        self.angle.set_value(value);
26        self
27    }
28
29    #[inline]
30    pub fn get_scaled(&self) -> &bool {
31        self.scaled.get_value()
32    }
33
34    #[inline]
35    pub fn set_scaled(&mut self, value: bool) -> &mut LinearGradientFill {
36        self.scaled.set_value(value);
37        self
38    }
39
40    #[inline]
41    pub(crate) fn set_attributes<R: std::io::BufRead>(
42        &mut self,
43        reader: &mut Reader<R>,
44        e: &BytesStart,
45        empty_flag: bool,
46    ) {
47        set_string_from_xml!(self, e, angle, "ang");
48        set_string_from_xml!(self, e, scaled, "scaled");
49
50        if empty_flag {
51            return;
52        }
53
54        xml_read_loop!(
55            reader,
56            Event::End(ref e) => {
57                if e.name().into_inner() == b"a:lin" {
58                    return;
59                }
60            },
61            Event::Eof => panic!("Error: Could not find {} end element", "a:lin")
62        );
63    }
64
65    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
66        // a:lin
67        let mut attributes: Vec<(&str, &str)> = Vec::new();
68        let ang = self.angle.get_value_string();
69        if self.angle.has_value() {
70            attributes.push(("ang", &ang));
71        }
72        if self.scaled.has_value() {
73            attributes.push(("scaled", self.scaled.get_value_string()));
74        }
75        write_start_tag(writer, "a:lin", attributes, true);
76    }
77}