Expand description
§Decal
decal is a declarative rendering library that lets you describe scenes
using a Rust-native DSL and render them to SVG or PNG.
Scene descriptions are backend-agnostic and can be serialized into vector
(SVG, native) or raster (PNG using resvg) output while preserving
layout semantics and visual fidelity.
§Usage
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 more examples.
Checkout the project repository for more details: https://github.com/zignis/decal