From babae191a41432c68898df93c7bbd8866abb106a Mon Sep 17 00:00:00 2001 From: Xevion Date: Thu, 10 Jul 2025 11:53:43 -0500 Subject: [PATCH] feat: calculate size of rasterized png using content area --- src/raster.rs | 11 +++++++++-- src/templates/basic.svg | 10 +++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/raster.rs b/src/raster.rs index f4724fe..1754440 100644 --- a/src/raster.rs +++ b/src/raster.rs @@ -1,3 +1,5 @@ +use std::default; + use resvg::usvg::{fontdb, TreeParsing, TreeTextToPath}; use resvg::{tiny_skia, usvg}; @@ -45,8 +47,13 @@ impl Rasterizer { resvg::Tree::from_usvg(&tree) }; - let pixmap_size = tree.size.to_int_size(); - let mut pixmap = tiny_skia::Pixmap::new(pixmap_size.width(), pixmap_size.height()).unwrap(); + let content_area = tree.content_area.unwrap(); + + let mut pixmap = tiny_skia::Pixmap::new( + (content_area.width() + content_area.left() * 2f32).ceil() as u32, + (content_area.height() + content_area.top() * 2f32).ceil() as u32, + ) + .unwrap(); tree.render(tiny_skia::Transform::default(), &mut pixmap.as_mut()); pixmap.encode_png().map_err(|_| RenderError { diff --git a/src/templates/basic.svg b/src/templates/basic.svg index 3fd0a9b..473b7da 100644 --- a/src/templates/basic.svg +++ b/src/templates/basic.svg @@ -1,6 +1,6 @@ - - {{ text }} - + + + {{ text }} + \ No newline at end of file