summaryrefslogtreecommitdiff
path: root/crates/typst-render/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2024-04-13 10:39:45 +0200
committerGitHub <noreply@github.com>2024-04-13 08:39:45 +0000
commit020294fca9a7065d4b9cf4e677f606ebaaa29b00 (patch)
treec0027ad22046e2726c22298461327823d6b88d53 /crates/typst-render/src
parent72dd79210602ecc799726fc096b078afbb47f299 (diff)
Better test runner (#3922)
Diffstat (limited to 'crates/typst-render/src')
-rw-r--r--crates/typst-render/src/lib.rs23
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