diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-10-02 18:59:53 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-10-02 19:35:02 +0200 |
| commit | c25c6a35b274f227e46c774f53f1cb424d1f3b91 (patch) | |
| tree | f158c29344b4c09c59eb35e6c0885a88a3f9f079 | |
| parent | 1d60525690ebc40745ffa1f51080539fc9448aff (diff) | |
Simpler and more versatile row and column gutter arguments
| -rw-r--r-- | src/library/layout.rs | 27 | ||||
| -rw-r--r-- | tests/typ/layout/grid-1.typ | 4 | ||||
| -rw-r--r-- | tests/typ/layout/grid-2.typ | 4 | ||||
| -rw-r--r-- | tests/typ/layout/grid-3.typ | 16 |
4 files changed, 26 insertions, 25 deletions
diff --git a/src/library/layout.rs b/src/library/layout.rs index 87cedd99..b6204901 100644 --- a/src/library/layout.rs +++ b/src/library/layout.rs @@ -251,7 +251,12 @@ pub fn stack(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { /// `grid`: Arrange children into a grid. pub fn grid(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { castable! { - Vec<TrackSizing>: "array of autos, linears, and fractionals", + Vec<TrackSizing>: "integer or (auto, linear, fractional, or array thereof)", + Value::Auto => vec![TrackSizing::Auto], + Value::Length(v) => vec![TrackSizing::Linear(v.into())], + Value::Relative(v) => vec![TrackSizing::Linear(v.into())], + Value::Linear(v) => vec![TrackSizing::Linear(v)], + Value::Fractional(v) => vec![TrackSizing::Fractional(v)], Value::Int(count) => vec![TrackSizing::Auto; count.max(0) as usize], Value::Array(values) => values .into_iter() @@ -272,21 +277,17 @@ pub fn grid(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { let rows = args.named("rows")?.unwrap_or_default(); let tracks = Gen::new(columns, rows); - let column_dir = args.named("column-dir")?; - let row_dir = args.named("row-dir")?; - - let gutter_columns = args.named("gutter-columns")?; - let gutter_rows = args.named("gutter-rows")?; - let gutter_default = args - .named("gutter")? - .map(|v| vec![TrackSizing::Linear(v)]) - .unwrap_or_default(); - + let base_gutter: Vec<TrackSizing> = args.named("gutter")?.unwrap_or_default(); + let column_gutter = args.named("column-gutter")?; + let row_gutter = args.named("row-gutter")?; let gutter = Gen::new( - gutter_columns.unwrap_or_else(|| gutter_default.clone()), - gutter_rows.unwrap_or(gutter_default), + column_gutter.unwrap_or_else(|| base_gutter.clone()), + row_gutter.unwrap_or(base_gutter), ); + let column_dir = args.named("column-dir")?; + let row_dir = args.named("row-dir")?; + let children: Vec<Template> = args.all().collect(); Ok(Value::Template(Template::from_block(move |state| { diff --git a/tests/typ/layout/grid-1.typ b/tests/typ/layout/grid-1.typ index 92a1b990..3d0412c2 100644 --- a/tests/typ/layout/grid-1.typ +++ b/tests/typ/layout/grid-1.typ @@ -25,8 +25,8 @@ --- #grid( columns: (auto, auto, 40%), - gutter-columns: (1fr,), - gutter-rows: (1fr,), + column-gutter: 1fr, + row-gutter: 1fr, rect(fill: eastern)[dddaa aaa aaa], rect(fill: conifer)[ccc], rect(width: 100%, fill: rgb("dddddd"))[aaa], diff --git a/tests/typ/layout/grid-2.typ b/tests/typ/layout/grid-2.typ index 164801ae..c522a402 100644 --- a/tests/typ/layout/grid-2.typ +++ b/tests/typ/layout/grid-2.typ @@ -4,8 +4,8 @@ #page(width: 12cm, height: 2.5cm) #grid( columns: 5, - gutter-columns: (2fr, 1fr, 1fr), - gutter-rows: 4 * (6pt,), + column-gutter: (2fr, 1fr, 1fr), + row-gutter: 6pt, [*Quarter*], [Expenditure], [External Revenue], diff --git a/tests/typ/layout/grid-3.typ b/tests/typ/layout/grid-3.typ index 23c5a43c..42d2ce97 100644 --- a/tests/typ/layout/grid-3.typ +++ b/tests/typ/layout/grid-3.typ @@ -4,7 +4,7 @@ #page(width: 5cm, height: 3cm) #grid( columns: 2, - gutter-rows: 3 * (8pt,), + row-gutter: 8pt, [Lorem ipsum dolor sit amet. Aenean commodo ligula eget dolor. Aenean massa. Penatibus et magnis.], @@ -21,8 +21,8 @@ #page(width: 5cm, height: 2cm) #grid( columns: 4 * (1fr,), - gutter-rows: (10pt,), - gutter-columns: (0pt, 10%), + row-gutter: 10pt, + column-gutter: (0pt, 10%), image("../../res/rhino.png"), align(right, rect(width: 100%, fill: eastern)[LoL]), [rofl], @@ -35,8 +35,8 @@ #page(width: 5cm, height: 2cm) #grid( columns: 3 * (1fr,), - gutter-rows: (8pt,), - gutter-columns: (0pt, 10%), + row-gutter: 8pt, + column-gutter: (0pt, 10%), [A], [B], [C], [Ha!\ ] * 6, [rofl], @@ -51,8 +51,8 @@ #page(width: 5cm, height: 2.25cm) #grid( columns: 4 * (1fr,), - gutter-rows: (10pt,), - gutter-columns: (0pt, 10%), + row-gutter: 10pt, + column-gutter: (0pt, 10%), [A], [B], [C], [D], grid(columns: 2, [A], [B], [C\ ]*3, [D]), align(right, rect(width: 100%, fill: eastern)[LoL]), @@ -66,7 +66,7 @@ #grid( columns: 2 * (1fr,), rows: (1fr, 2fr, auto, 1fr, 1cm), - gutter-rows: 4 * (10pt,), + row-gutter: 10pt, rect(height: 100%, width: 100%, fill: rgb("ff0000"))[No height], [foo], rect(height: 100%, width: 100%, fill: rgb("fc0030"))[Still no height], |
