56 releases (2 stable)

1.0.1 Nov 6, 2022
1.0.0 Jul 11, 2022
0.17.10 Oct 12, 2021
0.17.5 Jan 30, 2021
0.1.1 Jul 14, 2016

#83 in Graphics APIs

Download history 10072/week @ 2024-11-30 9551/week @ 2024-12-07 10611/week @ 2024-12-14 5702/week @ 2024-12-21 5326/week @ 2024-12-28 11657/week @ 2025-01-04 16118/week @ 2025-01-11 13289/week @ 2025-01-18 12159/week @ 2025-01-25 18021/week @ 2025-02-01 17917/week @ 2025-02-08 16047/week @ 2025-02-15 18446/week @ 2025-02-22 16527/week @ 2025-03-01 16668/week @ 2025-03-08 17418/week @ 2025-03-15

71,620 downloads per month
Used in 164 crates (46 directly)

MIT/Apache

1MB
33K SLoC

Lyon

A path tessellation library written in rust for GPU-based 2D graphics rendering.

Project logo

crates.io Build Status documentation Gitter Chat

Example

extern crate lyon;
use lyon::math::point;
use lyon::path::Path;
use lyon::tessellation::*;

fn main() {
    // Build a Path.
    let mut builder = Path::builder();
    builder.begin(point(0.0, 0.0));
    builder.line_to(point(1.0, 0.0));
    builder.quadratic_bezier_to(point(2.0, 0.0), point(2.0, 1.0));
    builder.cubic_bezier_to(point(1.0, 1.0), point(0.0, 1.0), point(0.0, 0.0));
    builder.end(true);
    let path = builder.build();
    // Let's use our own custom vertex type instead of the default one.
    #[derive(Copy, Clone, Debug)]
    struct MyVertex { position: [f32; 2] };
    // Will contain the result of the tessellation.
    let mut geometry: VertexBuffers<MyVertex, u16> = VertexBuffers::new();
    let mut tessellator = FillTessellator::new();
    {
        // Compute the tessellation.
        tessellator.tessellate_path(
            &path,
            &FillOptions::default(),
            &mut BuffersBuilder::new(&mut geometry, |vertex: FillVertex| {
                MyVertex {
                    position: vertex.position().to_array(),
                }
            }),
        ).unwrap();
    }
    // The tessellated geometry is ready to be uploaded to the GPU.
    println!(" -- {} vertices {} indices",
        geometry.vertices.len(),
        geometry.indices.len()
    );
}

Dependencies

~1.5MB
~39K SLoC