37 releases
0.4.2 | Oct 26, 2024 |
---|---|
0.4.0 | Apr 1, 2024 |
0.3.12 | Mar 31, 2024 |
0.3.7 | Oct 19, 2023 |
0.1.2 | Apr 30, 2021 |
#24 in Rendering
206 downloads per month
Used in surf_n_term
285KB
7.5K
SLoC
Rasterizer
This is a fully functional 2D rasterizer and SVG path parser.
Features:
- parsing SVG path format
- rendering elliptic arc, lines, cubic/quadratic bezier curves
- curve offsetting
- linear and radial gradients
Usage example
There is a very simple binary in examples folder that can be used to render SVG path
$ cargo run --release --example rasterize -- data/squirrel.path -w 512 -o squirrel.bmp
This will produce:
lib.rs
:
Simple 2D library that support SVG path parsing/generation/manipulation and rasterization.
Main features:
- SVG path parsing and generation
- Anti-aliased rendering
- Path offsetting
Path::stroke
- Linear and Radial gradients with
GradLinear
andGradRadial
- Serde integration if
serde
feature is set (enabled by default)
Overview
Main types are:
Path
- Represents the same concept as an SVG path, the easiest way to construct it is withPath::builder
or it can be parsed from SVG path withstr::parse
. Path can be stroked withPath::stroke
to generated new path that represents an outline.Scene
- Represents an image that has not been rendered yet, multiple scenes can be composed to construct more complex scene. This is probably the simplest way to render something useful. Seeexamples/simple.rs
for a simple example. It can also be (de)serialized seedata/firefox.scene
for an example.Paint
- Color/Gradient that can be used to fill a path.Image
- 2D matrix that can hold and image and used as a target for rendering. Image can also be written into a file withImage::write_bmp
or to PNG withImage::write_png
ifpng
feature is enabled.
Dependencies
~0.7–2MB
~37K SLoC