58 个版本

0.8.21-pre2024 年 7 月 10 日
0.8.20-pre2024 年 3 月 8 日
0.8.19-pre2024 年 2 月 28 日
0.8.16-pre2023 年 10 月 23 日
0.4.11 2021 年 7 月 30 日

#29渲染

Download history 3/week @ 2024-05-19 1/week @ 2024-05-26 8/week @ 2024-06-02 5/week @ 2024-06-09 1/week @ 2024-06-16 2/week @ 2024-06-23 158/week @ 2024-06-30 130/week @ 2024-07-07 17/week @ 2024-07-14 326/week @ 2024-07-28 34/week @ 2024-08-11

361 每月下载
用于 4 crates

MIT 许可证

155KB
4K SLoC

dessin

dessin 是一个旨在构建复杂绘图、合并它们、移动它们并将它们导出为 PDF 或 SVG 的库。

入门

dessindessin-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