GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git
examples/test_svg_render.rs (1.6K)
1 fn main() {
2 let opt = resvg::usvg::Options::default();
3 let fontdb = cce_ui::widget::get_font_db();
4
5 // 1. Original 32x120
6 let svg_32_120 = r##"<svg width="32" height="120" xmlns="http://www.w3.org/2000/svg">
7 <text x="16" y="60" font-family="Berkeley Mono" font-size="12" fill="#E6E6F2" text-anchor="middle" dominant-baseline="middle" transform="rotate(-90 16 60)">Audio</text>
8 </svg>"##;
9 let tree1 = resvg::usvg::Tree::from_data(svg_32_120.as_bytes(), &opt, fontdb).unwrap();
10 let mut pixmap1 = resvg::tiny_skia::Pixmap::new(32, 120).unwrap();
11 resvg::render(&tree1, resvg::tiny_skia::Transform::default(), &mut pixmap1.as_mut());
12 pixmap1.save_png("/home/lsgalante/Dropbox/Clear/scratch/test_32_120.png").unwrap();
13
14 // 2. Square 120x120
15 let svg_120_120 = r##"<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg">
16 <text x="60" y="60" font-family="Berkeley Mono" font-size="12" fill="#E6E6F2" text-anchor="middle" dominant-baseline="middle" transform="rotate(-90 60 60)">Audio</text>
17 </svg>"##;
18 let tree2 = resvg::usvg::Tree::from_data(svg_120_120.as_bytes(), &opt, fontdb).unwrap();
19 let mut pixmap2 = resvg::tiny_skia::Pixmap::new(120, 120).unwrap();
20 resvg::render(&tree2, resvg::tiny_skia::Transform::default(), &mut pixmap2.as_mut());
21 pixmap2.save_png("/home/lsgalante/Dropbox/Clear/scratch/test_120_120.png").unwrap();
22
23 // Count non-transparent pixels
24 let mut count = 0;
25 for &alpha in pixmap1.data().iter().skip(3).step_by(4) {
26 if alpha > 0 {
27 count += 1;
28 }
29 }
30 println!("test_32_120.png has {} non-transparent pixels.", count);
31 }
32