use std::sync::Arc; use app::App; use gui::{primitive::Axis, RoundedRect, UIColor, WidgetArrUtil, WidgetUtil, UI}; use render::Renderer; use winit::{event::WindowEvent, event_loop::ActiveEventLoop, window::Window}; mod app; mod render; pub fn main() { App::run(); } pub struct Client { renderer: Renderer, } impl Client { pub fn new(window: Arc) -> Self { let mut renderer = Renderer::new(window); let rect = RoundedRect { color: UIColor::WHITE, radius: 10.0, thickness: 0.0, inner_radius: 0.0, }; let mut ui = UI::build(); let blue = ui.add(rect.color(UIColor::BLUE)); let handle = blue.handle(); let mut ui = ui.finish( ( ( blue, ( rect.color(UIColor::RED), ( rect.color(UIColor::ORANGE), rect.color(UIColor::LIME).pad(10.0), ) .span(Axis::Y, [1, 1]), rect.color(UIColor::YELLOW), ) .span(Axis::X, [2, 2, 1]) .pad(10), ) .span(Axis::X, [1, 3]), rect.color(UIColor::GREEN), ) .span(Axis::Y, [3, 1]) .pad(10), ); ui.widgets.get_mut(&handle).unwrap().color = UIColor::MAGENTA; renderer.update(&ui); Self { renderer } } pub fn event(&mut self, event: WindowEvent, event_loop: &ActiveEventLoop) { match event { WindowEvent::CloseRequested => event_loop.exit(), WindowEvent::RedrawRequested => self.renderer.draw(), WindowEvent::Resized(size) => self.renderer.resize(&size), _ => (), } } }