5 个版本 (破坏性更新)

0.5.0 2024年2月17日
0.4.0 2023年7月14日
0.3.0 2023年2月7日
0.2.0 2023年2月5日
0.1.0 2023年2月4日

#215图形API

每月26 次下载

MIT 许可证

38KB
909

esvg

基于文档对象模型的 SVG 库,用于构建矢量图形。

可以访问属性和标签,允许您构建所需的任何 SVG。

使用 Polygonical 进行其形状表示

示例

构建文档并绘制一个圆


use esvg::page::Page;
use esvg::{create_document, Element};
use polygonical::point::Point;

let page = Page::A4(96);  // 96 dpi
let mut doc = create_document(&page);

let mut group = Element::new("g");
group.set("class", "foo");

let mut circle = esvg::shapes::circle(page.center(), 50);
circle.add_style("stroke", "red");

group.add(&circle);
doc.add(&group);

let expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">
<svg height=\"297.1270833333333mm\" viewBox=\"0, 0, 794, 1123\" width=\"210.07916666666668mm\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">
\t<g class=\"foo\">
\t\t<circle cx=\"397\" cy=\"561\" fill=\"none\" r=\"50\" style=\"stroke:red\" />
\t</g>
</svg>
";

assert_eq!(doc.to_pretty_string(), expected);

功能

  • 内存中构建 SVG
  • 读取 SVG(包括注释和文本节点)
  • 写入 SVG(包括注释和文本节点)
  • 路径对象
  • 文本对象
  • 内置常见页面大小

期望的功能

  • 路径数据到多边形

我们明确不支持的功能

  • 将 SVG 转换为其他格式。

依赖项

~1.6–2.2MB
~41K SLoC