diff options
| author | Laurenz <laurmaedje@gmail.com> | 2024-04-13 10:39:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-13 08:39:45 +0000 |
| commit | 020294fca9a7065d4b9cf4e677f606ebaaa29b00 (patch) | |
| tree | c0027ad22046e2726c22298461327823d6b88d53 /crates/typst-render/src/lib.rs | |
| parent | 72dd79210602ecc799726fc096b078afbb47f299 (diff) | |
Better test runner (#3922)
Diffstat (limited to 'crates/typst-render/src/lib.rs')
| -rw-r--r-- | crates/typst-render/src/lib.rs | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/crates/typst-render/src/lib.rs b/crates/typst-render/src/lib.rs index fdacb597..28302180 100644 --- a/crates/typst-render/src/lib.rs +++ b/crates/typst-render/src/lib.rs @@ -42,13 +42,13 @@ pub fn render(frame: &Frame, pixel_per_pt: f32, fill: Color) -> sk::Pixmap { /// Export a document with potentially multiple pages into a single raster image. /// -/// The padding will be added around and between the individual frames. +/// The gap will be added between the individual frames. pub fn render_merged( document: &Document, pixel_per_pt: f32, frame_fill: Color, - padding: Abs, - padding_fill: Color, + gap: Abs, + gap_fill: Color, ) -> sk::Pixmap { let pixmaps: Vec<_> = document .pages @@ -56,19 +56,18 @@ pub fn render_merged( .map(|page| render(&page.frame, pixel_per_pt, frame_fill)) .collect(); - let padding = (pixel_per_pt * padding.to_f32()).round() as u32; - let pxw = - 2 * padding + pixmaps.iter().map(sk::Pixmap::width).max().unwrap_or_default(); - let pxh = - padding + pixmaps.iter().map(|pixmap| pixmap.height() + padding).sum::<u32>(); + let gap = (pixel_per_pt * gap.to_f32()).round() as u32; + let pxw = pixmaps.iter().map(sk::Pixmap::width).max().unwrap_or_default(); + let pxh = pixmaps.iter().map(|pixmap| pixmap.height()).sum::<u32>() + + gap * pixmaps.len().saturating_sub(1) as u32; let mut canvas = sk::Pixmap::new(pxw, pxh).unwrap(); - canvas.fill(to_sk_color(padding_fill)); + canvas.fill(to_sk_color(gap_fill)); - let [x, mut y] = [padding; 2]; + let mut y = 0; for pixmap in pixmaps { canvas.draw_pixmap( - x as i32, + 0, y as i32, pixmap.as_ref(), &sk::PixmapPaint::default(), @@ -76,7 +75,7 @@ pub fn render_merged( None, ); - y += pixmap.height() + padding; + y += pixmap.height() + gap; } canvas |
