Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/phrogz/svg-path-to-polygons
Converts path commands for an SVG path to polygon points.
https://github.com/phrogz/svg-path-to-polygons
Last synced: 12 days ago
JSON representation
Converts path commands for an SVG path to polygon points.
- Host: GitHub
- URL: https://github.com/phrogz/svg-path-to-polygons
- Owner: Phrogz
- License: mit
- Created: 2017-06-19T16:18:00.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-05-04T15:11:15.000Z (over 4 years ago)
- Last Synced: 2024-05-16T15:04:23.732Z (6 months ago)
- Language: JavaScript
- Size: 6.84 KB
- Stars: 53
- Watchers: 5
- Forks: 18
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# svg-path-to-polygons
Node package that converts path commands for an SVG path to polygonal points.## Features
* Sparsely represents linear portions of the path by the minimal number of points.
* Does not skip any imporant features.
* Uses adaptive subsampling for curves to represent them exactly in the fewest number of points, with an arbitrary tolerance.## Installation
`npm install svg-path-to-polygons`
## Usage
```js
const { pathDataToPolys } = require('../svg-path-to-polygons.js');
let pathData = 'M5,15 c5.5,0 10-4.5 10,-10 h10';
let points = pathDataToPolys(pathData, {tolerance:1, decimals:1});
console.log(points);
/*******************************************************************
[
[ [5,15],[7,14.8],[10.6,13.3],[13.3,10.6],[14.8,7],[15,5],[25,5] ]
]
********************************************************************/
```Note that the output for every path is an array of polygons/polylines (even if there is only one), where each polygon/polyline is an array of points, and where each point is an array of two numbers.
Each polygon/polyline also includes a custom `closed` property that defines whether the SVG subpath was closed (i.e. ended with a `z` or `Z` command).
The optional `tolerance` option specifies how far (in SVG coordinates) the polygon path may deviate from ideal curves. If not supplied, it defaults to `1`.
The optional `decimals` option controls the precision of values produces for each point. Only non-negative values are currently supported. If unspecified, full precision is used for each number.
## TODO (aka Known Limitations)
* Need to support quadratic Bézier commands.
* Need to support arc commands.
* Subsample linear sections if they are within the `tolerance`.
* Support negative values for `decimals`.## License, Contact, and Support
Copyright 2017 Gavin Kistner ([email protected])
MIT License. See `LICENSE` file for details.Please file bugs and feature requests [on the GitHub page](https://github.com/Phrogz/svg-path-to-polygons/issues).