From 754cddd328df6d90859b44c18e4f0c7a686d3a27 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Fri, 18 Jul 2025 17:33:07 +0200 Subject: [PATCH] refactored delay to use CeTZ style --- src/core/draw/delay.typ | 33 +++++++++++++++++++++++++-------- src/misc.typ | 4 ++-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/core/draw/delay.typ b/src/core/draw/delay.typ index 3b0a000..006a65a 100644 --- a/src/core/draw/delay.typ +++ b/src/core/draw/delay.typ @@ -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 }) diff --git a/src/misc.typ b/src/misc.typ index cdf75fe..4dce7d1 100644 --- a/src/misc.typ +++ b/src/misc.typ @@ -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() ),) }