umya_spreadsheet/structs/drawing/
supplemental_font.rs1use crate::reader::driver::*;
3use crate::structs::StringValue;
4use crate::writer::driver::*;
5use quick_xml::events::{BytesStart, Event};
6use quick_xml::Reader;
7use quick_xml::Writer;
8use std::io::Cursor;
9
10#[derive(Clone, Default, Debug)]
11pub struct SupplementalFont {
12 script: StringValue,
13 typeface: StringValue,
14}
15
16impl SupplementalFont {
17 #[inline]
18 pub fn get_script(&self) -> &str {
19 self.script.get_value_str()
20 }
21
22 #[inline]
23 pub fn set_script<S: Into<String>>(&mut self, value: S) -> &mut Self {
24 self.script.set_value(value);
25 self
26 }
27
28 #[inline]
29 pub fn get_typeface(&self) -> &str {
30 self.typeface.get_value_str()
31 }
32
33 #[inline]
34 pub fn set_typeface<S: Into<String>>(&mut self, value: S) -> &mut Self {
35 self.typeface.set_value(value);
36 self
37 }
38
39 #[inline]
40 pub(crate) fn set_attributes<R: std::io::BufRead>(
41 &mut self,
42 reader: &mut Reader<R>,
43 e: &BytesStart,
44 empty_flag: bool,
45 ) {
46 set_string_from_xml!(self, e, script, "script");
47 set_string_from_xml!(self, e, typeface, "typeface");
48
49 if empty_flag {
50 return;
51 }
52
53 xml_read_loop!(
54 reader,
55 Event::End(ref e) => {
56 if e.name().into_inner() == b"a:font" {
57 return;
58 }
59 },
60 Event::Eof => panic!("Error: Could not find {} end element", "a:font")
61 );
62 }
63
64 pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
65 write_start_tag(
67 writer,
68 "a:font",
69 vec![
70 ("script", self.script.get_value_str()),
71 ("typeface", self.typeface.get_value_str()),
72 ],
73 true,
74 );
75 }
76}