recurve_svg/xml/
document.rs

1use simple_vector2::Vector2;
2use crate::xml::Element;
3
4pub struct Document {
5    pub elements: Vec<Element>,
6    pub reference_size: Vector2<f32>,
7}
8
9impl Document {
10    pub fn new(elements: Vec<Element>, reference_size: Vector2<f32>) -> Document {
11        Self {
12            elements,
13            reference_size,
14        }
15    }
16
17    pub fn as_xml(&self) -> Element {
18        let mut document = Element::builder()
19            .name("svg")
20            .with_attribute(("version", "1.1"))
21            .with_attribute(("width", self.reference_size.x))
22            .with_attribute(("height", self.reference_size.y))
23            .with_attribute(("xmlns", "http://www.w3.org/2000/svg"))
24            .build();
25        
26        if !self.elements.is_empty() {
27            document.children = Some(self.elements.clone());
28        }
29        
30        document
31    }
32}