Skip to main content

svg_renderer/
lib.rs

1//! `svg-renderer` — a high-performance SVG-to-raster renderer powered by [Skia](https://skia.org).
2//!
3//! # Backends
4//!
5//! | Backend  | Feature          | Description                                  |
6//! |----------|------------------|----------------------------------------------|
7//! | CPU      | (always)         | Renders via Skia's raster backend.           |
8//! | Vulkan   | `vulkan-backend` | GPU-accelerated via Skia's Vulkan backend.   |
9//!
10//! # Pipeline mode
11//!
12//! [`SvgPipelineRenderer`] spawns dedicated worker threads for parallel
13//! rendering, suitable for throughput-oriented workloads.
14//!
15//! # Quick start
16//!
17//! ```no_run
18//! use svg_renderer::{SvgRenderer, RenderOptions};
19//!
20//! let svg_data = b"<svg xmlns='http://www.w3.org/2000/svg'></svg>";
21//! let opts = RenderOptions::new(800, 600).unwrap();
22//! let mut renderer = SvgRenderer::new().unwrap();
23//! let image = renderer.render_svg(svg_data, &opts).unwrap();
24//! println!("{}x{} RGBA image", image.width, image.height);
25//! ```
26
27mod error;
28mod image;
29mod options;
30mod pipeline;
31mod renderer;
32mod resource;
33#[cfg(feature = "vulkan-backend")]
34mod vulkan;
35
36pub(crate) use resource::CachedResourceProvider;
37#[cfg(feature = "vulkan-backend")]
38pub(crate) use vulkan::VulkanState;
39
40pub use error::SvgRenderError;
41pub use image::ImageData;
42
43/// JPEG alpha handling behavior.
44pub use options::JpegAlphaOption;
45/// JPEG chroma subsampling mode.
46pub use options::JpegDownsample;
47/// JPEG encoding options.
48pub use options::JpegOptions;
49/// Render options: size, clear color, MSAA sample count.
50pub use options::RenderOptions;
51/// Render size configuration.
52pub use options::RenderSize;
53/// WebP compression mode (lossy / lossless).
54pub use options::WebpCompression;
55/// WebP encoding options.
56pub use options::WebpOptions;
57
58#[cfg(feature = "vulkan-backend")]
59pub use pipeline::VulkanSvgPipelineRenderer;
60pub use pipeline::{CpuSvgPipelineRenderer, SvgPipelineRenderer};
61#[cfg(feature = "vulkan-backend")]
62pub use renderer::VulkanSvgRenderer;
63pub use renderer::{
64    CpuSvgRenderer, RenderBackend, SvgRenderer, render_svg, render_svg_to_jpeg, render_svg_to_png,
65    render_svg_to_webp,
66};