9 releases
0.3.1 | Jan 31, 2024 |
---|---|
0.3.0 | Nov 29, 2023 |
0.2.3 | Sep 29, 2023 |
0.2.2 | Jun 25, 2021 |
0.1.2 | Oct 11, 2020 |
#23 in Graphics APIs
73,329 downloads per month
Used in 10 crates
(6 directly)
195KB
5K
SLoC
zeno
Zeno is a pure Rust crate that provides a high performance, low level 2D rasterization library with support for rendering paths of various styles into alpha or subpixel masks.
Features
- 256x anti-aliased rasterization (8-bit alpha or 32-bit RGBA subpixel alpha)
- Pixel perfect hit testing with customizable coverage threshold
- Non-zero and even-odd fills
- Stroking with the standard set of joins and caps (separate start and end caps are possible)
- Numerically stable dashing for smooth dash offset animation
- Vertex traversal for marker placement
- Stepped distance traversal for animation or text-on-path support
- Abstract representation of path data that imposes no policy on storage
Usage
Rendering a dashed stroke of a triangle:
use zeno::{Cap, Join, Mask, PathData, Stroke};
// Buffer to store the mask
let mut mask = [0u8; 64 * 64];
/// Create a mask builder with some path data
Mask::new("M 8,56 32,8 56,56 Z")
.style(
// Stroke style with a width of 4
Stroke::new(4.0)
// Round line joins
.join(Join::Round)
// And round line caps
.cap(Cap::Round)
// Dash pattern followed by a dash offset
.dash(&[10.0, 12.0, 0.0], 0.0),
)
// Set the target dimensions
.size(64, 64)
// Render into the target buffer
.render_into(&mut mask, None);
Resulting in the following mask:
For detail on additional features and more advanced usage, see the full API documentation.
Dependencies
~98KB