Make within-column layout cumulative as well

This commit is contained in:
Bán Dénes 2022-05-29 14:12:11 +02:00
parent 802a988705
commit 5a25c1c423
8 changed files with 32 additions and 28 deletions

View file

@ -86,7 +86,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key,
const keys = [] const keys = []
const default_key = { const default_key = {
stagger: units.$default_stagger, stagger: units.$default_stagger,
spread: first_col ? 0 : units.$default_spread, spread: units.$default_spread,
splay: units.$default_splay, splay: units.$default_splay,
origin: [0, 0], origin: [0, 0],
orient: 0, orient: 0,
@ -141,7 +141,9 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key,
} }
// setting up column-level anchor // setting up column-level anchor
zone_anchor.x += keys[0].spread if (!first_col) {
zone_anchor.x += keys[0].spread
}
zone_anchor.y += keys[0].stagger zone_anchor.y += keys[0].stagger
const col_anchor = zone_anchor.clone() const col_anchor = zone_anchor.clone()
@ -156,16 +158,17 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key,
} }
// actually laying out keys // actually laying out keys
let running_anchor = col_anchor.clone()
for (const r of rotations) {
running_anchor.rotate(r.angle, r.origin)
}
for (const key of keys) { for (const key of keys) {
// copy the current column anchor // copy the current column anchor
let point = col_anchor.clone() let point = running_anchor.clone()
// apply transformations // apply per-key adjustments
for (const r of rotations) {
point.rotate(r.angle, r.origin)
}
point.r += key.orient point.r += key.orient
point.shift(key.shift) point.shift(key.shift)
point.r += key.rotate point.r += key.rotate
@ -178,8 +181,9 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key,
col_minmax[col_name].min = Math.min(col_minmax[col_name].min, point.y) col_minmax[col_name].min = Math.min(col_minmax[col_name].min, point.y)
col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y) col_minmax[col_name].max = Math.max(col_minmax[col_name].max, point.y)
// advance the column anchor to the next position // advance the running anchor to the next position
col_anchor.y += key.padding running_anchor = point.clone()
running_anchor.shift([0, key.padding])
} }
first_col = false first_col = false

View file

@ -4,7 +4,7 @@ matrix:
r: 0 r: 0
meta: meta:
stagger: 0 stagger: 0
spread: 0 spread: 19
splay: 0 splay: 0
origin: origin:
- 0 - 0

View file

@ -4,7 +4,7 @@ matrix_col_row:
r: 0 r: 0
meta: meta:
stagger: 0 stagger: 0
spread: 0 spread: 19
splay: 0 splay: 0
origin: origin:
- 0 - 0

View file

@ -195,11 +195,11 @@ LINE
10 10
22.7371845 22.7371845
20 20
33.7307612 33.7307613
11 11
40.6686891 40.6686891
21 21
35.2995646 35.2995647
0 0
LINE LINE
8 8
@ -207,11 +207,11 @@ LINE
10 10
40.6686891 40.6686891
20 20
35.2995646 35.2995647
11 11
42.2374925 42.2374925
21 21
17.36806 17.3680601
0 0
LINE LINE
8 8
@ -219,11 +219,11 @@ LINE
10 10
42.2374925 42.2374925
20 20
17.36806 17.3680601
11 11
24.3059879 24.3059879
21 21
15.7992566 15.7992567
0 0
LINE LINE
8 8
@ -231,11 +231,11 @@ LINE
10 10
24.3059879 24.3059879
20 20
15.7992566 15.7992567
11 11
22.7371845 22.7371845
21 21
33.7307612 33.7307613
0 0
ENDSEC ENDSEC
0 0

View file

@ -5,7 +5,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,
@ -77,7 +77,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,
@ -234,7 +234,7 @@
}, },
"matrix_right_top": { "matrix_right_top": {
"x": 32.4873385, "x": 32.4873385,
"y": 25.5494106, "y": 25.549410700000003,
"r": 5, "r": 5,
"meta": { "meta": {
"stagger": 5, "stagger": 5,

View file

@ -5,7 +5,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,
@ -56,7 +56,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,

View file

@ -5,7 +5,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,
@ -48,7 +48,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,

View file

@ -5,7 +5,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,
@ -73,7 +73,7 @@
"r": 0, "r": 0,
"meta": { "meta": {
"stagger": 0, "stagger": 0,
"spread": 0, "spread": 19,
"splay": 0, "splay": 0,
"origin": [ "origin": [
0, 0,