summaryrefslogtreecommitdiff
path: root/src/library/boxed.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-10-04 19:06:20 +0200
committerLaurenz <laurmaedje@gmail.com>2020-10-04 19:06:20 +0200
commit0f7c70fd93db23ec866ae13aa2f146b7787afabf (patch)
tree7a67019fa77931e1722789cfd27997dd82a9b521 /src/library/boxed.rs
parent6672f8f7dfcb38bbda3ec92bdf95341c05e9a782 (diff)
Separate state and constraints 🧶
Diffstat (limited to 'src/library/boxed.rs')
-rw-r--r--src/library/boxed.rs43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/library/boxed.rs b/src/library/boxed.rs
index fe0272bf..94aac48a 100644
--- a/src/library/boxed.rs
+++ b/src/library/boxed.rs
@@ -6,37 +6,32 @@ use crate::geom::Linear;
/// # Keyword arguments
/// - `width`: The width of the box (length or relative to parent's width).
/// - `height`: The height of the box (length or relative to parent's height).
-pub async fn boxed(
- _: Span,
- mut args: DictValue,
- mut ctx: LayoutContext<'_>,
-) -> Pass<Value> {
- let mut f = Feedback::new();
-
+pub async fn boxed(mut args: DictValue, ctx: &mut LayoutContext) -> Value {
let content = args.take::<SynTree>().unwrap_or_default();
- ctx.base = ctx.spaces[0].size;
- ctx.spaces.truncate(1);
- ctx.repeat = false;
+ let constraints = &mut ctx.constraints;
+ constraints.base = constraints.spaces[0].size;
+ constraints.spaces.truncate(1);
+ constraints.repeat = false;
- if let Some(width) = args.take_key::<Linear>("width", &mut f) {
- let abs = width.eval(ctx.base.width);
- ctx.base.width = abs;
- ctx.spaces[0].size.width = abs;
- ctx.spaces[0].expansion.horizontal = true;
+ if let Some(width) = args.take_key::<Linear>("width", &mut ctx.f) {
+ let abs = width.eval(constraints.base.width);
+ constraints.base.width = abs;
+ constraints.spaces[0].size.width = abs;
+ constraints.spaces[0].expansion.horizontal = true;
}
- if let Some(height) = args.take_key::<Linear>("height", &mut f) {
- let abs = height.eval(ctx.base.height);
- ctx.base.height = abs;
- ctx.spaces[0].size.height = abs;
- ctx.spaces[0].expansion.vertical = true;
+ if let Some(height) = args.take_key::<Linear>("height", &mut ctx.f) {
+ let abs = height.eval(constraints.base.height);
+ constraints.base.height = abs;
+ constraints.spaces[0].size.height = abs;
+ constraints.spaces[0].expansion.vertical = true;
}
+ args.unexpected(&mut ctx.f);
+
let layouted = layout_tree(&content, ctx).await;
- let layout = layouted.output.into_iter().next().unwrap();
- f.extend(layouted.feedback);
+ let layout = layouted.into_iter().next().unwrap();
- args.unexpected(&mut f);
- Pass::commands(vec![Add(layout)], f)
+ Value::Commands(vec![Add(layout)])
}