#
svgpath 1.1.0
svgpath: ^1.1.0

SVG path low level transformations toolkit

# svgpath #

This is a Dart port of Fontello's svgpath JavaScript library.

Low level toolkit for SVG paths transformations. Sometime you can't use

`transform`

attributes and have to apply changes to svg paths directly. Then this package is for you :) !

This package works both in browser and on server.

## API #

### new SvgPath(path) #

Constructor. Creates new `SvgPath`

class instance.

### .abs() #

Converts all path commands to absolute.

### .rel() #

Converts all path commands to relative. Useful to reduce output size.

### .scale(sx [, sy]) #

Rescale path (the same as SVG `scale`

transformation). `sy`

= `sx`

by default.

### .translate(x [, y]) #

Translate path (the same as SVG `translate`

transformation). `y`

= 0 by default.

### .rotate(angle [, rx, ry]) #

Rotate path to `angle`

degrees around (rx, ry) point. If rotation center not set,
(0, 0) used. The same as SVG `rotate`

transformation.

### .skewX(degrees) #

Skew path along the X axis by `degrees`

angle.

### .skewY(degrees) #

Skew path along the Y axis by `degrees`

angle.

### .matrix([ m1, m2, m3, m4, m5, m6 ]) #

Apply 2x3 affine transform matrix to path. Params - array. The same as SVG
`matrix`

transformation.

### .transform(string) #

Any SVG transform or their combination. For example `rotate(90) scale(2,3)`

.
The same format, as described in SVG standard for `transform`

attribute.

### .unshort() #

Converts smooth curves `T`

/`t`

/`S`

/`s`

with "missed" control point to
generic curves (`Q`

/`q`

/`C`

/`c`

).

### .unarc() #

Replaces all arcs with bezier curves.

### .toString() -> String #

Returns final path string.

### .round(precision) #

Round all coordinates to given decimal precision. By default round to integer. Useful to reduce resulting output string size.

### .iterate(function(segment, index, x, y) [, keepLazyStack]) #

Apply iterator to all path segments.

- Each iterator receives
`segment`

,`index`

,`x`

and`y`

params. Where (x, y) - absolute coordinates of segment start point. - Iterator can modify current segment directly (return nothing in this case).
- Iterator can return array of new segments to replace current one (
`[]`

means that current segment should be deleted).

If second param `keepLazyStack`

set to `true`

, then iterator will not evaluate
stacked transforms prior to run. That can be useful to optimize calculations.