docx_rs/reader/
frame_property.rs1use 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}