Prepare axis setting for flex layouter ♟

This commit is contained in:
Laurenz 2019-11-17 11:11:53 +01:00
parent 796c2486ce
commit bd66ebd683
2 changed files with 15 additions and 6 deletions

View File

@ -48,6 +48,7 @@ enum FlexUnit {
Space(Size), Space(Size),
/// A forced break of the current flex run. /// A forced break of the current flex run.
Break, Break,
SetAxes(LayoutAxes),
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -97,6 +98,11 @@ impl FlexLayouter {
self.units.push(FlexUnit::Break); self.units.push(FlexUnit::Break);
} }
/// Update the axes in use by this flex layouter.
pub fn set_axes(&self, axes: LayoutAxes) {
self.units.push(FlexUnit::SetAxes(axes));
}
/// Compute the justified layout. /// Compute the justified layout.
/// ///
/// The layouter is not consumed by this to prevent ownership problems /// The layouter is not consumed by this to prevent ownership problems
@ -117,6 +123,8 @@ impl FlexLayouter {
self.space = None; self.space = None;
self.finish_run()?; self.finish_run()?;
}, },
FlexUnit::SetAxes(axes) => self.layout_set_axes(axes),
} }
} }
@ -162,6 +170,10 @@ impl FlexLayouter {
Ok(()) Ok(())
} }
fn layout_set_axes(&mut self, axes: LayoutAxes) {
// TODO
}
/// Finish the current flex run. /// Finish the current flex run.
fn finish_run(&mut self) -> LayoutResult<()> { fn finish_run(&mut self) -> LayoutResult<()> {
let mut actions = LayoutActionList::new(); let mut actions = LayoutActionList::new();
@ -183,11 +195,6 @@ impl FlexLayouter {
Ok(()) Ok(())
} }
/// Update the axes in use by this flex layouter.
pub fn set_axes(&self, axes: LayoutAxes) {
}
/// This layouter's context. /// This layouter's context.
pub fn ctx(&self) -> FlexContext { pub fn ctx(&self) -> FlexContext {
self.ctx self.ctx

View File

@ -100,8 +100,10 @@ impl<'a, 'p> TreeLayouter<'a, 'p> {
Command::SetStyle(style) => *self.style.to_mut() = style, Command::SetStyle(style) => *self.style.to_mut() = style,
Command::SetAxes(axes) => { Command::SetAxes(axes) => {
self.stack.set_axes(axes);
self.flex.set_axes(axes); self.flex.set_axes(axes);
if axes.secondary != self.ctx.axes.secondary {
self.stack.set_axes(axes);
}
self.ctx.axes = axes; self.ctx.axes = axes;
} }
} }