improved column layout
This commit is contained in:
parent
974eb92159
commit
c7fba373a5
Binary file not shown.
@ -23,3 +23,9 @@ Alice <-- Bob: Another authentication Response
|
|||||||
_seq("Bob", "Alice", comment: "bonjour", color: red)
|
_seq("Bob", "Alice", comment: "bonjour", color: red)
|
||||||
_seq("Alice", "Bob", comment: "ok", color: blue)
|
_seq("Alice", "Bob", comment: "ok", color: blue)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
#chronos.diagram({
|
||||||
|
import "/src/diagram.typ": *
|
||||||
|
_seq("Alice", "Bob", comment: "This is a test")
|
||||||
|
_seq("Alice", "Callum", comment: "This is another test with a long text")
|
||||||
|
})
|
@ -1,7 +1,8 @@
|
|||||||
#import "@preview/cetz:0.2.2": canvas, draw
|
#import "@preview/cetz:0.2.2": canvas, draw
|
||||||
|
|
||||||
#let X-SPACE = 2
|
|
||||||
#let Y-SPACE = 20
|
#let Y-SPACE = 20
|
||||||
|
#let PAR-PAD = (5pt, 3pt)
|
||||||
|
#let PAR-SPACE = 10
|
||||||
|
|
||||||
#let get-participants-i(participants) = {
|
#let get-participants-i(participants) = {
|
||||||
let pars-i = (:)
|
let pars-i = (:)
|
||||||
@ -30,7 +31,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let widths = participants.slice(0, -1).map(_ => 0)
|
let widths = ()
|
||||||
|
for i in range(participants.len() - 1) {
|
||||||
|
let p1 = participants.at(i)
|
||||||
|
let p2 = participants.at(i + 1)
|
||||||
|
let w1 = measure(box(p1.display-name)).width + PAR-PAD.last() * 2
|
||||||
|
let w2 = measure(box(p2.display-name)).width + PAR-PAD.last() * 2
|
||||||
|
widths.push(w1 / 2pt + w2 / 2pt + PAR-SPACE)
|
||||||
|
}
|
||||||
|
|
||||||
for cell in cells.filter(c => c.i2 - c.i1 == 1) {
|
for cell in cells.filter(c => c.i2 - c.i1 == 1) {
|
||||||
let m = measure(cell.cell)
|
let m = measure(cell.cell)
|
||||||
widths.at(cell.i1) = calc.max(
|
widths.at(cell.i1) = calc.max(
|
||||||
@ -38,6 +47,18 @@
|
|||||||
m.width / 1pt
|
m.width / 1pt
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let multicol-cells = cells.filter(c => c.i2 - c.i1 > 1)
|
||||||
|
multicol-cells = multicol-cells.sorted(key: c => {
|
||||||
|
c.i1 * 1000 + c.i2
|
||||||
|
})
|
||||||
|
for cell in multicol-cells {
|
||||||
|
let m = measure(cell.cell)
|
||||||
|
widths.at(cell.i2 - 1) = calc.max(
|
||||||
|
widths.at(cell.i2 - 1),
|
||||||
|
m.width / 1pt - widths.slice(0, cell.i2 - 1).sum()
|
||||||
|
)
|
||||||
|
}
|
||||||
return widths
|
return widths
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +79,7 @@
|
|||||||
p.display-name,
|
p.display-name,
|
||||||
name: p.name,
|
name: p.name,
|
||||||
frame: "rect",
|
frame: "rect",
|
||||||
padding: (5pt, 3pt),
|
padding: PAR-PAD,
|
||||||
anchor: "south"
|
anchor: "south"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -108,7 +129,7 @@
|
|||||||
p.display-name,
|
p.display-name,
|
||||||
name: p.name,
|
name: p.name,
|
||||||
frame: "rect",
|
frame: "rect",
|
||||||
padding: (5pt, 3pt),
|
padding: PAR-PAD,
|
||||||
anchor: "north"
|
anchor: "north"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user