refactored delay to use CeTZ style
This commit is contained in:
@ -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
|
||||
})
|
||||
|
@ -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()
|
||||
),)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user