A declarative graphics rendering library that lets you describe scenes using a Rust-native DSL and render them to SVG or PNG.
At a high level, the flow looks like this:
- Build a scene using the
decal!macro and primitives likeRow,Column,Text,Image, etc. - Initialize an
Enginewith fonts and options. - Render the scene to SVG (
vectorize) or rasterize it to a bitmap (rasterize).
use decal::prelude::*;
use std::fs;
fn main() {
let mut engine = Engine::new(EngineOptions::default());
let mut scene = decal! {
Block {}
.size(256)
.background(rgb(0xffffff))
};
let (svg, _size) = engine
.vectorize(&mut scene, &VectorizeOptions::default())
.unwrap();
fs::write("./markup.svg", svg).unwrap();
let (pixmap, _size) = engine
.rasterize(&mut scene, &RasterizeOptions::default())
.unwrap();
pixmap.save_png("./render.png").unwrap();
}Explore examples.
MIT or Apache-2.0