21 个版本

0.6.2 2023年1月30日
0.6.0 2022年11月25日
0.5.0 2021年11月12日
0.4.0 2021年3月28日
0.0.11 2020年3月23日

#772 in 图形API


用于 ezel

MIT/Apache

360KB
4K SLoC

image of piet logo

Piet:一个 2D 图形抽象

Crates.io Documentation Build Status

跨平台 2D 图形。

Piet 项目由一个核心包 (piet) 组成,它描述了一个 2D 图形 API,以及一系列 "后端",这些后端在特定平台的原生 2D 图形系统上实现该 API。这使得相同的绘图代码可以在不同的平台上使用,而无需捆绑完整的 2D 渲染器。

这个包的动机在这篇博客文章中阐述。它被用作跨平台 GUI 工具包 Druid 的基础。

Bezier 路径表示和几何形状的配套工具是 kurbo

入门

运行示例需要检出子模块。从根目录运行

git submodule update --init

贡献

Piet 处于维护模式。

Piet 已基本稳定,原始开发者没有计划添加新的主要 API。欢迎修复错误和性能改进。

如果您想添加一个重要的功能并且可以讨论,那么必须有一个至少在 coregraphics、direct2d 和 cairo 后端中实现该功能的计划,并且实际实现应包括至少这些后端中的两个。

对于问题和讨论,我们使用位于 xi.zulipchat.com 的 zulip 聊天实例,在 #piet 流中。

后端

为了跨平台使用,piet-common 包重新导出当前目标最合适的实现。

piet-cairo crates.io

piet-cairo 包依赖于 cairo 库。测试 cairo 后端的一个简单方法是运行 cargo run --example test-picture 0,这将生成一个名为 cairo-test-0.png 的图像文件。

piet-coregraphics crates.io

piet-coregraphics 包仅适用于 macOS。测试 coregraphics 后端的一个简单方法是运行 cargo run --example test-picture 0,这将生成一个名为 coregraphics-test-0.png 的图像文件。

piet-direct2d crates.io

piet-direct2d 包仅适用于 Windows。测试 direct2d 后端的一个简单方法是运行 cargo run --example test-picture 0,这将生成一个名为 d2d-test-0.png 的图像。

piet-svg crates.io

piet-web crates.io

灵感

Piet 的接口在很大程度上受到了 Skia 图形库 以及 C++ 2D 图形 api 建议 的启发,尽管 piet 旨在更加轻量化和模块化。

名称

这个库是以 Piet Mondrian 命名的。它是抽象的,旨在用于绘制许多矩形。


lib.rs:

piet 的 SVG 输出支持

依赖关系

~14–24MB
~220K SLoC