lyon 0.3.1

2D Graphics rendering experiments.
Documentation

Lyon

GPU-based 2D graphics rendering experiments in rust.

Goals

For now the goal is to provide efficient SVG-compliant path tessellation tools to help with rendering vector graphics on the GPU. If things go well the project could eventually grow into including a (partial) SVG renderer in a separate crate, but for now think of this library as a way to turn complex paths into triangles for use in your own rendering engine.

The intent is for this library to be useful in projects like Servo.

The project is split into small crates:

  • lyon: A meta-crate that imports the other crates.
  • lyon_core: Contains types common to most lyon crates.
  • lyon_tessellator: The tessellation routines (where most of the focus is for now).
  • lyon_path: A simple vector path data structure provided for convenience, but not required by the other crates.
  • lyon_path_iterator: A set of iterator abstractions over vector paths.
  • lyon_path_builder: Tools to build paths.
  • lyon_bezier: 2d quadratic and cubic bezier curve maths, including an efficient flattening algorithm.
  • lyon_extra: various optional utilities.

Status

The focus right now is on implementing a SVG compliant path tessellator (rather than an actual SVG render).

  • path
    • bezier curves (through path flattening)
    • SVG 1.1
    • builder API
    • iterator API
  • complex fill
    • fill shape types
      • concave shapes
      • self-intersections
      • holes
    • fill rule
      • even-odd
      • non-zero
    • vertex-aa
    • clip rect
    • stable API
  • complex stroke
    • line cap
      • butt
      • square
      • round
    • line join
      • miter
      • miter clip
      • round
      • bevel
      • arcs
    • vertex-aa
    • clip rect
    • stable API
  • basic shapes
    • quad
      • fill
      • stroke
    • rectangle
      • fill
      • stroke
    • rounded rectangle
      • fill
      • stroke
    • ellipsis
      • fill
      • stroke
    • convex polygon
      • fill
      • stroke
    • nine-patch
  • path flattening
    • builder
    • iterator
  • testing
    • fill
      • test suite
      • automatic test-case reduction
      • reference testing
      • fuzzing
    • stroke
    • basic shapes

TODO

There are the unticked items above as well as a rough list of things to do. If you are interested in contributing, please let me know on twitter (@nicalsilva) or by e-mail.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.