summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-03-11 10:48:29 +0100
committerLaurenz <laurmaedje@gmail.com>2021-03-11 10:48:29 +0100
commitc1b1dbcc0925ba1730fabbfbca3c8b99831c5561 (patch)
tree6e4cb30753729c699bd899a7f2ec352e276beee8 /src/library
parent4e5f85aa4ac0d6b51323bb2a6e1fbd3f4f46babb (diff)
Better expansion behaviour 🐪
This makes expansion behaviour inheritable by placing it into the area and passing it down during layouting instead of computing some approximation of what we want during execution.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/pad.rs3
-rw-r--r--src/library/page.rs4
-rw-r--r--src/library/shapes.rs6
3 files changed, 2 insertions, 11 deletions
diff --git a/src/library/pad.rs b/src/library/pad.rs
index f9e4386d..0bf93093 100644
--- a/src/library/pad.rs
+++ b/src/library/pad.rs
@@ -29,8 +29,7 @@ pub fn pad(ctx: &mut EvalContext, args: &mut ValueArgs) -> Value {
Value::template("pad", move |ctx| {
let snapshot = ctx.state.clone();
- let expand = Spec::uniform(Expansion::Fit);
- let child = ctx.exec_body(&body, expand);
+ let child = ctx.exec(&body);
ctx.push(NodePad { padding, child });
ctx.state = snapshot;
diff --git a/src/library/page.rs b/src/library/page.rs
index 1fdf4d3f..4ab92b31 100644
--- a/src/library/page.rs
+++ b/src/library/page.rs
@@ -45,19 +45,16 @@ pub fn page(ctx: &mut EvalContext, args: &mut ValueArgs) -> Value {
if let Some(paper) = paper {
ctx.state.page.class = paper.class;
ctx.state.page.size = paper.size();
- ctx.state.page.expand = Spec::uniform(Expansion::Fill);
}
if let Some(width) = width {
ctx.state.page.class = PaperClass::Custom;
ctx.state.page.size.width = width;
- ctx.state.page.expand.horizontal = Expansion::Fill;
}
if let Some(height) = height {
ctx.state.page.class = PaperClass::Custom;
ctx.state.page.size.height = height;
- ctx.state.page.expand.vertical = Expansion::Fill;
}
if let Some(margins) = margins {
@@ -83,7 +80,6 @@ pub fn page(ctx: &mut EvalContext, args: &mut ValueArgs) -> Value {
if flip.unwrap_or(false) {
let page = &mut ctx.state.page;
std::mem::swap(&mut page.size.width, &mut page.size.height);
- std::mem::swap(&mut page.expand.horizontal, &mut page.expand.vertical);
}
ctx.set_dirs(Gen::new(main, cross));
diff --git a/src/library/shapes.rs b/src/library/shapes.rs
index 5e638c01..9c466318 100644
--- a/src/library/shapes.rs
+++ b/src/library/shapes.rs
@@ -26,17 +26,13 @@ pub fn box_(ctx: &mut EvalContext, args: &mut ValueArgs) -> Value {
let color = args.get(ctx, "color");
let body = args.find::<ValueTemplate>(ctx).unwrap_or_default();
- let fill_if = |c| if c { Expansion::Fill } else { Expansion::Fit };
- let expand = Spec::new(fill_if(width.is_some()), fill_if(height.is_some()));
-
Value::template("box", move |ctx| {
let snapshot = ctx.state.clone();
ctx.set_dirs(Gen::new(main, cross));
- let child = ctx.exec_body(&body, expand);
+ let child = ctx.exec(&body);
let fixed = NodeFixed { width, height, child };
-
if let Some(color) = color {
ctx.push(NodeBackground {
fill: Fill::Color(color),