Lyon

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

Project logo

crates.io Build Status documentation Gitter Chat

Example

```rust 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.lineto(point(1.0, 0.0)); builder.quadraticbezierto(point(2.0, 0.0), point(2.0, 1.0)); builder.cubicbezierto(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 = VertexBuffers::new(); let mut tessellator = FillTessellator::new(); { // Compute the tessellation. tessellator.tessellatepath( &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() ); } ```