dessin is library aimed at building complex drawings, combine them, move them and export them as PDF or SVG.
Add dessin
and dessin-svg
to your project dependencies
cargo add dessin dessin-svg
or if you need PDF:
cargo add dessin dessin-pdf
Documentation on docs.rs
```rust use dessin::prelude::*; use dessin_svg::ToSVG;
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
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();
```