intvg

Crates.iointvg
lib.rsintvg
version0.1.7
sourcesrc
created_at2023-08-07 01:53:27.21093
updated_at2024-06-14 15:21:42.880215
descriptionlib/tool in Rust to load/save/render tvg file, parse from svg file by usvg
homepage
repositoryhttps://github.com/mhfan/intvg
max_upload_size
id937603
size948,472
MeiHui FAN (mhfan)

documentation

README

Build status codecov Crates.io dependency status License: MIT

Another TinyVG image parser & renderer in Rust

A library/tool to load/save binary .tvg file, rendering to .png file powered by tiny-skia, parsing from .svg file powered by usvg, with least external dependencies, simple and concise Rust code.

TinyVG textual representation (.tvgt) is only for debugging/development purposes which can be easily achieved with #[derive(Debug)] and println!("{:?}, commands) or dbg!(commands) in Rust.

Binding Blend2D rendering engine

Build controlled by feature "b2d".

    (cd 3rdparty && ./layout.sh)    # just run once

    cargo r -F b2d -- <path-to-svg/tvg> [<path-to-tvg/png>]

A built-in Rust binding for Blend2D, simpler than outdated blend2d-rs.

Binding GPAC/EVG 2D rendering engine

Build controlled by feature "evg".

    (cd 3rdparty && ./layout.sh)    # just run once

    cargo r -F evg -- <path-to-svg/tvg> [<path-to-tvg/png>]

Built-in seems the only one Rust binding in public for GPAC/EVG.

A SVG Renderer/Viewer powered by Femtovg

Build controlled by feature "nvg".

    cargo r -F nvg --bin nanovg -- <path-to-svg>

Refer to the SVG example in Femotovg, updated, rewritten and optimized the code, added Drag & Drop support.

Another SVG/TinyVG Viewer based on HTML5/Web 2D Canvas API

Run the following command in the wcnvs sub-crate/project to start the Dioxus dev server:

dx serve --hot-reload

Rendering performance comparison

2D Engine Timing Performance Note
Femtovg: 1.65 ms 606.8 fps max performance
Blend2D: 1.94 ms 515.5 fps float/double
CanvasAPI: 2.00 ms 500.0 fps bad T accuracy?
tiny_skia: 5.10 ms 195.9 fps
GPAC/EVG: 7.96 ms 125.6 fps floating point
GPAC/EVG: 18.07 ms 55.3 fps fixed-point math

Test rendering Ghostscript_Tiger.svg on MacBook Pro with Apple M1 Pro.

Commit count: 69

cargo fmt