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>>>;