From 6e8ca5535ee1965c92913528d69c57165ccd588b Mon Sep 17 00:00:00 2001 From: Leo dev Date: Tue, 18 Nov 2025 20:17:02 +0100 Subject: [PATCH] Testing new structure --- examples/hello_world.rs | 14 ++++++++++++++ src/lib.rs | 23 ++++++++++++----------- 2 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 examples/hello_world.rs diff --git a/examples/hello_world.rs b/examples/hello_world.rs new file mode 100644 index 0000000..0cefd70 --- /dev/null +++ b/examples/hello_world.rs @@ -0,0 +1,14 @@ +use osui::Node; + +fn app() -> Node { + Box::new(|renderer| { + renderer.draw_text("Hello, World!", 10, 0).unwrap(); + }) +} + +fn main() { + let mut osui = osui::Osui::new(Box::new(app)); + loop { + osui.render().unwrap(); + } +} diff --git a/src/lib.rs b/src/lib.rs index d404186..9e19c9c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,34 +5,35 @@ pub mod renderer; pub use error::Result; -pub trait Component { - fn render(&mut self, renderer: &mut dyn Renderer); -} +pub type Node = Box; +pub type Component = Box Node>; pub struct Osui { - component: Box, + node: Node, renderer: Option>, } impl Osui { - pub fn new(component: Box) -> Self { + pub fn new(component: Component) -> Self { Osui { - component, + node: component(), renderer: None, } } - pub fn with_renderer(component: Box, renderer: Box) -> Self { + pub fn with_renderer(component: Component, renderer: Box) -> Self { Osui { - component, + node: component(), renderer: Some(renderer), } } - pub fn render(&mut self) { + pub fn render(&mut self) -> Result<()> { + renderer::utils::clear()?; if let Some(renderer) = &mut self.renderer { - self.component.render(renderer.as_mut()); + (self.node)(renderer.as_mut()); } else { - self.component.render(&mut OsuiRenderer); + (self.node)(&mut OsuiRenderer); } + Ok(()) } }