63 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
| #import "/src/cetz.typ": draw
 | |
| #import "consts.typ": *
 | |
| 
 | |
| #let _sep(name) = {
 | |
|   return ((
 | |
|     type: "sep",
 | |
|     name: name
 | |
|   ),)
 | |
| }
 | |
| 
 | |
| #let _delay(name: none, size: 30) = {
 | |
|   return ((
 | |
|     type: "delay",
 | |
|     name: name,
 | |
|     size: size
 | |
|   ),)
 | |
| }
 | |
| 
 | |
| #let render(x-pos, elmt, y) = {
 | |
|   let shapes = ()
 | |
|   y -= Y-SPACE
 | |
| 
 | |
|   let x0 = x-pos.first() - 20
 | |
|   let x1 = x-pos.last() + 20
 | |
|   let m = measure(
 | |
|     box(
 | |
|       elmt.name,
 | |
|       inset: (left: 3pt, right: 3pt, top: 5pt, bottom: 5pt)
 | |
|     )
 | |
|   )
 | |
|   let w = m.width / 1pt
 | |
|   let h = m.height / 1pt
 | |
|   let cx = (x0 + x1) / 2
 | |
|   let xl = cx - w / 2
 | |
|   let xr = cx + w / 2
 | |
| 
 | |
|   y -= h / 2
 | |
|   shapes += draw.rect(
 | |
|     (x0, y),
 | |
|     (x1, y - 3),
 | |
|     stroke: none,
 | |
|     fill: white
 | |
|   )
 | |
|   shapes += draw.line((x0, y), (x1, y))
 | |
|   //shapes += draw.line((x0, y), (xl, y))
 | |
|   //shapes += draw.line((xr, y), (x1, y))
 | |
|   y -= 3
 | |
|   shapes += draw.line((x0, y), (x1, y))
 | |
|   //shapes += draw.line((x0, y), (xl, y))
 | |
|   //shapes += draw.line((xr, y), (x1, y))
 | |
|   shapes += draw.content(
 | |
|     ((x0 + x1) / 2, y + 1.5),
 | |
|     elmt.name,
 | |
|     anchor: "center",
 | |
|     padding: (5pt, 3pt),
 | |
|     frame: "rect",
 | |
|     fill: COL-SEP-NAME
 | |
|   )
 | |
|   y -= h / 2
 | |
| 
 | |
|   let r = (y, shapes)
 | |
|   return r
 | |
| } |