avaloniaavaloniauibeziercontrolc-sharpcurvedesigneditorgeometrygraphicsguilibspiromulti-platformpathshapesspirosplinewpfxaxaml
002ee986e3 | ||
---|---|---|
build | ||
examples | ||
samples/SpiroNet.Avalonia | ||
src | ||
tests/SpiroNet.UnitTests | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.nuke | ||
COPYING | ||
NuGet.Config | ||
README-RaphLevien | ||
README.md | ||
SpiroNet.sln | ||
_config.yml | ||
build.ps1 | ||
build.sh | ||
global.json |
README.md
SpiroNet
The .NET C# port of libspiro - conversion between spiro control points and bezier's
Introduction
For libspiro introduction please see libspiro project page and drawing with spiro. There is also GUI version using libspiro written in C#/WPF for Windows.
NuGet
SpiroNet is delivered as a NuGet package.
You can find the packages here NuGet or by using nightly build feed:
- Add
https://www.myget.org/F/spironet-nightly/api/v2
to your package sources - Update your package using
SpiroNet
feed
You can install the package like this:
Install-Package SpiroNet -Pre
Available Packages
- SpiroNet - Core libspiro library.
- SpiroNet.Editor - Core spiro shape editor.
- SpiroNet.Json - Json support for spiro shape editor.
- SpiroNet.ViewModels - View models for spiro shape editor controls.
- SpiroNet.Editor.Avalonia - Avalonia editor view for spiro shape editor.
Package Dependencies
Dependencies are required only for specific editor packages.
Package Sources
Resources
Usage
Provided examples create geometric paths as output using Path Markup Syntax for WPF/Silverlight and Path Data for SVG.
var points = new SpiroControlPoint[4];
points[0].X = -100; points[0].Y = 0; points[0].Type = SpiroPointType.G4;
points[1].X = 0; points[1].Y = 100; points[1].Type = SpiroPointType.G4;
points[2].X = 100; points[2].Y = 0; points[2].Type = SpiroPointType.G4;
points[3].X = 0; points[3].Y = -100; points[3].Type = SpiroPointType.G4;
var bc = new PathBezierContext();
var success = Spiro.SpiroCPsToBezier0(points, 4, true, bc);
Console.WriteLine(bc);
Console.WriteLine("Success: {0} ", success);
var points = new SpiroControlPoint[5];
points[0].X = -100; points[0].Y = 0; points[0].Type = SpiroPointType.G4;
points[1].X = 0; points[1].Y = 100; points[1].Type = SpiroPointType.G4;
points[2].X = 100; points[2].Y = 0; points[2].Type = SpiroPointType.G4;
points[3].X = 0; points[3].Y = -100; points[3].Type = SpiroPointType.G4;
points[4].X = 0; points[4].Y = 0; points[4].Type = SpiroPointType.End;
var bc = new PathBezierContext();
var success = Spiro.TaggedSpiroCPsToBezier0(points, bc);
Console.WriteLine(bc);
Console.WriteLine("Success: {0} ", success);
var points = new SpiroControlPoint[4];
points[0].X = -100; points[0].Y = 0; points[0].Type = SpiroPointType.OpenContour;
points[1].X = 0; points[1].Y = 100; points[1].Type = SpiroPointType.G4;
points[2].X = 100; points[2].Y = 0; points[2].Type = SpiroPointType.G4;
points[3].X = 0; points[3].Y = -100; points[3].Type = SpiroPointType.EndOpenContour;
var bc = new PathBezierContext();
var success = Spiro.TaggedSpiroCPsToBezier0(points, bc);
Console.WriteLine(bc);
Console.WriteLine("Success: {0} ", success);
License
SpiroNet is licensed under the GPL-3.0 license.
Original license and patent grant is included in README by Raph Levien for ppedit.