58 个版本
0.8.21-pre | 2024 年 7 月 10 日 |
---|---|
0.8.20-pre | 2024 年 3 月 8 日 |
0.8.19-pre | 2024 年 2 月 28 日 |
0.8.16-pre | 2023 年 10 月 23 日 |
0.4.11 | 2021 年 7 月 30 日 |
#29 在 渲染
361 每月下载
用于 4 crates
155KB
4K SLoC
dessin
dessin 是一个旨在构建复杂绘图、合并它们、移动它们并将它们导出为 PDF 或 SVG 的库。
入门
将 dessin
和 dessin-svg
添加到您的项目依赖项
cargo add dessin dessin-svg
如果需要 PDF
cargo add dessin dessin-pdf
在 docs.rs 上的文档
概述
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();
依赖项
~11MB
~176K SLoC