#[derive(Clone, Copy, Default)]
pub(crate) struct DescendantDirt {
pub(crate) layout: bool,
pub(crate) measure: bool,
}
impl DescendantDirt {
pub(crate) fn marked(self, measure: bool) -> Self {
Self {
layout: true,
measure: self.measure || measure,
}
}
}
#[derive(Clone, Copy)]
pub(crate) struct LayoutDirt {
pub(crate) measure: bool,
pub(crate) layout: bool,
pub(crate) descendant: DescendantDirt,
}
impl LayoutDirt {
pub(crate) const CLEAN: Self = Self {
measure: false,
layout: false,
descendant: DescendantDirt {
layout: false,
measure: false,
},
};
pub(crate) fn any(self) -> bool {
self.measure || self.layout || self.descendant.layout
}
}
impl Default for LayoutDirt {
fn default() -> Self {
Self {
measure: true,
layout: true,
descendant: DescendantDirt::default(),
}
}
}