svg2polylines icon indicating copy to clipboard operation
svg2polylines copied to clipboard

Rust library to convert SVG data to a list of flattened polylines. Also includes FFI bindings.

svg2polylines

CircleCI Crates.io

Convert SVG data to a list of polylines (aka polygonal chains or polygonal paths).

This can be used e.g. for simple drawing robot that just support drawing straight lines and liftoff / drop pen commands.

Flattening of Bézier curves is done using the Lyon library. SVG files are preprocessed / simplified using usvg.

Note: Currently the path style is completely ignored. Only the path itself is returned.

Preview

There is a small preview tool to view the generated polylines. It's simple and hacky, but helps to debug stuff.

cargo run --release --example preview path/to/file.svg

The --release parameter is important, otherwise it's going to be very slow.

Use the mouse to drag / zoom the image and the Esc key to close the window.

Usage: Rust

Signature:

fn svg2polylines::parse(svg: &str, tol: f64, preprocess: bool) -> Result<Vec<Polyline>, String>;

See examples/basic.rs for a full usage example.

FFI

This crate used to contain FFI bindings. These have been dropped as of version 0.8.0. If you need them, open an issue on GitHub and I might bring them back.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) 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.