diff options
author | 2023-12-11 10:48:07 +0100 | |
---|---|---|
committer | 2023-12-11 10:48:41 +0100 | |
commit | 04e8e529a0e80499b129395664f1806de8102d01 (patch) | |
tree | 2bf178b0df77d663ad56f5aa87c753a030bdd2af /wgpu/src/image | |
parent | 33f92b1be78e2f09290e36f0c9b77af899609bd8 (diff) | |
download | iced-04e8e529a0e80499b129395664f1806de8102d01.tar.gz iced-04e8e529a0e80499b129395664f1806de8102d01.tar.bz2 iced-04e8e529a0e80499b129395664f1806de8102d01.zip |
Convert SVG text nodes for in-memory SVGs in `iced_wgpu`
Diffstat (limited to 'wgpu/src/image')
-rw-r--r-- | wgpu/src/image/vector.rs | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/wgpu/src/image/vector.rs b/wgpu/src/image/vector.rs index f4819095..d9be50d7 100644 --- a/wgpu/src/image/vector.rs +++ b/wgpu/src/image/vector.rs @@ -50,27 +50,15 @@ impl Cache { return self.svgs.get(&handle.id()).unwrap(); } - let svg = match handle.data() { - svg::Data::Path(path) => { - let mut tree = - fs::read_to_string(path).ok().and_then(|contents| { - usvg::Tree::from_str( - &contents, - &usvg::Options::default(), - ) + let mut svg = match handle.data() { + svg::Data::Path(path) => fs::read_to_string(path) + .ok() + .and_then(|contents| { + usvg::Tree::from_str(&contents, &usvg::Options::default()) .ok() - }); - // If there are text nodes in the tree load fonts and convert the text to paths - if let Some(svg_tree) = &mut tree { - if svg_tree.has_text_nodes() { - let mut font_system = text::font_system() - .write() - .expect("Read font system"); - svg_tree.convert_text(font_system.raw().db_mut()); - } - } - tree.map(Svg::Loaded).unwrap_or(Svg::NotFound) - } + }) + .map(Svg::Loaded) + .unwrap_or(Svg::NotFound), svg::Data::Bytes(bytes) => { match usvg::Tree::from_data(bytes, &usvg::Options::default()) { Ok(tree) => Svg::Loaded(tree), @@ -79,6 +67,15 @@ impl Cache { } }; + if let Svg::Loaded(svg) = &mut svg { + if svg.has_text_nodes() { + let mut font_system = + text::font_system().write().expect("Write font system"); + + svg.convert_text(font_system.raw().db_mut()); + } + } + let _ = self.svgs.insert(handle.id(), svg); self.svgs.get(&handle.id()).unwrap() } |