lento 0.1.1

Cross platform ui framework
pub mod paint_tree;
pub mod paint_object;
pub mod layout_tree;
pub mod painter;

use skia_safe::Canvas;

pub struct RenderFn {
    render: Box<dyn FnOnce(&Canvas) + Send>,
}

impl RenderFn {
    pub fn empty() -> RenderFn {
        RenderFn::new(|_canvas| {})
    }

    pub fn new<F: FnOnce(&Canvas) + Send + 'static>(render: F) -> RenderFn {
        Self {
            render: Box::new(render),
        }
    }
    pub fn new_multiple<F: FnOnce(&Canvas) + Send + 'static>(renders: Vec<F>) -> RenderFn {
        Self::new(move |canvas| {
            for render in renders {
                render(canvas);
            }
        })
    }

    pub fn run(self, canvas: &Canvas) {
        (self.render)(canvas);
    }
}