9 个版本
0.3.6 | 2024年5月20日 |
---|---|
0.3.5 | 2023年6月16日 |
0.3.4 | 2022年7月6日 |
0.3.2 | 2021年7月2日 |
0.0.1 | 2020年2月4日 |
在 可视化 类别中排名 74
每月下载量 2,530,269
在 5,193 个 包中使用 (直接使用 23 个)
54KB
1K SLoC
plotters-backend - 实现Plotters后端的基础包
这是plotters项目的一部分。有关详细信息,请查看以下链接
- 有关Plotters的高级介绍,请参阅: crates.io 上的 Plotters
- 在 Plotters 仓库 查看主要仓库
- 有关此包的详细文档,请查看 docs.rs 上的 plotters-backend
- 您还可以访问 Plotters 的 主页
lib.rs
:
Plotters 后端 API 包。这是 Plotters(Rust 绘图和绘图库)的一部分,有关整个 Plotters 项目的详细信息,请查看 主要包。
这是一个用于连接 Plotters 和不同后端包的连接器包。自 Plotters 0.3 版本以来,所有后端都已作为独立的包托管,以提高可用性和可维护性。
同时,Plotters 现在支持第三方后端,所有后端现在都支持“即插即用”:要使用外部后端,只需依赖 Plotters 主要包和第三方后端包即可。
实现 Plotters 后端的注意事项
要创建一个新的 Plotters 后端,应将此包导入到包中,并实现 DrawingBackend 特性。强烈建议第三方后端使用 plotters-backend
通过版本规范 ^x.y.*
。有关详细信息,请参阅 兼容性说明。
如果后端只实现了 DrawingBackend::draw_pixel,默认的CPU光栅化器将被使用,以便为后端提供绘制不同形状的能力。对于支持高级绘图指令的后端,例如GPU加速的形状绘制,所有提供的特质方法都可以从特定后端代码中重写。
如果您的后端具有文本渲染能力,您可能希望重写 DrawingBackend::estimate_text_size 以避免错误的间距,因为Plotters默认的文本处理代码在文本渲染方面可能与后端行为不同。
动画或实时渲染
后端可能会实时/动画地渲染图像,例如GTK后端用于实时显示或GIF图像渲染。为了支持这些功能,您需要与 ensure_prepared
和 present
方法进行交互。以下图显示了Plotters如何操作绘图后端。
ensure_prepared
- 在Plotters想要绘制之前调用。此函数应初始化后端以供当前帧使用,如果后端已为帧准备就绪,则此函数应简单地不执行任何操作。present
- 当Plotters想要完成当前帧绘制时调用
.ensure_prepared() &&
+-------------+ +-------------+ .draw_pixels() +--------------+ drop
|Start drawing|--->|Ready to draw| ------------------------+---->|Finish 1 frame| --------->
+-------------+ +-------------+ | +--------------+
^ ^ | |
| +------------------------------- + |
| continue drawing |
+----------------------------------------------------------------+
start render the next frame
.present()
- 对于动画和静态绘制,
DrawingBackend::present
表示当前帧应刷新。 - 对于动画和静态绘制,
DrawingBackend::ensure_prepared
在Plotters需要绘制时每次都会调用。 - 对于静态绘制,
DrawingBackend::present
只手动调用一次,或者从后端的Drop实现中调用。 - 对于动态绘制,帧由
DrawingBackend::present
的调用定义,调用之前的所有内容应属于前一帧。
兼容性说明
从Plotters v0.3开始,Plotters使用“即插即用”模式导入后端,这要求Plotters和后端crates都依赖于同一版本的 plotters-backend
crate。此crate (plotters-backend
) 将强制执行任何修订版(即版本号中的最后一个数字)都不会包含破坏性更改 - 在Plotters方面和后端方面都是如此。
Plotters主crate始终使用版本规范 plotters-backend = "^<major>.<minor>*"
导入后端crate。强烈建议所有外部crate遵循相同的规则来导入 plotters-backend
依赖,以避免因 plotters-backend
crates的修订版更新而导致的潜在破坏。
我们还与 plotters
和一些后端强制执行一个版本规则:兼容的主crate (plotters
) 和此crate (plotters-backend
) 总是使用相同的次要和主要版本号。所有具有版本“x.y.*”的Plotters主crate和二级后端都应兼容,并且它们应依赖于 plotters-backend x.y.*
的最新版本。