use crate::{FragmentPlacement, ItemFragment, LayoutBoxes, Style};
type LayoutCache = (u32, (LayoutBoxes, ((f32, f32), f32)));
#[non_exhaustive]
#[derive(Debug)]
pub struct LayoutNode {
pub style: Style,
pub self_fragments: Vec<ItemFragment>,
pub children: Vec<LayoutNode>,
pub layout_boxes: LayoutBoxes,
pub placements: Vec<FragmentPlacement>,
pub(crate) layout_boxes_cache: LayoutCache, }
impl LayoutNode {
pub fn new(style: Style) -> Self {
Self {
style,
self_fragments: Vec::new(),
placements: Vec::new(),
layout_boxes: LayoutBoxes::default(),
children: Vec::new(),
layout_boxes_cache: (0, (LayoutBoxes::default(), ((0.0, 0.0), 0.0))),
}
}
pub fn with_children(style: Style, children: Vec<LayoutNode>) -> Self {
Self {
style,
self_fragments: Vec::new(),
placements: Vec::new(),
layout_boxes: LayoutBoxes::default(),
children,
layout_boxes_cache: (0, (LayoutBoxes::default(), ((0.0, 0.0), 0.0))),
}
}
pub fn set_fragments(&mut self, fragments: Vec<ItemFragment>) {
self.self_fragments = fragments;
self.placements.reserve(self.self_fragments.len());
}
}