added auto fit wrapper function
This commit is contained in:
parent
b5c34c154f
commit
b9bbe6f93d
@ -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) = {
|
||||||
|
@ -40,4 +40,24 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
)
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user