Skip to main content

docx_rs/reader/
frame_property.rs

1use std::io::Read;
2use std::str::FromStr;
3
4use super::*;
5
6impl ElementReader for FrameProperty {
7    fn read<R: Read>(
8        _r: &mut EventReader<R>,
9        attrs: &[OwnedAttribute],
10    ) -> Result<Self, ReaderError> {
11        let mut fp = FrameProperty::new();
12        for a in attrs {
13            let local_name = &a.name.local_name;
14            let e = XMLElement::from_str(local_name).unwrap();
15            match e {
16                XMLElement::Wrap => {
17                    fp = fp.wrap(a.value.clone());
18                }
19                XMLElement::HeightRule => {
20                    fp = fp.h_rule(a.value.clone());
21                }
22                XMLElement::HAnchor => {
23                    fp = fp.h_anchor(a.value.clone());
24                }
25                XMLElement::VAnchor => {
26                    fp = fp.v_anchor(a.value.clone());
27                }
28                XMLElement::HSpace => {
29                    if let Ok(s) = f64::from_str(&a.value) {
30                        fp = fp.h_space(s as i32)
31                    }
32                }
33                XMLElement::VSpace => {
34                    if let Ok(s) = f64::from_str(&a.value) {
35                        fp = fp.v_space(s as i32)
36                    }
37                }
38                XMLElement::XAlign => fp = fp.x_align(a.value.clone()),
39                XMLElement::YAlign => fp = fp.y_align(a.value.clone()),
40                XMLElement::W => {
41                    if let Ok(s) = f64::from_str(&a.value) {
42                        fp = fp.width(s as u32)
43                    }
44                }
45                XMLElement::H => {
46                    if let Ok(s) = f64::from_str(&a.value) {
47                        fp = fp.height(s as u32)
48                    }
49                }
50                XMLElement::X => {
51                    if let Ok(s) = f64::from_str(&a.value) {
52                        fp = fp.x(s as i32)
53                    }
54                }
55                XMLElement::Y => {
56                    if let Ok(s) = f64::from_str(&a.value) {
57                        fp = fp.y(s as i32)
58                    }
59                }
60                _ => {}
61            }
62        }
63        Ok(fp)
64    }
65}