added separators
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							| @@ -42,4 +42,15 @@ Alice <-- Bob: Another authentication Response | ||||
|     }) | ||||
|     _seq("Alice", "Bob", comment: "Log attack end") | ||||
|   }) | ||||
| }) | ||||
|  | ||||
| #chronos.diagram({ | ||||
|   import "/src/diagram.typ": * | ||||
|   _sep("Initialization") | ||||
|   _seq("Alice", "Bob", comment: "Authentication Request") | ||||
|   _seq("Bob", "Alice", comment: "Authentication Response", dashed: true) | ||||
|    | ||||
|   _sep("Repetition") | ||||
|   _seq("Alice", "Bob", comment: "Another authentication Request") | ||||
|   _seq("Bob", "Alice", comment: "another authentication Response", dashed: true) | ||||
| }) | ||||
| @@ -48,11 +48,17 @@ | ||||
|   ),) | ||||
| } | ||||
|  | ||||
| #let _sep(name) = { | ||||
|   return (( | ||||
|     type: "sep", | ||||
|     name: name | ||||
|   ),) | ||||
| } | ||||
|  | ||||
| #let diagram(elements) = { | ||||
|   let participants = () | ||||
|   let elmts = elements | ||||
|   let i = 0 | ||||
|   let a = elmts.len() | ||||
|   while i < elmts.len() { | ||||
|     let elmt = elmts.at(i) | ||||
|     if elmt.type == "grp" { | ||||
| @@ -67,9 +73,6 @@ | ||||
|     } | ||||
|     i += 1 | ||||
|   } | ||||
|   let b = elmts.len() | ||||
|   [#a / #b] | ||||
|   [#elmts.map(e => e.type)] | ||||
|  | ||||
|   for elmt in elmts { | ||||
|     if elmt.type == "par" { | ||||
|   | ||||
| @@ -169,6 +169,37 @@ | ||||
|       draw-group(x0, x1, start-y, y, group) | ||||
|  | ||||
|       y -= Y-SPACE | ||||
|  | ||||
|     } else if elmt.type == "sep" { | ||||
|       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 | ||||
|       draw.line((x0, y), (xl, y)) | ||||
|       draw.line((xr, y), (x1, y)) | ||||
|       y -= 3 | ||||
|       draw.line((x0, y), (xl, y)) | ||||
|       draw.line((xr, y), (x1, y)) | ||||
|       draw.content( | ||||
|         ((x0 + x1) / 2, y + 1.5), | ||||
|         elmt.name, | ||||
|         anchor: "center", | ||||
|         padding: (5pt, 3pt), | ||||
|         frame: "rect" | ||||
|       ) | ||||
|       y -= h / 2 | ||||
|       y -= Y-SPACE | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user