From 540d87637129bbdfb218167c005a766d7e9f308c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20=C5=A0?= Date: Wed, 1 May 2024 15:58:09 +0200 Subject: [PATCH] Fix resvg changes on macOS --- .../src/integrations/implementation/macos.rs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/native/src/integrations/implementation/macos.rs b/native/src/integrations/implementation/macos.rs index 16a1cad..980fe6e 100644 --- a/native/src/integrations/implementation/macos.rs +++ b/native/src/integrations/implementation/macos.rs @@ -13,7 +13,7 @@ use image::imageops::FilterType::Gaussian; use image::{DynamicImage, Rgba, RgbaImage}; use log::{debug, error, warn}; use reqwest::blocking::Client; -use resvg::usvg::{fontdb, TreeParsing, TreeTextToPath}; +use resvg::usvg::fontdb; use resvg::{tiny_skia, usvg}; use url::Url; use web_app_manifest::resources::IconResource; @@ -256,20 +256,23 @@ fn load_icon(content: &[u8], content_type: &str, size: u32) -> Result let mut pixmap = tiny_skia::Pixmap::new(size, size).context("Invalid target size")?; - let opt = usvg::Options::default(); - let mut utree = usvg::Tree::from_data(content, &opt).context("Failed to parse SVG icon")?; - let mut fontdb = fontdb::Database::new(); fontdb.load_system_fonts(); - utree.convert_text(&fontdb); + + let mut opt = usvg::Options::default(); + + let resolver = Box::new(move |_: &str, _: &usvg::Options, _: &fontdb::Database| None); + opt.image_href_resolver.resolve_string = resolver; + + let tree = + usvg::Tree::from_data(content, &opt, &fontdb).context("Failed to parse SVG icon")?; let transform = tiny_skia::Transform::from_scale( - size as f32 / utree.size.width(), - size as f32 / utree.size.height(), + size as f32 / tree.size().width(), + size as f32 / tree.size().height(), ); - let rtree = resvg::Tree::from_usvg(&utree); - rtree.render(transform, &mut pixmap.as_mut()); + resvg::render(&tree, transform, &mut pixmap.as_mut()); return RgbaImage::from_raw(size, size, pixmap.take()).context("Failed to load SVG icon"); }