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 | ||||
|   }) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user