├── GraphX.Controls
├── .gitignore
├── Images
│ └── help_black.png
├── packages.config
├── Models
│ ├── RemoveControlEventHandler.cs
│ ├── VertexPositionChangedEH.cs
│ ├── EdgeSelectedEventHandler.cs
│ ├── VertexSelectedEventHandler.cs
│ ├── ControlEventArgs.cs
│ ├── VertexMovedEventArgs.cs
│ ├── Interfaces
│ │ ├── IGraphControlFactory.cs
│ │ ├── IAttachableControl.cs
│ │ └── ILabelFactory.cs
│ ├── VertexSelectedEventArgs.cs
│ ├── ContentSizeChangedEventHandler.cs
│ ├── VertexPositionEventArgs.cs
│ ├── EdgeSelectedEventArgs.cs
│ ├── ControlClickedEventArgs.cs
│ ├── GraphControlFactory.cs
│ └── DefaultLabelFactory.cs
├── Controls
│ ├── ZoomControl
│ │ ├── SupportClasses
│ │ │ ├── AreaSelectedEventHandler.cs
│ │ │ ├── MouseWheelZoomingMode.cs
│ │ │ ├── ContentSizeChangedHandler.cs
│ │ │ ├── AreaSelectedEventArgs.cs
│ │ │ ├── ZoomControlModes.cs
│ │ │ └── ZoomViewModifierMode.cs
│ │ ├── Converters
│ │ │ ├── EqualityToBooleanConverter.cs
│ │ │ ├── DoubleToLog10Converter.cs
│ │ │ └── GeometryToPathGeometryConverter.cs
│ │ └── Helpers
│ │ │ └── PointHelper.cs
│ └── Misc
│ │ ├── EdgeDashStyle.cs
│ │ ├── IGraphArea.cs
│ │ ├── ControlDrawOrder.cs
│ │ ├── LogicCoreChangedAction.cs
│ │ ├── IGraphAreaBase.cs
│ │ ├── IVertexLabelControl.cs
│ │ ├── IPositionChangeNotify.cs
│ │ ├── IZoomControl.cs
│ │ ├── IGraphControl.cs
│ │ ├── ITrackableContent.cs
│ │ ├── IVertexConnectionPoint.cs
│ │ └── IEdgeLabelControl.cs
├── Animations
│ ├── Enums
│ │ ├── MouseOverAnimation.cs
│ │ ├── MoveAnimation.cs
│ │ └── DeleteAnimation.cs
│ └── Interfaces
│ │ ├── IBidirectionalControlAnimation.cs
│ │ └── IOneWayControlAnimation.cs
├── DesignerExampleData
│ ├── EdgeDataExample.cs
│ └── VertexDataExample.cs
├── ExceptionExtensions.cs
├── Properties
│ └── AssemblyInfo.cs
└── GraphX.WPF.Controls.nuspec
├── Examples
├── SimpleGraph
│ ├── .gitignore
│ ├── readme.txt
│ ├── Images
│ │ ├── dice.png
│ │ └── update.png
│ ├── packages.config
│ ├── App.config
│ ├── Properties
│ │ ├── Settings.settings
│ │ └── Settings.Designer.cs
│ ├── App.xaml.cs
│ ├── App.xaml
│ └── Models
│ │ ├── GXLogicCoreExample.cs
│ │ ├── GraphAreaExample.cs
│ │ ├── GraphExample.cs
│ │ └── DataVertex.cs
├── WindowsFormsProject
│ ├── .gitignore
│ ├── Images
│ │ ├── dice.png
│ │ └── update.png
│ ├── packages.config
│ ├── app.config
│ ├── Properties
│ │ ├── Settings.settings
│ │ └── Settings.Designer.cs
│ ├── Program.cs
│ └── Models
│ │ ├── GraphAreaExample.cs
│ │ ├── GraphExample.cs
│ │ └── DataVertex.cs
├── ShowcaseApp.WPF
│ ├── app.ico
│ ├── Assets
│ │ ├── dice.png
│ │ ├── male.png
│ │ ├── carpet.png
│ │ ├── female.png
│ │ ├── tr_red.png
│ │ ├── board_hd.png
│ │ ├── brick_16.png
│ │ ├── hand_comp.png
│ │ ├── tr_grren.png
│ │ ├── blackCircle.png
│ │ ├── circle_blue.png
│ │ ├── circle_red.png
│ │ ├── grid_paper.png
│ │ ├── hand_comp2.png
│ │ ├── hand_comp3.png
│ │ ├── SplashScreen.png
│ │ ├── circle_green.png
│ │ ├── blackCircleFilled.png
│ │ ├── background.snowflakes.jpg
│ │ └── ModernUI.Snowflakes.xaml
│ ├── Models
│ │ ├── EditorOperationMode.cs
│ │ ├── DataItem.cs
│ │ ├── MiniSpecialType.cs
│ │ ├── ColorModel.cs
│ │ ├── LinkCommands.cs
│ │ ├── ImageLoader.cs
│ │ └── SimpleCommand.cs
│ ├── App.config
│ ├── ExampleModels
│ │ ├── GraphExample.cs
│ │ ├── GraphAreaExample.cs
│ │ ├── LogicCoreExample.cs
│ │ ├── ExampleExternalOverlapRemovalAlgorithm.cs
│ │ ├── Filters
│ │ │ └── BlueVertexFilter.cs
│ │ ├── ExampleMoveAnimation.cs
│ │ ├── ExampleExternalEdgeRoutingAlgorithm.cs
│ │ └── DataVertex.cs
│ ├── readme.txt
│ ├── Properties
│ │ ├── Settings.settings
│ │ └── Settings.Designer.cs
│ ├── Pages
│ │ ├── Settings.xaml.cs
│ │ ├── Introduction.xaml.cs
│ │ ├── FeatureLists
│ │ │ ├── FeaturesPageData.xaml.cs
│ │ │ ├── FeaturesPageEdges.xaml.cs
│ │ │ ├── FeaturesPageLayouts.xaml.cs
│ │ │ ├── FeaturesPageTemplates.xaml.cs
│ │ │ └── FeaturesPageData.xaml
│ │ └── Settings.xaml
│ ├── App.xaml.cs
│ ├── packages.config
│ ├── Templates
│ │ ├── TransparentTooltips.xaml
│ │ └── Mini
│ │ │ └── LayoutDataFiltering.xaml
│ ├── Content
│ │ └── SettingsAppearance.xaml.cs
│ ├── ShowcaseApp.WPF.csproj.DotSettings
│ ├── App.xaml
│ └── Controls
│ │ ├── MiniContentPage.xaml.cs
│ │ ├── MiniContentPage.xaml
│ │ ├── SpecialWindowControl.xaml
│ │ ├── MiniXamlPage.xaml
│ │ └── MiniXamlTemplatePage.xaml
├── UAP.SimpleGraph
│ ├── Assets
│ │ ├── 100.png
│ │ ├── 150.png
│ │ ├── 300.png
│ │ ├── 44.png
│ │ ├── 50.png
│ │ ├── 88.png
│ │ ├── Logo.png
│ │ ├── play.png
│ │ ├── tr_red.png
│ │ ├── MidLogo.png
│ │ ├── SmallLogo.png
│ │ ├── StoreLogo.png
│ │ ├── refresh.png
│ │ ├── tr_grren.png
│ │ ├── newlogo_big.png
│ │ ├── Logo.scale-100.png
│ │ ├── Logo.scale-200.png
│ │ ├── SplashScreen.png
│ │ ├── SplashScreen.scale-100.png
│ │ └── SplashScreen.scale-200.png
│ ├── Models
│ │ ├── DebugItems.cs
│ │ ├── GXLogicCoreExample.cs
│ │ ├── CurvedErParameters.cs
│ │ ├── GraphAreaExample.cs
│ │ └── GraphExample.cs
│ ├── App.xaml
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ └── Default.rd.xml
│ └── UAP.SimpleGraph.nuget.targets
├── WindowsDesktop_VB.NET_WinForms_Example
│ ├── packages.config
│ ├── Models
│ │ ├── GraphExample.vb
│ │ ├── GraphAreaExample.vb
│ │ ├── DataVertex.vb
│ │ └── DataEdge.vb
│ ├── App.config
│ └── My Project
│ │ ├── Settings.settings
│ │ ├── Application.myapp
│ │ └── AssemblyInfo.vb
└── SimpleGraph.DotNetCore
│ ├── App.xaml.cs
│ ├── App.xaml
│ └── AssemblyInfo.cs
├── Documents
├── AIV.cs
├── Licenses
│ ├── License.MediaFIles.txt
│ └── License.YAXLib.txt
└── TODO.txt
├── ExternalDlls
├── FirstFloor.ModernUI.dll
└── Microsoft.Windows.Shell.dll
├── GraphX.Standard.Common
├── signature.snk
├── Enums
│ ├── GraphControlType.cs
│ ├── ImageType.cs
│ ├── OverlapRemovalAlgorithmTypeEnum.cs
│ ├── EdgeRoutingAlgorithmTypeEnum.cs
│ ├── VertexShape.cs
│ ├── EventType.cs
│ ├── EdgesType.cs
│ ├── HighlightStrategy.cs
│ ├── ProcessingOptionEnum.cs
│ └── LayoutAlgorithmTypeEnum.cs
├── Interfaces
│ ├── IAlgorithmParameters.cs
│ ├── IEdgeRoutingParameters.cs
│ ├── IOverlapRemovalParameters.cs
│ ├── IRoutingInfo.cs
│ ├── IWeightedEdge.cs
│ ├── ILayoutParameters.cs
│ ├── ILayoutAlgorithm.cs
│ ├── IIdentifiableGraphDataObject.cs
│ ├── IGraphXVertex.cs
│ ├── ICloneable.cs
│ ├── ILayoutEdgeRouting.cs
│ ├── IExternalOverlapRemoval.cs
│ ├── IGraphFIlter.cs
│ ├── IOverlapRemovalAlgorithm.cs
│ └── IAlgorithmStorage.cs
├── GraphX.Standard.Common.csproj
├── Exceptions
│ ├── GX_ObsoleteException.cs
│ ├── GX_ObjectNotFoundException.cs
│ ├── GX_SerializationException.cs
│ ├── GX_GeneralException.cs
│ └── GX_InvalidDataException.cs
├── Models
│ ├── EdgeRoutingVisualData.cs
│ ├── GraphSerializationData.cs
│ ├── VertexBase.cs
│ └── WeightedEdge.cs
├── Helpers
│ └── CommonExtensions.cs
└── Measure
│ └── Thickness.cs
├── GraphX.UAP.Controls
├── Images
│ ├── round1.png
│ ├── round2.png
│ ├── cross-icon.png
│ └── help_black.png
├── Models
│ ├── MouseButtonEventArgs.cs
│ ├── ModifierKeys.cs
│ ├── VertexMovedEventArgs.cs
│ ├── VertexSelectedEventArgs.cs
│ ├── DispatcherHelper.cs
│ ├── EdgeSelectedEventArgs.cs
│ ├── XamlTypes
│ │ └── ViewModelXamlMetadataProvider.cs
│ ├── AnimationHelper.cs
│ └── FileServiceProviderMETRO.cs
├── Properties
│ └── AssemblyInfo.cs
├── Controls
│ └── ZoomControl
│ │ ├── SupportClasses
│ │ ├── AreaSelectedEventHandler.cs
│ │ ├── MouseWheelZoomingMode.cs
│ │ ├── ContentSizeChangedHandler.cs
│ │ ├── AreaSelectedEventArgs.cs
│ │ ├── ZoomControlModes.cs
│ │ └── ZoomViewModifierMode.cs
│ │ ├── Converters
│ │ ├── EqualityToBooleanConverter.cs
│ │ └── DoubleToLog10Converter.cs
│ │ └── Helpers
│ │ └── PointHelper.cs
└── DesignerExampleData
│ ├── EdgeDataExample.cs
│ └── VertexDataExample.cs
├── GraphX.METRO.Controls
├── Images
│ ├── round1.png
│ ├── round2.png
│ ├── cross-icon.png
│ └── help_black.png
├── Models
│ ├── MouseButtonEventArgs.cs
│ ├── ModifierKeys.cs
│ ├── VertexMovedEventArgs.cs
│ ├── VertexSelectedEventArgs.cs
│ ├── DispatcherHelper.cs
│ ├── EdgeSelectedEventArgs.cs
│ ├── XamlTypes
│ │ └── ViewModelXamlMetadataProvider.cs
│ ├── AnimationHelper.cs
│ └── FileServiceProviderMETRO.cs
├── METRO.SimpleGraph_TemporaryKey.pfx
├── packages.config
├── Properties
│ └── AssemblyInfo.cs
├── Controls
│ └── ZoomControl
│ │ ├── SupportClasses
│ │ ├── AreaSelectedEventHandler.cs
│ │ ├── MouseWheelZoomingMode.cs
│ │ ├── ContentSizeChangedHandler.cs
│ │ ├── AreaSelectedEventArgs.cs
│ │ ├── ZoomControlModes.cs
│ │ └── ZoomViewModifierMode.cs
│ │ ├── Converters
│ │ ├── EqualityToBooleanConverter.cs
│ │ └── DoubleToLog10Converter.cs
│ │ └── Helpers
│ │ └── PointHelper.cs
├── DesignerExampleData
│ ├── EdgeDataExample.cs
│ └── VertexDataExample.cs
└── port.txt
├── GraphX.Standard.Logic
├── Algorithms
│ ├── OverlapRemoval
│ │ ├── FSAAlgorithm.cs
│ │ ├── RectangleWrapper.cs
│ │ ├── IOverlapRemovalContext.cs
│ │ ├── OverlapRemovalHelper.cs
│ │ ├── OverlapRemovalContext.cs
│ │ ├── OneWayFSAParameters.cs
│ │ ├── IOverlapRemovalAlgorithmFactory.cs
│ │ └── OverlapRemovalParameters.cs
│ ├── LayoutAlgorithms
│ │ ├── FDP
│ │ │ ├── KKLayoutAlgorithm.cs
│ │ │ ├── ISOMLayoutAlgorithm.cs
│ │ │ ├── LinLogLayoutAlgorithm.cs
│ │ │ ├── FRCoolingFunction.cs
│ │ │ ├── Compound
│ │ │ │ ├── CompoundVertexInnerLayoutType.cs
│ │ │ │ ├── LayoutMode.cs
│ │ │ │ ├── IMutableCompoundGraph.cs
│ │ │ │ ├── ICompoundLayoutIterationEventArgs.cs
│ │ │ │ ├── ICompoundLayoutAlgorithm.cs
│ │ │ │ ├── ILayoutContext.cs
│ │ │ │ ├── ICompoundLayoutContext.cs
│ │ │ │ ├── TestingCompoundVertexInfo.cs
│ │ │ │ ├── ICompoundGraph.cs
│ │ │ │ ├── LayoutContext.cs
│ │ │ │ ├── CompoundLayoutIterationEventArgs.cs
│ │ │ │ └── CompoundLayoutContext.cs
│ │ │ ├── FreeFRLayoutParameters.cs
│ │ │ └── LinLogLayoutParameters.cs
│ │ ├── Circular
│ │ │ └── CircularLayoutParameters.cs
│ │ ├── Tree
│ │ │ ├── SpanningTreeGeneration.cs
│ │ │ ├── BalloonTreeLayoutParameters.cs
│ │ │ └── SimpleTreeLayoutAlgorithm.Data.cs
│ │ ├── Hierarchical
│ │ │ ├── SugiyamaEdgeRoutings.cs
│ │ │ ├── SugiyamaLayoutAlgorithm.VertexLayerCollection.cs
│ │ │ ├── SugiyamaLayoutAlgorithm.Enums.cs
│ │ │ └── SugiyamaLayoutAlgorithm.SugiEdge.cs
│ │ ├── LayoutDirection.cs
│ │ ├── IParameterizedLayoutAlgorithm.cs
│ │ ├── Random
│ │ │ └── RandomLayoutAlgorithmParams.cs
│ │ ├── ILayoutInfoIterationEventArgs.cs
│ │ ├── LayoutParametersBase.cs
│ │ └── ILayoutIterationEventArgs.cs
│ ├── AlgorithmBase.cs
│ ├── IAlgorithm.cs
│ ├── WrappedVertex.cs
│ ├── EdgeRouting
│ │ ├── PathFinderER
│ │ │ └── MatrixItem.cs
│ │ ├── SimpleER
│ │ │ └── SimpleERParameters.cs
│ │ └── EdgeRoutingParameters.cs
│ ├── TypedEdge.cs
│ └── IHierarchicalBidirectionalGraph.cs
├── Helpers
│ └── ReflectionHelper.cs
└── GraphX.Standard.Logic.csproj
├── .nuget
└── NuGet.Config
├── info.md
├── .gitattributes
├── GraphX.Core.Controls
└── AssemblyInfo.cs
└── .settings
└── launch.json
/GraphX.Controls/.gitignore:
--------------------------------------------------------------------------------
1 | /obj/
2 | /bin/
3 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /obj/
3 |
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 | /obj/
3 |
--------------------------------------------------------------------------------
/Documents/AIV.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Documents/AIV.cs
--------------------------------------------------------------------------------
/Documents/Licenses/License.MediaFIles.txt:
--------------------------------------------------------------------------------
1 | http://creativecommons.org/licenses/by/3.0/
--------------------------------------------------------------------------------
/Examples/SimpleGraph/readme.txt:
--------------------------------------------------------------------------------
1 | This example shows how to configure and create graph using automatic methods.
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/app.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/app.ico
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Images/dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/SimpleGraph/Images/dice.png
--------------------------------------------------------------------------------
/ExternalDlls/FirstFloor.ModernUI.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/ExternalDlls/FirstFloor.ModernUI.dll
--------------------------------------------------------------------------------
/GraphX.Controls/Images/help_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Controls/Images/help_black.png
--------------------------------------------------------------------------------
/GraphX.Standard.Common/signature.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Standard.Common/signature.snk
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Images/round1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.UAP.Controls/Images/round1.png
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Images/round2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.UAP.Controls/Images/round2.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/dice.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/male.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/male.png
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Images/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/SimpleGraph/Images/update.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/100.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/150.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/300.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/44.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/50.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/88.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/Logo.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/play.png
--------------------------------------------------------------------------------
/ExternalDlls/Microsoft.Windows.Shell.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/ExternalDlls/Microsoft.Windows.Shell.dll
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Images/round1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.METRO.Controls/Images/round1.png
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Images/round2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.METRO.Controls/Images/round2.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/carpet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/carpet.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/female.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/female.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/tr_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/tr_red.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/tr_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/tr_red.png
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Images/cross-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.UAP.Controls/Images/cross-icon.png
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Images/help_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.UAP.Controls/Images/help_black.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/board_hd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/board_hd.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/brick_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/brick_16.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/hand_comp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/hand_comp.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/tr_grren.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/tr_grren.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/MidLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/MidLogo.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/SmallLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/SmallLogo.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/refresh.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/tr_grren.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/tr_grren.png
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Images/dice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/WindowsFormsProject/Images/dice.png
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Images/cross-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.METRO.Controls/Images/cross-icon.png
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Images/help_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.METRO.Controls/Images/help_black.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/blackCircle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/blackCircle.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/circle_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/circle_blue.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/circle_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/circle_red.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/grid_paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/grid_paper.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/hand_comp2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/hand_comp2.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/hand_comp3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/hand_comp3.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/newlogo_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/newlogo_big.png
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Images/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/WindowsFormsProject/Images/update.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/SplashScreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/SplashScreen.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/circle_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/circle_green.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/Logo.scale-100.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/Logo.scale-200.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/SplashScreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/SplashScreen.png
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/blackCircleFilled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/blackCircleFilled.png
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/MouseButtonEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public class MouseButtonEventArgs
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/MouseButtonEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public class MouseButtonEventArgs
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/background.snowflakes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/ShowcaseApp.WPF/Assets/background.snowflakes.jpg
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/METRO.SimpleGraph_TemporaryKey.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.METRO.Controls/METRO.SimpleGraph_TemporaryKey.pfx
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-100.png
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/Examples/UAP.SimpleGraph/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/Examples/SimpleGraph/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/GraphX.Controls/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/FSAAlgorithm.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Standard.Logic/Algorithms/OverlapRemoval/FSAAlgorithm.cs
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/RectangleWrapper.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Standard.Logic/Algorithms/OverlapRemoval/RectangleWrapper.cs
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/RemoveControlEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public delegate void RemoveControlEventHandler(object sender, ControlEventArgs args);
4 | }
5 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/VertexPositionChangedEH.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public delegate void VertexPositionChangedEH(object sender, VertexPositionEventArgs args);
4 | }
5 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: AssemblyTitle("GraphX.Controls")]
5 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/KKLayoutAlgorithm.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/KKLayoutAlgorithm.cs
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/ISOMLayoutAlgorithm.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/ISOMLayoutAlgorithm.cs
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: AssemblyTitle("GraphX.UAP.Controls")]
5 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/GraphControlType.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum GraphControlType
4 | {
5 | Vertex,
6 | Edge,
7 | VertexAndEdge
8 | }
9 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IAlgorithmParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Interfaces
2 | {
3 | public interface IAlgorithmParameters : ICloneable//!PCL-NON-COMPL! INotifyPropertyChanged
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/LinLogLayoutAlgorithm.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/panthernet/GraphX/HEAD/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/LinLogLayoutAlgorithm.cs
--------------------------------------------------------------------------------
/Examples/SimpleGraph/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Models/DebugItems.cs:
--------------------------------------------------------------------------------
1 | namespace UAP.SimpleGraph.Models
2 | {
3 | public enum DebugItems
4 | {
5 | General = 0,
6 | EdgeLabels = 1,
7 | VCP = 2,
8 | }
9 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public delegate void AreaSelectedEventHandler(object sender, AreaSelectedEventArgs args);
4 | }
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public delegate void AreaSelectedEventHandler(object sender, AreaSelectedEventArgs args);
4 | }
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public delegate void AreaSelectedEventHandler(object sender, AreaSelectedEventArgs args);
4 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/SupportClasses/MouseWheelZoomingMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum MouseWheelZoomingMode
4 | {
5 | Positional = 0,
6 | Absolute
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/MouseWheelZoomingMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum MouseWheelZoomingMode
4 | {
5 | Positional = 0,
6 | Absolute
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/EditorOperationMode.cs:
--------------------------------------------------------------------------------
1 | namespace ShowcaseApp.WPF.Models
2 | {
3 | public enum EditorOperationMode
4 | {
5 | Select = 0,
6 | Edit,
7 | Delete
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/SupportClasses/ContentSizeChangedHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace GraphX.Controls
4 | {
5 | public delegate void ContentSizeChangedHandler(object sender, Size newSize);
6 | }
7 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/SupportClasses/MouseWheelZoomingMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum MouseWheelZoomingMode
4 | {
5 | Positional = 0,
6 | Absolute
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/ImageType.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum ImageType
4 | {
5 | PNG,
6 | JPEG,
7 | BMP,
8 | GIF,
9 | TIFF
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Circular/CircularLayoutParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public class CircularLayoutParameters : LayoutParametersBase
4 | {
5 |
6 | }
7 | }
--------------------------------------------------------------------------------
/.nuget/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/GraphExample.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace ShowcaseApp.WPF
4 | {
5 | public class GraphExample : BidirectionalGraph
6 | {
7 | }
8 |
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/DataItem.cs:
--------------------------------------------------------------------------------
1 | namespace ShowcaseApp.WPF.Models
2 | {
3 | public class DataItem
4 | {
5 | public int ID { get; set; }
6 |
7 | public string Text { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/FRCoolingFunction.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public enum FRCoolingFunction
4 | {
5 | Linear,
6 | Exponential
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/SupportClasses/ContentSizeChangedHandler.cs:
--------------------------------------------------------------------------------
1 | using Windows.Foundation;
2 |
3 | namespace GraphX.Controls
4 | {
5 | public delegate void ContentSizeChangedHandler(object sender, Size newSize);
6 | }
7 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/OverlapRemovalAlgorithmTypeEnum.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum OverlapRemovalAlgorithmTypeEnum
4 | {
5 | FSA,
6 | OneWayFSA,
7 | None
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Tree/SpanningTreeGeneration.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public enum SpanningTreeGeneration
4 | {
5 | BFS,
6 | DFS
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ContentSizeChangedHandler.cs:
--------------------------------------------------------------------------------
1 | using Windows.Foundation;
2 |
3 | namespace GraphX.Controls
4 | {
5 | public delegate void ContentSizeChangedHandler(object sender, Size newSize);
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/readme.txt:
--------------------------------------------------------------------------------
1 | GraphX for .NET library
2 | http://panthernet.ru/en/projects-en/graphx-en
3 | https://github.com/panthernet/GraphX/
4 |
5 | Thanks for reading this! :)
6 | You can find help and updates on the URL specified above.
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/Models/GraphExample.vb:
--------------------------------------------------------------------------------
1 | Imports QuikGraph
2 |
3 | Namespace Models
4 |
5 | Public Class GraphExample
6 | Inherits BidirectionalGraph(Of DataVertex, DataEdge)
7 | End Class
8 | End Namespace
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/EdgeDashStyle.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum EdgeDashStyle
4 | {
5 | Solid,
6 | Dash,
7 | Dot,
8 | DashDot,
9 | DashDotDot
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Hierarchical/SugiyamaEdgeRoutings.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public enum SugiyamaEdgeRoutings
4 | {
5 | Traditional,
6 | Orthogonal
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/ModifierKeys.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public class Keyboard
4 | {
5 | public static ModifierKeys Modifiers;
6 | }
7 |
8 | public class ModifierKeys
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/ModifierKeys.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public class Keyboard
4 | {
5 | public static ModifierKeys Modifiers;
6 | }
7 |
8 | public class ModifierKeys
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/EdgeRoutingAlgorithmTypeEnum.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum EdgeRoutingAlgorithmTypeEnum
4 | {
5 | None,
6 | PathFinder,
7 | SimpleER,
8 | Bundling,
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IEdgeRoutingParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Interfaces
2 | {
3 | ///
4 | /// Base class for edge routing algorithm parameters
5 | ///
6 | public interface IEdgeRoutingParameters
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IOverlapRemovalParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Interfaces
2 | {
3 | public interface IOverlapRemovalParameters : IAlgorithmParameters
4 | {
5 | float VerticalGap { get; set; }
6 | float HorizontalGap { get; set; }
7 | }
8 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/AlgorithmBase.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 |
3 | namespace GraphX.Logic.Algorithms
4 | {
5 | public abstract class AlgorithmBase : IAlgorithm
6 | {
7 | public abstract void Compute(CancellationToken cancellationToken);
8 | }
9 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IGraphArea.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace GraphX.Controls
4 | {
5 | public interface IGraphArea
6 | {
7 | IDictionary VertexList { get; set; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/VertexShape.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum VertexShape
4 | {
5 | Rectangle,
6 | Diamond,
7 | Triangle,
8 | Circle,
9 | None,
10 | Ellipse
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/LayoutDirection.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public enum LayoutDirection
4 | {
5 | LeftToRight = 0,
6 | TopToBottom = 1,
7 | RightToLeft = 2,
8 | BottomToTop = 3
9 | }
10 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/MiniSpecialType.cs:
--------------------------------------------------------------------------------
1 | namespace ShowcaseApp.WPF.Models
2 | {
3 | public enum MiniSpecialType
4 | {
5 | None,
6 | LayoutVCP,
7 | EdgesParallel,
8 | LayoutGrouped,
9 | DataFiltering
10 | }
11 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/GraphAreaExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX;
2 | using GraphX.Controls;
3 | using QuikGraph;
4 |
5 | namespace ShowcaseApp.WPF
6 | {
7 | public class GraphAreaExample : GraphArea> { }
8 | }
9 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/LogicCoreExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Logic.Models;
2 | using QuikGraph;
3 |
4 | namespace ShowcaseApp.WPF
5 | {
6 | public class LogicCoreExample : GXLogicCore>
7 | {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/GraphX.Controls/Animations/Enums/MouseOverAnimation.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Animations
2 | {
3 | ///
4 | /// Controls mouse over animation types
5 | ///
6 | public enum MouseOverAnimation
7 | {
8 | Scale,
9 | None
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/GraphX.Controls/Animations/Enums/MoveAnimation.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Animations
2 | {
3 | ///
4 | /// Vertex move animation types
5 | ///
6 | public enum MoveAnimation
7 | {
8 | Move,
9 | Fade,
10 | None
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/EventType.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum EventType
4 | {
5 | MouseMove,
6 | MouseClick,
7 | MouseEnter,
8 | MouseLeave,
9 | MouseDoubleClick,
10 | PositionChangeNotify
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/info.md:
--------------------------------------------------------------------------------
1 | QuickGraphPCL
2 | https://www.nuget.org/packages/QuickGraphPCL/3.6.61114.2
3 |
4 | ??
5 | https://github.com/YaccConstructor/QuickGraph
6 |
7 | Standard
8 | https://github.com/KeRNeLith/QuikGraph
9 | https://github.com/mokeyish/QuickGraph
10 | https://github.com/oldrev/Sandwych.QuickGraph
--------------------------------------------------------------------------------
/GraphX.Controls/Animations/Enums/DeleteAnimation.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Animations
2 | {
3 | ///
4 | /// Controls delete animation types
5 | ///
6 | public enum DeleteAnimation
7 | {
8 | Shrink,
9 | Fade,
10 | None
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/ControlDrawOrder.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | ///
4 | /// Defines in which order GraphX controls are drawn
5 | ///
6 | public enum ControlDrawOrder
7 | {
8 | VerticesOnTop = 0,
9 | EdgesOnTop
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/LogicCoreChangedAction.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum LogicCoreChangedAction
4 | {
5 | None = 0,
6 | GenerateGraph,
7 | GenerateGraphWithEdges,
8 | RelayoutGraph,
9 | RelayoutGraphWithEdges
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/Models/GraphAreaExample.vb:
--------------------------------------------------------------------------------
1 | Imports GraphX.Controls
2 | Imports QuikGraph
3 |
4 | Namespace Models
5 |
6 | Public Class GraphAreaExample
7 | Inherits GraphArea(Of DataVertex, DataEdge, BidirectionalGraph(Of DataVertex, DataEdge))
8 | End Class
9 | End Namespace
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/GraphX.Standard.Common.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/CompoundVertexInnerLayoutType.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public enum CompoundVertexInnerLayoutType
4 | {
5 | Automatic,
6 | ContextFree,
7 | Contextual,
8 | Fixed
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 |
4 | namespace GraphX.Logic.Algorithms.OverlapRemoval
5 | {
6 | public interface IOverlapRemovalContext
7 | {
8 | IDictionary Rectangles { get; }
9 | }
10 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Exceptions/GX_ObsoleteException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Common.Exceptions
4 | {
5 | public sealed class GX_ObsoleteException: Exception
6 | {
7 | public GX_ObsoleteException(string text)
8 | : base(text)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows;
5 |
6 | namespace SimpleGraph
7 | {
8 | ///
9 | /// Interaction logic for App.xaml
10 | ///
11 | public partial class App : Application
12 | {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Exceptions/GX_ObjectNotFoundException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Common.Exceptions
4 | {
5 | public sealed class GX_ObjectNotFoundException: Exception
6 | {
7 | public GX_ObjectNotFoundException(string text)
8 | : base(text)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Exceptions/GX_SerializationException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Common.Exceptions
4 | {
5 | public sealed class GX_SerializationException: Exception
6 | {
7 | public GX_SerializationException(string text)
8 | : base(text)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/IAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 |
3 | namespace GraphX.Logic.Algorithms
4 | {
5 | ///
6 | /// Simple algorithm interface which is not connected to any graph.
7 | ///
8 | public interface IAlgorithm
9 | {
10 | void Compute(CancellationToken cancellationToken);
11 | }
12 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Helpers/ReflectionHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Logic.Helpers
4 | {
5 | public static class ReflectionHelper
6 | {
7 | public static T CreateDefaultGraphInstance()
8 | {
9 | return (T)Activator.CreateInstance(typeof(T), null);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph.DotNetCore/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows;
5 |
6 | namespace SimpleGraph
7 | {
8 | ///
9 | /// Interaction logic for App.xaml
10 | ///
11 | public partial class App : Application
12 | {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph/App.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Logic.Algorithms.OverlapRemoval
4 | {
5 | public static class OverlapRemovalHelper
6 | {
7 | public static Point GetCenter( this Rect r )
8 | {
9 | return new Point( r.Left + r.Width / 2, r.Top + r.Height / 2 );
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IRoutingInfo.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | public interface IRoutingInfo
6 | {
7 | ///
8 | /// Routing points collection used to make Path visual object
9 | ///
10 | Point[] RoutingPoints { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph.DotNetCore/App.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IWeightedEdge.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | public interface IWeightedEdge : IEdge
6 | {
7 | ///
8 | /// Edge weight that can be used by some weight-related layout algorithms
9 | ///
10 | double Weight { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/WrappedVertex.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms
2 | {
3 | public class WrappedVertex
4 | {
5 | private readonly TVertex _originalVertex;
6 | public TVertex Original
7 | {
8 | get { return _originalVertex; }
9 | }
10 |
11 | public WrappedVertex(TVertex original)
12 | {
13 | _originalVertex = original;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/Settings.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace ShowcaseApp.WPF.Pages
4 | {
5 | ///
6 | /// Interaction logic for Settings.xaml
7 | ///
8 | public partial class Settings : UserControl
9 | {
10 | public Settings()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Models/GXLogicCoreExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Logic.Models;
2 | using QuikGraph;
3 |
4 | namespace SimpleGraph.Models
5 | {
6 | ///
7 | /// Logics core object which contains all algorithms and logic settings
8 | ///
9 | public class GXLogicCoreExample : GXLogicCore> { }
10 | }
11 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/LayoutMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public enum LayoutMode
4 | {
5 | ///
6 | /// Simple layout mode without compound vertices.
7 | ///
8 | Simple,
9 |
10 | ///
11 | /// Compound vertices, compound graph.
12 | ///
13 | Compound
14 | }
15 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Windows;
7 |
8 | namespace ShowcaseApp.WPF
9 | {
10 | ///
11 | /// Interaction logic for App.xaml
12 | ///
13 | public partial class App : Application
14 | {
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Models/GXLogicCoreExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Logic.Models;
2 | using QuikGraph;
3 |
4 | namespace UAP.SimpleGraph.Models
5 | {
6 | ///
7 | /// Logics core object which contains all algorithms and logic settings
8 | ///
9 | public class GXLogicCoreExample : GXLogicCore> { }
10 | }
11 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/EdgeSelectedEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public delegate void EdgeSelectedEventHandler(object sender, EdgeSelectedEventArgs args);
4 | #if WPF
5 | public delegate void EdgeClickedEventHandler(object sender, EdgeClickedEventArgs args);
6 | #endif
7 | public delegate void EdgeLabelEventHandler(object sender, EdgeLabelSelectedEventArgs args);
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/ILayoutParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Interfaces
2 | {
3 | public interface ILayoutParameters : IAlgorithmParameters
4 | {
5 | ///
6 | /// Seed to be used to initialize any random number generators in order to construct
7 | /// more deterministic output.
8 | ///
9 | int Seed { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/ColorModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Media;
2 |
3 | namespace ShowcaseApp.WPF.Models
4 | {
5 | public class ColorModel
6 | {
7 | public Color Color {get;set;}
8 | public string Text { get; set; }
9 |
10 | public ColorModel(string text, Color color)
11 | {
12 | Text = text; Color = color;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/VertexSelectedEventHandler.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public delegate void VertexSelectedEventHandler(object sender, VertexSelectedEventArgs args);
4 | public delegate void VertexMovedEventHandler(object sender, VertexMovedEventArgs e);
5 | #if WPF
6 | public delegate void VertexClickedEventHandler(object sender, VertexClickedEventArgs args);
7 | #endif
8 | }
9 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/IMutableCompoundGraph.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
4 | {
5 | public interface IMutableCompoundGraph
6 | : ICompoundGraph,
7 | IMutableBidirectionalGraph
8 | where TEdge : IEdge
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/Introduction.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace ShowcaseApp.WPF.Pages
4 | {
5 | ///
6 | /// Interaction logic for Introduction.xaml
7 | ///
8 | public partial class Introduction : UserControl
9 | {
10 | public Introduction()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Models/CurvedErParameters.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Logic.Algorithms.EdgeRouting;
2 |
3 | namespace UAP.SimpleGraph.Models
4 | {
5 | public class CurvedErParameters: EdgeRoutingParameters
6 | {
7 | ///
8 | /// Value by which middle edge point is offseted from original middle point
9 | ///
10 | public int VerticalCurveOffset { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/EdgesType.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | public enum EdgesType
4 | {
5 | ///
6 | /// In edges
7 | ///
8 | In,
9 | ///
10 | /// Out edges
11 | ///
12 | Out,
13 | ///
14 | /// Both In and Out edges
15 | ///
16 | All
17 | }
18 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Exceptions/GX_GeneralException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Common.Exceptions
4 | {
5 | public sealed class GX_GeneralException: Exception
6 | {
7 | public GX_GeneralException(string text)
8 | : base(text)
9 | {
10 | }
11 |
12 | public GX_GeneralException(string text, Exception innerException)
13 | : base(text, innerException)
14 | {
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/GraphX.Standard.Logic.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Templates/TransparentTooltips.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IGraphAreaBase.cs:
--------------------------------------------------------------------------------
1 | #if WPF
2 | using System.Windows;
3 | #else
4 | using Windows.Foundation;
5 | #endif
6 |
7 | namespace GraphX.Controls
8 | {
9 | ///
10 | /// Common GraphArea interface
11 | ///
12 | public interface IGraphAreaBase
13 | {
14 | void SetPrintMode(bool value, bool offsetControls = true, int margin = 0);
15 |
16 | Rect ContentSize { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/ICompoundLayoutIterationEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public interface ICompoundLayoutIterationEventArgs
7 | : ILayoutIterationEventArgs
8 | where TVertex : class
9 | {
10 | IDictionary InnerCanvasSizes { get; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/GraphX.Controls/Animations/Interfaces/IBidirectionalControlAnimation.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Animations
2 | {
3 | public interface IBidirectionalControlAnimation
4 | {
5 | double Duration { get; set; }
6 | void AnimateVertexForward(VertexControl target);
7 | void AnimateVertexBackward(VertexControl target);
8 | void AnimateEdgeForward(EdgeControl target);
9 | void AnimateEdgeBackward(EdgeControl target);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/IParameterizedLayoutAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Interfaces;
2 |
3 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
4 | {
5 | public interface IParameterizedLayoutAlgorithm
6 | {
7 | ILayoutParameters GetParameters();
8 | }
9 |
10 | public interface IParameterizedLayoutAlgorithm : IParameterizedLayoutAlgorithm
11 | where TParam : ILayoutParameters
12 | {
13 | TParam Parameters { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Models/ControlEventArgs.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | public sealed class ControlEventArgs : System.EventArgs
4 | {
5 | public IGraphControl Control { get; private set; }
6 |
7 | public bool RemoveDataObject { get; private set; }
8 |
9 | public ControlEventArgs(IGraphControl vc, bool removeDataObject)
10 | {
11 | RemoveDataObject = removeDataObject;
12 | Control = vc;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace GraphX.Controls
4 | {
5 | public class AreaSelectedEventArgs : System.EventArgs
6 | {
7 | ///
8 | /// Rectangle data in coordinates of content object
9 | ///
10 | public Rect Rectangle { get; set; }
11 |
12 | public AreaSelectedEventArgs(Rect rec)
13 | {
14 | Rectangle = rec;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IVertexLabelControl.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public interface IVertexLabelControl
4 | {
5 | ///
6 | /// Gets or sets label drawing angle in degrees
7 | ///
8 | double Angle { get; set; }
9 |
10 | ///
11 | /// Automaticaly update vertex label position
12 | ///
13 | void UpdatePosition();
14 |
15 | void Hide();
16 | void Show();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Exceptions/GX_InvalidDataException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Common.Exceptions
4 | {
5 | public sealed class GX_InvalidDataException: Exception
6 | {
7 | public GX_InvalidDataException(string text):base(text)
8 | {
9 | }
10 | }
11 |
12 | public sealed class GX_ConsistencyException : Exception
13 | {
14 | public GX_ConsistencyException(string text)
15 | : base(text)
16 | {
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/ILayoutAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | public interface ILayoutAlgorithm : IExternalLayout
6 | where TVertex : class
7 | where TEdge : IEdge
8 | where TGraph : IVertexAndEdgeListGraph
9 | {
10 | ///
11 | /// Internal graph storage for layout algorithm
12 | ///
13 | TGraph VisitedGraph { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/Documents/TODO.txt:
--------------------------------------------------------------------------------
1 | TODO
2 | 3. Detect bidirectional edge and correctly display it w/o parallelization
3 |
4 | Add edge labels - labels on path
5 | http://www.codeproject.com/Articles/30090/Text-On-A-Path-in-WPF
6 |
7 | http://en.wikipedia.org/wiki/Automatic_label_placement
8 |
9 |
10 | NOTES
11 | 1. If custom object 1st time position is incorrect - CHECK if it has Arrange() specified in LayoutUpdated event!
12 |
13 |
14 | perf
15 | http://blogs.msdn.com/b/llobo/archive/2009/11/10/new-wpf-features-cached-composition.aspx?wa=wsignin1.0
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/OverlapRemovalContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 |
4 | namespace GraphX.Logic.Algorithms.OverlapRemoval
5 | {
6 | public class OverlapRemovalContext : IOverlapRemovalContext
7 | {
8 | public IDictionary Rectangles { get; private set; }
9 |
10 | public OverlapRemovalContext( IDictionary rectangles )
11 | {
12 | Rectangles = rectangles;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/VertexMovedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public sealed class VertexMovedEventArgs : System.EventArgs
6 | {
7 | public VertexControl VertexControl { get; private set; }
8 | public PointerRoutedEventArgs Args { get; private set; }
9 |
10 | public VertexMovedEventArgs(VertexControl vc, PointerRoutedEventArgs e)
11 | {
12 | Args = e;
13 | VertexControl = vc;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/OneWayFSAParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.OverlapRemoval
2 | {
3 | public enum OneWayFSAWayEnum {
4 | Horizontal,
5 | Vertical
6 | }
7 |
8 | public class OneWayFSAParameters : OverlapRemovalParameters
9 | {
10 | private OneWayFSAWayEnum _way;
11 | public OneWayFSAWayEnum Way
12 | {
13 | get { return _way; }
14 | set
15 | {
16 | if ( _way != value )
17 | {
18 | _way = value;
19 | NotifyChanged( "Way" );
20 | }
21 | }
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/VertexMovedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public sealed class VertexMovedEventArgs : System.EventArgs
6 | {
7 | public VertexControl VertexControl { get; private set; }
8 | public PointerRoutedEventArgs Args { get; private set; }
9 |
10 | public VertexMovedEventArgs(VertexControl vc, PointerRoutedEventArgs e)
11 | {
12 | Args = e;
13 | VertexControl = vc;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/VertexSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public sealed class VertexSelectedEventArgs : System.EventArgs
6 | {
7 | public VertexControl VertexControl { get; private set; }
8 | public PointerRoutedEventArgs Args { get; private set; }
9 |
10 | public VertexSelectedEventArgs(VertexControl vc, PointerRoutedEventArgs e)
11 | {
12 | VertexControl = vc;
13 | Args = e;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/VertexSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public sealed class VertexSelectedEventArgs : System.EventArgs
6 | {
7 | public VertexControl VertexControl { get; private set; }
8 | public PointerRoutedEventArgs Args { get; private set; }
9 |
10 | public VertexSelectedEventArgs(VertexControl vc, PointerRoutedEventArgs e)
11 | {
12 | VertexControl = vc;
13 | Args = e;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IIdentifiableGraphDataObject.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Enums;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | public interface IIdentifiableGraphDataObject
6 | {
7 | ///
8 | /// Unique object identifier
9 | ///
10 | long ID { get; set; }
11 |
12 | ///
13 | /// Skip object in algorithm calc and visual control generation
14 | ///
15 | ProcessingOptionEnum SkipProcessing { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IPositionChangeNotify.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | ///
4 | /// Interface that implements means to notify on objetc position changes (implemented to track attached property changes parent -> child)
5 | ///
6 | public interface IPositionChangeNotify
7 | {
8 | #if METRO
9 | ///
10 | /// Notify object that it's position within container has been changed
11 | ///
12 | void OnPositionChanged();
13 | #endif
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Random/RandomLayoutAlgorithmParams.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
4 | {
5 | public class RandomLayoutAlgorithmParams: LayoutParametersBase
6 | {
7 | ///
8 | /// Gets or sets layout bounds
9 | ///
10 | public Rect Bounds { get; set; }
11 |
12 | public RandomLayoutAlgorithmParams()
13 | {
14 | Bounds = new Rect(0, 0, 2000, 2000);
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IGraphXVertex.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | public interface IGraphXVertex : IEquatable, IIdentifiableGraphDataObject
6 | {
7 | ///
8 | /// Gets or sets custom angle associated with the vertex
9 | ///
10 | double Angle { get; set; }
11 |
12 | ///
13 | /// Gets or sets optional group identificator
14 | ///
15 | int GroupId { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.Foundation;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public class AreaSelectedEventArgs : EventArgs
7 | {
8 | ///
9 | /// Rectangle data in coordinates of content object
10 | ///
11 | public Rect Rectangle { get; set; }
12 |
13 | public AreaSelectedEventArgs(Rect rec)
14 | : base()
15 | {
16 | Rectangle = rec;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/SupportClasses/AreaSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.Foundation;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public class AreaSelectedEventArgs : EventArgs
7 | {
8 | ///
9 | /// Rectangle data in coordinates of content object
10 | ///
11 | public Rect Rectangle { get; set; }
12 |
13 | public AreaSelectedEventArgs(Rect rec)
14 | : base()
15 | {
16 | Rectangle = rec;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/HighlightStrategy.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | /* public enum HighlightStrategy
4 | {
5 | ///
6 | /// Use existing vertex and edge controls
7 | /// No additional control manipulation needed
8 | ///
9 | UseExistingControls,
10 | ///
11 | /// NOT IMPLEMENTED Create new vertex and edge controls
12 | /// Useful when edges is not created by default
13 | ///
14 | CreateControls
15 | }*/
16 | }
17 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/ICloneable.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Interfaces
2 | {
3 | ///
4 | /// Cloning interface
5 | ///
6 | public interface ICloneable
7 | {
8 | ///
9 | /// Creates a new object that is a copy of the current instance.
10 | ///
11 | ///
12 | ///
13 | /// A new object that is a copy of this instance.
14 | ///
15 | /// 2
16 | object Clone();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Content/SettingsAppearance.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace ShowcaseApp.WPF.Content
4 | {
5 | ///
6 | /// Interaction logic for SettingsAppearance.xaml
7 | ///
8 | public partial class SettingsAppearance : UserControl
9 | {
10 | public SettingsAppearance()
11 | {
12 | InitializeComponent();
13 |
14 | // a simple view model for appearance configuration
15 | this.DataContext = new SettingsAppearanceViewModel();
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/SupportClasses/ZoomControlModes.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum ZoomControlModes
4 | {
5 | ///
6 | /// The content should fill the given space.
7 | ///
8 | Fill,
9 |
10 | ///
11 | /// The content will be represented in its original size.
12 | ///
13 | Original,
14 |
15 | ///
16 | /// The content will be zoomed with a custom percent.
17 | ///
18 | Custom
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/ICompoundLayoutAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 | using GraphX.Common.Interfaces;
4 | using QuikGraph;
5 |
6 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
7 | {
8 | public interface ICompoundLayoutAlgorithm : ILayoutAlgorithm
9 | where TVertex : class
10 | where TEdge : IEdge
11 | where TGraph : IBidirectionalGraph
12 | {
13 | IDictionary InnerCanvasSizes { get; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/SupportClasses/ZoomControlModes.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum ZoomControlModes
4 | {
5 | ///
6 | /// The content should fill the given space.
7 | ///
8 | Fill,
9 |
10 | ///
11 | /// The content will be represented in its original size.
12 | ///
13 | Original,
14 |
15 | ///
16 | /// The content will be zoomed with a custom percent.
17 | ///
18 | Custom
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomControlModes.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum ZoomControlModes
4 | {
5 | ///
6 | /// The content should fill the given space.
7 | ///
8 | Fill,
9 |
10 | ///
11 | /// The content will be represented in its original size.
12 | ///
13 | Original,
14 |
15 | ///
16 | /// The content will be zoomed with a custom percent.
17 | ///
18 | Custom
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IZoomControl.cs:
--------------------------------------------------------------------------------
1 | #if WPF
2 | using System.Windows;
3 | #elif METRO
4 | using Windows.UI.Xaml;
5 | #endif
6 |
7 | namespace GraphX.Controls
8 | {
9 | ///
10 | /// Common imterface for all possible zoomcontrol objects
11 | ///
12 | public interface IZoomControl
13 | {
14 | UIElement PresenterVisual { get; }
15 | double Zoom { get; set; }
16 | double Width { get; set; }
17 | double Height { get; set; }
18 | double ActualWidth { get; }
19 | double ActualHeight { get; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Models/GraphAreaExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Controls;
2 | using QuikGraph;
3 |
4 | namespace SimpleGraph.Models
5 | {
6 | ///
7 | /// This is custom GraphArea representation using custom data types.
8 | /// GraphArea is the visual panel component responsible for drawing visuals (vertices and edges).
9 | /// It is also provides many global preferences and methods that makes GraphX so customizable and user-friendly.
10 | ///
11 | public class GraphAreaExample : GraphArea> { }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | Form1
5 | false
6 | 0
7 | true
8 | 0
9 | 0
10 | true
11 |
12 |
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Models/GraphAreaExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Controls;
2 | using QuikGraph;
3 |
4 | namespace UAP.SimpleGraph.Models
5 | {
6 | ///
7 | /// This is custom GraphArea representation using custom data types.
8 | /// GraphArea is the visual panel component responsible for drawing visuals (vertices and edges).
9 | /// It is also provides many global preferences and methods that makes GraphX so customizable and user-friendly.
10 | ///
11 | public class GraphAreaExample : GraphArea> { }
12 | }
13 |
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 |
6 | namespace WindowsFormsProject
7 | {
8 | static class Program
9 | {
10 | ///
11 | /// The main entry point for the application.
12 | ///
13 | [STAThread]
14 | static void Main()
15 | {
16 | Application.EnableVisualStyles();
17 | Application.SetCompatibleTextRenderingDefault(false);
18 | Application.Run(new Form1());
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/ExampleExternalOverlapRemovalAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System;
3 | using System.Collections.Generic;
4 | using GraphX.Measure;
5 | using GraphX.Common.Interfaces;
6 |
7 | namespace ShowcaseApp.WPF
8 | {
9 | public class ExampleExternalOverlapRemovalAlgorithm: IExternalOverlapRemoval
10 | {
11 | public IDictionary Rectangles { get; set; }
12 |
13 | public void Compute(CancellationToken cancellationToken)
14 | {
15 | throw new NotImplementedException();
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ShowcaseApp.WPF.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | True
3 | True
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IGraphControl.cs:
--------------------------------------------------------------------------------
1 | #if WPF
2 | using System.Windows;
3 | #elif METRO
4 | using Windows.Foundation;
5 | using Windows.UI.Xaml;
6 | #endif
7 |
8 |
9 | namespace GraphX.Controls
10 | {
11 | public interface IGraphControl : IPositionChangeNotify
12 | {
13 | GraphAreaBase RootArea {get; }
14 | Point GetPosition(bool final = false, bool round = false);
15 | void SetPosition(Point pt, bool alsoFinal = true);
16 | void SetPosition(double x, double y, bool alsoFinal = true);
17 | Visibility Visibility { get; set; }
18 | void Clean();
19 | }
20 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/ILayoutContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 | using QuikGraph;
4 |
5 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
6 | {
7 | public interface ILayoutContext
8 | where TEdge : IEdge
9 | where TGraph : IVertexAndEdgeListGraph
10 | {
11 | IDictionary Positions { get; }
12 | IDictionary Sizes { get; }
13 |
14 | TGraph Graph { get; }
15 |
16 | LayoutMode Mode { get; }
17 | }
18 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/LinkCommands.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace ShowcaseApp.WPF.Models
4 | {
5 | public static class LinkCommands
6 | {
7 | private static readonly RoutedUICommand ShowMiniSpecialDialogInternal = new RoutedUICommand("Show help", "ShowMiniSpecialDialog", typeof(LinkCommands));
8 |
9 | ///
10 | /// Gets the navigate link routed command.
11 | ///
12 | public static RoutedUICommand ShowMiniSpecialDialog
13 | {
14 | get { return ShowMiniSpecialDialogInternal; }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GraphX.Controls/DesignerExampleData/EdgeDataExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Models;
2 |
3 | namespace GraphX.Controls.DesignerExampleData
4 | {
5 | internal sealed class EdgeDataExample : EdgeBase
6 | {
7 | public EdgeDataExample(TVertex source, TVertex target)
8 | : base(source, target)
9 | {
10 |
11 | }
12 | public EdgeDataExample(TVertex source, TVertex target, double weight)
13 | : base(source, target, weight)
14 | {
15 |
16 | }
17 |
18 | public string Text { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/ICompoundLayoutContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 | using QuikGraph;
4 |
5 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
6 | {
7 | public interface ICompoundLayoutContext : ILayoutContext
8 | where TEdge : IEdge
9 | where TGraph : IBidirectionalGraph
10 | {
11 | IDictionary VertexBorders { get; }
12 | IDictionary LayoutTypes { get; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/DesignerExampleData/EdgeDataExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Models;
2 |
3 | namespace GraphX.Controls.DesignerExampleData
4 | {
5 | internal sealed class EdgeDataExample : EdgeBase
6 | {
7 | public EdgeDataExample(TVertex source, TVertex target)
8 | : base(source, target)
9 | {
10 |
11 | }
12 | public EdgeDataExample(TVertex source, TVertex target, double weight)
13 | : base(source, target, weight)
14 | {
15 |
16 | }
17 |
18 | public string Text { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/DesignerExampleData/EdgeDataExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.PCL.Common.Models;
2 |
3 | namespace GraphX.Controls.DesignerExampleData
4 | {
5 | internal sealed class EdgeDataExample : EdgeBase
6 | {
7 | public EdgeDataExample(TVertex source, TVertex target)
8 | : base(source, target)
9 | {
10 |
11 | }
12 | public EdgeDataExample(TVertex source, TVertex target, double weight)
13 | : base(source, target, weight)
14 | {
15 |
16 | }
17 |
18 | public string Text { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/VertexMovedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Input;
3 |
4 | namespace GraphX.Controls.Models
5 | {
6 | public sealed class VertexMovedEventArgs : System.EventArgs
7 | {
8 | public VertexControl VertexControl { get; private set; }
9 | public Point Offset { get; private set; }
10 | public MouseEventArgs Args { get; private set; }
11 |
12 | public VertexMovedEventArgs(VertexControl vc, MouseEventArgs e)
13 | {
14 | Offset = new Point();
15 | VertexControl = vc;
16 | Args = e;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/EdgeRouting/PathFinderER/MatrixItem.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Logic.Algorithms.EdgeRouting
4 | {
5 | public class MatrixItem
6 | {
7 | public Point Point;
8 | public bool IsIntersected;
9 |
10 | public int PlaceX;
11 | public int PlaceY;
12 |
13 | public int Weight { get { return IsIntersected ? 0 : 1; } }
14 |
15 | public MatrixItem(Point pt, bool inter, int placeX, int placeY)
16 | {
17 | Point = pt; IsIntersected = inter;
18 | PlaceX = placeX; PlaceY = placeY;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GraphX.Controls/ExceptionExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace GraphX.Controls
5 | {
6 | internal static class ExceptionExtensions
7 | {
8 | internal static void PreserveStackTrace(this Exception exception)
9 | {
10 | // In .NET 4.5 and later this isn't needed... (yes, this is a brutal hack!)
11 | var preserveStackTrace = typeof(Exception).GetMethod(
12 | "InternalPreserveStackTrace",
13 | BindingFlags.Instance | BindingFlags.NonPublic);
14 |
15 | preserveStackTrace.Invoke(exception, null);
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Models/EdgeRoutingVisualData.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 | using GraphX.Common.Interfaces;
3 |
4 | namespace GraphX.Common.Models
5 | {
6 | public class EdgeRoutingVisualData
7 | {
8 | public bool HaveTemplate { get; set; }
9 | public bool IsEdgeVisible { get; set; }
10 | public bool IsEdgeSelfLooped { get; set; }
11 |
12 | public Point SourcePosition { get; set; }
13 | public Size SourceSize { get; set; }
14 | public Point TargetPosition { get; set; }
15 | public Size TargetSize { get; set; }
16 |
17 | IRoutingInfo Edge { get; set; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/ILayoutEdgeRouting.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 |
4 | namespace GraphX.Common.Interfaces
5 | {
6 | ///
7 | /// If added to layout algorithm specifies that it uses it's own edge routing and thus
8 | /// should ignore edge routing algorithm
9 | ///
10 | /// Edge type
11 | public interface ILayoutEdgeRouting
12 | {
13 | ///
14 | /// Get resulting edge routes collection
15 | ///
16 | IDictionary EdgeRoutes { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Examples/SimpleGraph.DotNetCore/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/Interfaces/IGraphControlFactory.cs:
--------------------------------------------------------------------------------
1 | # if WPF
2 | using System.Windows;
3 | #elif METRO
4 | using Windows.UI.Xaml;
5 | #endif
6 |
7 | namespace GraphX.Controls.Models
8 | {
9 | public interface IGraphControlFactory
10 | {
11 | EdgeControl CreateEdgeControl(VertexControl source, VertexControl target, object edge, bool showArrows = true, Visibility visibility = Visibility.Visible);
12 | VertexControl CreateVertexControl(object vertexData);
13 | ///
14 | /// Root graph area for the factory
15 | ///
16 | GraphAreaBase FactoryRootArea { get; }
17 |
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/DispatcherHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Windows.UI.Core;
4 |
5 | namespace GraphX.Controls.Models
6 | {
7 | public static class DispatcherHelper
8 | {
9 | public static async Task CheckBeginInvokeOnUi(Action action)
10 | {
11 | var dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
12 |
13 | if (dispatcher.HasThreadAccess)
14 | action();
15 | else await dispatcher.RunAsync(CoreDispatcherPriority.Normal,
16 | () => action());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/VertexSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public sealed class VertexSelectedEventArgs : System.EventArgs
6 | {
7 | public VertexControl VertexControl { get; private set; }
8 | public MouseButtonEventArgs MouseArgs { get; private set; }
9 | public ModifierKeys Modifiers { get; private set; }
10 |
11 | public VertexSelectedEventArgs(VertexControl vc, MouseEventArgs e, ModifierKeys keys)
12 | {
13 | VertexControl = vc;
14 | MouseArgs = e as MouseButtonEventArgs;
15 | Modifiers = keys;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/DispatcherHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Windows.UI.Core;
4 |
5 | namespace GraphX.Controls.Models
6 | {
7 | public static class DispatcherHelper
8 | {
9 | public static async Task CheckBeginInvokeOnUi(Action action)
10 | {
11 | var dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
12 |
13 | if (dispatcher.HasThreadAccess)
14 | action();
15 | else await dispatcher.RunAsync(CoreDispatcherPriority.Normal,
16 | () => action());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using QuikGraph;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public partial class SugiyamaLayoutAlgorithm
7 | where TVertex : class
8 | where TEdge : IEdge
9 | where TGraph : IVertexAndEdgeListGraph, IMutableVertexAndEdgeSet
10 | {
11 | ///
12 | /// Collection of the layers of the vertices.
13 | ///
14 | private class VertexLayerCollection : List
15 | {
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Models/GraphExample.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace SimpleGraph.Models
4 | {
5 | ///
6 | /// This is our custom data graph derived from BidirectionalGraph class using custom data types.
7 | /// Data graph stores vertices and edges data that is used by GraphArea and end-user for a variety of operations.
8 | /// Data graph content handled manually by user (add/remove objects). The main idea is that you can dynamicaly
9 | /// remove/add objects into the GraphArea layout and then use data graph to restore original layout content.
10 | ///
11 | public class GraphExample : BidirectionalGraph { }
12 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Models/Interfaces/IAttachableControl.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls.Models
2 | {
3 | ///
4 | /// Represents attachable control so it can be automaticaly attached to parent entity
5 | ///
6 | /// Parent entity type
7 | public interface IAttachableControl
8 | {
9 | ///
10 | /// Attach control to parent entity
11 | ///
12 | /// Parent entity
13 | void Attach(T control);
14 | ///
15 | /// Detach label from control
16 | ///
17 | void Detach();
18 | }
19 | }
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Models/GraphExample.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace UAP.SimpleGraph.Models
4 | {
5 | ///
6 | /// This is our custom data graph derived from BidirectionalGraph class using custom data types.
7 | /// Data graph stores vertices and edges data that is used by GraphArea and end-user for a variety of operations.
8 | /// Data graph content handled manually by user (add/remove objects). The main idea is that you can dynamicaly
9 | /// remove/add objects into the GraphArea layout and then use data graph to restore original layout content.
10 | ///
11 | public class GraphExample : BidirectionalGraph { }
12 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Models/ContentSizeChangedEventHandler.cs:
--------------------------------------------------------------------------------
1 | #if WPF
2 | using System.Windows;
3 | #elif METRO
4 | using Windows.Foundation;
5 | #endif
6 |
7 | namespace GraphX.Controls.Models
8 | {
9 | public sealed class ContentSizeChangedEventArgs : System.EventArgs
10 | {
11 | public Rect OldSize { get; private set; }
12 | public Rect NewSize { get; private set; }
13 |
14 | public ContentSizeChangedEventArgs(Rect oldSize, Rect newSize)
15 | {
16 | OldSize = oldSize;
17 | NewSize = newSize;
18 | }
19 | }
20 |
21 | public delegate void ContentSizeChangedEventHandler(object sender, ContentSizeChangedEventArgs e);
22 | }
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Helpers/CommonExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace GraphX.Common
5 | {
6 | public static class CommonExtensions
7 | {
8 | public static void AddOrUpdate(this IDictionary dictionary, TKey key, TValue value)
9 | {
10 | if (dictionary.ContainsKey(key))
11 | dictionary[key] = value;
12 | else dictionary.Add(key, value);
13 | }
14 |
15 | public static void ForEach(this IEnumerable list, Action func)
16 | {
17 | foreach (var item in list)
18 | func(item);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/ProcessingOptionEnum.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | ///
4 | /// Specifies how object will be treated in calculations and visualization
5 | ///
6 | public enum ProcessingOptionEnum
7 | {
8 | ///
9 | /// Process object as intended
10 | ///
11 | Default,
12 | ///
13 | /// Freeze object so its position will remain intact for all subsequent calculations.
14 | ///
15 | Freeze,
16 | ///
17 | /// Exclude object from all consequent calulations
18 | ///
19 | Exclude
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Models/GraphAreaExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX;
2 | using QuikGraph;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using GraphX.Controls;
7 |
8 | namespace WindowsFormsProject
9 | {
10 | ///
11 | /// This is custom GraphArea representation using custom data types.
12 | /// GraphArea is the visual panel component responsible for drawing visuals (vertices and edges).
13 | /// It is also provides many global preferences and methods that makes GraphX so customizable and user-friendly.
14 | ///
15 | public class GraphAreaExample : GraphArea> { }
16 | }
17 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/DesignerExampleData/VertexDataExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Models;
2 |
3 | namespace GraphX.Controls.DesignerExampleData
4 | {
5 | internal sealed class VertexDataExample : VertexBase
6 | {
7 | public VertexDataExample(int id, string name)
8 | {
9 | ID = id; Name = name;
10 | //DataImage = new BitmapImage(new Uri(@"pack://application:,,,/GraphX.Controls;component/Images/help_black.png", UriKind.Absolute));
11 | }
12 |
13 | public string Name { get; set; }
14 | //public ImageSource DataImage{ get; set; }
15 |
16 | public override string ToString()
17 | {
18 | return Name;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/DesignerExampleData/VertexDataExample.cs:
--------------------------------------------------------------------------------
1 | using GraphX.PCL.Common.Models;
2 |
3 | namespace GraphX.Controls.DesignerExampleData
4 | {
5 | internal sealed class VertexDataExample : VertexBase
6 | {
7 | public VertexDataExample(int id, string name)
8 | {
9 | ID = id; Name = name;
10 | //DataImage = new BitmapImage(new Uri(@"pack://application:,,,/GraphX.Controls;component/Images/help_black.png", UriKind.Absolute));
11 | }
12 |
13 | public string Name { get; set; }
14 | //public ImageSource DataImage{ get; set; }
15 |
16 | public override string ToString()
17 | {
18 | return Name;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/Converters/EqualityToBooleanConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml.Data;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public sealed class EqualityToBooleanConverter : IValueConverter
7 | {
8 | public object Convert(object value, Type targetType, object parameter, string language)
9 | {
10 | return Equals(value, parameter);
11 | }
12 |
13 | public object ConvertBack(object value, Type targetType, object parameter, string language)
14 | {
15 | if ((bool)value)
16 | return parameter;
17 |
18 | //it's false, so don't bind it back
19 | return null;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/Converters/EqualityToBooleanConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml.Data;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public sealed class EqualityToBooleanConverter : IValueConverter
7 | {
8 | public object Convert(object value, Type targetType, object parameter, string language)
9 | {
10 | return Equals(value, parameter);
11 | }
12 |
13 | public object ConvertBack(object value, Type targetType, object parameter, string language)
14 | {
15 | if ((bool)value)
16 | return parameter;
17 |
18 | //it's false, so don't bind it back
19 | return null;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/EdgeRouting/SimpleER/SimpleERParameters.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Interfaces;
2 |
3 | namespace GraphX.Logic.Algorithms.EdgeRouting
4 | {
5 | public class SimpleERParameters: IEdgeRoutingParameters
6 | {
7 | ///
8 | /// Get or set side step value when searching for way around vertex
9 | ///
10 | public double SideStep { get; set; }
11 | ///
12 | /// Get or set backward step when intersection is met
13 | ///
14 | public double BackStep { get; set; }
15 |
16 | public SimpleERParameters()
17 | {
18 | SideStep = 5;
19 | BackStep = 10;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/TypedEdge.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace GraphX.Logic.Algorithms
4 | {
5 | public enum EdgeTypes
6 | {
7 | General,
8 | Hierarchical
9 | }
10 |
11 | public interface ITypedEdge
12 | {
13 | EdgeTypes Type { get; }
14 | }
15 |
16 | public class TypedEdge : Edge, ITypedEdge
17 | {
18 | private readonly EdgeTypes _type;
19 | public EdgeTypes Type
20 | {
21 | get { return _type; }
22 | }
23 |
24 | public TypedEdge(TVertex source, TVertex target, EdgeTypes type)
25 | : base(source, target)
26 | {
27 | _type = type;
28 | }
29 |
30 | public override string ToString()
31 | {
32 | return string.Format("{0}: {1}-->{2}", _type, Source, Target);
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/ITrackableContent.cs:
--------------------------------------------------------------------------------
1 | #if WPF
2 | using System.Windows;
3 | #elif METRO
4 | using Windows.Foundation;
5 | #endif
6 | using GraphX.Controls.Models;
7 |
8 | namespace GraphX.Controls
9 | {
10 | ///
11 | /// Interface that represents trackable content object (e.g. provides means to notify about it's content changes)
12 | ///
13 | public interface ITrackableContent
14 | {
15 | ///
16 | /// Rises when content size changed
17 | ///
18 | event ContentSizeChangedEventHandler ContentSizeChanged;
19 | ///
20 | /// Gets actual content rectangle size
21 | ///
22 | Rect ContentSize { get; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Tree/BalloonTreeLayoutParameters.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
2 | {
3 | public class BalloonTreeLayoutParameters : LayoutParametersBase
4 | {
5 | internal int minRadius = 2;
6 | internal float border = 20.0f;
7 |
8 | public int MinRadius
9 | {
10 | get { return minRadius; }
11 | set
12 | {
13 | if (value == minRadius) return;
14 | minRadius = value;
15 | NotifyPropertyChanged( "MinRadius" );
16 | }
17 | }
18 |
19 |
20 | public float Border
21 | {
22 | get { return border; }
23 | set
24 | {
25 | if (value == border) return;
26 | border = value;
27 | NotifyPropertyChanged( "Border" );
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Enums/LayoutAlgorithmTypeEnum.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Common.Enums
2 | {
3 | ///
4 | /// Built-in layout algorithm types
5 | ///
6 | public enum LayoutAlgorithmTypeEnum
7 | {
8 | BoundedFR,
9 | Circular,
10 | CompoundFDP,
11 | EfficientSugiyama,
12 | Sugiyama,
13 | FR,
14 | ISOM,
15 | KK,
16 | LinLog,
17 | Tree,
18 | ///
19 | /// Simple random vertices layout
20 | ///
21 | SimpleRandom,
22 | //BalloonTree
23 | ///
24 | /// Do not perform any layout. Layout will be manualy managed by end-user.
25 | ///
26 | Custom,
27 | }
28 | }
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Models/GraphExample.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 |
6 | namespace WindowsFormsProject
7 | {
8 | ///
9 | /// This is our custom data graph derived from BidirectionalGraph class using custom data types.
10 | /// Data graph stores vertices and edges data that is used by GraphArea and end-user for a variety of operations.
11 | /// Data graph content handled manually by user (add/remove objects). The main idea is that you can dynamicaly
12 | /// remove/add objects into the GraphArea layout and then use data graph to restore original layout content.
13 | ///
14 | public class GraphExample : BidirectionalGraph { }
15 | }
16 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using QuikGraph;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public partial class SugiyamaLayoutAlgorithm
7 | where TVertex : class
8 | where TEdge : IEdge
9 | where TGraph : IVertexAndEdgeListGraph, IMutableVertexAndEdgeSet
10 | {
11 | [Flags]
12 | protected enum BaryCenter
13 | {
14 | Up = 1,
15 | Down = 2,
16 | Sub = 4
17 | }
18 |
19 | [Flags]
20 | protected enum CrossCount
21 | {
22 | Up = 1,
23 | Down = 2
24 | }
25 |
26 | protected enum SweepingDirection
27 | {
28 | Up = 1,
29 | Down = 2
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/Converters/EqualityToBooleanConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 |
5 | namespace GraphX.Controls
6 | {
7 | public sealed class EqualityToBooleanConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
10 | {
11 | return Equals(value, parameter);
12 | }
13 |
14 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
15 | {
16 | if ((bool)value)
17 | return parameter;
18 |
19 | //it's false, so don't bind it back
20 | return Binding.DoNothing;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/port.txt:
--------------------------------------------------------------------------------
1 | 1. async/threadsafe
2 | 2. XAML:
3 | - xmlns changes
4 | - style TargetType changed
5 | - Template.FindName cut off (this.FindName or GetTemplatedName)
6 | - readonly dependecy props are removed
7 | - DP definition logic changed
8 | - invalidatevisual removed, now can use invalidatearrange
9 | - generic.xaml as Content and must use DefaultStyleKey for Control objects to hook default styles
10 | - Freezable removed
11 | - PolyLine, LineSegment, PathSegment and etc. have no ctors w params
12 | - Only PropertyMetadata remains
13 | - No Triggers (use visual states)
14 | 3. math and logic:
15 | - Matrix class have no advanced methods (Transform(Points[]), RotateAt)
16 | 4. No DependencyPropertyDescriptor so no attached props change notifications
17 |
18 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Models/GraphSerializationData.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Common.Models
4 | {
5 | public class GraphSerializationData
6 | {
7 | ///
8 | /// Gets or sets graph data object
9 | ///
10 | public object Data { get; set; }
11 | ///
12 | /// Gets or sets control position
13 | ///
14 | public Point Position { get; set; }
15 | ///
16 | /// Gets or sets control visibility
17 | ///
18 | public bool IsVisible { get; set; } = true;
19 | ///
20 | /// Gets or sets control label availability
21 | ///
22 | public bool HasLabel { get; set; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/Interfaces/ILabelFactory.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Windows;
3 | #if METRO
4 | using Windows.UI.Xaml;
5 | #endif
6 |
7 | namespace GraphX.Controls.Models
8 | {
9 | ///
10 | /// Generic label factory interface. TResult should be at least UIElement to be able to be added as the GraphArea child.
11 | ///
12 | public interface ILabelFactory
13 | where TResult: UIElement
14 | {
15 | ///
16 | /// Returns newly generated label for parent control. Attachable labels will be auto attached if derived from IAttachableControl
17 | ///
18 | /// Parent control
19 | IEnumerable CreateLabel(TCtrl control);
20 | }
21 | }
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 | *.sln merge=union
7 | *.csproj merge=union
8 | *.vbproj merge=union
9 | *.fsproj merge=union
10 | *.dbproj merge=union
11 |
12 | # Resources
13 | *.png binary
14 | *.jpg binary
15 | *.dll binary
16 | *.exe binary
17 | *.gif binary
18 | *.ico binary
19 |
20 | # Standard to msysgit
21 | *.doc diff=astextplain
22 | *.DOC diff=astextplain
23 | *.docx diff=astextplain
24 | *.DOCX diff=astextplain
25 | *.dot diff=astextplain
26 | *.DOT diff=astextplain
27 | *.pdf diff=astextplain
28 | *.PDF diff=astextplain
29 | *.rtf diff=astextplain
30 | *.RTF diff=astextplain
31 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/TestingCompoundVertexInfo.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
4 | {
5 | public class TestingCompoundVertexInfo
6 | {
7 | public TestingCompoundVertexInfo(Vector springForce, Vector repulsionForce, Vector gravityForce, Vector applicationForce)
8 | {
9 | SpringForce = springForce;
10 | RepulsionForce = repulsionForce;
11 | GravityForce = gravityForce;
12 | ApplicationForce = applicationForce;
13 | }
14 |
15 | public Vector SpringForce { get; set; }
16 | public Vector RepulsionForce { get; set; }
17 | public Vector GravityForce { get; set; }
18 | public Vector ApplicationForce { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/ICompoundGraph.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using QuikGraph;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public interface ICompoundGraph : IBidirectionalGraph
7 | where TEdge : IEdge
8 | {
9 | bool AddChildVertex( TVertex parent, TVertex child );
10 | int AddChildVertexRange( TVertex parent, IEnumerable children );
11 | TVertex GetParent( TVertex vertex );
12 | bool IsChildVertex( TVertex vertex );
13 | IEnumerable GetChildrenVertices( TVertex vertex );
14 | int GetChildrenCount( TVertex vertex );
15 | bool IsCompoundVertex( TVertex vertex );
16 |
17 | IEnumerable CompoundVertices { get; }
18 | IEnumerable SimpleVertices { get; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GraphX.Controls/DesignerExampleData/VertexDataExample.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Media;
3 | using System.Windows.Media.Imaging;
4 | using GraphX.Common.Models;
5 |
6 | namespace GraphX.Controls.DesignerExampleData
7 | {
8 | internal sealed class VertexDataExample : VertexBase
9 | {
10 | public VertexDataExample(int id, string name)
11 | {
12 | ID = id; Name = name;
13 | DataImage = new BitmapImage(new Uri(@"pack://application:,,,/GraphX.Controls;component/Images/help_black.png", UriKind.Absolute)) { CacheOption = BitmapCacheOption.OnLoad };
14 | }
15 |
16 | public string Name { get; set; }
17 | public ImageSource DataImage{ get; set; }
18 |
19 | public override string ToString()
20 | {
21 | return Name;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/FeatureLists/FeaturesPageData.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Controls;
3 |
4 | namespace ShowcaseApp.WPF.Pages
5 | {
6 | ///
7 | /// Interaction logic for DebugGraph.xaml
8 | ///
9 | public partial class FeaturesPageData : UserControl, INotifyPropertyChanged
10 | {
11 | public FeaturesPageData()
12 | {
13 | InitializeComponent();
14 | DataContext = this;
15 | }
16 |
17 | public event PropertyChangedEventHandler PropertyChanged;
18 |
19 | protected virtual void OnPropertyChanged(string propertyName)
20 | {
21 | var handler = PropertyChanged;
22 | if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/FeatureLists/FeaturesPageEdges.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Controls;
3 |
4 | namespace ShowcaseApp.WPF.Pages
5 | {
6 | ///
7 | /// Interaction logic for DebugGraph.xaml
8 | ///
9 | public partial class FeaturesPageEdges : UserControl, INotifyPropertyChanged
10 | {
11 | public FeaturesPageEdges()
12 | {
13 | InitializeComponent();
14 | DataContext = this;
15 | }
16 |
17 | public event PropertyChangedEventHandler PropertyChanged;
18 |
19 | protected virtual void OnPropertyChanged(string propertyName)
20 | {
21 | var handler = PropertyChanged;
22 | if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/Converters/DoubleToLog10Converter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml.Data;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public sealed class DoubleToLog10Converter : IValueConverter
7 | {
8 | #region IValueConverter Members
9 |
10 | public object Convert(object value, Type targetType, object parameter, string language)
11 | {
12 | var val = Math.Log10((double)value);
13 | return double.IsNegativeInfinity(val) ? 0 : val;
14 | }
15 |
16 | public object ConvertBack(object value, Type targetType, object parameter, string language)
17 | {
18 | var val = Math.Pow(10, (double)value);
19 | return double.IsNegativeInfinity(val) ? 0 : val;
20 | }
21 |
22 | #endregion
23 |
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/Converters/DoubleToLog10Converter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml.Data;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public sealed class DoubleToLog10Converter : IValueConverter
7 | {
8 | #region IValueConverter Members
9 |
10 | public object Convert(object value, Type targetType, object parameter, string language)
11 | {
12 | var val = Math.Log10((double)value);
13 | return double.IsNegativeInfinity(val) ? 0 : val;
14 | }
15 |
16 | public object ConvertBack(object value, Type targetType, object parameter, string language)
17 | {
18 | var val = Math.Pow(10, (double)value);
19 | return double.IsNegativeInfinity(val) ? 0 : val;
20 | }
21 |
22 | #endregion
23 |
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/FeatureLists/FeaturesPageLayouts.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Controls;
3 |
4 | namespace ShowcaseApp.WPF.Pages
5 | {
6 | ///
7 | /// Interaction logic for DebugGraph.xaml
8 | ///
9 | public partial class FeaturesPageLayouts : UserControl, INotifyPropertyChanged
10 | {
11 | public FeaturesPageLayouts()
12 | {
13 | InitializeComponent();
14 | DataContext = this;
15 | }
16 |
17 | public event PropertyChangedEventHandler PropertyChanged;
18 |
19 | protected virtual void OnPropertyChanged(string propertyName)
20 | {
21 | var handler = PropertyChanged;
22 | if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/FeatureLists/FeaturesPageTemplates.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Controls;
3 |
4 | namespace ShowcaseApp.WPF.Pages
5 | {
6 | ///
7 | /// Interaction logic for DebugGraph.xaml
8 | ///
9 | public partial class FeaturesPageTemplates : UserControl, INotifyPropertyChanged
10 | {
11 | public FeaturesPageTemplates()
12 | {
13 | InitializeComponent();
14 | DataContext = this;
15 | }
16 |
17 | public event PropertyChangedEventHandler PropertyChanged;
18 |
19 | protected virtual void OnPropertyChanged(string propertyName)
20 | {
21 | var handler = PropertyChanged;
22 | if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/Misc/IVertexConnectionPoint.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | #if WPF
3 | using System.Windows;
4 | #elif METRO
5 | using Windows.Foundation;
6 | using Windows.UI.Xaml;
7 | #endif
8 | using GraphX.Common.Enums;
9 |
10 | namespace GraphX.Controls
11 | {
12 | public interface IVertexConnectionPoint : IDisposable
13 | {
14 | ///
15 | /// Connector identifier
16 | ///
17 | int Id { get; }
18 |
19 | ///
20 | /// Gets or sets shape form for connection point (affects math calculations for edge end placement)
21 | ///
22 | VertexShape Shape { get; set; }
23 |
24 | void Hide();
25 | void Show();
26 |
27 | Rect RectangularSize { get; }
28 |
29 | void Update();
30 | DependencyObject GetParent();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/SupportClasses/ZoomViewModifierMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum ZoomViewModifierMode
4 | {
5 | ///
6 | /// It does nothing at all.
7 | ///
8 | None,
9 |
10 | ///
11 | /// You can pan the view with the mouse in this mode.
12 | ///
13 | Pan,
14 |
15 | ///
16 | /// You can zoom in with the mouse in this mode.
17 | ///
18 | ZoomIn,
19 |
20 | ///
21 | /// You can zoom out with the mouse in this mode.
22 | ///
23 | ZoomOut,
24 |
25 | ///
26 | /// Zooming after the user has been selected the zooming box.
27 | ///
28 | ZoomBox
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Controls/ZoomControl/SupportClasses/ZoomViewModifierMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum ZoomViewModifierMode
4 | {
5 | ///
6 | /// It does nothing at all.
7 | ///
8 | None,
9 |
10 | ///
11 | /// You can pan the view with the mouse in this mode.
12 | ///
13 | Pan,
14 |
15 | ///
16 | /// You can zoom in with the mouse in this mode.
17 | ///
18 | ZoomIn,
19 |
20 | ///
21 | /// You can zoom out with the mouse in this mode.
22 | ///
23 | ZoomOut,
24 |
25 | ///
26 | /// Zooming after the user has been selected the zooming box.
27 | ///
28 | ZoomBox
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Controls/ZoomControl/SupportClasses/ZoomViewModifierMode.cs:
--------------------------------------------------------------------------------
1 | namespace GraphX.Controls
2 | {
3 | public enum ZoomViewModifierMode
4 | {
5 | ///
6 | /// It does nothing at all.
7 | ///
8 | None,
9 |
10 | ///
11 | /// You can pan the view with the mouse in this mode.
12 | ///
13 | Pan,
14 |
15 | ///
16 | /// You can zoom in with the mouse in this mode.
17 | ///
18 | ZoomIn,
19 |
20 | ///
21 | /// You can zoom out with the mouse in this mode.
22 | ///
23 | ZoomOut,
24 |
25 | ///
26 | /// Zooming after the user has been selected the zooming box.
27 | ///
28 | ZoomBox
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/Converters/DoubleToLog10Converter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Data;
3 |
4 | namespace GraphX.Controls
5 | {
6 | public sealed class DoubleToLog10Converter : IValueConverter
7 | {
8 | #region IValueConverter Members
9 |
10 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
11 | {
12 | var val = Math.Log10((double)value);
13 | return double.IsNegativeInfinity(val) ? 0 : val;
14 | }
15 |
16 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
17 | {
18 | var val = Math.Pow(10, (double)value);
19 | return double.IsNegativeInfinity(val) ? 0 : val;
20 | }
21 |
22 | #endregion
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Common.Interfaces;
3 |
4 | namespace GraphX.Logic.Algorithms.OverlapRemoval
5 | {
6 | /*public interface IOverlapRemovalAlgorithmFactory
7 | where TVertex : class
8 | {
9 | ///
10 | /// List of the available algorithms.
11 | ///
12 | IEnumerable AlgorithmTypes { get; }
13 |
14 | IOverlapRemovalAlgorithm CreateAlgorithm( string newAlgorithmType, IOverlapRemovalContext context, IOverlapRemovalParameters parameters );
15 |
16 | IOverlapRemovalParameters CreateParameters( string algorithmType, IOverlapRemovalParameters oldParameters );
17 |
18 | bool IsValidAlgorithm( string algorithmType );
19 |
20 | string GetAlgorithmType( IOverlapRemovalAlgorithm algorithm );
21 | }*/
22 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/App.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IExternalOverlapRemoval.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 | using GraphX.Measure;
4 |
5 | namespace GraphX.Common.Interfaces
6 | {
7 | ///
8 | /// Base interface for overlap removal algorithm
9 | ///
10 | /// Vertex data class
11 | public interface IExternalOverlapRemoval
12 | {
13 | ///
14 | /// Gets or sets vertices rectangle sizes
15 | /// This property is filled automaticaly before calculation in GenerateGraph()/RelayoutGraph() methods
16 | ///
17 | IDictionary Rectangles { get; set; }
18 | ///
19 | /// Implements algorithm computation
20 | ///
21 | void Compute(CancellationToken cancellationToken);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/ILayoutInfoIterationEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using QuikGraph;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public interface ILayoutInfoIterationEventArgs
7 | : ILayoutIterationEventArgs
8 | where TVertex : class
9 | where TEdge : IEdge
10 | {
11 | object GetVertexInfo(TVertex vertex);
12 |
13 | object GetEdgeInfo(TEdge edge);
14 | }
15 |
16 | public interface ILayoutInfoIterationEventArgs
17 | : ILayoutInfoIterationEventArgs
18 | where TVertex : class
19 | where TEdge : IEdge
20 | {
21 | IDictionary VertexInfos { get; }
22 | IDictionary EdgeInfos { get; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Assets/ModernUI.Snowflakes.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | #0082AD
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IGraphFIlter.cs:
--------------------------------------------------------------------------------
1 | using QuikGraph;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | ///
6 | /// Common interface for the graph filter
7 | ///
8 | /// Graph vertex
9 | /// Graph edge
10 | /// Graph
11 | public interface IGraphFilter
12 | where TVertex : class, IGraphXVertex
13 | where TEdge : class, IGraphXEdge
14 | where TGraph : class, IMutableBidirectionalGraph
15 | {
16 | ///
17 | /// Core filter method that can modify the input graph and supply modified graph to the output
18 | ///
19 | /// Input graph
20 | TGraph ProcessFilter(TGraph inputGraph);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Examples/WindowsDesktop_VB.NET_WinForms_Example/Models/DataVertex.vb:
--------------------------------------------------------------------------------
1 |
2 | Imports GraphX.Common.Models
3 |
4 | Namespace Models
5 |
6 | Public Class DataVertex
7 | Inherits VertexBase
8 | '''
9 | ''' Some string property for example purposes
10 | '''
11 | Public Property Text As String
12 |
13 | #Region "Calculated or static props"
14 |
15 | Public Overrides Function ToString() As String
16 | Return Text
17 | End Function
18 |
19 |
20 | #End Region
21 |
22 | '''
23 | ''' Default parameterless constructor for this class
24 | ''' (required for YAXLib serialization)
25 | '''
26 | Public Sub New()
27 | Me.New("")
28 | End Sub
29 |
30 | Public Sub New(Optional text1 As String = "")
31 | Text = text1
32 | End Sub
33 | End Class
34 | End Namespace
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/Filters/BlueVertexFilter.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Interfaces;
2 | using QuikGraph;
3 |
4 | namespace ShowcaseApp.WPF.Filters
5 | {
6 | public class BlueVertexFilter: IGraphFilter>
7 | {
8 | public BidirectionalGraph ProcessFilter(BidirectionalGraph inputGraph)
9 | {
10 | inputGraph.RemoveVertexIf(a => !a.IsBlue);
11 | return inputGraph;
12 | }
13 | }
14 |
15 | public class YellowVertexFilter : IGraphFilter>
16 | {
17 | public BidirectionalGraph ProcessFilter(BidirectionalGraph inputGraph)
18 | {
19 | inputGraph.RemoveVertexIf(a => a.IsBlue);
20 | return inputGraph;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/EdgeSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public class EdgeSelectedEventArgs : System.EventArgs
6 | {
7 | public EdgeControl EdgeControl { get; set; }
8 | public PointerRoutedEventArgs Args { get; set; }
9 |
10 | public EdgeSelectedEventArgs(EdgeControl ec, PointerRoutedEventArgs e)
11 | : base()
12 | {
13 | EdgeControl = ec;
14 | Args = e;
15 | }
16 | }
17 |
18 | public sealed class EdgeLabelSelectedEventArgs : EdgeSelectedEventArgs
19 | {
20 | public IEdgeLabelControl EdgeLabelControl { get; set; }
21 |
22 |
23 | public EdgeLabelSelectedEventArgs(IEdgeLabelControl label, EdgeControl ec, PointerRoutedEventArgs e, object nu = null)
24 | : base(ec, e)
25 | {
26 | EdgeLabelControl = label;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/EdgeSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using Windows.UI.Xaml.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public class EdgeSelectedEventArgs : System.EventArgs
6 | {
7 | public EdgeControl EdgeControl { get; set; }
8 | public PointerRoutedEventArgs Args { get; set; }
9 |
10 | public EdgeSelectedEventArgs(EdgeControl ec, PointerRoutedEventArgs e)
11 | : base()
12 | {
13 | EdgeControl = ec;
14 | Args = e;
15 | }
16 | }
17 |
18 | public sealed class EdgeLabelSelectedEventArgs : EdgeSelectedEventArgs
19 | {
20 | public IEdgeLabelControl EdgeLabelControl { get; set; }
21 |
22 |
23 | public EdgeLabelSelectedEventArgs(IEdgeLabelControl label, EdgeControl ec, PointerRoutedEventArgs e, object nu = null)
24 | : base(ec, e)
25 | {
26 | EdgeLabelControl = label;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Pages/Settings.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/ExampleMoveAnimation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using GraphX.Controls.Animations;
3 |
4 | namespace ShowcaseApp.WPF
5 | {
6 | public class ExampleMoveAnimation: MoveAnimationBase
7 | {
8 | public ExampleMoveAnimation()
9 | {
10 | //set animation duration
11 | Duration = TimeSpan.FromSeconds(1);
12 | }
13 |
14 | public override void Cleanup()
15 | {
16 | //cleanup something
17 | }
18 |
19 | public override void RunVertexAnimation()
20 | {
21 | //do some vertex animation. Can be optional.
22 |
23 | //you need to call this manually at the animation end
24 | //if you want corresponding event fired on complete
25 | OnCompleted();
26 | }
27 |
28 | public override void RunEdgeAnimation()
29 | {
30 | //do some edge animation. Can be optional.
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/FreeFRLayoutParameters.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
4 | {
5 | public class FreeFRLayoutParameters : FRLayoutParametersBase
6 | {
7 | private double _idealEdgeLength = 10;
8 |
9 | public override double K
10 | {
11 | get { return _idealEdgeLength; }
12 | }
13 |
14 | public override double InitialTemperature
15 | {
16 | get { return Math.Sqrt(Math.Pow(_idealEdgeLength, 2) * VertexCount); }
17 | }
18 |
19 | ///
20 | /// Constant. Represents the ideal length of the edges.
21 | ///
22 | public double IdealEdgeLength
23 | {
24 | get { return _idealEdgeLength; }
25 | set
26 | {
27 | _idealEdgeLength = value;
28 | UpdateParameters();
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/LayoutParametersBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using GraphX.Common.Interfaces;
4 |
5 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
6 | {
7 | public abstract class LayoutParametersBase : ILayoutParameters
8 | {
9 | protected LayoutParametersBase()
10 | {
11 | Seed = Guid.NewGuid().GetHashCode();
12 | }
13 |
14 | #region ICloneable Members
15 |
16 | public object Clone()
17 | {
18 | return MemberwiseClone();
19 | }
20 |
21 | public int Seed { get; set; }
22 | #endregion
23 |
24 | #region INotifyPropertyChanged Members
25 |
26 | public event PropertyChangedEventHandler PropertyChanged;
27 |
28 | protected void NotifyPropertyChanged(string propertyName)
29 | {
30 | //delegating to the event...
31 | if (PropertyChanged != null)
32 | PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
33 | }
34 | #endregion
35 | }
36 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Models/VertexPositionEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | #if WPF
3 | using System.Windows;
4 | #elif METRO
5 | using Windows.Foundation;
6 | #endif
7 |
8 | namespace GraphX.Controls.Models
9 | {
10 | public sealed class VertexPositionEventArgs : EventArgs
11 | {
12 | ///
13 | /// Vertex control
14 | ///
15 | public VertexControlBase VertexControl { get; private set; }
16 | ///
17 | /// Attached coordinates X and Y
18 | ///
19 | public Point Position { get; private set; }
20 | ///
21 | /// Offset of the vertex control within the GraphArea
22 | ///
23 | public Point OffsetPosition { get; private set; }
24 |
25 | public VertexPositionEventArgs(Point offset, Point pos, VertexControlBase vc)
26 | {
27 | OffsetPosition = offset;
28 | VertexControl = vc;
29 | Position = pos;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/LayoutContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 | using QuikGraph;
4 |
5 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
6 | {
7 | public class LayoutContext : ILayoutContext
8 | where TEdge : IEdge
9 | where TGraph : IVertexAndEdgeListGraph
10 | {
11 | public IDictionary Positions { get; private set; }
12 |
13 | public IDictionary Sizes { get; private set; }
14 |
15 | public TGraph Graph { get; private set; }
16 |
17 | public LayoutMode Mode { get; private set; }
18 |
19 | public LayoutContext( TGraph graph, IDictionary positions, IDictionary sizes, LayoutMode mode )
20 | {
21 | Graph = graph;
22 | Positions = positions;
23 | Sizes = sizes;
24 | Mode = mode;
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Models/EdgeSelectedEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace GraphX.Controls.Models
4 | {
5 | public class EdgeSelectedEventArgs : System.EventArgs
6 | {
7 | public EdgeControl EdgeControl { get; set; }
8 | public ModifierKeys Modifiers { get; set; }
9 | public MouseButtonEventArgs MouseArgs { get; set; }
10 |
11 | public EdgeSelectedEventArgs(EdgeControl ec, MouseButtonEventArgs e, ModifierKeys keys)
12 | {
13 | EdgeControl = ec;
14 | Modifiers = keys;
15 | MouseArgs = e;
16 | }
17 | }
18 |
19 | public sealed class EdgeLabelSelectedEventArgs : EdgeSelectedEventArgs
20 | {
21 | public IEdgeLabelControl EdgeLabelControl { get; set; }
22 |
23 |
24 | public EdgeLabelSelectedEventArgs(IEdgeLabelControl label, EdgeControl ec, MouseButtonEventArgs e, ModifierKeys keys)
25 | :base(ec,e,keys)
26 | {
27 | EdgeLabelControl = label;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Controls/MiniContentPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Controls;
3 | using ShowcaseApp.WPF.Controls;
4 |
5 | namespace ShowcaseApp.WPF.Pages
6 | {
7 | ///
8 | /// Interaction logic for MiniContentPage.xaml
9 | ///
10 | public partial class MiniContentPage : UserControl, ISpecialWindowContentIntro, INotifyPropertyChanged
11 | {
12 | public MiniContentPage()
13 | {
14 | InitializeComponent();
15 | DataContext = this;
16 | }
17 |
18 | private string _text;
19 | public string IntroText { get { return _text; } set { _text = value; OnPropertyChanged("IntroText"); } }
20 | public event PropertyChangedEventHandler PropertyChanged;
21 |
22 | protected virtual void OnPropertyChanged(string propertyName)
23 | {
24 | var handler = PropertyChanged;
25 | if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/EdgeRouting/EdgeRoutingParameters.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Interfaces;
2 |
3 | namespace GraphX.Logic.Algorithms.EdgeRouting
4 | {
5 | ///
6 | /// Base class for edge routing parameters
7 | ///
8 | public class EdgeRoutingParameters : IEdgeRoutingParameters
9 | {
10 | ///
11 | /// Clone parameters
12 | ///
13 | ///
14 | public object Clone()
15 | {
16 | return MemberwiseClone();
17 | }
18 |
19 | ///
20 | /// Calls OnPropertyChange event notification
21 | ///
22 | ///
23 | protected void NotifyChanged( string propertyName )
24 | {
25 | PropertyChanged?.Invoke( this, new System.ComponentModel.PropertyChangedEventArgs( propertyName ) );
26 | }
27 |
28 | ///
29 | /// PropertyChange event notification
30 | ///
31 | protected event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
32 | }
33 | }
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/ExampleExternalEdgeRoutingAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Collections.Generic;
3 | using GraphX.Measure;
4 | using GraphX.Common.Interfaces;
5 |
6 | namespace ShowcaseApp.WPF
7 | {
8 | public class ExampleExternalEdgeRoutingAlgorithm : IExternalEdgeRouting
9 | {
10 | public void Compute(CancellationToken cancellationToken)
11 | {
12 | }
13 |
14 | public IDictionary VertexSizes { get; set; }
15 |
16 | public IDictionary VertexPositions { get; set; }
17 |
18 | readonly Dictionary _edgeRoutes = new Dictionary();
19 | public IDictionary EdgeRoutes { get { return _edgeRoutes; }}
20 |
21 | public Point[] ComputeSingle(TEdge edge) { return null; }
22 |
23 | public void UpdateVertexData(TVertex vertex, Point position, Rect size) { }
24 |
25 |
26 | public Rect AreaRectangle { get; set; }
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/ILayoutIterationEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public interface ILayoutIterationEventArgs
7 | where TVertex : class
8 | {
9 | ///
10 | /// Represent the status of the layout algorithm in percent.
11 | ///
12 | double StatusInPercent { get; }
13 |
14 | ///
15 | /// If the user sets this value to true, the algorithm aborts ASAP.
16 | ///
17 | bool Abort { get; set; }
18 |
19 | ///
20 | /// Number of the actual iteration.
21 | ///
22 | int Iteration { get; }
23 |
24 | ///
25 | /// Message, textual representation of the status of the algorithm.
26 | ///
27 | string Message { get; }
28 |
29 | IDictionary VertexPositions { get; }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/GraphX.Core.Controls/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Markup;
3 |
4 | [assembly: ThemeInfo(
5 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
6 | //(used if a resource is not found in the page,
7 | // or application resource dictionaries)
8 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
9 | //(used if a resource is not found in the page,
10 | // app, or any theme specific resource dictionaries)
11 | )]
12 |
13 | [assembly: XmlnsPrefix("http://schemas.panthernet.ru/graphx/", "graphx")]
14 | [assembly: XmlnsDefinition("http://schemas.panthernet.ru/graphx/",
15 | "GraphX.Controls")]
16 | [assembly: XmlnsDefinition("http://schemas.panthernet.ru/graphx/",
17 | "GraphX.Controls.Animations")]
18 | [assembly: XmlnsDefinition("http://schemas.panthernet.ru/graphx/",
19 | "GraphX.Controls.Models")]
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Controls/MiniContentPage.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/ExampleModels/DataVertex.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Models;
2 |
3 | namespace ShowcaseApp.WPF
4 | {
5 | public class DataVertex: VertexBase
6 | {
7 | public string Text { get; set; }
8 | public string Name { get; set; }
9 | public string Profession { get; set; }
10 | public string Gender { get; set; }
11 | public int Age { get; set; }
12 | public int ImageId { get; set; }
13 |
14 | public bool IsBlue { get; set; }
15 |
16 | #region Calculated or static props
17 |
18 | public override string ToString()
19 | {
20 | return Text;
21 | }
22 |
23 | #endregion
24 |
25 | ///
26 | /// Default constructor for this class
27 | /// (required for serialization).
28 | ///
29 | public DataVertex():this(string.Empty)
30 | {
31 | }
32 |
33 | public DataVertex(string text = "")
34 | {
35 | Text = string.IsNullOrEmpty(text) ? "New Vertex" : text;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Models/VertexBase.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Enums;
2 | using GraphX.Common.Interfaces;
3 |
4 | namespace GraphX.Common.Models
5 | {
6 | public abstract class VertexBase: IGraphXVertex
7 | {
8 | ///
9 | /// Gets or sets custom angle associated with the vertex
10 | ///
11 | public double Angle { get; set; }
12 |
13 | ///
14 | /// Gets or sets optional group identificator
15 | ///
16 | public int GroupId { get; set; }
17 |
18 | ///
19 | /// Skip vertex in algo calc and visualization
20 | ///
21 | public ProcessingOptionEnum SkipProcessing { get; set; }
22 |
23 | protected VertexBase()
24 | {
25 | ID = -1;
26 | }
27 | ///
28 | /// Unique vertex ID
29 | ///
30 | public long ID { get; set; }
31 |
32 | public bool Equals(IGraphXVertex other)
33 | {
34 | return Equals(this, other);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/ImageLoader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows.Media.Imaging;
4 |
5 | namespace ShowcaseApp.WPF.Models
6 | {
7 | public static class ImageLoader
8 | {
9 | private static readonly List Images = new List();
10 |
11 | static ImageLoader()
12 | {
13 | Images.Add(new BitmapImage(new Uri(@"pack://application:,,,/ShowcaseApp.WPF;component/Assets/circle_red.png", UriKind.Absolute)) { CacheOption = BitmapCacheOption.OnLoad });
14 | Images.Add(new BitmapImage(new Uri(@"pack://application:,,,/ShowcaseApp.WPF;component/Assets/circle_blue.png", UriKind.Absolute)) { CacheOption = BitmapCacheOption.OnLoad });
15 | Images.Add(new BitmapImage(new Uri(@"pack://application:,,,/ShowcaseApp.WPF;component/Assets/circle_green.png", UriKind.Absolute)) { CacheOption = BitmapCacheOption.OnLoad });
16 | }
17 |
18 | public static BitmapImage GetImageById(int id)
19 | {
20 | return Images.Count < id ? null : Images[id];
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/IHierarchicalBidirectionalGraph.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using QuikGraph;
3 |
4 | namespace GraphX.Logic.Algorithms
5 | {
6 | public interface IHierarchicalBidirectionalGraph : IBidirectionalGraph
7 | where TEdge : TypedEdge
8 | {
9 | IEnumerable HierarchicalEdgesFor(TVertex v);
10 | int HierarchicalEdgeCountFor(TVertex v);
11 | IEnumerable HierarchicalEdges { get; }
12 | int HierarchicalEdgeCount { get; }
13 |
14 | IEnumerable InHierarchicalEdges(TVertex v);
15 | int InHierarchicalEdgeCount(TVertex v);
16 |
17 | IEnumerable OutHierarchicalEdges(TVertex v);
18 | int OutHierarchicalEdgeCount(TVertex v);
19 |
20 | IEnumerable GeneralEdgesFor(TVertex v);
21 | int GeneralEdgeCountFor(TVertex v);
22 | IEnumerable GeneralEdges { get; }
23 | int GeneralEdgeCount { get; }
24 |
25 | IEnumerable InGeneralEdges(TVertex v);
26 | int InGeneralEdgeCount(TVertex v);
27 |
28 | IEnumerable OutGeneralEdges(TVertex v);
29 | int OutGeneralEdgeCount(TVertex v);
30 | }
31 | }
--------------------------------------------------------------------------------
/Documents/Licenses/License.YAXLib.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2009 - 2011 Sina Iravanian (sina@sinairv.com)
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IOverlapRemovalAlgorithm.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 |
4 | namespace GraphX.Common.Interfaces
5 | {
6 | public interface IOverlapRemovalAlgorithm : IExternalOverlapRemoval
7 | {
8 | IOverlapRemovalParameters GetParameters();
9 |
10 | ///
11 | /// Initialize algorithm initial data
12 | ///
13 | /// Size rectangles
14 | void Initialize(IDictionary rectangles);
15 | }
16 |
17 | public interface IOverlapRemovalAlgorithm : IOverlapRemovalAlgorithm
18 | where TParam : IOverlapRemovalParameters
19 | {
20 | ///
21 | /// Algorithm parameters
22 | ///
23 | TParam Parameters { get; }
24 |
25 | ///
26 | /// Initialize algorithm initial data
27 | ///
28 | /// Size rectangles
29 | /// algorithm parameters
30 | void Initialize(IDictionary rectangles, TParam parameters);
31 | }
32 | }
--------------------------------------------------------------------------------
/GraphX.UAP.Controls/Models/XamlTypes/ViewModelXamlMetadataProvider.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml.Markup;
3 |
4 | namespace FancyDevelopment.WinRtPluginSystem.MVVM
5 | {
6 | /* public class ViewModelXamlMetadataProvider : IXamlMetadataProvider
7 | {
8 | public IXamlType GetXamlType(string fullName)
9 | {
10 | return XamlTypeProvider.Instance.GetType(fullName);
11 | }
12 |
13 | public IXamlType GetXamlType(Type type)
14 | {
15 | return XamlTypeProvider.Instance.GetType(type);
16 | }
17 |
18 | public XmlnsDefinition[] GetXmlnsDefinitions()
19 | {
20 | return new[]
21 | {
22 | new XmlnsDefinition() { XmlNamespace = "http://schemas.panthernet.ru/graphx/", Namespace = "GraphX.Controls" },
23 | new XmlnsDefinition() { XmlNamespace = "http://schemas.panthernet.ru/graphx/", Namespace = "GraphX.Controls.Animations" },
24 | new XmlnsDefinition() { XmlNamespace = "http://schemas.panthernet.ru/graphx/", Namespace = "GraphX.Controls.Models" },
25 | };
26 | }
27 | }*/
28 | }
29 |
--------------------------------------------------------------------------------
/GraphX.METRO.Controls/Models/XamlTypes/ViewModelXamlMetadataProvider.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml.Markup;
3 |
4 | namespace FancyDevelopment.WinRtPluginSystem.MVVM
5 | {
6 | /* public class ViewModelXamlMetadataProvider : IXamlMetadataProvider
7 | {
8 | public IXamlType GetXamlType(string fullName)
9 | {
10 | return XamlTypeProvider.Instance.GetType(fullName);
11 | }
12 |
13 | public IXamlType GetXamlType(Type type)
14 | {
15 | return XamlTypeProvider.Instance.GetType(type);
16 | }
17 |
18 | public XmlnsDefinition[] GetXmlnsDefinitions()
19 | {
20 | return new[]
21 | {
22 | new XmlnsDefinition() { XmlNamespace = "http://schemas.panthernet.ru/graphx/", Namespace = "GraphX.Controls" },
23 | new XmlnsDefinition() { XmlNamespace = "http://schemas.panthernet.ru/graphx/", Namespace = "GraphX.Controls.Animations" },
24 | new XmlnsDefinition() { XmlNamespace = "http://schemas.panthernet.ru/graphx/", Namespace = "GraphX.Controls.Models" },
25 | };
26 | }
27 | }*/
28 | }
29 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/CompoundLayoutIterationEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 | using QuikGraph;
4 |
5 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
6 | {
7 | public class CompoundLayoutIterationEventArgs
8 | : LayoutIterationEventArgs, ICompoundLayoutIterationEventArgs
9 | where TVertex : class
10 | where TEdge : IEdge
11 | {
12 | public CompoundLayoutIterationEventArgs(
13 | int iteration,
14 | double statusInPercent,
15 | string message,
16 | IDictionary vertexPositions,
17 | IDictionary innerCanvasSizes)
18 | : base(iteration, statusInPercent, message, vertexPositions)
19 | {
20 | InnerCanvasSizes = innerCanvasSizes;
21 | }
22 |
23 | #region ICompoundLayoutIterationEventArgs Members
24 |
25 | public IDictionary InnerCanvasSizes
26 | {
27 | get; private set;
28 | }
29 |
30 | #endregion
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/GraphX.Controls/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 | using System.Windows.Markup;
5 |
6 | [assembly: AssemblyTitle("GraphX Controls Library")]
7 |
8 | [assembly: ComVisible(false)]
9 | [assembly: Guid("d8511b14-512b-46ec-ad4f-8f14f46a466c")]
10 |
11 | [assembly: XmlnsPrefix("http://schemas.panthernet.ru/graphx/", "graphx")]
12 | [assembly: XmlnsDefinition("http://schemas.panthernet.ru/graphx/",
13 | "GraphX.Controls")]
14 | [assembly: XmlnsDefinition("http://schemas.panthernet.ru/graphx/",
15 | "GraphX.Controls.Animations")]
16 | [assembly: XmlnsDefinition("http://schemas.panthernet.ru/graphx/",
17 | "GraphX.Controls.Models")]
18 |
19 | [assembly: ThemeInfo(
20 | ResourceDictionaryLocation.None,
21 | //where theme specific resource dictionaries are located
22 | //(used if a resource is not found in the page,
23 | // or application resource dictionaries)
24 | ResourceDictionaryLocation.SourceAssembly
25 | //where the generic resource dictionary is located
26 | //(used if a resource is not found in the page,
27 | // app, or any theme specific resource dictionaries)
28 | )]
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Controls/SpecialWindowControl.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Examples/UAP.SimpleGraph/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("UWA.SimpleGraph")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("UWA.SimpleGraph")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/GraphX.Controls/Models/ControlClickedEventArgs.cs:
--------------------------------------------------------------------------------
1 |
2 | using System.Windows.Input;
3 |
4 | namespace GraphX.Controls.Models
5 | {
6 | public class ControlClickedEventArgs : System.EventArgs
7 | {
8 | public CType Control { get; private set; }
9 | public MouseButtonEventArgs MouseArgs { get; private set; }
10 | public ModifierKeys Modifiers { get; private set; }
11 |
12 | public ControlClickedEventArgs(CType c, MouseEventArgs e, ModifierKeys keys)
13 | {
14 | Control = c;
15 | MouseArgs = e as MouseButtonEventArgs;
16 | Modifiers = keys;
17 | }
18 | }
19 |
20 | public sealed class VertexClickedEventArgs : ControlClickedEventArgs
21 | {
22 | public VertexClickedEventArgs(VertexControl c, MouseEventArgs e, ModifierKeys keys)
23 | : base(c, e, keys)
24 | {
25 | }
26 | }
27 |
28 | public sealed class EdgeClickedEventArgs : ControlClickedEventArgs
29 | {
30 | public EdgeClickedEventArgs(EdgeControl c, MouseEventArgs e, ModifierKeys keys)
31 | : base(c, e, keys)
32 | {
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/Examples/SimpleGraph/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SimpleGraph.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Interfaces/IAlgorithmStorage.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Measure;
2 |
3 | namespace GraphX.Common.Interfaces
4 | {
5 | ///
6 | /// Base level interface for algorithm storage implementation
7 | ///
8 | /// Vertex data class
9 | /// Edge data class
10 | public interface IAlgorithmStorage
11 | {
12 | ///
13 | /// Gets layout algorithm
14 | ///
15 | IExternalLayout Layout { get; }
16 |
17 | ///
18 | /// Gets overlap removal algorithm
19 | ///
20 | IExternalOverlapRemoval OverlapRemoval { get; }
21 |
22 | ///
23 | /// Gets edge routing algorithm
24 | ///
25 | IExternalEdgeRouting EdgeRouting { get; }
26 |
27 | void RemoveSingleEdge(TEdge edge);
28 | void AddSingleEdge(TEdge edge, Point[] routingPoints = null);
29 | void RemoveSingleVertex(TVertex vertex);
30 | void AddSingleVertex(TVertex vertex, Point position, Rect size);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ShowcaseApp.WPF.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Examples/WindowsFormsProject/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WindowsFormsProject.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/GraphX.Standard.Common/Models/WeightedEdge.cs:
--------------------------------------------------------------------------------
1 | using GraphX.Common.Interfaces;
2 |
3 | namespace GraphX.Common.Models
4 | {
5 |
6 | public class WeightedEdge : IWeightedEdge
7 | {
8 | public double Weight { get; set; }
9 |
10 | public WeightedEdge(TVertex source, TVertex target)
11 | : this(source, target, 1) {}
12 |
13 | public WeightedEdge(TVertex source, TVertex target, double weight)
14 | {
15 | Source = source;
16 | Target = target;
17 | Weight = weight;
18 | }
19 |
20 | ///
21 | /// Source vertex data
22 | ///
23 | public TVertex Source { get; set; }
24 |
25 | ///
26 | /// Target vertex data
27 | ///
28 | public TVertex Target { get; set; }
29 |
30 | ///
31 | /// Update vertices (probably needed for serialization TODO)
32 | ///
33 | /// Source vertex data
34 | /// Target vertex data
35 | public void UpdateVertices(TVertex source, TVertex target)
36 | {
37 | Source = source; Target = target;
38 | }
39 |
40 | }
41 | }
--------------------------------------------------------------------------------
/GraphX.Controls/Controls/ZoomControl/Converters/GeometryToPathGeometryConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using System.Windows.Media;
5 |
6 | namespace GraphX.Controls
7 | {
8 | public class GeometryToPathGeometryConverter : IValueConverter
9 | {
10 | #region Inverted Property
11 |
12 | public bool Inverted
13 | {
14 | get
15 | {
16 | return _inverted;
17 | }
18 | set
19 | {
20 | _inverted = value;
21 | }
22 | }
23 |
24 | private bool _inverted; //false
25 |
26 | #endregion
27 |
28 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
29 | {
30 | if (value is EllipseGeometry) return null;
31 | return _inverted ? (Geometry)value : (PathGeometry)value;
32 | }
33 |
34 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
35 | {
36 | if (value is EllipseGeometry) return null;
37 | return _inverted ? (PathGeometry)value : (Geometry)value;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/FDP/Compound/CompoundLayoutContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using GraphX.Measure;
3 | using QuikGraph;
4 |
5 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
6 | {
7 | public class CompoundLayoutContext
8 | : LayoutContext, ICompoundLayoutContext
9 | where TEdge : IEdge
10 | where TGraph : class, IBidirectionalGraph
11 | {
12 | public CompoundLayoutContext(
13 | TGraph graph,
14 | IDictionary positions,
15 | IDictionary sizes,
16 | LayoutMode mode,
17 | IDictionary vertexBorders,
18 | IDictionary layoutTypes)
19 | : base( graph, positions, sizes, mode )
20 | {
21 | VertexBorders = vertexBorders;
22 | LayoutTypes = layoutTypes;
23 | }
24 |
25 | public IDictionary VertexBorders { get; private set; }
26 | public IDictionary LayoutTypes { get; private set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/GraphX.Controls/Models/GraphControlFactory.cs:
--------------------------------------------------------------------------------
1 | #if WPF
2 | using System.Windows;
3 | #elif METRO
4 | using Windows.UI.Xaml;
5 | #endif
6 |
7 | namespace GraphX.Controls.Models
8 | {
9 | ///
10 | /// Factory class responsible for VertexControl and EdgeControl objects creation
11 | ///
12 | public class GraphControlFactory : IGraphControlFactory
13 | {
14 | public GraphControlFactory(GraphAreaBase graphArea)
15 | {
16 | FactoryRootArea = graphArea;
17 | }
18 |
19 | public virtual EdgeControl CreateEdgeControl(VertexControl source, VertexControl target, object edge, bool showArrows = true, Visibility visibility = Visibility.Visible)
20 | {
21 | var edgectrl = new EdgeControl(source, target, edge, showArrows) { RootArea = FactoryRootArea};
22 | edgectrl.SetCurrentValue(UIElement.VisibilityProperty, visibility);
23 | return edgectrl;
24 |
25 | }
26 |
27 | public virtual VertexControl CreateVertexControl(object vertexData)
28 | {
29 | return new VertexControl(vertexData) {RootArea = FactoryRootArea};
30 | }
31 |
32 |
33 | public GraphAreaBase FactoryRootArea { get; set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GraphX.Standard.Logic/Algorithms/LayoutAlgorithms/Tree/SimpleTreeLayoutAlgorithm.Data.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using QuikGraph;
3 |
4 | namespace GraphX.Logic.Algorithms.LayoutAlgorithms
5 | {
6 | public partial class SimpleTreeLayoutAlgorithm where TVertex : class
7 | where TEdge : IEdge
8 | where TGraph : IBidirectionalGraph, IMutableVertexAndEdgeSet
9 | {
10 | protected class Layer
11 | {
12 | public double Size;
13 | public double NextPosition;
14 | public readonly IList Vertices = new List();
15 | public double LastTranslate;
16 |
17 | public Layer()
18 | {
19 | LastTranslate = 0;
20 | }
21 |
22 | /* Width and Height Optimization */
23 |
24 | }
25 |
26 | ///
27 | /// Vertex data class
28 | ///
29 | protected class VertexData
30 | {
31 | public TVertex Parent;
32 | public double Translate;
33 | public double Position;
34 |
35 | /* Width and Height Optimization */
36 |
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Examples/ShowcaseApp.WPF/Models/SimpleCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Input;
3 |
4 | namespace ShowcaseApp.WPF.Models
5 | {
6 | public class SimpleCommand : ICommand
7 | {
8 | public Predicate