summaryrefslogtreecommitdiff
path: root/tests/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-08-08 12:59:21 +0200
committerLaurenz <laurmaedje@gmail.com>2023-08-08 13:00:47 +0200
commit2ea451b83b919e5ed59ad203bb22efa844660bd1 (patch)
tree96b718c4e313c4a2ef12368cef5164df64c118cd /tests/src
parent61e4ad6bbafaa97b965a206ad06af65a0805be7e (diff)
Refactor SVG export a bit
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/tests.rs53
1 files changed, 22 insertions, 31 deletions
diff --git a/tests/src/tests.rs b/tests/src/tests.rs
index b5f80663..16292ef2 100644
--- a/tests/src/tests.rs
+++ b/tests/src/tests.rs
@@ -429,7 +429,7 @@ fn test(
fs::create_dir_all(png_path.parent().unwrap()).unwrap();
canvas.save_png(png_path).unwrap();
- let svg = typst::export::svg(&document);
+ let svg = typst::export::svg_merged(&document.pages, Abs::pt(5.0));
fs::create_dir_all(svg_path.parent().unwrap()).unwrap();
std::fs::write(svg_path, svg).unwrap();
@@ -898,42 +898,33 @@ fn test_spans_impl(output: &mut String, node: &SyntaxNode, within: Range<u64>) -
/// Draw all frames into one image with padding in between.
fn render(frames: &[Frame]) -> sk::Pixmap {
let pixel_per_pt = 2.0;
- let pixmaps: Vec<_> = frames
- .iter()
- .map(|frame| {
- let limit = Abs::cm(100.0);
- if frame.width() > limit || frame.height() > limit {
- panic!("overlarge frame: {:?}", frame.size());
- }
- typst::export::render(frame, pixel_per_pt, Color::WHITE)
- })
- .collect();
+ let padding = Abs::pt(5.0);
- let pad = (5.0 * pixel_per_pt).round() as u32;
- let pxw = 2 * pad + pixmaps.iter().map(sk::Pixmap::width).max().unwrap_or_default();
- let pxh = pad + pixmaps.iter().map(|pixmap| pixmap.height() + pad).sum::<u32>();
+ for frame in frames {
+ let limit = Abs::cm(100.0);
+ if frame.width() > limit || frame.height() > limit {
+ panic!("overlarge frame: {:?}", frame.size());
+ }
+ }
- let mut canvas = sk::Pixmap::new(pxw, pxh).unwrap();
- canvas.fill(sk::Color::BLACK);
+ let mut pixmap = typst::export::render_merged(
+ frames,
+ pixel_per_pt,
+ Color::WHITE,
+ padding,
+ Color::BLACK,
+ );
- let [x, mut y] = [pad; 2];
- for (frame, mut pixmap) in frames.iter().zip(pixmaps) {
- let ts = sk::Transform::from_scale(pixel_per_pt, pixel_per_pt);
+ let padding = (pixel_per_pt * padding.to_pt() as f32).round();
+ let [x, mut y] = [padding; 2];
+ for frame in frames {
+ let ts =
+ sk::Transform::from_scale(pixel_per_pt, pixel_per_pt).post_translate(x, y);
render_links(&mut pixmap, ts, frame);
-
- canvas.draw_pixmap(
- x as i32,
- y as i32,
- pixmap.as_ref(),
- &sk::PixmapPaint::default(),
- sk::Transform::identity(),
- None,
- );
-
- y += pixmap.height() + pad;
+ y += (pixel_per_pt * frame.height().to_pt() as f32).round().max(1.0) + padding;
}
- canvas
+ pixmap
}
/// Draw extra boxes for links so we can see whether they are there.