refactored delay to use CeTZ style

This commit is contained in:
2025-07-18 17:33:07 +02:00
parent a5e8194d59
commit 754cddd328
2 changed files with 27 additions and 10 deletions

View File

@ -1,13 +1,30 @@
#import "/src/cetz.typ": draw
#import "/src/cetz.typ": draw, styles
#import "/src/core/utils.typ": get-ctx, set-ctx
#import "/src/core/utils.typ": get-ctx, normalize-units, set-ctx
#let delay-default-style = (
stroke: (
dash: "loosely-dotted",
paint: gray.darken(40%),
thickness: .8pt
),
size: 30pt
)
#let render(delay) = get-ctx(ctx => {
let style = styles.resolve(
ctx.style,
merge: delay.style,
root: "delay",
base: delay-default-style
)
let size = normalize-units(style.size)
let y0 = ctx.y
let y1 = ctx.y - delay.size
let y1 = ctx.y - size
for (i, line) in ctx.lifelines.enumerate() {
line.lines.push(("delay-start", y0))
line.lines.push(("delay-end", y1))
line.events.push((type: "delay-start", y: y0))
line.events.push((type: "delay-end", y: y1, stroke: style.stroke))
ctx.lifelines.at(i) = line
}
if delay.name != none {
@ -15,13 +32,13 @@
let x1 = ctx.x-pos.last()
draw.content(
((x0 + x1) / 2, (y0 + y1) / 2),
anchor: "center",
anchor: "mid",
delay.name
)
}
ctx.y = y1
set-ctx(c => {
c.y = ctx.y
c.y = y1
c.lifelines = ctx.lifelines
return c
})

View File

@ -13,12 +13,12 @@
),)
}
#let _delay(name: none, size: 30) = {
#let _delay(name: none, ..style) = {
return ((
type: "delay",
draw: delay.render,
name: name,
size: size
style: style.named()
),)
}