From 0515087f0d4bbdbd0260c62ac610e463f9e1183b Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sat, 24 Jan 2026 10:44:30 +0100 Subject: [PATCH] Renderer --- examples/hello_world.rs | 2 +- src/lib.rs | 46 +++++------------------------------------ src/render.rs | 41 ++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 42 deletions(-) create mode 100644 src/render.rs diff --git a/examples/hello_world.rs b/examples/hello_world.rs index 7b6fdd5..2535b11 100644 --- a/examples/hello_world.rs +++ b/examples/hello_world.rs @@ -34,6 +34,6 @@ fn app(cx: &Arc) -> View { }); Arc::new(move |ctx| { - println!("Count: {count}, size: {:?}", ctx.available()); + println!("Count: {count}, size: {:?}", ctx.available); }) } diff --git a/src/lib.rs b/src/lib.rs index b07b882..f70bd95 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,54 +1,18 @@ use std::sync::Arc; +use crate::render::DrawContext; + pub mod component; pub mod engine; +pub mod render; pub mod state; pub mod prelude { pub use crate::component::*; pub use crate::engine::*; + pub use crate::render::*; pub use crate::state::*; - pub use crate::{DrawContext, View}; + pub use crate::View; } pub type View = Arc; - -#[derive(Debug, Clone)] -pub struct Size { - pub width: u16, - pub height: u16, -} - -#[derive(Debug, Clone)] -pub struct DrawContext { - available: Size, - used: Size, -} - -#[derive(Debug, Clone)] -pub struct RenderContext {} - -impl DrawContext { - pub fn new(width: u16, height: u16) -> Self { - Self { - available: Size { width, height }, - used: Size { - width: 0, - height: 0, - }, - } - } - - pub fn available(&self) -> &Size { - &self.available - } - - pub fn used(&self) -> &Size { - &self.used - } - - pub fn allocate(&mut self, width: u16, height: u16) { - self.used.width += width; - self.used.height += height; - } -} diff --git a/src/render.rs b/src/render.rs new file mode 100644 index 0000000..f08e96d --- /dev/null +++ b/src/render.rs @@ -0,0 +1,41 @@ +use std::{fmt::Debug, sync::Arc}; + +pub trait DrawInstruction: Debug {} + +#[derive(Debug, Clone)] +pub struct Size { + pub width: u16, + pub height: u16, +} + +#[derive(Debug, Clone)] +pub struct DrawContext { + pub available: Size, + pub used: Size, + pub drawing: Vec>, +} + +#[derive(Debug, Clone)] +pub struct RenderContext {} + +impl DrawContext { + pub fn new(width: u16, height: u16) -> Self { + Self { + available: Size { width, height }, + used: Size { + width: 0, + height: 0, + }, + drawing: Vec::new(), + } + } + + pub fn allocate(&mut self, width: u16, height: u16) { + self.used.width += width; + self.used.height += height; + } + + pub fn draw(&mut self, inst: I) { + self.drawing.push(Arc::new(inst)); + } +}