forked from HEL/chronos
		
	added auto fit wrapper function
This commit is contained in:
		| @@ -1,4 +1,4 @@ | |||||||
| #import "utils.typ": get-group-span | #import "utils.typ": get-group-span, fit-canvas | ||||||
| #import "renderer.typ": render | #import "renderer.typ": render | ||||||
| #import "participant.typ" as participant: _par, PAR-SPECIALS | #import "participant.typ" as participant: _par, PAR-SPECIALS | ||||||
|  |  | ||||||
| @@ -18,7 +18,7 @@ | |||||||
|   ),) |   ),) | ||||||
| } | } | ||||||
|  |  | ||||||
| #let diagram(elements) = { | #let diagram(elements, width: auto) = { | ||||||
|   if elements == none { |   if elements == none { | ||||||
|     return |     return | ||||||
|   } |   } | ||||||
| @@ -188,7 +188,8 @@ | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   set text(font: "Source Sans 3") |   set text(font: "Source Sans 3") | ||||||
|   render(participants, elmts) |   let canvas = render(participants, elmts) | ||||||
|  |   fit-canvas(canvas, width: width) | ||||||
| } | } | ||||||
|  |  | ||||||
| #let from-plantuml(code) = { | #let from-plantuml(code) = { | ||||||
|   | |||||||
| @@ -41,3 +41,23 @@ | |||||||
|  |  | ||||||
|   panic("Invalid type for parameter mods, expected auto or dictionary, got " + str(type(mods))) |   panic("Invalid type for parameter mods, expected auto or dictionary, got " + str(type(mods))) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #let fit-canvas(canvas, width: auto) = layout(size => { | ||||||
|  |   let m = measure(canvas) | ||||||
|  |   let w = m.width | ||||||
|  |   let h = m.height | ||||||
|  |   let r = if w == 0pt {0} else { | ||||||
|  |     if width == auto {1} else { | ||||||
|  |       size.width * width / w | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   let new-w = w * r | ||||||
|  |   let new-h = h * r | ||||||
|  |   r *= 100% | ||||||
|  |    | ||||||
|  |   box( | ||||||
|  |     width: new-w, | ||||||
|  |     height: new-h, | ||||||
|  |     scale(x: r, y: r, reflow: true, canvas) | ||||||
|  |   ) | ||||||
|  | }) | ||||||
		Reference in New Issue
	
	Block a user