mod style; mod widget_div; mod widget_label; mod widget_rectangle; mod widget_sprite; use crate::{ assets::AssetProvider, drawing::{self}, layout::{Layout, WidgetID}, parser::{ widget_div::parse_widget_div, widget_label::parse_widget_label, widget_rectangle::parse_widget_rectangle, widget_sprite::parse_widget_sprite, }, }; use ouroboros::self_referencing; use std::{ collections::HashMap, path::{Path, PathBuf}, rc::Rc, }; #[self_referencing] struct XmlDocument { xml: String, #[borrows(xml)] #[covariant] doc: roxmltree::Document<'this>, } pub struct Template { node_document: Rc, node: roxmltree::NodeId, // belongs to node_document which could be included in another file } struct ParserFile { path: PathBuf, document: Rc, template_parameters: HashMap, Rc>, } pub struct ParserResult { pub ids: HashMap, WidgetID>, macro_attribs: HashMap, MacroAttribs>, var_map: HashMap, Rc>, pub templates: HashMap, Rc