git.lucas.co / cce-ui
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