57次发布

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日

#121 in 渲染

Download history 1/week @ 2024-06-27 170/week @ 2024-07-04 64/week @ 2024-07-11 227/week @ 2024-07-25 34/week @ 2024-08-01 19/week @ 2024-08-08

280 每月下载量

MIT 许可证

170KB
4K SLoC

dessin

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

入门

dessindessin-svg 添加到项目的依赖项中

cargo add dessin dessin-svg

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
~182K SLoC