yuno 0.1.1

A declarative UI layout and rendering framework powered by Skia.
mod box_layout;
mod column_layout;
mod edge_layout;
mod list_layout;
mod row_layout;

use skia_safe::{Canvas, Rect};
use std::cell::RefCell;
use std::rc::Rc;

pub use box_layout::*;
pub use column_layout::*;
pub use edge_layout::*;
pub use list_layout::*;
pub use row_layout::*;

use crate::drawing::Drawable;

pub trait HasPlanner {
    fn planner(&self) -> &RefCell<Option<Rc<dyn Layout>>>;
    fn set_planner(&self, p: Option<Rc<dyn Layout>>);
}

pub trait Layout: Drawable {
    fn measure_child(&self, c: &dyn Drawable, canvas: &Canvas) -> Rect;
}

#[allow(unused)]
type RefLayout = RefCell<Option<Rc<dyn Layout>>>;