Dot2SvgMain(string[] args) { #if DEBUG DisplayGeometryGraph.SetShowFunctions(); #endif argsParser = new ArgsParser.ArgsParser(args); argsParser.AddOptionWithAfterString(FileOption); argsParser.AddAllowedOption(MsaglOutputOption); argsParser.AddAllowedOption(PrintOutOption); argsParser.AddAllowedOption(HelpOption); argsParser.AddOptionWithAfterString(PrecisionOption); argsParser.AddAllowedOption(VssParserOption); argsParser.AddAllowedOption(NoLabelsOption); argsParser.AddAllowedOption(PrintProcessedFileNameOption); argsParser.AddOptionWithAfterString(OutputDirOption); argsParser.AddAllowedOption(NoArrowheads); argsParser.AddAllowedOption(NoUrls); argsParser.AddOptionWithAfterStringWithHelp("-orient", "one of options TB, LR, BT, RL"); }
static ArgsParser.ArgsParser SetArgsParser(string[] args) { _argsParser = new ArgsParser.ArgsParser(args); _argsParser.AddAllowedOptionWithHelpString(OneTimeRunOption, "loads only one graph"); _argsParser.AddAllowedOptionWithHelpString(SequentialRunOption, "no threads"); _argsParser.AddAllowedOptionWithHelpString(StraightLineEdgesOption, "route straight line edges"); _argsParser.AddAllowedOptionWithHelpString(NoEdgeRoutingOption, "don't route the edges"); _argsParser.AddAllowedOptionWithHelpString(NoIterationsWithMajorization, "0 iterations with majorization"); _argsParser.AddOptionWithAfterStringWithHelp(FileListOption, "file list"); _argsParser.AddAllowedOptionWithHelpString(RoundedCornersOption, "rounded corners for boxes always"); _argsParser.AddAllowedOptionWithHelpString(PrintMaxNodeDegreeOption, "print max node degree and exit"); _argsParser.AddOptionWithAfterStringWithHelp(NodeSeparationOption, "node separation"); _argsParser.AddOptionWithAfterStringWithHelp(NodeQuotaOption, "max number of nodes per tile"); _argsParser.AddOptionWithAfterStringWithHelp(IncreaseNodeQuotaOption, "increase max number of nodes per tile for higher levels"); _argsParser.AddOptionWithAfterStringWithHelp("-rt", "max number of rails per tile"); _argsParser.AddAllowedOption(AllowOverlapsInMds); _argsParser.AddAllowedOption(RunRemoveOverlapsOption); _argsParser.AddAllowedOptionWithHelpString(EdgeZoomLevelsUpperBoundOption, "use upper bound in the edge zoom level algorithm"); _argsParser.AddOptionWithAfterStringWithHelp(LargeLayoutThresholdOption, "sets the large layout threshold"); _argsParser.AddOptionWithAfterStringWithHelp(BackgroundImageOption, "sets the background image for the large layout"); _argsParser.AddOptionWithAfterStringWithHelp(BackgroundColorOption, "sets the background color for the large layout viewer"); _argsParser.AddOptionWithAfterStringWithHelp(RailColorsOption, "sets the rail colors for the large layout viewer"); _argsParser.AddOptionWithAfterStringWithHelp(MaxNodesPerTileOption, "sets the max nodes per tile for large layout"); _argsParser.AddAllowedOptionWithHelpString(DoNotLayoutOption, "do not call the layout calculation"); _argsParser.AddAllowedOption(RecoverSugiyamaTestOption); _argsParser.AddAllowedOption(QuietOption); _argsParser.AddAllowedOption(BundlingOption); _argsParser.AddOptionWithAfterStringWithHelp(FileOption, "the name of the input file"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption, "testing Constrained Delaunay Triangulation"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption0, "testing Constrained Delaunay Triangulation on a small graph"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption1, "testing threading through a CDT"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption2, "testing Constrained Delaunay Triangulation on file \'polys\'"); _argsParser.AddAllowedOptionWithHelpString(ReverseXOption, "reversing X coordinate"); _argsParser.AddOptionWithAfterStringWithHelp(EdgeSeparationOption, "use specified edge separation"); _argsParser.AddAllowedOptionWithHelpString(MdsOption, "use mds layout"); _argsParser.AddAllowedOptionWithHelpString(FdOption, "use force directed layout"); _argsParser.AddAllowedOptionWithHelpString(ConstraintsTestOption, "test constraints"); _argsParser.AddOptionWithAfterStringWithHelp(InkImportanceOption, "ink importance coefficient"); _argsParser.AddOptionWithAfterStringWithHelp(TightPaddingOption, "tight padding coefficient"); _argsParser.AddOptionWithAfterStringWithHelp(LoosePaddingOption, "loose padding coefficient"); _argsParser.AddOptionWithAfterStringWithHelp(CapacityCoeffOption, "capacity coeffiecient"); _argsParser.AddAllowedOptionWithHelpString(PolygonDistanceTestOption, "test Polygon.Distance"); _argsParser.AddAllowedOptionWithHelpString(RandomBundlingTest, "random bundling test"); _argsParser.AddAllowedOptionWithHelpString(TestCdtThreaderOption, "test CdtThreader"); _argsParser.AddAllowedOptionWithHelpString(AsyncLayoutOption, "test viewer in the async mode"); _argsParser.AddAllowedOptionWithHelpString(EnlargeHighDegreeNodes, "enlarge high degree nodes"); _argsParser.AddAllowedOptionWithHelpString(ExitAfterLgLayoutOption, "exit after lg calculation"); _argsParser.AddAllowedOptionWithHelpString("-no_route_simpl", "do not simplify the routes"); _argsParser.AddAllowedOptionWithHelpString("-no_tiles", "do not generate or load tiles"); _argsParser.AddOptionWithAfterStringWithHelp("-labelH", "the height of labels"); if (!_argsParser.Parse()) { Console.WriteLine(_argsParser.UsageString()); Environment.Exit(1); } return _argsParser; }
protected override void OnStartup(StartupEventArgs e) { #if DEBUG DisplayGeometryGraph.SetShowFunctions(); #endif // debug //Test1.RunTest9(); _appWindow = new AppWindow { Title = "Graphmaps browser", Width = SystemParameters.WorkArea.Width - 300, Height = SystemParameters.WorkArea.Height, GraphViewer=_graphViewer, //Content = dockPanel, //WindowStartupLocation = WindowStartupLocation.CenterScreen, //WindowState = WindowState.Normal }; _dockPanel = _appWindow.GetMainDockPanel(); _graphViewerPanel = _appWindow.GetGraphViewerPanel(); _statusTextBox = _appWindow.GetStatusTextBox(); //SetupToolbar(); SetAppCommands(); //graphViewerPanel.ClipToBounds = true; //dockPanel.Children.Add(toolBar); //SetUpStatusBar(); //dockPanel.LastChildFill = true; //dockPanel.Children.Add(graphViewerPanel); _graphViewer.BindToPanel(_graphViewerPanel); _dockPanel.Loaded += GraphViewerLoaded; _argsParser = SetArgsParser(Args); if (_argsParser.OptionIsUsed(BackgroundColorOption)) { var bc = _argsParser.GetValueOfOptionWithAfterString(BackgroundColorOption); _graphViewerPanel.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom(bc)); } //graphViewer.MainPanel.MouseLeftButtonUp += TestApi; TrySettingGraphViewerLargeLayoutThresholdAndSomeOtherLgSettings(); if (_argsParser.OptionIsUsed(ExitAfterLgLayoutOption)) { _graphViewer.DefaultLargeLayoutSettings.ExitAfterInit = true; } _graphViewer.ViewChangeEvent += GraphViewerViewChangeEvent; _graphViewer.ObjectUnderMouseCursorChanged += GvObjectUnderMouseCursorChanged; _graphViewer.MouseDown += GraphViewerMouseDown; _graphViewer.MouseMove += GraphViewerMouseMove; _graphViewer.GraphChanged += graphViewer_GraphChanged; //graphViewer.LayoutEditingEnabled = false; OnStartupTextBox(e); base.OnStartup(e); _appWindow.Show(); //SetUpAndShowSideWindow(); }
static ArgsParser.ArgsParser SetArgsParser(string[] args) { var argsParser = new ArgsParser.ArgsParser(args); argsParser.AddAllowedOption(RecoverSugiyamaTestOption); argsParser.AddAllowedOption(QuietOption); argsParser.AddAllowedOption(BundlingOption); argsParser.AddOptionWithAfterStringWithHelp(FileOption, "the name of the input file"); argsParser.AddOptionWithAfterStringWithHelp(ListOfFilesOption, "the name of the file containing a list of files"); argsParser.AddAllowedOptionWithHelpString(TestCdtOption, "testing Constrained Delaunay Triangulation"); argsParser.AddAllowedOptionWithHelpString(TestCdtOption0, "testing Constrained Delaunay Triangulation on a small graph"); argsParser.AddAllowedOptionWithHelpString(TestCdtOption1, "testing threading through a CDT"); argsParser.AddAllowedOptionWithHelpString(TestCdtOption2, "testing Constrained Delaunay Triangulation on file \'polys\'"); argsParser.AddAllowedOptionWithHelpString(ReverseXOption, "reversing X coordinate"); argsParser.AddOptionWithAfterStringWithHelp(EdgeSeparationOption, "use specified edge separation"); argsParser.AddAllowedOptionWithHelpString(MdsOption, "use mds layout"); argsParser.AddAllowedOptionWithHelpString(FdOption, "use force directed layout"); argsParser.AddAllowedOptionWithHelpString(ConstraintsTestOption, "test constraints"); argsParser.AddOptionWithAfterStringWithHelp(InkImportanceOption, "ink importance coefficient"); argsParser.AddOptionWithAfterStringWithHelp(TightPaddingOption, "tight padding coefficient"); argsParser.AddOptionWithAfterStringWithHelp(LoosePaddingOption, "loose padding coefficient"); argsParser.AddOptionWithAfterStringWithHelp(CapacityCoeffOption, "capacity coeffiecient"); argsParser.AddAllowedOptionWithHelpString(PolygonDistanceTestOption, "test Polygon.Distance"); argsParser.AddAllowedOptionWithHelpString(PolygonDistanceTestOption3, "test PolygonDistance3"); argsParser.AddAllowedOptionWithHelpString(RandomBundlingTest, "random bundling test"); argsParser.AddAllowedOptionWithHelpString(TestCdtThreaderOption, "test CdtThreader"); argsParser.AddAllowedOptionWithHelpString(AsyncLayoutOption, "test viewer in the async mode"); if (!argsParser.Parse()) { Console.WriteLine(argsParser.UsageString()); Environment.Exit(1); } return argsParser; }
//RangeSlider edgeRangeSlider; protected override void OnStartup(StartupEventArgs e) { #if DEBUG Microsoft.Msagl.GraphViewerGdi.DisplayGeometryGraph.SetShowFunctions(); #endif appWindow = new Window { Title = "My app for testing wpf graph control", Content = dockPanel, WindowStartupLocation = WindowStartupLocation.CenterScreen, WindowState = WindowState.Normal }; SetupToolbar(); graphViewerPanel.ClipToBounds = true; dockPanel.Children.Add(toolBar); SetUpStatusBar(); dockPanel.LastChildFill = true; dockPanel.Children.Add(graphViewerPanel); graphViewer.BindToPanel(graphViewerPanel); dockPanel.Loaded += GraphViewerLoaded; argsParser = SetArgsParser(Args); //graphViewer.MainPanel.MouseLeftButtonUp += TestApi; graphViewer.ViewChangeEvent += GraphViewerViewChangeEvent; graphViewer.ObjectUnderMouseCursorChanged += GvObjectUnderMouseCursorChanged; graphViewer.MouseDown += GraphViewerMouseDown; graphViewer.MouseMove += GraphViewerMouseMove; var msaglFile = argsParser.GetValueOfOptionWithAfterString(SaveMsaglOption); if (msaglFile != null) graphViewer.MsaglFileToSave = msaglFile; graphViewer.GraphChanged += graphViewer_GraphChanged; //graphViewer.LayoutEditingEnabled = false; appWindow.Show(); }
static void ProcessDotFile(GViewer gviewer, ArgsParser.ArgsParser argsParser, string dotFileName) { Graph graph = Parser.Parse(dotFileName, out int line, out int col, out string msg); if (graph == null) { Console.WriteLine("{0}({1},{2}): error: {3}", dotFileName, line, col, msg); Environment.Exit(1); } if (argsParser.OptionIsUsed(MdsOption)) { graph.LayoutAlgorithmSettings = new MdsLayoutSettings(); } else if (argsParser.OptionIsUsed(FdOption)) { graph.LayoutAlgorithmSettings = new FastIncrementalLayoutSettings(); } if (argsParser.OptionIsUsed(BundlingOption)) { graph.LayoutAlgorithmSettings.EdgeRoutingSettings.EdgeRoutingMode = EdgeRoutingMode.SplineBundling; BundlingSettings bs = GetBundlingSettings(argsParser); graph.LayoutAlgorithmSettings.EdgeRoutingSettings.BundlingSettings = bs; string ink = argsParser.GetStringOptionValue(InkImportanceOption); if (ink != null) { if (double.TryParse(ink, out double inkCoeff)) { bs.InkImportance = inkCoeff; BundlingSettings.DefaultInkImportance = inkCoeff; } else { Console.WriteLine("cannot parse {0}", ink); Environment.Exit(1); } } string esString = argsParser.GetStringOptionValue(EdgeSeparationOption); if (esString != null) { if (double.TryParse(esString, out double es)) { BundlingSettings.DefaultEdgeSeparation = es; bs.EdgeSeparation = es; } else { Console.WriteLine("cannot parse {0}", esString); Environment.Exit(1); } } } gviewer.Graph = graph; string svgout = argsParser.GetStringOptionValue(SvgFileNameOption); try { if (svgout != null) { SvgGraphWriter.Write(gviewer.Graph, svgout, null, null, 4); } } catch (Exception e) { Console.WriteLine(e.Message); } }
public Program(ArgsParser.ArgsParser argsParser) { _argsParser = argsParser; _random = new Random(1); }
static ArgsParser.ArgsParser SetArgsParser(string[] args) { _argsParser = new ArgsParser.ArgsParser(args); _argsParser.AddAllowedOptionWithHelpString(OneTimeRunOption, "loads only one graph"); _argsParser.AddAllowedOptionWithHelpString(SequentialRunOption, "no threads"); _argsParser.AddAllowedOptionWithHelpString(StraightLineEdgesOption, "route straight line edges"); _argsParser.AddAllowedOptionWithHelpString(NoEdgeRoutingOption, "don't route the edges"); _argsParser.AddAllowedOptionWithHelpString(NoIterationsWithMajorization, "0 iterations with majorization"); _argsParser.AddOptionWithAfterStringWithHelp(FileListOption, "file list"); _argsParser.AddAllowedOptionWithHelpString(RoundedCornersOption, "rounded corners for boxes always"); _argsParser.AddAllowedOptionWithHelpString(PrintMaxNodeDegreeOption, "print max node degree and exit"); _argsParser.AddOptionWithAfterStringWithHelp(NodeSeparationOption, "node separation"); _argsParser.AddOptionWithAfterStringWithHelp(NodeQuotaOption, "max number of nodes per tile"); _argsParser.AddOptionWithAfterStringWithHelp(IncreaseNodeQuotaOption, "increase max number of nodes per tile for higher levels"); _argsParser.AddOptionWithAfterStringWithHelp("-rt", "max number of rails per tile"); _argsParser.AddAllowedOption(AllowOverlapsInMds); _argsParser.AddAllowedOption(RunRemoveOverlapsOption); _argsParser.AddAllowedOptionWithHelpString(EdgeZoomLevelsUpperBoundOption, "use upper bound in the edge zoom level algorithm"); _argsParser.AddOptionWithAfterStringWithHelp(LargeLayoutThresholdOption, "sets the large layout threshold"); _argsParser.AddOptionWithAfterStringWithHelp(BackgroundImageOption, "sets the background image for the large layout"); _argsParser.AddOptionWithAfterStringWithHelp(BackgroundColorOption, "sets the background color for the large layout viewer"); _argsParser.AddOptionWithAfterStringWithHelp(RailColorsOption, "sets the rail colors for the large layout viewer"); _argsParser.AddOptionWithAfterStringWithHelp(SelectionColorsOption, "sets the selected rail colors for the large layout viewer"); _argsParser.AddOptionWithAfterStringWithHelp(MaxNodesPerTileOption, "sets the max nodes per tile for large layout"); _argsParser.AddAllowedOptionWithHelpString(DoNotLayoutOption, "do not call the layout calculation"); _argsParser.AddAllowedOption(RecoverSugiyamaTestOption); _argsParser.AddAllowedOption(QuietOption); _argsParser.AddAllowedOption(BundlingOption); _argsParser.AddOptionWithAfterStringWithHelp(FileOption, "the name of the input file"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption, "testing Constrained Delaunay Triangulation"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption0, "testing Constrained Delaunay Triangulation on a small graph"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption1, "testing threading through a CDT"); _argsParser.AddAllowedOptionWithHelpString(TestCdtOption2, "testing Constrained Delaunay Triangulation on file \'polys\'"); _argsParser.AddAllowedOptionWithHelpString(ReverseXOption, "reversing X coordinate"); _argsParser.AddOptionWithAfterStringWithHelp(EdgeSeparationOption, "use specified edge separation"); _argsParser.AddAllowedOptionWithHelpString(MdsOption, "use mds layout"); _argsParser.AddAllowedOptionWithHelpString(FdOption, "use force directed layout"); _argsParser.AddAllowedOptionWithHelpString(ConstraintsTestOption, "test constraints"); _argsParser.AddOptionWithAfterStringWithHelp(InkImportanceOption, "ink importance coefficient"); _argsParser.AddOptionWithAfterStringWithHelp(TightPaddingOption, "tight padding coefficient"); _argsParser.AddOptionWithAfterStringWithHelp(LoosePaddingOption, "loose padding coefficient"); _argsParser.AddOptionWithAfterStringWithHelp(CapacityCoeffOption, "capacity coeffiecient"); _argsParser.AddAllowedOptionWithHelpString(PolygonDistanceTestOption, "test Polygon.Distance"); _argsParser.AddAllowedOptionWithHelpString(RandomBundlingTest, "random bundling test"); _argsParser.AddAllowedOptionWithHelpString(TestCdtThreaderOption, "test CdtThreader"); _argsParser.AddAllowedOptionWithHelpString(AsyncLayoutOption, "test viewer in the async mode"); _argsParser.AddAllowedOptionWithHelpString(EnlargeHighDegreeNodes, "enlarge high degree nodes"); _argsParser.AddAllowedOptionWithHelpString(ExitAfterLgLayoutOption, "exit after lg calculation"); _argsParser.AddAllowedOptionWithHelpString("-no_route_simpl", "do not simplify the routes"); _argsParser.AddAllowedOptionWithHelpString("-no_tiles", "do not generate or load tiles"); _argsParser.AddOptionWithAfterStringWithHelp("-labelH", "the height of labels"); if (!_argsParser.Parse()) { System.Diagnostics.Debug.WriteLine(_argsParser.UsageString()); Environment.Exit(1); } return(_argsParser); }
protected override void OnStartup(StartupEventArgs e) { #if TEST_MSAGL DisplayGeometryGraph.SetShowFunctions(); #endif // debug //Test1.RunTest9(); _appWindow = new AppWindow { Title = "Graphmaps browser", Width = SystemParameters.WorkArea.Width - 300, Height = SystemParameters.WorkArea.Height, GraphViewer = _graphViewer, //Content = dockPanel, //WindowStartupLocation = WindowStartupLocation.CenterScreen, //WindowState = WindowState.Normal }; _dockPanel = _appWindow.GetMainDockPanel(); _graphViewerPanel = _appWindow.GetGraphViewerPanel(); _statusTextBox = _appWindow.GetStatusTextBox(); //SetupToolbar(); SetAppCommands(); //graphViewerPanel.ClipToBounds = true; //dockPanel.Children.Add(toolBar); //SetUpStatusBar(); //dockPanel.LastChildFill = true; //dockPanel.Children.Add(graphViewerPanel); _graphViewer.BindToPanel(_graphViewerPanel); _dockPanel.Loaded += GraphViewerLoaded; _argsParser = SetArgsParser(Args); if (_argsParser.OptionIsUsed(BackgroundColorOption)) { var bc = _argsParser.GetStringOptionValue(BackgroundColorOption); _graphViewerPanel.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom(bc)); } //graphViewer.MainPanel.MouseLeftButtonUp += TestApi; TrySettingGraphViewerLargeLayoutThresholdAndSomeOtherLgSettings(); if (_argsParser.OptionIsUsed(ExitAfterLgLayoutOption)) { _graphViewer.DefaultLargeLayoutSettings.ExitAfterInit = true; } _graphViewer.ViewChangeEvent += GraphViewerViewChangeEvent; _graphViewer.ObjectUnderMouseCursorChanged += GvObjectUnderMouseCursorChanged; _graphViewer.MouseDown += GraphViewerMouseDown; _graphViewer.MouseMove += GraphViewerMouseMove; _graphViewer.GraphChanged += graphViewer_GraphChanged; //graphViewer.LayoutEditingEnabled = false; OnStartupTextBox(e); base.OnStartup(e); _appWindow.Show(); //SetUpAndShowSideWindow(); }
static void ProcessMsaglGeomFile(string fileName, ArgsParser.ArgsParser argsParser) { }
static void Main(string[] args) { #if DEBUG DisplayGeometryGraph.SetShowFunctions(); #endif ArgsParser.ArgsParser argsParser = SetArgsParser(args); if (argsParser.OptionIsUsed(PolygonDistanceTestOption)) { TestPolygonDistance(); } else if (argsParser.OptionIsUsed(TestCdtThreaderOption)) { TestCdtThreader(); } else if (argsParser.OptionIsUsed(RandomBundlingTest)) { RandomBundlingTests.RsmContent(); } bundling = argsParser.OptionIsUsed(BundlingOption); var gviewer = new GViewer(); gviewer.MouseMove += Draw.GviewerMouseMove; if (argsParser.OptionIsUsed(FdOption)) { TestFD(); gviewer.CurrentLayoutMethod = LayoutMethod.IcrementalLayout; } Form form = CreateForm(null, gviewer); if (argsParser.OptionIsUsed(AsyncLayoutOption)) { gviewer.AsyncLayout = true; } string listOfFilesFile = argsParser.GetValueOfOptionWithAfterString(ListOfFilesOption); if (listOfFilesFile != null) { ProcessListOfFiles(listOfFilesFile, argsParser); return; } string fileName = argsParser.GetValueOfOptionWithAfterString(FileOption); string ext = Path.GetExtension(fileName); if (ext != null) { ext = ext.ToLower(); if (ext == ".dot") { ProcessDotFile(gviewer, argsParser, fileName); } else { if (ext == ".geom") { GeometryGraph geometryGraph = GeometryGraphReader.CreateFromFile(fileName); geometryGraph.Margins = 10; FixHookPorts(geometryGraph); // if (argsParser.OptionIsUsed(BundlingOption)) { for (int i = 0; i < 1; i++) { #if DEBUG /*DisplayGeometryGraph.ShowGraph(geometryGraph); * var l = new List<DebugCurve>(); l.AddRange(geometryGraph.Nodes.Select(n=>new DebugCurve(100,1,"black",n.BoundaryCurve))); * l.AddRange(geometryGraph.Edges.Select(e=>new DebugCurve(100,1,"black", new LineSegment(e.Source.Center,e.Target.Center)))); * foreach (var cl in geometryGraph.RootCluster.AllClustersDepthFirst()) { * l.Add(new DebugCurve(100,2,"blue",cl.BoundaryCurve)); * foreach (var node in cl.Nodes) * l.Add(new DebugCurve(100, 2, "brown", node.BoundaryCurve)); * * foreach (var e in cl.Edges) * l.Add(new DebugCurve(100, 2, "pink", new LineSegment(e.Source.Center, e.Target.Center))); * * } * * DisplayGeometryGraph.ShowDebugCurves(l.ToArray());*/ #endif BundlingSettings bs = GetBundlingSettings(argsParser); double loosePadding; double tightPadding = GetPaddings(argsParser, out loosePadding); if (argsParser.OptionIsUsed(MdsOption)) { var mdsLayoutSettings = new MdsLayoutSettings { RemoveOverlaps = true, NodeSeparation = loosePadding * 3 }; var mdsLayout = new MdsGraphLayout(mdsLayoutSettings, geometryGraph); mdsLayout.Run(); } else { if (argsParser.OptionIsUsed(FdOption)) { var settings = new FastIncrementalLayoutSettings { AvoidOverlaps = true }; (new InitialLayout(geometryGraph, settings)).Run(); } } var splineRouter = new SplineRouter(geometryGraph, geometryGraph.Edges, tightPadding, loosePadding, Math.PI / 6, bs); splineRouter.Run(); } #if DEBUG DisplayGeometryGraph.ShowGraph(geometryGraph); #endif return; } else { if (ext == ".msagl") { Graph graph = Graph.Read(fileName); // DisplayGeometryGraph.ShowGraph(graph.GeometryGraph); if (graph != null) { if (argsParser.OptionIsUsed(BundlingOption)) { BundlingSettings bs = GetBundlingSettings(argsParser); double loosePadding; double tightPadding = GetPaddings(argsParser, out loosePadding); var br = new SplineRouter(graph.GeometryGraph, tightPadding, loosePadding, Math.PI / 6, bs); br.Run(); // DisplayGeometryGraph.ShowGraph(graph.GeometryGraph); } } gviewer.NeedToCalculateLayout = false; gviewer.Graph = graph; gviewer.NeedToCalculateLayout = true; } } } } else if (argsParser.OptionIsUsed(TestCdtOption)) { Triangulation(argsParser.OptionIsUsed(ReverseXOption)); Environment.Exit(0); } else if (argsParser.OptionIsUsed(TestCdtOption0)) { TestTriangulationOnSmallGraph(argsParser); Environment.Exit(0); } else if (argsParser.OptionIsUsed(TestCdtOption2)) { TestTriangulationOnPolys(); Environment.Exit(0); } else if (argsParser.OptionIsUsed(TestCdtOption1)) { ThreadThroughCdt(); Environment.Exit(0); } else if (argsParser.OptionIsUsed(ConstraintsTestOption)) { TestGraphWithConstraints(); } Application.Run(form); }
static void ProcessDotFile(GViewer gviewer, ArgsParser.ArgsParser argsParser, string dotFileName) { int line; int col; string msg; Graph graph = Parser.Parse(dotFileName, out line, out col, out msg); if (graph == null) { Console.WriteLine("{0}({1},{2}): error: {3}", dotFileName, line, col, msg); Environment.Exit(1); } if (argsParser.OptionIsUsed(RecoverSugiyamaTestOption)) { gviewer.CalculateLayout(graph); graph.GeometryGraph.AlgorithmData = null; LayeredLayout.RecoverAlgorithmData(graph.GeometryGraph); Node node = graph.GeometryGraph.Nodes[1]; node.BoundaryCurve = node.BoundaryCurve.Transform(new PlaneTransformation(3, 0, 0, 0, 3, 0)); LayeredLayout.IncrementalLayout(graph.GeometryGraph, node); gviewer.NeedToCalculateLayout = false; gviewer.Graph = graph; gviewer.NeedToCalculateLayout = true; return; } if (argsParser.OptionIsUsed(MdsOption)) { graph.LayoutAlgorithmSettings = new MdsLayoutSettings(); } else if (argsParser.OptionIsUsed(FdOption)) { graph.LayoutAlgorithmSettings = new FastIncrementalLayoutSettings(); } if (argsParser.OptionIsUsed(BundlingOption)) { graph.LayoutAlgorithmSettings.EdgeRoutingSettings.EdgeRoutingMode = EdgeRoutingMode.SplineBundling; BundlingSettings bs = GetBundlingSettings(argsParser); graph.LayoutAlgorithmSettings.EdgeRoutingSettings.BundlingSettings = bs; string ink = argsParser.GetValueOfOptionWithAfterString(InkImportanceOption); if (ink != null) { double inkCoeff; if (double.TryParse(ink, out inkCoeff)) { bs.InkImportance = inkCoeff; BundlingSettings.DefaultInkImportance = inkCoeff; } else { Console.WriteLine("cannot parse {0}", ink); Environment.Exit(1); } } string esString = argsParser.GetValueOfOptionWithAfterString(EdgeSeparationOption); if (esString != null) { double es; if (double.TryParse(esString, out es)) { BundlingSettings.DefaultEdgeSeparation = es; bs.EdgeSeparation = es; } else { Console.WriteLine("cannot parse {0}", esString); Environment.Exit(1); } } } gviewer.Graph = graph; }