added separators
This commit is contained in:
parent
dc5d868a5d
commit
b8d0c3468c
Binary file not shown.
@ -42,4 +42,15 @@ Alice <-- Bob: Another authentication Response
|
||||
})
|
||||
_seq("Alice", "Bob", comment: "Log attack end")
|
||||
})
|
||||
})
|
||||
|
||||
#chronos.diagram({
|
||||
import "/src/diagram.typ": *
|
||||
_sep("Initialization")
|
||||
_seq("Alice", "Bob", comment: "Authentication Request")
|
||||
_seq("Bob", "Alice", comment: "Authentication Response", dashed: true)
|
||||
|
||||
_sep("Repetition")
|
||||
_seq("Alice", "Bob", comment: "Another authentication Request")
|
||||
_seq("Bob", "Alice", comment: "another authentication Response", dashed: true)
|
||||
})
|
@ -48,11 +48,17 @@
|
||||
),)
|
||||
}
|
||||
|
||||
#let _sep(name) = {
|
||||
return ((
|
||||
type: "sep",
|
||||
name: name
|
||||
),)
|
||||
}
|
||||
|
||||
#let diagram(elements) = {
|
||||
let participants = ()
|
||||
let elmts = elements
|
||||
let i = 0
|
||||
let a = elmts.len()
|
||||
while i < elmts.len() {
|
||||
let elmt = elmts.at(i)
|
||||
if elmt.type == "grp" {
|
||||
@ -67,9 +73,6 @@
|
||||
}
|
||||
i += 1
|
||||
}
|
||||
let b = elmts.len()
|
||||
[#a / #b]
|
||||
[#elmts.map(e => e.type)]
|
||||
|
||||
for elmt in elmts {
|
||||
if elmt.type == "par" {
|
||||
|
@ -169,6 +169,37 @@
|
||||
draw-group(x0, x1, start-y, y, group)
|
||||
|
||||
y -= Y-SPACE
|
||||
|
||||
} else if elmt.type == "sep" {
|
||||
let x0 = x-pos.first() - 20
|
||||
let x1 = x-pos.last() + 20
|
||||
let m = measure(
|
||||
box(
|
||||
elmt.name,
|
||||
inset: (left: 3pt, right: 3pt, top: 5pt, bottom: 5pt)
|
||||
)
|
||||
)
|
||||
let w = m.width / 1pt
|
||||
let h = m.height / 1pt
|
||||
let cx = (x0 + x1) / 2
|
||||
let xl = cx - w / 2
|
||||
let xr = cx + w / 2
|
||||
|
||||
y -= h / 2
|
||||
draw.line((x0, y), (xl, y))
|
||||
draw.line((xr, y), (x1, y))
|
||||
y -= 3
|
||||
draw.line((x0, y), (xl, y))
|
||||
draw.line((xr, y), (x1, y))
|
||||
draw.content(
|
||||
((x0 + x1) / 2, y + 1.5),
|
||||
elmt.name,
|
||||
anchor: "center",
|
||||
padding: (5pt, 3pt),
|
||||
frame: "rect"
|
||||
)
|
||||
y -= h / 2
|
||||
y -= Y-SPACE
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user