use bevy::prelude::{default, Bundle};
use crate::{dsl, Container, LayoutRect, LeafRule, Node, Root, ScreenRoot, Size};
#[derive(Bundle, Default)]
pub struct RootBundle {
pub pos_rect: LayoutRect,
pub root: Root,
pub screen_root: ScreenRoot,
}
impl RootBundle {
#[must_use]
pub fn new(dsl::Layout { align, distrib, margin, flow, .. }: dsl::Layout) -> Self {
let size = Size::all(f32::MAX);
RootBundle {
pos_rect: default(),
root: Root::new(size, flow, align, distrib, flow.absolute(margin)),
screen_root: ScreenRoot,
}
}
}
#[derive(Bundle, Default, Debug)]
pub struct LayoutBundle {
pub pos_rect: LayoutRect,
pub node: Node,
}
impl LayoutBundle {
#[must_use]
pub fn node(container: Container) -> Self {
Self { node: Node::Container(container), ..default() }
}
#[must_use]
pub fn boxy(size: Size<LeafRule>) -> Self {
Self { node: Node::Box(size), ..default() }
}
}