#矢量图形 #硬件加速 #查看器 #图形 #SVG #图形API #交互式

vsvg-viewer

适用于vsvg crate的可移植、硬件加速、可扩展的查看器

12个不稳定版本 (3个重大更新)

0.4.0 2024年1月21日
0.4.0-rc.02024年1月20日
0.3.0 2023年12月28日
0.2.0 2023年10月22日
0.1.0-alpha.22023年9月30日

#268 in 可视化


用于 3 crates

MIT 许可证

6MB
6.5K SLoC

vsvg-viewer crate

该crate是vsvg项目的一部分。

状态:测试版。它已工作,但API可能会更改。

这是什么?

此crate实现了基于egui和wgpu的vsvg可扩展查看器。它与vpype-viewer非常相似,但建立在更坚实的基础之上

  • egui crate是一个即时模式UI框架,非常适合易于自定义和高度交互的项目(如whiskers)。
  • wgpu crate是对现代本地和Web图形API的包装。它是未来派的。

这种组合也支持WebAssembly。

使用方法

vsvg-viewer提供两个主要功能

  • 基本的vsvg::Document查看器
  • 基于vsvg::Document查看器的可定制应用程序

基本查看器

基本的vsvg::Document查看器只需要一行代码

fn main() -> anyhow::Result<()> {
    let doc = vsvg::Document::from_svg("path/to/input.svg");
    vsvg_viewer::show(&doc)
}

以下是一个示例截图

image

对于熟悉vpype的用户,这基本上对应于vpype [...] show发生的情况。

可定制应用程序

或者,可以使用vsvg-viewer构建围绕核心vsvg::Document渲染器功能构建的复杂、交互式应用程序

struct MyApp {}

impl vsvg_viewer::ViewerApp for MyApp {
    /* ... */
}

fn main() -> anyhow::Result<()> {
    vsvg_viewer::show_with_viewer_app(MyApp::new())
}

您的应用程序必须实现vsvg_viewer::ViewerApp特质,该特质提供钩子

  • 显示自定义UI,例如在侧面板中;
  • 自定义选项,例如窗口标题等;
  • 从持久存储中加载/保存状态。

examples/目录中提供了一个自定义应用程序的基本示例。

whiskers) 使用此API实现其草图运行器

image

依赖项

~32–75MB
~1.5M SLoC