Compare commits

2 Commits

Author SHA1 Message Date
96fa33b055 adapted gaps 2025-07-28 21:36:31 +02:00
c6e01b6b3b refactored event styling 2025-07-28 21:36:00 +02:00
4 changed files with 32 additions and 12 deletions

View File

@@ -24,7 +24,7 @@
let y1 = ctx.y - size let y1 = ctx.y - size
for (i, line) in ctx.lifelines.enumerate() { for (i, line) in ctx.lifelines.enumerate() {
line.events.push((type: "delay-start", y: y0)) line.events.push((type: "delay-start", y: y0))
line.events.push((type: "delay-end", y: y1, stroke: style.stroke)) line.events.push((type: "delay-end", y: y1, style: style))
ctx.lifelines.at(i) = line ctx.lifelines.at(i) = line
} }
if delay.name != none { if delay.name != none {

View File

@@ -1,18 +1,26 @@
#import "/src/cetz.typ": styles
#import "/src/consts.typ": * #import "/src/consts.typ": *
#import "/src/core/utils.typ": get-ctx, set-ctx #import "/src/core/utils.typ": get-ctx, set-ctx
#let render(evt) = get-ctx(ctx => { #let render(evt) = get-ctx(ctx => {
let style = styles.resolve(
ctx.style,
merge: evt.style,
root: "event",
base: ()
)
let par-name = evt.participant let par-name = evt.participant
let i = ctx.pars-i.at(par-name) let i = ctx.pars-i.at(par-name)
let par = ctx.participants.at(i) let par = ctx.participants.at(i)
let line = ctx.lifelines.at(i) let line = ctx.lifelines.at(i)
let entry = (type: evt.event, y: ctx.y) let entry = (type: evt.event, y: ctx.y, style: style)
if evt.event == "disable" { if evt.event == "disable" {
line.level -= 1 line.level -= 1
} else if evt.event == "enable" { } else if evt.event == "enable" {
line.level += 1 line.level += 1
entry.insert("style", evt.lifeline-style)
} else if evt.event == "create" { } else if evt.event == "create" {
ctx.y -= CREATE-OFFSET ctx.y -= CREATE-OFFSET
entry.y = ctx.y entry.y = ctx.y

View File

@@ -156,7 +156,7 @@
draw.line( draw.line(
(x, last-y), (x, last-y),
(x, event.y), (x, event.y),
stroke: event.stroke stroke: event.style.stroke
) )
last-y = event.y last-y = event.y
} }

View File

@@ -1,8 +1,10 @@
#import "cetz.typ": styles
#import "core/draw/delay.typ" #import "core/draw/delay.typ"
#import "core/draw/event.typ": render as evt-render #import "core/draw/event.typ": render as evt-render
#import "core/draw/separator.typ" #import "core/draw/separator.typ"
#import "core/draw/sync.typ" #import "core/draw/sync.typ"
#import "core/utils.typ": set-ctx #import "core/utils.typ": get-ctx, normalize-units, set-y
#let _sep(name, ..style) = { #let _sep(name, ..style) = {
return (( return ((
@@ -30,26 +32,36 @@
),) ),)
} }
#let gap-render(gap) = set-ctx(ctx => { #let gap-default-style = (
ctx.y -= gap.size size: 20pt
return ctx )
#let gap-render(gap) = get-ctx(ctx => {
let style = styles.resolve(
ctx.style,
merge: gap.style,
root: "gap",
base: gap-default-style
)
let size = normalize-units(style.size)
set-y(ctx.y - size)
}) })
#let _gap(size: 20) = { #let _gap(..style) = {
return (( return ((
type: "gap", type: "gap",
draw: gap-render, draw: gap-render,
size: size style: style.named()
),) ),)
} }
#let _evt(participant, event) = { #let _evt(participant, event, ..style) = {
return (( return ((
type: "evt", type: "evt",
draw: evt-render, draw: evt-render,
participant: participant, participant: participant,
event: event, event: event,
lifeline-style: auto style: style.named()
),) ),)
} }