Skip to main content

Crate decal

Crate decal 

Source
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.

§Features

  • Declarative node builders for flexbox, text, images, containers, etc.
  • Layout capabilities modeled after CSS box concepts (gap, alignment, flex/grid).
  • Support for complex paint stacks, gradients, text stencils, and SVG filters.

§Examples

use decal::prelude::*;

let mut engine = Engine::new(EngineOptions::default());

let mut scene = decal! {
    Column {
        Text("hello")
            .color(rgb(0xffffff))
    }
        .padding(32.0)
        .background(LinearGradient::right().stops([(0.0, rgb(0xff0000)), (1.0, rgb(0x00ff00))]))
};

let (svg, _scene_size) = engine
    .vectorize(&mut scene, &VectorizeOptions::default())
    .unwrap();

std::fs::write("./markup.svg", svg).unwrap();

let (pixmap, _scene_size) = engine
    .rasterize(&mut scene, &RasterizeOptions::default())
    .unwrap();

pixmap.save_png("./render.png").unwrap();

Checkout the project repository for more details: https://github.com/mem-red/decal

Modules§

attributes
builders
capabilities
filters
layout
prelude
primitives

Macros§

decal
text