summaryrefslogtreecommitdiffstats
path: root/wgpu/src/image
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-11 10:48:07 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-12-11 10:48:41 +0100
commit04e8e529a0e80499b129395664f1806de8102d01 (patch)
tree2bf178b0df77d663ad56f5aa87c753a030bdd2af /wgpu/src/image
parent33f92b1be78e2f09290e36f0c9b77af899609bd8 (diff)
downloadiced-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.rs37
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()
}