Testing new structure
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
+12
-11
@@ -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<dyn Fn(&mut dyn Renderer)>;
|
||||
pub type Component = Box<dyn Fn() -> Node>;
|
||||
|
||||
pub struct Osui {
|
||||
component: Box<dyn Component>,
|
||||
node: Node,
|
||||
renderer: Option<Box<dyn Renderer>>,
|
||||
}
|
||||
|
||||
impl Osui {
|
||||
pub fn new(component: Box<dyn Component>) -> Self {
|
||||
pub fn new(component: Component) -> Self {
|
||||
Osui {
|
||||
component,
|
||||
node: component(),
|
||||
renderer: None,
|
||||
}
|
||||
}
|
||||
pub fn with_renderer(component: Box<dyn Component>, renderer: Box<dyn Renderer>) -> Self {
|
||||
pub fn with_renderer(component: Component, renderer: Box<dyn Renderer>) -> 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(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user