ailloli_ui_render_wgpu/icons/svg.rs
1//! Custom SVG rasterization (usvg + resvg + tiny-skia).
2
3use ailloli_ui_core::SvgSource;
4
5/// Rasterizes an SVG source into a square RGBA buffer.
6///
7/// The effective side length is at least eight pixels. Returns `None` for
8/// malformed SVG, an unusable document size, or rasterization failure.
9///
10/// # Examples
11///
12/// ```
13/// use ailloli_ui_core::SvgSource;
14/// use ailloli_ui_render_wgpu::rasterize_svg;
15/// let source = SvgSource::Static(
16/// br#"<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>"#);
17/// let rgba = rasterize_svg(&source, 8).expect("valid SVG");
18/// assert_eq!(rgba.len(), 8 * 8 * 4);
19/// ```
20pub fn rasterize_svg(src: &SvgSource, px_size: u32) -> Option<Vec<u8>> {
21 ailloli_ui_icon::rasterize_svg_source(src, px_size.max(8))
22}