Releases: folkertdev/one-true-path-experiment
Fix bug in path parsing
There was an issue in parsing relative curve instructions with multiple arguments. The package normalizes the instructions by only allowing absolute instructions, and there was an error in the transformation. This has now been fixed.
Thanks to @unsoundscapes for reporting
Fix bug in CatmullRom
Catmull Rom would not render an input of length 3.
Using parsing and formatting features, it is now quite easy to let D3 generate some output and check it against ours, so all curve types are now checked for correctness at 0,1,2, 3 and 4 points.
Loosen elm-list-extra version bounds
The elm-list-extra package was recently upgraded with a major version. After this release,
this package supports elm-list-extra 6.1.0 <= v < 8.0.0
.
One True Path v3.0.0 release notes
-
use OpenSolid/geometry for segments
OpenSolid already implements a lot of mathematical functions, so why duplicate the work? I'm working with @ianmackenzie of OpenSolid to get arc length, arc length parameterization, and elliptical arcs in OpenSolid for use
in this package (the arc length (parameterization) is now done, but not yet released).I've removed
Segment.length
for now, because we'll soon get a good implementation. -
Swap
clockwise
andcounterClockwise
These values now match the visual intuition. Previously they were clockwise and coutnerClockwise in the SVG coordinate system, which notoriously lets the positive y-axis point down.
-
Split the parser into its own package
I've published svg-path-lowlevel, a package for dealing with parsing and writing SVG.
It supports all the svg instructions, both absolute and relative.It means that we can let go of some particulars of SVG in this package.
-
Remove smooth curve extension instructions
these are really tricky to work with, and rarely used as far as I can see.
The conversion from svg-path-lowlevel automatically converts these instructions to normal, absolute curve instructions.There is a replacement:
Curve
hassmoothQuadraticBezier
andsmoothCubicBezier
that simulate the smooth curve extensions on theSubPath
level. -
Add
SubPath.compress
andSubPath.reverse
compress
tries to merge adjacent instructions of the same type.reverse
reverses the direction of the stroke. the direction can be important when using SVG fills - the algorithm uses stroke direction to figure out what is inside and what is outside. -
more tests/examples
using elm-verify-examples
-
fixed a bug in the monotone curves
the first curve instruction was wrong, thanks @gampleman