From b9e462f88bf8bcbcd9b97fbeb9dc58c94c043230 Mon Sep 17 00:00:00 2001 From: Aleksander Date: Wed, 18 Jun 2025 20:07:13 +0200 Subject: [PATCH] wgui: move parser.rs into a separate directory --- wgui/src/parser.rs | 975 ---------------------------- wgui/src/parser/mod.rs | 523 +++++++++++++++ wgui/src/parser/style.rs | 252 +++++++ wgui/src/parser/widget_div.rs | 23 + wgui/src/parser/widget_label.rs | 67 ++ wgui/src/parser/widget_rectangle.rs | 91 +++ wgui/src/parser/widget_sprite.rs | 57 ++ 7 files changed, 1013 insertions(+), 975 deletions(-) delete mode 100644 wgui/src/parser.rs create mode 100644 wgui/src/parser/mod.rs create mode 100644 wgui/src/parser/style.rs create mode 100644 wgui/src/parser/widget_div.rs create mode 100644 wgui/src/parser/widget_label.rs create mode 100644 wgui/src/parser/widget_rectangle.rs create mode 100644 wgui/src/parser/widget_sprite.rs diff --git a/wgui/src/parser.rs b/wgui/src/parser.rs deleted file mode 100644 index a8cec85..0000000 --- a/wgui/src/parser.rs +++ /dev/null @@ -1,975 +0,0 @@ -use std::{ - cell::RefCell, - collections::HashMap, - path::{Path, PathBuf}, - rc::Rc, -}; - -use ouroboros::self_referencing; -use taffy::{ - AlignContent, AlignItems, AlignSelf, BoxSizing, Display, FlexDirection, FlexWrap, JustifyContent, - JustifySelf, Overflow, -}; - -use crate::{ - assets::AssetProvider, - drawing::{self, GradientMode}, - layout::{Layout, WidgetID}, - renderer_vk::text::{ - FontWeight, HorizontalAlign, - custom_glyph::{CustomGlyphContent, CustomGlyphData}, - }, - widget::{ - div::Div, - rectangle::{Rectangle, RectangleParams}, - sprite::{SpriteBox, SpriteBoxParams}, - text::{TextLabel, TextParams}, - util::WLength, - }, -}; - -type VarMap = HashMap, Rc>; - -#[self_referencing] -struct XmlDocument { - xml: String, - - #[borrows(xml)] - #[covariant] - doc: roxmltree::Document<'this>, -} - -struct Template { - node_document: Rc, - node: roxmltree::NodeId, // belongs to node_document which could be included in another file -} - -struct ParserFile<'a> { - path: PathBuf, - document: Rc, - ctx: Rc>>, - template_parameters: HashMap, Rc>, -} - -pub struct ParserResult { - ids: HashMap, WidgetID>, -} - -impl ParserResult { - pub fn require_by_id(&self, id: &str) -> anyhow::Result { - match self.ids.get(id) { - Some(id) => Ok(*id), - None => anyhow::bail!("Widget by ID \"{}\" doesn't exist", id), - } - } -} - -struct ParserContext<'a> { - layout: &'a mut Layout, - var_map: VarMap, - templates: HashMap, Rc