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 次下载
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