public MsaglRenderer() { this.Styling = new DirectedGraphStyling(); this.LayoutOptions = new MsaglOptions(); this.DefaultBezierConnectorShapeCells = new Dom.ShapeCells(); this.DefaultBezierConnectorShapeCells.LinePattern = 0; this.DefaultBezierConnectorShapeCells.LineWeight = 0.0; this.DefaultBezierConnectorShapeCells.FillPattern = 0; this.DefaultBezierConnectorLabelBoxSize = new VA.Geometry.Size(1.0, 0.5); }
public void DrawDirectedGraphDocument(GRAPH.DirectedGraphDocument dgdoc, GRAPH.DirectedGraphStyling dgstyling) { var cmdtarget = this._client.GetCommandTarget(CommandTargetFlags.RequireApplication); this._client.Output.WriteVerbose("Start rendering directed graph"); var app = cmdtarget.Application; this._client.Output.WriteVerbose("Creating a New Document For the Directed Graphs"); this._client.Output.WriteVerbose("Number of Layouts: {0}", dgdoc.Layouts.Count); this._client.Output.WriteVerbose("Template: {0}", dgdoc.Template); var doc = this._client.Document.NewDocumentFromTemplate(dgdoc.Template); int num_pages_created = 0; var doc_pages = doc.Pages; foreach (int i in Enumerable.Range(0, dgdoc.Layouts.Count)) { var dg_layout = dgdoc.Layouts[i]; // if this is the first page to draw // then reuse the initial empty page in the document // otherwise, create a new page. var page = num_pages_created == 0 ? app.ActivePage : doc_pages.Add(); this._client.Output.WriteVerbose("Rendering on page: \"{0}\",{1}", page.Name, i + 1); var renderer = new GRAPH.MsaglRenderer(); renderer.LayoutOptions.UseDynamicConnectors = false; renderer.Render(page, dg_layout); var targetpages = new VisioScripting.TargetPages(page); this._client.Page.ResizePageToFitContents(targetpages, dgdoc.BorderSize); this._client.View.SetZoomToObject(VisioScripting.TargetWindow.Auto, VisioScripting.Models.ZoomToObject.Page); this._client.Output.WriteVerbose("Finished rendering page"); num_pages_created++; } this._client.Output.WriteVerbose("Finished rendering all pages"); this._client.Output.WriteVerbose("Finished rendering directed graph."); }
public VisioLayoutRenderer() { this.Styling = new DirectedGraphStyling(); this.LayoutOptions = new VisioLayoutOptions(); }
private void _create_dynamic_connector_edges(Dom.ShapeList shape_nodes, MSAGL.Core.Layout.GeometryGraph mg_graph, DirectedGraphStyling dgstyling) { // CREATE EDGES foreach (var edge in mg_graph.Edges) { var ud = (ElementUserData)edge.UserData; var layout_connector = ud.Edge; Dom.Connector vconnector; if (layout_connector.MasterName != null && layout_connector.StencilName != null) { vconnector = new Dom.Connector( layout_connector.From.DomNode, layout_connector.To.DomNode, layout_connector.MasterName, layout_connector.StencilName); } else { vconnector = new Dom.Connector( layout_connector.From.DomNode, layout_connector.To.DomNode, dgstyling.EdgeMasterName, dgstyling.EdgeStencilName); } layout_connector.DomNode = vconnector; shape_nodes.Add(vconnector); } foreach (var edge in mg_graph.Edges) { var ud = (ElementUserData)edge.UserData; var layoutconnector = ud.Edge; var vconnector = (Dom.Connector)layoutconnector.DomNode; int con_route_style = (int)this.ConnectorTypeToCellVal_Appearance(layoutconnector.ConnectorType); int shape_route_style = (int)this.ConnectorTypeToCellVal_Style(layoutconnector.ConnectorType); vconnector.Text = new VisioAutomation.Models.Text.Element(layoutconnector.Label); vconnector.Cells = layoutconnector.Cells != null? layoutconnector.Cells.ShallowCopy() : new Dom.ShapeCells(); vconnector.Cells.ShapeLayoutConLineRouteExt = con_route_style; vconnector.Cells.ShapeLayoutRouteStyle = shape_route_style; } }
public Dom.Page CreateDomPage(DirectedGraphLayout dglayout, IVisio.Application vis, DirectedGraphStyling dgstyling) { var page_node = new Dom.Page(); MsaglRenderer._resolve_masters(dglayout, vis); var mg_graph = this._create_msagl_graph(dglayout); this._create_dom_shapes(page_node.Shapes, mg_graph, vis); if (this.LayoutOptions.UseDynamicConnectors) { this._create_dynamic_connector_edges(page_node.Shapes, mg_graph, dgstyling); } else { this._create_bezier_edges(page_node.Shapes, mg_graph); } // Additional Page properties page_node.PageLayoutCells.PlaceStyle = 1; page_node.PageLayoutCells.RouteStyle = 5; page_node.PageLayoutCells.AvenueSizeX = 2.0; page_node.PageLayoutCells.AvenueSizeY = 2.0; page_node.PageLayoutCells.LineRouteExt = 2; page_node.Size = this._visio_bb.Size; return(page_node); }