diff --git a/SpiroNet.sln b/SpiroNet.sln
index 036a60e..7b9e5e7 100644
--- a/SpiroNet.sln
+++ b/SpiroNet.sln
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpiroNet.Json", "src\SpiroN
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpiroNet.ViewModels", "src\SpiroNet.ViewModels\SpiroNet.ViewModels.csproj", "{A4CD560C-4567-4889-AC1A-FE03E15FF75E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpiroNet.Perspex", "src\SpiroNet.Perspex\SpiroNet.Perspex.csproj", "{B8DB18EB-3BE1-4344-812E-5B3B22D969A3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -39,6 +41,10 @@ Global
{A4CD560C-4567-4889-AC1A-FE03E15FF75E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4CD560C-4567-4889-AC1A-FE03E15FF75E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4CD560C-4567-4889-AC1A-FE03E15FF75E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B8DB18EB-3BE1-4344-812E-5B3B22D969A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B8DB18EB-3BE1-4344-812E-5B3B22D969A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B8DB18EB-3BE1-4344-812E-5B3B22D969A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B8DB18EB-3BE1-4344-812E-5B3B22D969A3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/SpiroNet.Perspex/App.config b/src/SpiroNet.Perspex/App.config
new file mode 100644
index 0000000..d1428ad
--- /dev/null
+++ b/src/SpiroNet.Perspex/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/SpiroNet.Perspex/App.xaml b/src/SpiroNet.Perspex/App.xaml
new file mode 100644
index 0000000..b1ffd72
--- /dev/null
+++ b/src/SpiroNet.Perspex/App.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/src/SpiroNet.Perspex/App.xaml.cs b/src/SpiroNet.Perspex/App.xaml.cs
new file mode 100644
index 0000000..79fa185
--- /dev/null
+++ b/src/SpiroNet.Perspex/App.xaml.cs
@@ -0,0 +1,39 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+using Perspex;
+
+namespace SpiroNet.Perspex
+{
+ public class App : Application
+ {
+ public App()
+ {
+ RegisterServices();
+ }
+
+ public void Start()
+ {
+ var mainWindow = new MainWindow();
+ mainWindow.Show();
+ Run(mainWindow);
+ }
+ }
+}
diff --git a/src/SpiroNet.Perspex/Converters/EnumToBooleanConverter.cs b/src/SpiroNet.Perspex/Converters/EnumToBooleanConverter.cs
new file mode 100644
index 0000000..f53b931
--- /dev/null
+++ b/src/SpiroNet.Perspex/Converters/EnumToBooleanConverter.cs
@@ -0,0 +1,25 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+
+namespace SpiroNet.Perspex
+{
+
+}
diff --git a/src/SpiroNet.Perspex/Converters/ShapeToDataConverter.cs b/src/SpiroNet.Perspex/Converters/ShapeToDataConverter.cs
new file mode 100644
index 0000000..f53b931
--- /dev/null
+++ b/src/SpiroNet.Perspex/Converters/ShapeToDataConverter.cs
@@ -0,0 +1,25 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+
+namespace SpiroNet.Perspex
+{
+
+}
diff --git a/src/SpiroNet.Perspex/MainWindow.xaml b/src/SpiroNet.Perspex/MainWindow.xaml
new file mode 100644
index 0000000..1512e57
--- /dev/null
+++ b/src/SpiroNet.Perspex/MainWindow.xaml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/src/SpiroNet.Perspex/MainWindow.xaml.cs b/src/SpiroNet.Perspex/MainWindow.xaml.cs
new file mode 100644
index 0000000..2b887f1
--- /dev/null
+++ b/src/SpiroNet.Perspex/MainWindow.xaml.cs
@@ -0,0 +1,39 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+using Perspex;
+using Perspex.Controls;
+
+namespace SpiroNet.Perspex
+{
+ public class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ this.InitializeComponent();
+ this.AttachDevTools();
+ }
+
+ private void InitializeComponent()
+ {
+ this.LoadFromXaml();
+ }
+ }
+}
diff --git a/src/SpiroNet.Perspex/Program.cs b/src/SpiroNet.Perspex/Program.cs
new file mode 100644
index 0000000..a2633ad
--- /dev/null
+++ b/src/SpiroNet.Perspex/Program.cs
@@ -0,0 +1,45 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+using Perspex;
+using Perspex.Logging.Serilog;
+using Serilog;
+
+namespace SpiroNet.Perspex
+{
+ internal class Program
+ {
+ private static void Main(string[] args)
+ {
+ InitializeLogging();
+ new App().UseWin32().UseDirect2D().LoadFromXaml().Start();
+ }
+
+ private static void InitializeLogging()
+ {
+#if DEBUG
+ SerilogLogger.Initialize(new LoggerConfiguration()
+ .MinimumLevel.Warning()
+ .WriteTo.Trace(outputTemplate: "{Area}: {Message}")
+ .CreateLogger());
+#endif
+ }
+ }
+}
diff --git a/src/SpiroNet.Perspex/Properties/AssemblyInfo.cs b/src/SpiroNet.Perspex/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..68a7a42
--- /dev/null
+++ b/src/SpiroNet.Perspex/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+/*
+SpiroNet.Wpf
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("SpiroNet.Perspex")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SpiroNet.Perspex")]
+[assembly: AssemblyCopyright("Copyright © Wiesław Šoltés 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+[assembly: Guid("b8db18eb-3be1-4344-812e-5b3b22d969a3")]
+
+[assembly: AssemblyVersion("1.0.*")]
diff --git a/src/SpiroNet.Perspex/Renderer/BasicStyleCache.cs b/src/SpiroNet.Perspex/Renderer/BasicStyleCache.cs
new file mode 100644
index 0000000..f53b931
--- /dev/null
+++ b/src/SpiroNet.Perspex/Renderer/BasicStyleCache.cs
@@ -0,0 +1,25 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+
+namespace SpiroNet.Perspex
+{
+
+}
diff --git a/src/SpiroNet.Perspex/Renderer/CanvasRenderer.cs b/src/SpiroNet.Perspex/Renderer/CanvasRenderer.cs
new file mode 100644
index 0000000..f53b931
--- /dev/null
+++ b/src/SpiroNet.Perspex/Renderer/CanvasRenderer.cs
@@ -0,0 +1,25 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+
+namespace SpiroNet.Perspex
+{
+
+}
diff --git a/src/SpiroNet.Perspex/SpiroNet.Perspex.csproj b/src/SpiroNet.Perspex/SpiroNet.Perspex.csproj
new file mode 100644
index 0000000..a63e0c6
--- /dev/null
+++ b/src/SpiroNet.Perspex/SpiroNet.Perspex.csproj
@@ -0,0 +1,226 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {B8DB18EB-3BE1-4344-812E-5B3B22D969A3}
+ WinExe
+ Properties
+ SpiroNet.Perspex
+ SpiroNet.Perspex
+ v4.5
+ 512
+ true
+
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Animation.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Base.dll
+ True
+
+
+ ..\..\packages\Perspex.Desktop.9999.0.1451-nightly\lib\net45\Perspex.Cairo.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Controls.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.DesignerSupport.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Diagnostics.dll
+ True
+
+
+ ..\..\packages\Perspex.Desktop.9999.0.1451-nightly\lib\net45\Perspex.Direct2D1.dll
+ True
+
+
+ ..\..\packages\Perspex.Desktop.9999.0.1451-nightly\lib\net45\Perspex.Gtk.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.HtmlRenderer.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Input.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Interactivity.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Layout.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Logging.Serilog.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Markup.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Markup.Xaml.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.ReactiveUI.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.SceneGraph.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Styling.dll
+ True
+
+
+ ..\..\packages\Perspex.9999.0.1451-nightly\lib\portable-windows8+net45\Perspex.Themes.Default.dll
+ True
+
+
+ ..\..\packages\Perspex.Desktop.9999.0.1451-nightly\lib\net45\Perspex.Win32.dll
+ True
+
+
+ ..\..\packages\Serilog.1.5.14\lib\net45\Serilog.dll
+ True
+
+
+ ..\..\packages\Serilog.1.5.14\lib\net45\Serilog.FullNetFx.dll
+ True
+
+
+ ..\..\packages\SharpDX.3.0.2\lib\net45\SharpDX.dll
+ True
+
+
+ ..\..\packages\SharpDX.Direct2D1.3.0.2\lib\net45\SharpDX.Direct2D1.dll
+ True
+
+
+ ..\..\packages\SharpDX.DXGI.3.0.2\lib\net45\SharpDX.DXGI.dll
+ True
+
+
+ ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll
+ True
+
+
+ ..\..\packages\Sprache.2.0.0.50\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll
+ True
+
+
+
+
+ ..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll
+ True
+
+
+ ..\..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll
+ True
+
+
+ ..\..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll
+ True
+
+
+ ..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll
+ True
+
+
+
+
+
+
+
+
+
+
+ App.xaml
+
+
+
+
+ MainWindow.xaml
+
+
+
+
+
+
+ EditorView.xaml
+
+
+
+
+
+
+
+
+ {4f0e9e3e-da95-40b2-8fde-22902388e90a}
+ SpiroNet.Editor
+
+
+ {a4cd560c-4567-4889-ac1a-fe03e15ff75e}
+ SpiroNet.ViewModels
+
+
+ {b2deab02-f231-4aa9-8879-0fd73096c60d}
+ SpiroNet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SpiroNet.Perspex/Views/EditorView.xaml b/src/SpiroNet.Perspex/Views/EditorView.xaml
new file mode 100644
index 0000000..be4e7a2
--- /dev/null
+++ b/src/SpiroNet.Perspex/Views/EditorView.xaml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/src/SpiroNet.Perspex/Views/EditorView.xaml.cs b/src/SpiroNet.Perspex/Views/EditorView.xaml.cs
new file mode 100644
index 0000000..203264e
--- /dev/null
+++ b/src/SpiroNet.Perspex/Views/EditorView.xaml.cs
@@ -0,0 +1,38 @@
+/*
+SpiroNet.Perspex
+Copyright (C) 2015 Wiesław Šoltés
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.
+
+*/
+using Perspex.Controls;
+using Perspex.Markup.Xaml;
+
+namespace SpiroNet.Perspex.Views
+{
+ public class EditorView : UserControl
+ {
+ public EditorView()
+ {
+ this.InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ PerspexXamlLoader.Load(this);
+ }
+ }
+}
diff --git a/src/SpiroNet.Perspex/packages.config b/src/SpiroNet.Perspex/packages.config
new file mode 100644
index 0000000..c0d8feb
--- /dev/null
+++ b/src/SpiroNet.Perspex/packages.config
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file