summaryrefslogtreecommitdiffstats
path: root/wgpu/src/image
diff options
context:
space:
mode:
authorLibravatar Alec Deason <alec@tinycountry.com>2023-06-10 13:18:42 -0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-07-12 08:59:07 +0200
commitaf386fd0a3de432337ee9cdaa4d3661e98bd4105 (patch)
treebffedaee67922de5f4825ad640643de5883acb19 /wgpu/src/image
parent9f2be29a286d435b3d1daa8025a74063c50713cb (diff)
downloadiced-af386fd0a3de432337ee9cdaa4d3661e98bd4105.tar.gz
iced-af386fd0a3de432337ee9cdaa4d3661e98bd4105.tar.bz2
iced-af386fd0a3de432337ee9cdaa4d3661e98bd4105.zip
Upgrade resvg to 0.34 and tiny_skia to 0.10
Diffstat (limited to 'wgpu/src/image')
-rw-r--r--wgpu/src/image/vector.rs31
1 files changed, 21 insertions, 10 deletions
diff --git a/wgpu/src/image/vector.rs b/wgpu/src/image/vector.rs
index 6b9be651..5bfc1836 100644
--- a/wgpu/src/image/vector.rs
+++ b/wgpu/src/image/vector.rs
@@ -114,16 +114,27 @@ impl Cache {
// It would be cool to be able to smooth resize the `svg` example.
let mut img = tiny_skia::Pixmap::new(width, height)?;
- resvg::render(
- tree,
- if width > height {
- resvg::FitTo::Width(width)
- } else {
- resvg::FitTo::Height(height)
- },
- tiny_skia::Transform::default(),
- img.as_mut(),
- )?;
+ let tree_size = tree.size.to_int_size();
+ let target_size;
+ if width > height {
+ target_size = tree_size.scale_to_width(width);
+ } else {
+ target_size = tree_size.scale_to_height(height);
+ }
+ let transform;
+ if let Some(target_size) = target_size {
+ let tree_size = tree_size.to_size();
+ let target_size = target_size.to_size();
+ transform = tiny_skia::Transform::from_scale(
+ target_size.width() / tree_size.width(),
+ target_size.height() / tree_size.height(),
+ );
+ } else {
+ transform = tiny_skia::Transform::default();
+ }
+
+ resvg::Tree::from_usvg(tree)
+ .render(transform, &mut img.as_mut());
let mut rgba = img.take();