0.6.0 |
|
---|
#19 in #piet
470KB
6K SLoC
Piet:2D图形抽象
跨平台2D图形。
Piet项目包括一个核心crate(piet
),它描述了一个2D图形API,以及一些“后端”,它们在给定平台内置的2D图形系统之上实现该API。这使得可以在不同的平台上使用相同的绘图代码,而无需捆绑完整的2D渲染器。
该crate的动机在以下博客文章中阐述。它被用作Druid(一个跨平台GUI工具包)的基础。
用于贝塞尔路径表示和几何的配套工具是kurbo。
入门
运行示例需要检出子模块。从根目录运行
git submodule update --init
贡献
Piet处于维护模式。
Piet已基本稳定,原始开发者没有计划添加重大API功能。欢迎提交错误修复和性能改进。
如果您想添加一个重要的功能,可以进行讨论。对于新功能,必须有一个在至少coregraphics、direct2d和cairo后端中实现的计划,并且实际实现应包括对其中至少两个的支持。
有关问题和讨论,我们使用位于xi.zulipchat.com的zulip聊天实例,在#piet流下。
后端
为了跨平台使用,piet-common
crate导出了对当前目标的最佳实现。
piet-cairo
《piet-cairo》crate依赖于cairo库。对cairo后端进行简单测试的方法是运行cargo run --example test-picture 0
,这将生成一个名为cairo-test-0.png
的图像文件。
piet-coregraphics
《piet-coregraphics》crate仅适用于macOS。对coregraphics后端进行简单测试的方法是运行cargo run --example test-picture 0
,这将生成一个名为coregraphics-test-0.png
的图像文件。
piet-direct2d
《piet-direct2d》crate仅适用于Windows。对direct2d后端进行简单测试的方法是运行cargo run --example test-picture 0
,这将生成一个名为d2d-test-0.png
的图像。
piet-svg
piet-web
灵感来源
Piet的界面主要受Skia图形库和C++ 2D图形API提案的启发,尽管piet旨在更加轻量化和模块化。
名称
该库以皮特·蒙德里安命名。它具有抽象性,旨在用于绘制大量矩形。
依赖关系
~1MB
~21K SLoC