diff --git a/.gitignore b/.gitignore
index af27fba5..13184f4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -114,3 +114,4 @@ UpgradeLog*.XML
#LocalHistory VS plugin
.localhistory/
.settings/launch.json
+/.vs/GraphX for .NET/v15/Server/sqlite3
diff --git a/Documents/AIV.cs b/Documents/AIV.cs
index 2445cffa..888f72e7 100644
--- a/Documents/AIV.cs
+++ b/Documents/AIV.cs
@@ -8,5 +8,5 @@
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
-[assembly: AssemblyVersion("2.3.6.0")]
-[assembly: AssemblyFileVersion("2.3.6.0")]
+[assembly: AssemblyVersion("2.3.7.0")]
+[assembly: AssemblyFileVersion("2.3.7.0")]
diff --git a/Documents/CHANGELOG.txt b/Documents/CHANGELOG.txt
index edc9c6c3..c72629db 100644
--- a/Documents/CHANGELOG.txt
+++ b/Documents/CHANGELOG.txt
@@ -1,8 +1,11 @@
-WIP 2.3.7
+RELEASE 2.3.7
- Added edge drag functionality to be able to reattach edge to another vertex (thanks to LaborJos)
- Fixed SimpleTreeLayout vertex sizes supplement (thanks to edgardozoppi)
- Fixed and improved parallel edge handling (thanks to perturbare)
- Fixed RemoveEdge() method were not removing edges from data graph (thanks to perturbare)
+- Removed METRO support and example
+- Added UAP (UWP) support for Windows 10+ platform (VS2017)
+- Minor bugfixes
RELEASE 2.3.6
DETAILED CHANGELOG:
diff --git a/Examples/METRO.SimpleGraph/METRO.SimpleGraph.csproj b/Examples/METRO.SimpleGraph/METRO.SimpleGraph.csproj
deleted file mode 100644
index 59c00309..00000000
--- a/Examples/METRO.SimpleGraph/METRO.SimpleGraph.csproj
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {44841666-C547-4874-9BC9-B34D2A1FA6D8}
- appcontainerexe
- Properties
- METRO.SimpleGraph
- METRO.SimpleGraph
- en-US
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- METRO.SimpleGraph_TemporaryKey.pfx
- 8.1
- 12
-
- 0E531EEE26E7E3F2FBD6A8E1E9F889D31225622F
- ..\..\
- true
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- TRACE;DEBUG;NETFX_CORE, METRO
- prompt
- 4
- true
- 1591
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE;NETFX_CORE
- prompt
- 4
- 1591
-
-
- true
- bin\ARM\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- ARM
- false
- prompt
- true
-
-
- bin\ARM\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- ARM
- false
- prompt
- true
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x64
- false
- prompt
- true
-
-
- bin\x64\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x64
- false
- prompt
- true
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE;NETFX_CORE
- ;2008
- full
- x86
- false
- prompt
- true
-
-
- bin\x86\Release\
- TRACE;NETFX_CORE
- true
- ;2008
- pdbonly
- x86
- false
- prompt
- true
-
-
-
-
- {66f33708-c1c7-4385-8235-7201784d184c}
- GraphX.METRO.Controls
-
-
- {3644d44b-dec0-4b65-bba0-c68e34821aae}
- GraphX.PCL.Common
-
-
- {a30d218b-aaa4-483a-99f7-eaeb1b8b4610}
- GraphX.PCL.Logic
-
-
-
-
- App.xaml
-
-
- MainPageDebug.xaml
-
-
- MainPage.xaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Designer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
- PreserveNewest
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
- PreserveNewest
-
-
-
-
- ..\..\packages\QuickGraphPCL.3.6.61114.2\lib\portable-win+net4+sl5+wp8+win8+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\QuickGraph.dll
- True
-
-
- ..\..\packages\QuickGraphPCL.3.6.61114.2\lib\portable-win+net4+sl5+wp8+win8+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\QuickGraph.Graphviz.dll
- True
-
-
-
- 12.0
-
-
-
-
-
- true
-
-
- METRO.SimpleGraph_TemporaryKey.pfx
-
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
-
-
\ No newline at end of file
diff --git a/Examples/METRO.SimpleGraph/METRO.SimpleGraph_TemporaryKey.pfx b/Examples/METRO.SimpleGraph/METRO.SimpleGraph_TemporaryKey.pfx
deleted file mode 100644
index 338d6dae..00000000
Binary files a/Examples/METRO.SimpleGraph/METRO.SimpleGraph_TemporaryKey.pfx and /dev/null differ
diff --git a/Examples/METRO.SimpleGraph/Package.appxmanifest b/Examples/METRO.SimpleGraph/Package.appxmanifest
deleted file mode 100644
index 3d7e87a8..00000000
--- a/Examples/METRO.SimpleGraph/Package.appxmanifest
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
- METRO.SimpleGraph
- panth_000
- Assets\StoreLogo.png
-
-
- 6.3.0
- 6.3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Examples/METRO.SimpleGraph/Properties/AssemblyInfo.cs b/Examples/METRO.SimpleGraph/Properties/AssemblyInfo.cs
deleted file mode 100644
index 9affc518..00000000
--- a/Examples/METRO.SimpleGraph/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("METRO.SimpleGraph")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("METRO.SimpleGraph")]
-[assembly: AssemblyCopyright("Copyright © 2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/Examples/METRO.SimpleGraph/packages.config b/Examples/METRO.SimpleGraph/packages.config
deleted file mode 100644
index a3f91dfd..00000000
--- a/Examples/METRO.SimpleGraph/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Examples/METRO.SimpleGraph/App.xaml b/Examples/UAP.SimpleGraph/App.xaml
similarity index 95%
rename from Examples/METRO.SimpleGraph/App.xaml
rename to Examples/UAP.SimpleGraph/App.xaml
index 276b3134..f485eac4 100644
--- a/Examples/METRO.SimpleGraph/App.xaml
+++ b/Examples/UAP.SimpleGraph/App.xaml
@@ -1,5 +1,5 @@
diff --git a/Examples/METRO.SimpleGraph/App.xaml.cs b/Examples/UAP.SimpleGraph/App.xaml.cs
similarity index 99%
rename from Examples/METRO.SimpleGraph/App.xaml.cs
rename to Examples/UAP.SimpleGraph/App.xaml.cs
index 055debd2..6674dcb8 100644
--- a/Examples/METRO.SimpleGraph/App.xaml.cs
+++ b/Examples/UAP.SimpleGraph/App.xaml.cs
@@ -6,7 +6,7 @@
// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph
{
///
/// Provides application-specific behavior to supplement the default Application class.
diff --git a/Examples/UWA.SimpleGraph/Assets/100.png b/Examples/UAP.SimpleGraph/Assets/100.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/100.png
rename to Examples/UAP.SimpleGraph/Assets/100.png
diff --git a/Examples/UWA.SimpleGraph/Assets/150.png b/Examples/UAP.SimpleGraph/Assets/150.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/150.png
rename to Examples/UAP.SimpleGraph/Assets/150.png
diff --git a/Examples/UWA.SimpleGraph/Assets/300.png b/Examples/UAP.SimpleGraph/Assets/300.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/300.png
rename to Examples/UAP.SimpleGraph/Assets/300.png
diff --git a/Examples/UWA.SimpleGraph/Assets/44.png b/Examples/UAP.SimpleGraph/Assets/44.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/44.png
rename to Examples/UAP.SimpleGraph/Assets/44.png
diff --git a/Examples/UWA.SimpleGraph/Assets/50.png b/Examples/UAP.SimpleGraph/Assets/50.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/50.png
rename to Examples/UAP.SimpleGraph/Assets/50.png
diff --git a/Examples/UWA.SimpleGraph/Assets/88.png b/Examples/UAP.SimpleGraph/Assets/88.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/88.png
rename to Examples/UAP.SimpleGraph/Assets/88.png
diff --git a/Examples/METRO.SimpleGraph/Assets/Logo.png b/Examples/UAP.SimpleGraph/Assets/Logo.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/Logo.png
rename to Examples/UAP.SimpleGraph/Assets/Logo.png
diff --git a/Examples/UWA.SimpleGraph/Assets/Logo.scale-100.png b/Examples/UAP.SimpleGraph/Assets/Logo.scale-100.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/Logo.scale-100.png
rename to Examples/UAP.SimpleGraph/Assets/Logo.scale-100.png
diff --git a/Examples/UWA.SimpleGraph/Assets/Logo.scale-200.png b/Examples/UAP.SimpleGraph/Assets/Logo.scale-200.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/Logo.scale-200.png
rename to Examples/UAP.SimpleGraph/Assets/Logo.scale-200.png
diff --git a/Examples/METRO.SimpleGraph/Assets/MidLogo.png b/Examples/UAP.SimpleGraph/Assets/MidLogo.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/MidLogo.png
rename to Examples/UAP.SimpleGraph/Assets/MidLogo.png
diff --git a/Examples/METRO.SimpleGraph/Assets/SmallLogo.png b/Examples/UAP.SimpleGraph/Assets/SmallLogo.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/SmallLogo.png
rename to Examples/UAP.SimpleGraph/Assets/SmallLogo.png
diff --git a/Examples/METRO.SimpleGraph/Assets/SplashScreen.png b/Examples/UAP.SimpleGraph/Assets/SplashScreen.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/SplashScreen.png
rename to Examples/UAP.SimpleGraph/Assets/SplashScreen.png
diff --git a/Examples/METRO.SimpleGraph/Assets/SplashScreen.scale-100.png b/Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-100.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/SplashScreen.scale-100.png
rename to Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-100.png
diff --git a/Examples/UWA.SimpleGraph/Assets/SplashScreen.scale-200.png b/Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-200.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/SplashScreen.scale-200.png
rename to Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-200.png
diff --git a/Examples/METRO.SimpleGraph/Assets/StoreLogo.png b/Examples/UAP.SimpleGraph/Assets/StoreLogo.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/StoreLogo.png
rename to Examples/UAP.SimpleGraph/Assets/StoreLogo.png
diff --git a/Examples/UWA.SimpleGraph/Assets/newlogo_big.png b/Examples/UAP.SimpleGraph/Assets/newlogo_big.png
similarity index 100%
rename from Examples/UWA.SimpleGraph/Assets/newlogo_big.png
rename to Examples/UAP.SimpleGraph/Assets/newlogo_big.png
diff --git a/Examples/METRO.SimpleGraph/Assets/play.png b/Examples/UAP.SimpleGraph/Assets/play.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/play.png
rename to Examples/UAP.SimpleGraph/Assets/play.png
diff --git a/Examples/METRO.SimpleGraph/Assets/refresh.png b/Examples/UAP.SimpleGraph/Assets/refresh.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/refresh.png
rename to Examples/UAP.SimpleGraph/Assets/refresh.png
diff --git a/Examples/METRO.SimpleGraph/Assets/tr_grren.png b/Examples/UAP.SimpleGraph/Assets/tr_grren.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/tr_grren.png
rename to Examples/UAP.SimpleGraph/Assets/tr_grren.png
diff --git a/Examples/METRO.SimpleGraph/Assets/tr_red.png b/Examples/UAP.SimpleGraph/Assets/tr_red.png
similarity index 100%
rename from Examples/METRO.SimpleGraph/Assets/tr_red.png
rename to Examples/UAP.SimpleGraph/Assets/tr_red.png
diff --git a/Examples/METRO.SimpleGraph/Common/StandardStyles.xaml b/Examples/UAP.SimpleGraph/Common/StandardStyles.xaml
similarity index 100%
rename from Examples/METRO.SimpleGraph/Common/StandardStyles.xaml
rename to Examples/UAP.SimpleGraph/Common/StandardStyles.xaml
diff --git a/Examples/METRO.SimpleGraph/Common/templates.xaml b/Examples/UAP.SimpleGraph/Common/templates.xaml
similarity index 100%
rename from Examples/METRO.SimpleGraph/Common/templates.xaml
rename to Examples/UAP.SimpleGraph/Common/templates.xaml
diff --git a/Examples/METRO.SimpleGraph/Common/templates2.xaml b/Examples/UAP.SimpleGraph/Common/templates2.xaml
similarity index 100%
rename from Examples/METRO.SimpleGraph/Common/templates2.xaml
rename to Examples/UAP.SimpleGraph/Common/templates2.xaml
diff --git a/Examples/METRO.SimpleGraph/MainPage.xaml b/Examples/UAP.SimpleGraph/MainPage.xaml
similarity index 90%
rename from Examples/METRO.SimpleGraph/MainPage.xaml
rename to Examples/UAP.SimpleGraph/MainPage.xaml
index 32e6496e..d4be275b 100644
--- a/Examples/METRO.SimpleGraph/MainPage.xaml
+++ b/Examples/UAP.SimpleGraph/MainPage.xaml
@@ -1,16 +1,15 @@
-
+
@@ -18,7 +17,7 @@
-
+
diff --git a/Examples/METRO.SimpleGraph/MainPage.xaml.cs b/Examples/UAP.SimpleGraph/MainPage.xaml.cs
similarity index 99%
rename from Examples/METRO.SimpleGraph/MainPage.xaml.cs
rename to Examples/UAP.SimpleGraph/MainPage.xaml.cs
index bbb1ce4c..6200cb3a 100644
--- a/Examples/METRO.SimpleGraph/MainPage.xaml.cs
+++ b/Examples/UAP.SimpleGraph/MainPage.xaml.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Linq;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@@ -12,10 +11,11 @@
using GraphX.PCL.Common.Enums;
using GraphX.PCL.Logic.Algorithms.LayoutAlgorithms;
using GraphX.PCL.Logic.Algorithms.OverlapRemoval;
+using UAP.SimpleGraph.Models;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph
{
///
/// An empty page that can be used on its own or navigated to within a Frame.
diff --git a/Examples/METRO.SimpleGraph/MainPageDebug.xaml b/Examples/UAP.SimpleGraph/MainPageDebug.xaml
similarity index 94%
rename from Examples/METRO.SimpleGraph/MainPageDebug.xaml
rename to Examples/UAP.SimpleGraph/MainPageDebug.xaml
index b542e457..abbf9eff 100644
--- a/Examples/METRO.SimpleGraph/MainPageDebug.xaml
+++ b/Examples/UAP.SimpleGraph/MainPageDebug.xaml
@@ -1,11 +1,12 @@
@@ -16,7 +17,7 @@
-
+
diff --git a/Examples/METRO.SimpleGraph/MainPageDebug.xaml.cs b/Examples/UAP.SimpleGraph/MainPageDebug.xaml.cs
similarity index 98%
rename from Examples/METRO.SimpleGraph/MainPageDebug.xaml.cs
rename to Examples/UAP.SimpleGraph/MainPageDebug.xaml.cs
index c7a821e1..91199cee 100644
--- a/Examples/METRO.SimpleGraph/MainPageDebug.xaml.cs
+++ b/Examples/UAP.SimpleGraph/MainPageDebug.xaml.cs
@@ -4,19 +4,17 @@
using System.Linq;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Navigation;
-using GraphX.Controls;
using GraphX.Controls.Animations;
using GraphX.Controls.Models;
using GraphX.PCL.Common.Enums;
using GraphX.PCL.Logic.Algorithms.LayoutAlgorithms;
using GraphX.PCL.Logic.Algorithms.OverlapRemoval;
-using METRO.SimpleGraph.Models;
+using UAP.SimpleGraph.Models;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph
{
///
/// An empty page that can be used on its own or navigated to within a Frame.
diff --git a/Examples/METRO.SimpleGraph/Models/CurvedEr.cs b/Examples/UAP.SimpleGraph/Models/CurvedEr.cs
similarity index 97%
rename from Examples/METRO.SimpleGraph/Models/CurvedEr.cs
rename to Examples/UAP.SimpleGraph/Models/CurvedEr.cs
index 00a5552f..af4a1488 100644
--- a/Examples/METRO.SimpleGraph/Models/CurvedEr.cs
+++ b/Examples/UAP.SimpleGraph/Models/CurvedEr.cs
@@ -1,13 +1,11 @@
using System;
using System.Collections.Generic;
using System.Threading;
-using GraphX;
using GraphX.Measure;
using GraphX.PCL.Common.Interfaces;
using GraphX.PCL.Logic.Algorithms.EdgeRouting;
-using METRO.SimpleGraph;
-namespace InteractiveGraph.Models
+namespace UAP.SimpleGraph.Models
{
public class CurvedEr: EdgeRoutingAlgorithmBase
{
diff --git a/Examples/METRO.SimpleGraph/Models/CurvedErParameters.cs b/Examples/UAP.SimpleGraph/Models/CurvedErParameters.cs
similarity index 90%
rename from Examples/METRO.SimpleGraph/Models/CurvedErParameters.cs
rename to Examples/UAP.SimpleGraph/Models/CurvedErParameters.cs
index 13e620ff..d211ce51 100644
--- a/Examples/METRO.SimpleGraph/Models/CurvedErParameters.cs
+++ b/Examples/UAP.SimpleGraph/Models/CurvedErParameters.cs
@@ -1,6 +1,6 @@
using GraphX.PCL.Logic.Algorithms.EdgeRouting;
-namespace InteractiveGraph.Models
+namespace UAP.SimpleGraph.Models
{
public class CurvedErParameters: EdgeRoutingParameters
{
diff --git a/Examples/METRO.SimpleGraph/Models/DataEdge.cs b/Examples/UAP.SimpleGraph/Models/DataEdge.cs
similarity index 98%
rename from Examples/METRO.SimpleGraph/Models/DataEdge.cs
rename to Examples/UAP.SimpleGraph/Models/DataEdge.cs
index bf164fa9..08599a7e 100644
--- a/Examples/METRO.SimpleGraph/Models/DataEdge.cs
+++ b/Examples/UAP.SimpleGraph/Models/DataEdge.cs
@@ -1,8 +1,7 @@
using System.ComponentModel;
-using GraphX;
using GraphX.PCL.Common.Models;
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph.Models
{
/* DataEdge is the data class for the edges. It contains all custom edge data specified by the user.
* This class also must be derived from EdgeBase class that provides properties and methods mandatory for
diff --git a/Examples/METRO.SimpleGraph/Models/DataVertex.cs b/Examples/UAP.SimpleGraph/Models/DataVertex.cs
similarity index 98%
rename from Examples/METRO.SimpleGraph/Models/DataVertex.cs
rename to Examples/UAP.SimpleGraph/Models/DataVertex.cs
index 550b30a5..ac95b667 100644
--- a/Examples/METRO.SimpleGraph/Models/DataVertex.cs
+++ b/Examples/UAP.SimpleGraph/Models/DataVertex.cs
@@ -1,8 +1,7 @@
using System.ComponentModel;
-using GraphX;
using GraphX.PCL.Common.Models;
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph.Models
{
/* DataVertex is the data class for the vertices. It contains all custom vertex data specified by the user.
* This class also must be derived from VertexBase that provides properties and methods mandatory for
diff --git a/Examples/METRO.SimpleGraph/Models/DebugItems.cs b/Examples/UAP.SimpleGraph/Models/DebugItems.cs
similarity index 73%
rename from Examples/METRO.SimpleGraph/Models/DebugItems.cs
rename to Examples/UAP.SimpleGraph/Models/DebugItems.cs
index 9c419706..1f77b8bb 100644
--- a/Examples/METRO.SimpleGraph/Models/DebugItems.cs
+++ b/Examples/UAP.SimpleGraph/Models/DebugItems.cs
@@ -1,4 +1,4 @@
-namespace METRO.SimpleGraph.Models
+namespace UAP.SimpleGraph.Models
{
public enum DebugItems
{
diff --git a/Examples/METRO.SimpleGraph/Models/GXLogicCoreExample.cs b/Examples/UAP.SimpleGraph/Models/GXLogicCoreExample.cs
similarity index 89%
rename from Examples/METRO.SimpleGraph/Models/GXLogicCoreExample.cs
rename to Examples/UAP.SimpleGraph/Models/GXLogicCoreExample.cs
index 33bdd289..7d4b8328 100644
--- a/Examples/METRO.SimpleGraph/Models/GXLogicCoreExample.cs
+++ b/Examples/UAP.SimpleGraph/Models/GXLogicCoreExample.cs
@@ -1,7 +1,7 @@
using GraphX.PCL.Logic.Models;
using QuickGraph;
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph.Models
{
///
/// Logics core object which contains all algorithms and logic settings
diff --git a/Examples/METRO.SimpleGraph/Models/GraphAreaExample.cs b/Examples/UAP.SimpleGraph/Models/GraphAreaExample.cs
similarity index 92%
rename from Examples/METRO.SimpleGraph/Models/GraphAreaExample.cs
rename to Examples/UAP.SimpleGraph/Models/GraphAreaExample.cs
index e3152815..6ad022e9 100644
--- a/Examples/METRO.SimpleGraph/Models/GraphAreaExample.cs
+++ b/Examples/UAP.SimpleGraph/Models/GraphAreaExample.cs
@@ -1,8 +1,7 @@
-using GraphX;
using GraphX.Controls;
using QuickGraph;
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph.Models
{
///
/// This is custom GraphArea representation using custom data types.
diff --git a/Examples/METRO.SimpleGraph/Models/GraphExample.cs b/Examples/UAP.SimpleGraph/Models/GraphExample.cs
similarity index 94%
rename from Examples/METRO.SimpleGraph/Models/GraphExample.cs
rename to Examples/UAP.SimpleGraph/Models/GraphExample.cs
index 8fc216ae..376f3977 100644
--- a/Examples/METRO.SimpleGraph/Models/GraphExample.cs
+++ b/Examples/UAP.SimpleGraph/Models/GraphExample.cs
@@ -1,6 +1,6 @@
using QuickGraph;
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph.Models
{
///
/// This is our custom data graph derived from BidirectionalGraph class using custom data types.
diff --git a/Examples/METRO.SimpleGraph/Models/MouseOverScaleAnimation.cs b/Examples/UAP.SimpleGraph/Models/MouseOverScaleAnimation.cs
similarity index 98%
rename from Examples/METRO.SimpleGraph/Models/MouseOverScaleAnimation.cs
rename to Examples/UAP.SimpleGraph/Models/MouseOverScaleAnimation.cs
index 6fb03090..16477580 100644
--- a/Examples/METRO.SimpleGraph/Models/MouseOverScaleAnimation.cs
+++ b/Examples/UAP.SimpleGraph/Models/MouseOverScaleAnimation.cs
@@ -1,13 +1,12 @@
-using Windows.Foundation;
+using System;
+using Windows.Foundation;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Animation;
-using GraphX;
-using System;
using GraphX.Controls;
using GraphX.Controls.Animations;
-namespace METRO.SimpleGraph
+namespace UAP.SimpleGraph.Models
{
public sealed class MouseOverAnimation : IBidirectionalControlAnimation
{
diff --git a/Examples/UWA.SimpleGraph/Package.appxmanifest b/Examples/UAP.SimpleGraph/Package.appxmanifest
similarity index 87%
rename from Examples/UWA.SimpleGraph/Package.appxmanifest
rename to Examples/UAP.SimpleGraph/Package.appxmanifest
index 72e87f45..d9e4dafb 100644
--- a/Examples/UWA.SimpleGraph/Package.appxmanifest
+++ b/Examples/UAP.SimpleGraph/Package.appxmanifest
@@ -3,7 +3,7 @@
- UWA.SimpleGraph
+ UAP.SimpleGraph
panth
Assets/50.png
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/Examples/UWA.SimpleGraph/Properties/AssemblyInfo.cs b/Examples/UAP.SimpleGraph/Properties/AssemblyInfo.cs
similarity index 100%
rename from Examples/UWA.SimpleGraph/Properties/AssemblyInfo.cs
rename to Examples/UAP.SimpleGraph/Properties/AssemblyInfo.cs
diff --git a/Examples/UWA.SimpleGraph/Properties/Default.rd.xml b/Examples/UAP.SimpleGraph/Properties/Default.rd.xml
similarity index 100%
rename from Examples/UWA.SimpleGraph/Properties/Default.rd.xml
rename to Examples/UAP.SimpleGraph/Properties/Default.rd.xml
diff --git a/Examples/UWA.SimpleGraph/UWA.SimpleGraph.csproj b/Examples/UAP.SimpleGraph/UAP.SimpleGraph.csproj
similarity index 67%
rename from Examples/UWA.SimpleGraph/UWA.SimpleGraph.csproj
rename to Examples/UAP.SimpleGraph/UAP.SimpleGraph.csproj
index 1c809225..54f4c03e 100644
--- a/Examples/UWA.SimpleGraph/UWA.SimpleGraph.csproj
+++ b/Examples/UAP.SimpleGraph/UAP.SimpleGraph.csproj
@@ -7,11 +7,11 @@
{51C7122B-AAD1-4C49-B2E9-1B09B367952F}
AppContainerExe
Properties
- METRO.SimpleGraph
- UWA.SimpleGraph
+ UAP.SimpleGraph
+ UAP.SimpleGraph
en-US
UAP
- 10.0.10586.0
+ 10.0.14393.0
10.0.10586.0
14
512
@@ -91,47 +91,26 @@
-
-
- MainPage.xaml.cs
+
+ App.xaml
+
+
MainPage.xaml
-
- MainPageDebug.xaml.cs
+
MainPageDebug.xaml
-
- Models\CurvedEr.cs
-
-
- Models\CurvedErParameters.cs
-
-
- Models\DataEdge.cs
-
-
- Models\DataVertex.cs
-
-
- Models\DebugItems.cs
-
-
- Models\GraphAreaExample.cs
-
-
- Models\GraphExample.cs
-
-
- Models\GXLogicCoreExample.cs
-
-
- Models\MouseOverScaleAnimation.cs
-
-
- App.xaml
-
+
+
+
+
+
+
+
+
+
@@ -140,37 +119,20 @@
-
- Assets\Logo.png
-
-
- Assets\MidLogo.png
-
-
- Assets\play.png
-
-
- Assets\refresh.png
-
-
- Assets\SmallLogo.png
-
-
- Assets\SplashScreen.png
-
-
- Assets\StoreLogo.png
-
-
- Assets\tr_grren.png
-
-
- Assets\tr_red.png
-
+
+
+
+
+
+
+
+
+
+
@@ -178,37 +140,28 @@
MSBuild:Compile
Designer
-
- Common\StandardStyles.xaml
+
MSBuild:Compile
Designer
-
- Common\templates.xaml
+
MSBuild:Compile
Designer
-
- Common\templates2.xaml
+
MSBuild:Compile
Designer
-
- MainPage.xaml
+
MSBuild:Compile
Designer
-
- MainPageDebug.xaml
+
MSBuild:Compile
Designer
-
- {66f33708-c1c7-4385-8235-7201784d184c}
- GraphX.METRO.Controls
-
{3644d44b-dec0-4b65-bba0-c68e34821aae}
GraphX.PCL.Common
@@ -217,6 +170,10 @@
{a30d218b-aaa4-483a-99f7-eaeb1b8b4610}
GraphX.PCL.Logic
+
+ {4bebc41e-2710-4613-80b1-198e08d10619}
+ GraphX.UAP.Controls
+
@@ -226,7 +183,8 @@
true
- UWA.SimpleGraph_TemporaryKey.pfx
+
+
@@ -352,8 +353,8 @@
True
-
- 12.0
+
+ 14.0
true
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Converters/DoubleToLog10Converter.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/DoubleToLog10Converter.cs
new file mode 100644
index 00000000..4088bde2
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/DoubleToLog10Converter.cs
@@ -0,0 +1,26 @@
+using System;
+using Windows.UI.Xaml.Data;
+
+namespace GraphX.Controls
+{
+ public sealed class DoubleToLog10Converter : IValueConverter
+ {
+ #region IValueConverter Members
+
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ var val = Math.Log10((double)value);
+ return double.IsNegativeInfinity(val) ? 0 : val;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ var val = Math.Pow(10, (double)value);
+ return double.IsNegativeInfinity(val) ? 0 : val;
+ }
+
+ #endregion
+
+
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Converters/EqualityToBooleanConverter.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/EqualityToBooleanConverter.cs
new file mode 100644
index 00000000..15969238
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/EqualityToBooleanConverter.cs
@@ -0,0 +1,22 @@
+using System;
+using Windows.UI.Xaml.Data;
+
+namespace GraphX.Controls
+{
+ public sealed class EqualityToBooleanConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ return Equals(value, parameter);
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ if ((bool)value)
+ return parameter;
+
+ //it's false, so don't bind it back
+ return null;
+ }
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Converters/RoundedValueConverter.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/RoundedValueConverter.cs
new file mode 100644
index 00000000..25d796c3
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/RoundedValueConverter.cs
@@ -0,0 +1,64 @@
+/*************************************************************************************
+
+ Extended WPF Toolkit
+
+ Copyright (C) 2007-2013 Xceed Software Inc.
+
+ This program is provided to you under the terms of the Microsoft Public
+ License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
+
+ For more features, controls, and fast professional support,
+ pick up the Plus Edition at http://xceed.com/wpf_toolkit
+
+ Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
+
+ ***********************************************************************************/
+
+using System;
+using Windows.Foundation;
+using Windows.UI.Xaml.Data;
+
+namespace GraphX.Controls
+{
+ public class RoundedValueConverter : IValueConverter
+ {
+ #region Precision Property
+
+ public int Precision
+ {
+ get
+ {
+ return _precision;
+ }
+ set
+ {
+ _precision = value;
+ }
+ }
+
+ private int _precision = 0;
+
+ #endregion
+
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ if( value is double )
+ {
+ return Math.Round( ( double )value, _precision );
+ }
+ else if( value is Point )
+ {
+ return new Point( Math.Round( ( ( Point )value ).X, _precision ), Math.Round( ( ( Point )value ).Y, _precision ) );
+ }
+ else
+ {
+ return value;
+ }
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ return value;
+ }
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Converters/VisibilityToBoolConverter.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/VisibilityToBoolConverter.cs
new file mode 100644
index 00000000..ce7a4720
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Converters/VisibilityToBoolConverter.cs
@@ -0,0 +1,55 @@
+/*************************************************************************************
+
+ Extended WPF Toolkit
+
+ Copyright (C) 2007-2013 Xceed Software Inc.
+
+ This program is provided to you under the terms of the Microsoft Public
+ License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
+
+ For more features, controls, and fast professional support,
+ pick up the Plus Edition at http://xceed.com/wpf_toolkit
+
+ Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
+
+ ***********************************************************************************/
+
+using System;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Data;
+
+namespace GraphX.Controls
+ {
+ [Bindable]
+ public sealed class VisibilityToBoolConverter : IValueConverter
+ {
+ public bool Inverted { get; set; }
+ public bool Not { get; set; }
+
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ return this.Inverted ? this.BoolToVisibility( value ) : this.VisibilityToBool( value );
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ return this.Inverted ? this.VisibilityToBool( value ) : this.BoolToVisibility( value );
+ }
+
+ private object VisibilityToBool( object value )
+ {
+ if( !( value is Visibility ) )
+ throw new InvalidOperationException( "SuppliedValueWasNotVisibility" );
+
+ return ( ( ( Visibility )value ) == Visibility.Visible ) ^ Not;
+ }
+
+ private object BoolToVisibility( object value )
+ {
+ if( !( value is bool ) )
+ throw new InvalidOperationException( "SuppliedValueWasNotBool" );
+
+ return ( ( bool )value ^ Not ) ? Visibility.Visible : Visibility.Collapsed;
+ }
+ }
+ }
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/DoubleHelper.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/DoubleHelper.cs
new file mode 100644
index 00000000..88c8ad16
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/DoubleHelper.cs
@@ -0,0 +1,94 @@
+/*************************************************************************************
+
+ Extended WPF Toolkit
+
+ Copyright (C) 2007-2013 Xceed Software Inc.
+
+ This program is provided to you under the terms of the Microsoft Public
+ License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
+
+ For more features, controls, and fast professional support,
+ pick up the Plus Edition at http://xceed.com/wpf_toolkit
+
+ Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
+
+ ***********************************************************************************/
+
+using System;
+using System.Runtime.InteropServices;
+using GraphX.Measure;
+using Point = Windows.Foundation.Point;
+using Rect = Windows.Foundation.Rect;
+using Size = Windows.Foundation.Size;
+
+namespace GraphX.Controls
+{
+ internal static class DoubleHelper
+ {
+ public static bool AreVirtuallyEqual( double d1, double d2 )
+ {
+ if( double.IsPositiveInfinity( d1 ) )
+ return double.IsPositiveInfinity( d2 );
+
+ if( double.IsNegativeInfinity( d1 ) )
+ return double.IsNegativeInfinity( d2 );
+
+ if( IsNaN( d1 ) )
+ return IsNaN( d2 );
+
+ var n = d1 - d2;
+ var d = ( Math.Abs( d1 ) + Math.Abs( d2 ) + 10 ) * 1.0e-15;
+ return ( -d < n ) && ( d > n );
+ }
+
+ public static bool AreVirtuallyEqual( Size s1, Size s2 )
+ {
+ return ( AreVirtuallyEqual( s1.Width, s2.Width )
+ && AreVirtuallyEqual( s1.Height, s2.Height ) );
+ }
+
+ public static bool AreVirtuallyEqual( Point p1, Point p2 )
+ {
+ return ( AreVirtuallyEqual( p1.X, p2.X )
+ && AreVirtuallyEqual( p1.Y, p2.Y ) );
+ }
+
+ public static bool AreVirtuallyEqual( Rect r1, Rect r2 )
+ {
+ return ( AreVirtuallyEqual( r1.TopLeft(), r2.TopLeft() )
+ && AreVirtuallyEqual( r1.BottomRight(), r2.BottomRight() ) );
+ }
+
+ public static bool AreVirtuallyEqual( Vector v1, Vector v2 )
+ {
+ return ( AreVirtuallyEqual( v1.X, v2.X )
+ && AreVirtuallyEqual( v1.Y, v2.Y ) );
+ }
+
+
+ public static bool IsNaN( double value )
+ {
+ // used reflector to borrow the high performance IsNan function
+ // from the WPF MS.Internal namespace
+ var t = new NanUnion {DoubleValue = value};
+
+ var exp = t.UintValue & 0xfff0000000000000;
+ var man = t.UintValue & 0x000fffffffffffff;
+
+ return ( exp == 0x7ff0000000000000 || exp == 0xfff0000000000000 ) && ( man != 0 );
+ }
+
+ #region NanUnion Nested Types
+
+ [StructLayout( LayoutKind.Explicit )]
+ private struct NanUnion
+ {
+ [FieldOffset( 0 )]
+ internal double DoubleValue;
+ [FieldOffset( 0 )]
+ internal UInt64 UintValue;
+ }
+
+ #endregion
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/PointHelper.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/PointHelper.cs
new file mode 100644
index 00000000..147a1408
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/PointHelper.cs
@@ -0,0 +1,42 @@
+/*************************************************************************************
+
+ Extended WPF Toolkit
+
+ Copyright (C) 2007-2013 Xceed Software Inc.
+
+ This program is provided to you under the terms of the Microsoft Public
+ License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
+
+ For more features, controls, and fast professional support,
+ pick up the Plus Edition at http://xceed.com/wpf_toolkit
+
+ Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
+
+ ***********************************************************************************/
+
+using System;
+using Windows.Foundation;
+
+namespace GraphX.Controls
+{
+ internal static class PointHelper
+ {
+ public static double DistanceBetween( Point p1, Point p2 )
+ {
+ return Math.Sqrt( Math.Pow( p1.X - p2.X, 2 ) + Math.Pow( p1.Y - p2.Y, 2 ) );
+ }
+
+ public static Point Empty
+ {
+ get
+ {
+ return new Point( double.NaN, double.NaN );
+ }
+ }
+
+ public static bool IsEmpty( Point point )
+ {
+ return DoubleHelper.IsNaN( point.X ) && DoubleHelper.IsNaN( point.Y );
+ }
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/VisualTreeHelperEx.cs b/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/VisualTreeHelperEx.cs
new file mode 100644
index 00000000..2ed5b64e
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/Helpers/VisualTreeHelperEx.cs
@@ -0,0 +1,157 @@
+/*************************************************************************************
+
+ Extended WPF Toolkit
+
+ Copyright (C) 2007-2013 Xceed Software Inc.
+
+ This program is provided to you under the terms of the Microsoft Public
+ License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
+
+ For more features, controls, and fast professional support,
+ pick up the Plus Edition at http://xceed.com/wpf_toolkit
+
+ Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
+
+ ***********************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Media;
+
+namespace GraphX.Controls
+{
+ public static class VisualTreeHelperEx
+ {
+ public static DependencyObject FindAncestorByType(DependencyObject element, Type type, bool specificTypeOnly)
+ {
+ if (element == null)
+ return null;
+
+ if (element.GetType() == type)
+ return element;
+
+ return FindAncestorByType(VisualTreeHelper.GetParent(element), type, specificTypeOnly);
+ }
+
+ public static T FindAncestorByType(DependencyObject depObj) where T : DependencyObject
+ {
+ if (depObj == null)
+ {
+ return default(T);
+ }
+ if (depObj is T)
+ {
+ return (T) depObj;
+ }
+
+ T parent = default(T);
+
+ parent = FindAncestorByType(VisualTreeHelper.GetParent(depObj));
+
+ return parent;
+ }
+
+ public static UIElement FindDescendantByName(UIElement element, string name)
+ {
+ if (element != null && (element is FrameworkElement) && (element as FrameworkElement).Name == name)
+ return element;
+
+ UIElement foundElement = null;
+ if (element is FrameworkElement)
+ (element as FrameworkElement).InvalidateArrange();
+
+ for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
+ {
+ var visual = VisualTreeHelper.GetChild(element, i) as UIElement;
+ foundElement = FindDescendantByName(visual, name);
+ if (foundElement != null)
+ break;
+ }
+
+ return foundElement;
+ }
+
+ public static UIElement FindDescendantByType(UIElement element, Type type)
+ {
+ return FindDescendantByType(element, type, true);
+ }
+
+ public static UIElement FindDescendantByType(UIElement element, Type type, bool specificTypeOnly)
+ {
+ if (element == null)
+ return null;
+
+ if (element.GetType() == type)
+ return element;
+
+ UIElement foundElement = null;
+ if (element is FrameworkElement)
+ (element as FrameworkElement).InvalidateArrange();
+
+ for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
+ {
+ var visual = VisualTreeHelper.GetChild(element, i) as UIElement;
+ foundElement = FindDescendantByType(visual, type, specificTypeOnly);
+ if (foundElement != null)
+ break;
+ }
+
+ return foundElement;
+ }
+
+ public static T FindDescendantByType(UIElement element) where T : UIElement
+ {
+ UIElement temp = FindDescendantByType(element, typeof (T));
+
+ return (T) temp;
+ }
+
+ public static UIElement FindDescendantWithPropertyValue(UIElement element,
+ DependencyProperty dp, object value)
+ {
+ if (element == null)
+ return null;
+
+ if (element.GetValue(dp).Equals(value))
+ return element;
+
+ UIElement foundElement = null;
+ if (element is FrameworkElement)
+ (element as FrameworkElement).InvalidateArrange();
+
+ for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
+ {
+ var visual = VisualTreeHelper.GetChild(element, i) as UIElement;
+ foundElement = FindDescendantWithPropertyValue(visual, dp, value);
+ if (foundElement != null)
+ break;
+ }
+
+ return foundElement;
+ }
+
+ #region Find descendants of type
+
+ public static IEnumerable FindDescendantsOfType(this UIElement element) where T : class
+ {
+ if (element == null) yield break;
+ if (element is T)
+ yield return element as T;
+
+ var frameworkElement = element as FrameworkElement;
+ if (frameworkElement != null)
+ frameworkElement.InvalidateArrange();
+
+ for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
+ {
+ var visual = VisualTreeHelper.GetChild(element, i) as UIElement;
+ if (visual == null) continue;
+ foreach (var item in visual.FindDescendantsOfType())
+ yield return item;
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventArgs.cs b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventArgs.cs
new file mode 100644
index 00000000..ee26582a
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventArgs.cs
@@ -0,0 +1,19 @@
+using System;
+using Windows.Foundation;
+
+namespace GraphX.Controls
+{
+ public class AreaSelectedEventArgs : EventArgs
+ {
+ ///
+ /// Rectangle data in coordinates of content object
+ ///
+ public Rect Rectangle { get; set; }
+
+ public AreaSelectedEventArgs(Rect rec)
+ : base()
+ {
+ Rectangle = rec;
+ }
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventHandler.cs b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventHandler.cs
new file mode 100644
index 00000000..3fefb99c
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventHandler.cs
@@ -0,0 +1,4 @@
+namespace GraphX.Controls
+{
+ public delegate void AreaSelectedEventHandler(object sender, AreaSelectedEventArgs args);
+}
\ No newline at end of file
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ContentSizeChangedHandler.cs b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ContentSizeChangedHandler.cs
new file mode 100644
index 00000000..d4b0f59e
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ContentSizeChangedHandler.cs
@@ -0,0 +1,6 @@
+using Windows.Foundation;
+
+namespace GraphX.Controls
+{
+ public delegate void ContentSizeChangedHandler(object sender, Size newSize);
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/MouseWheelZoomingMode.cs b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/MouseWheelZoomingMode.cs
new file mode 100644
index 00000000..ff8de5b0
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/MouseWheelZoomingMode.cs
@@ -0,0 +1,8 @@
+namespace GraphX.Controls
+{
+ public enum MouseWheelZoomingMode
+ {
+ Positional = 0,
+ Absolute
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomControlModes.cs b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomControlModes.cs
new file mode 100644
index 00000000..4700483f
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomControlModes.cs
@@ -0,0 +1,20 @@
+namespace GraphX.Controls
+{
+ public enum ZoomControlModes
+ {
+ ///
+ /// The content should fill the given space.
+ ///
+ Fill,
+
+ ///
+ /// The content will be represented in its original size.
+ ///
+ Original,
+
+ ///
+ /// The content will be zoomed with a custom percent.
+ ///
+ Custom
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomViewModifierMode.cs b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomViewModifierMode.cs
new file mode 100644
index 00000000..36db13c5
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomViewModifierMode.cs
@@ -0,0 +1,30 @@
+namespace GraphX.Controls
+{
+ public enum ZoomViewModifierMode
+ {
+ ///
+ /// It does nothing at all.
+ ///
+ None,
+
+ ///
+ /// You can pan the view with the mouse in this mode.
+ ///
+ Pan,
+
+ ///
+ /// You can zoom in with the mouse in this mode.
+ ///
+ ZoomIn,
+
+ ///
+ /// You can zoom out with the mouse in this mode.
+ ///
+ ZoomOut,
+
+ ///
+ /// Zooming after the user has been selected the zooming box.
+ ///
+ ZoomBox
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/ZoomContentPresenter.cs b/GraphX.UAP.Controls/Controls/ZoomControl/ZoomContentPresenter.cs
new file mode 100644
index 00000000..3ff94303
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/ZoomContentPresenter.cs
@@ -0,0 +1,71 @@
+using System.ComponentModel;
+using Windows.Foundation;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Media;
+
+namespace GraphX.Controls
+{
+ [Bindable]
+ public sealed class ZCP : ContentPresenter, INotifyPropertyChanged
+ {
+ public event ContentSizeChangedHandler ContentSizeChanged;
+
+ private Size _contentSize;
+
+ /* public Point ContentTopLeft { get; private set; }
+ public Point ContentBottomRight { get; private set; }
+ public Point ContentActualSize { get; private set; }
+ */
+ public Size ContentSize
+ {
+ get { return _contentSize; }
+ private set {
+ if (value == _contentSize)
+ return;
+
+ _contentSize = value;
+ if (ContentSizeChanged != null)
+ ContentSizeChanged(this, _contentSize);
+ }
+ }
+
+ protected override Size MeasureOverride(Size constraint)
+ {
+ base.MeasureOverride(new Size(double.PositiveInfinity, double.PositiveInfinity));
+ var max = 1000000000;
+ var x = double.IsInfinity(constraint.Width) ? max : constraint.Width;
+ var y = double.IsInfinity(constraint.Height) ? max : constraint.Height;
+ return new Size(x, y);
+ }
+
+ protected override Size ArrangeOverride(Size arrangeBounds)
+ {
+ UIElement child = Content != null
+ ? VisualTreeHelper.GetChild(this, 0) as UIElement
+ : null;
+ if (child == null)
+ return arrangeBounds;
+
+ //set the ContentSize
+ ContentSize = child.DesiredSize;
+ child.Arrange(new Rect(new Point(),child.DesiredSize));
+ /* if (child is GraphAreaBase)
+ {
+ ContentBottomRight = (child as GraphAreaBase).BottomRight;
+ ContentTopLeft = (child as GraphAreaBase).TopLeft;
+ ContentActualSize = new Point((child as GraphAreaBase).ActualWidth, (child as GraphAreaBase).ActualHeight);
+ }*/
+
+ return arrangeBounds;
+ }
+
+ public event PropertyChangedEventHandler PropertyChanged;
+ public void OnPropertyChanged(string name)
+ {
+ if (PropertyChanged != null)
+ PropertyChanged(this, new PropertyChangedEventArgs(name));
+ }
+ }
+}
diff --git a/GraphX.UAP.Controls/Controls/ZoomControl/ZoomControl.cs b/GraphX.UAP.Controls/Controls/ZoomControl/ZoomControl.cs
new file mode 100644
index 00000000..904aa92f
--- /dev/null
+++ b/GraphX.UAP.Controls/Controls/ZoomControl/ZoomControl.cs
@@ -0,0 +1,911 @@
+using System;
+using System.ComponentModel;
+using Windows.ApplicationModel;
+using Windows.System;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Animation;
+using GraphX.Measure;
+using GraphX.Controls.Models;
+using Point = Windows.Foundation.Point;
+using Rect = Windows.Foundation.Rect;
+using Thickness = Windows.UI.Xaml.Thickness;
+
+namespace GraphX.Controls
+{
+ [TemplatePart(Name = PART_PRESENTER, Type = typeof(ZCP))]
+ public class ZoomControl : ContentControl, IZoomControl, INotifyPropertyChanged
+ {
+
+ #region Properties
+
+ #region ViewFinderVisibility Attached Property
+
+ public static readonly DependencyProperty ViewFinderVisibilityProperty =
+ DependencyProperty.RegisterAttached("ViewFinderVisibility", typeof(Visibility), typeof(ZoomControl),
+ new PropertyMetadata(Visibility.Visible));
+
+ public static Visibility GetViewFinderVisibility(DependencyObject d)
+ {
+ return (Visibility)(d.GetValue(ViewFinderVisibilityProperty));
+ }
+
+ public static void SetViewFinderVisibility(DependencyObject d, Visibility value)
+ {
+ d.SetValue(ViewFinderVisibilityProperty, value);
+ }
+
+ #endregion
+
+ public DelegateCommand