57 releases
0.8.21-pre | Jul 10, 2024 |
---|---|
0.8.20-pre | Mar 8, 2024 |
0.8.19-pre | Feb 28, 2024 |
0.8.16-pre | Oct 23, 2023 |
0.4.11 | Jul 30, 2021 |
#130 in Rendering
27 downloads per month
170KB
4K
SLoC
dessin
dessin is library aimed at building complex drawings, combine them, move them and export them as PDF or SVG.
Getting started
Add dessin
and dessin-svg
to your project dependencies
cargo add dessin dessin-svg
Documentation on docs.rs
Overview
use dessin::prelude::*;
use dessin_svg::ToSVG;
#[derive(Default)]
struct MyShape {
text: String
}
impl MyShape {
fn say_this(&mut self, what: &str) {
self.text = format!("{} And check this out: `{what}`", self.text);
}
}
impl From<MyShape> for Shape {
fn from(value: MyShape) -> Self {
dessin!(Text: #(
fill={Color::RED}
text={value.text}
)).into()
}
}
let dessin = dessin!(for x in {0..10}: {
let radius = x as f32 * 10.;
dessin!(group: [
{ Circle: #(
fill={Color::RED}
radius={radius}
translate={[x as f32 * 5., 10.]}
) }
{ Text: #(
fill={Color::BLACK}
font_size={10.}
text={"Hi !"}
) }
])
});
let dessin = dessin!(group: [
{ var { dessin }: (
scale={[2., 2.]}
) }
{ MyShape: (
say_this={"Hello world"}
) }
]);
let svg = dessin.to_svg().unwrap();
Dependencies
~12MB
~186K SLoC