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);
        }
Esempio n. 2
0
        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.");
        }
Esempio n. 3
0
 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);
        }