12 releases (7 breaking)
0.8.1 | Aug 28, 2022 |
---|---|
0.7.0 | Jun 21, 2022 |
0.6.0 | Sep 13, 2021 |
0.5.2 | Aug 11, 2019 |
0.4.0 | Jun 25, 2017 |
#99 in Robotics
99 downloads per month
Used in spiropath
60KB
1K
SLoC
svg2polylines
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.
Dependencies
~6MB
~122K SLoC