Skip to main content

docx_rs/reader/
theme.rs

1use std::io::Read;
2use std::str::FromStr;
3
4use crate::reader::*;
5
6impl FromXML for Theme {
7    fn from_xml<R: Read>(reader: R) -> Result<Self, ReaderError> {
8        let mut parser = EventReader::new(reader);
9        let mut theme = Self::default();
10        loop {
11            let e = parser.next();
12            match e {
13                Ok(XmlEvent::StartElement {
14                    attributes, name, ..
15                }) => {
16                    let e = AXMLElement::from_str(&name.local_name).unwrap();
17                    #[allow(clippy::single_match)]
18                    match e {
19                        AXMLElement::FontScheme => {
20                            if let Ok(f) = FontScheme::read(&mut parser, &attributes) {
21                                theme.font_schema = f;
22                            }
23                            continue;
24                        }
25                        _ => {}
26                    }
27                }
28                Ok(XmlEvent::EndDocument) => break,
29                Err(_) => return Err(ReaderError::XMLReadError),
30                _ => {}
31            }
32        }
33        Ok(theme)
34    }
35}