public IVisio.Shape AddShape(TextBlock block)
        {
            // Remember this Block
            this.Blocks.Add(block);

            // Calculate the Correct Full Rectangle
            var ll = new VA.Drawing.Point(this.InsertionPoint.X, this.InsertionPoint.Y - block.Size.Height);
            var tr = new VA.Drawing.Point(this.InsertionPoint.X + block.Size.Width, this.InsertionPoint.Y);
            var rect = new VA.Drawing.Rectangle(ll, tr);

            // Draw the Shape
            var newshape = this.page.DrawRectangle(rect);
            block.VisioShape = newshape;
            block.VisioShapeID = newshape.ID;
            block.Rectangle = rect;

            // Handle Text If Needed
            if (block.Text != null)
            {
                newshape.Text = block.Text;
            }

            this.AdjustInsertionPoint(block.Size);

            return newshape;
        }
Пример #2
0
        public static void FontGlyphComparision2(IVisio.Document doc, string[] fontnames, List <string> samplechars)
        {
            double w  = 2.0;
            double h  = 1;
            double th = 1;

            int chunksize = 12;
            var chunks    = LinqUtil.Split(samplechars, chunksize);

            foreach (var chunk in chunks)
            {
                var domshapescol = new VA.DOM.ShapeList();

                for (int j = 0; j < fontnames.Count(); j++)
                {
                    string fontname = fontnames[j];
                    double x0       = j * w;

                    var r  = new VA.Drawing.Rectangle(x0, 0 - th, x0 + w, 0);
                    var n1 = domshapescol.Drop("Rectangle", "basic_u.vss", r);
                    n1.Text = new VA.Text.Markup.TextElement(fontname.ToUpper());
                    n1.Cells.FillForegnd = "rgb(255,255,255)";
                    n1.Cells.LineWeight  = 0.0;
                    n1.Cells.LinePattern = 0;
                    n1.Cells.CharSize    = "16pt";
                }


                for (int j = 0; j < fontnames.Count(); j++)
                {
                    for (int i = 0; i < chunksize; i++)
                    {
                        double x0 = j * w;
                        double y0 = i * h * -1 - th - h;

                        var r  = new VA.Drawing.Rectangle(x0, y0, x0 + w, y0 + h);
                        var n1 = domshapescol.Drop("Rectangle", "basic_u.vss", r);
                        if (i < chunk.Count)
                        {
                            n1.Text = new VA.Text.Markup.TextElement(chunk[i]);
                        }
                        else
                        {
                            // empty
                        }
                        n1.CharFontName      = fontnames[j];
                        n1.Cells.CharSize    = "36pt";
                        n1.Cells.FillForegnd = "rgb(255,255,255)";
                        n1.Cells.LineWeight  = 0.0;
                        n1.Cells.LinePattern = 0;
                    }
                }

                var page = doc.Pages.Add();
                domshapescol.Render(page);

                var bordersize = new VA.Drawing.Size(0.5, 0.5);
                page.ResizeToFitContents(bordersize);
            }
        }
        public void Page_Draw_RoundedRectangle()
        {
            var page1 = this.GetNewPage();
            var rect = new VA.Drawing.Rectangle(1, 1, 3, 2);
            // draw an inital framing rectangle so the coordinates are easy to calculate
            var s0 = page1.DrawRectangle(rect);
            double width = rect.Width;
            double height = rect.Height;
            double delta = 1.0/8.0;

            var o = new VA.Drawing.Point(0, 0);

            var a = new VA.Drawing.Point(o.X + delta, o.Y);
            var b = new VA.Drawing.Point(o.X, o.Y + delta);
            var c = new VA.Drawing.Point(o.X, o.Y + height - delta);
            var d = new VA.Drawing.Point(o.X + delta, o.Y + height);
            var e = new VA.Drawing.Point(o.X + width - delta, o.Y + height);
            var f = new VA.Drawing.Point(o.X + width, o.Y + height - delta);
            var g = new VA.Drawing.Point(o.X + width, o.Y + delta);
            var h = new VA.Drawing.Point(o.X + width - delta, o.Y);

            var bottom_left_curve = s0.DrawQuarterArc(a, b, IVisio.VisArcSweepFlags.visArcSweepFlagConcave);
            var left_side = s0.DrawLine(b, c);
            var top_left_curve = s0.DrawQuarterArc(c, d, IVisio.VisArcSweepFlags.visArcSweepFlagConvex);
            var top_side = s0.DrawLine(d, e);
            var top_right_curve = s0.DrawQuarterArc(e, f, IVisio.VisArcSweepFlags.visArcSweepFlagConcave);
            var right_side = s0.DrawLine(f, g);
            var bottom_right_curve = s0.DrawQuarterArc(g, h, IVisio.VisArcSweepFlags.visArcSweepFlagConvex);
            var bottom_side = s0.DrawLine(h, a);

            // delete the framing rectangle
            s0.DeleteSection((short) IVisio.VisSectionIndices.visSectionFirstComponent);

            page1.Delete(0);
        }
Пример #4
0
        public IVisio.Shape RenderPie(IVisio.Page page)
        {
            if (this.Angle == 0.0)
            {
                var p1 = this.GetPointAtRadius(this.Center, this.Radius, this.SectorStartAngle);
                return(page.DrawLine(this.Center, p1));
            }
            else if (this.Angle >= 2 * System.Math.PI)
            {
                var A     = this.Center.Add(-this.Radius, -this.Radius);
                var B     = this.Center.Add(this.Radius, this.Radius);
                var rect  = new VA.Drawing.Rectangle(A, B);
                var shape = page.DrawOval(rect);
                return(shape);
            }
            else
            {
                int degree;
                var pie_bez = this.GetShapeBezierForPie(out degree);

                // Render the bezier
                var doubles_array = VA.Drawing.Point.ToDoubles(pie_bez).ToArray();
                var pie_slice     = page.DrawBezier(doubles_array, (short)degree, 0);
                return(pie_slice);
            }
        }
Пример #5
0
        public IVisio.Shape AddShape(TextBlock block)
        {
            // Remember this Block
            this.Blocks.Add(block);

            // Calculate the Correct Full Rectangle
            var ll   = new VA.Drawing.Point(this.InsertionPoint.X, this.InsertionPoint.Y - block.Size.Height);
            var tr   = new VA.Drawing.Point(this.InsertionPoint.X + block.Size.Width, this.InsertionPoint.Y);
            var rect = new VA.Drawing.Rectangle(ll, tr);

            // Draw the Shape
            var newshape = this.page.DrawRectangle(rect);

            block.VisioShape   = newshape;
            block.VisioShapeID = newshape.ID;
            block.Rectangle    = rect;

            // Handle Text If Needed
            if (block.Text != null)
            {
                newshape.Text = block.Text;
            }

            this.AdjustInsertionPoint(block.Size);

            return(newshape);
        }
        public void Scripting_Draw_BarChart()
        {
            var client = GetScriptingClient();
            client.Document.New();
            client.Page.New(new VA.Drawing.Size(4, 4), false);

            var rect1 = new VA.Drawing.Rectangle(0, 0, 4, 4);
            var chart1 = new VA.Models.Charting.BarChart(rect1);
            chart1.DataPoints.Add(new VA.Models.Charting.DataPoint(1.0));
            chart1.DataPoints.Add(new VA.Models.Charting.DataPoint(2.0));
            chart1.DataPoints.Add(new VA.Models.Charting.DataPoint(3.0));
            chart1.DataPoints.Add(new VA.Models.Charting.DataPoint(4.0));
            client.Draw.BarChart(chart1);

            var rect2 = new VA.Drawing.Rectangle(5, 0, 9, 4);
            var chart2= new VA.Models.Charting.BarChart(rect2);
            chart2.DataPoints.Add(new VA.Models.Charting.DataPoint(1.0));
            chart2.DataPoints.Add(new VA.Models.Charting.DataPoint(2.0));
            chart2.DataPoints.Add(new VA.Models.Charting.DataPoint(-3.0));
            chart2.DataPoints.Add(new VA.Models.Charting.DataPoint(4.0));
            client.Draw.BarChart(chart2);

            var rect3 = new VA.Drawing.Rectangle(10, 0, 14, 4);
            var chart3 = new VA.Models.Charting.BarChart(rect3);
            chart3.DataPoints.Add(new VA.Models.Charting.DataPoint(-1.0));
            chart3.DataPoints.Add(new VA.Models.Charting.DataPoint(-2.0));
            chart3.DataPoints.Add(new VA.Models.Charting.DataPoint(-3.0));
            chart3.DataPoints.Add(new VA.Models.Charting.DataPoint(-4.0));
            client.Draw.BarChart(chart3);

            client.Page.Get().ResizeToFitContents(new VA.Drawing.Size(1.0,1.0));
            client.Document.Close(true);
        }
Пример #7
0
        public Rectangle DrawRectangle(VA.Drawing.Rectangle r)
        {
            var rectangle = new Rectangle(r);

            this.Add(rectangle);
            return(rectangle);
        }
Пример #8
0
        public void Page_Draw_RoundedRectangle()
        {
            var page1 = this.GetNewPage();
            var rect  = new VA.Drawing.Rectangle(1, 1, 3, 2);
            // draw an inital framing rectangle so the coordinates are easy to calculate
            var    s0     = page1.DrawRectangle(rect);
            double width  = rect.Width;
            double height = rect.Height;
            double delta  = 1.0 / 8.0;

            var o = new VA.Drawing.Point(0, 0);

            var a = new VA.Drawing.Point(o.X + delta, o.Y);
            var b = new VA.Drawing.Point(o.X, o.Y + delta);
            var c = new VA.Drawing.Point(o.X, o.Y + height - delta);
            var d = new VA.Drawing.Point(o.X + delta, o.Y + height);
            var e = new VA.Drawing.Point(o.X + width - delta, o.Y + height);
            var f = new VA.Drawing.Point(o.X + width, o.Y + height - delta);
            var g = new VA.Drawing.Point(o.X + width, o.Y + delta);
            var h = new VA.Drawing.Point(o.X + width - delta, o.Y);

            var bottom_left_curve  = s0.DrawQuarterArc(a, b, IVisio.VisArcSweepFlags.visArcSweepFlagConcave);
            var left_side          = s0.DrawLine(b, c);
            var top_left_curve     = s0.DrawQuarterArc(c, d, IVisio.VisArcSweepFlags.visArcSweepFlagConvex);
            var top_side           = s0.DrawLine(d, e);
            var top_right_curve    = s0.DrawQuarterArc(e, f, IVisio.VisArcSweepFlags.visArcSweepFlagConcave);
            var right_side         = s0.DrawLine(f, g);
            var bottom_right_curve = s0.DrawQuarterArc(g, h, IVisio.VisArcSweepFlags.visArcSweepFlagConvex);
            var bottom_side        = s0.DrawLine(h, a);

            // delete the framing rectangle
            s0.DeleteSection((short)IVisio.VisSectionIndices.visSectionFirstComponent);

            page1.Delete(0);
        }
Пример #9
0
        private static void SetViewRectToSelection(IVisio.Window window,
                                                   IVisio.VisBoundingBoxArgs bbargs,
                                                   double padding_scale)
        {
            if (padding_scale < 0.0)
            {
                throw new System.ArgumentOutOfRangeException("padding_scale");
            }

            if (padding_scale > 1.0)
            {
                throw new System.ArgumentOutOfRangeException("padding_scale");
            }

            var app           = window.Application;
            var active_window = app.ActiveWindow;
            var sel           = active_window.Selection;
            var sel_bb        = sel.GetBoundingBox(bbargs);

            var delta     = sel_bb.Size * padding_scale;
            var view_rect = new VA.Drawing.Rectangle(sel_bb.Left - delta.Width, sel_bb.Bottom - delta.Height,
                                                     sel_bb.Right + delta.Height, sel_bb.Top + delta.Height);

            window.SetViewRect(view_rect);
        }
Пример #10
0
 public static void SetViewRect(
     this IVisio.Window window,
     VA.Drawing.Rectangle rect)
 {
     // MSDN: http://msdn.microsoft.com/en-us/library/office/ms367542(v=office.14).aspx
     window.SetViewRect(rect.Left, rect.Top, rect.Width, rect.Height);
 }
Пример #11
0
        public static IVisio.Shape DrawRectangle(this IVisio.Page page, VA.Drawing.Rectangle rect)
        {
            var surface = new VA.Drawing.DrawingSurface(page);
            var shape   = surface.DrawRectangle(rect);

            return(shape);
        }
 public static VA.Drawing.Rectangle GetBoundingBox(this IVisio.Selection selection, IVisio.VisBoundingBoxArgs args)
 {
     double bbx0, bby0, bbx1, bby1;
     selection.BoundingBox((short) args, out bbx0, out bby0, out bbx1, out bby1);
     var r = new VA.Drawing.Rectangle(bbx0, bby0, bbx1, bby1);
     return r;
 }
Пример #13
0
        public void Scripting_Distribute()
        {
            var client   = this.GetScriptingClient();
            var pagesize = new VA.Drawing.Size(4, 4);

            client.Document.New();
            client.Page.New(pagesize, false);

            var size1 = new VA.Drawing.Size(0.5, 0.5);
            var size2 = new VA.Drawing.Size(1.0, 1.0);
            var size3 = new VA.Drawing.Size(1.5, 1.5);

            var r1 = new VA.Drawing.Rectangle(new VA.Drawing.Point(1, 1), size1);
            var r2 = new VA.Drawing.Rectangle(new VA.Drawing.Point(2, 2), size2);
            var r3 = new VA.Drawing.Rectangle(new VA.Drawing.Point(4, 4), size3);

            var s1 = client.Draw.Rectangle(r1);
            var s2 = client.Draw.Rectangle(r2);
            var s3 = client.Draw.Rectangle(r3);

            client.Selection.SelectNone();
            client.Selection.Select(s1);
            client.Selection.Select(s2);
            client.Selection.Select(s3);

            var targets = new TargetShapes();

            client.Distribute.DistributeHorizontal(targets, AlignmentHorizontal.Center);

            var shapeids = new[] { s1.ID, s2.ID, s3.ID };

            VisioAutomation.Shapes.ShapeXFormCells.GetCells(client.Page.Get(), shapeids);

            client.Document.Close(true);
        }
Пример #14
0
        public Shape Drop(string master, string stencil, VA.Drawing.Rectangle rect)
        {
            var m = new Shape(master, stencil, rect);

            this.Add(m);
            return(m);
        }
Пример #15
0
        private static double GetSide(VA.Drawing.Rectangle r, LayoutDirection direction)
        {
            switch (direction)
            {
            case (LayoutDirection.Up):
            {
                return(r.Top);
            }

            case (LayoutDirection.Down):
            {
                return(r.Bottom);
            }

            case (LayoutDirection.Left):
            {
                return(r.Left);
            }

            case (LayoutDirection.Right):
            {
                return(r.Right);
            }

            default:
            {
                throw new System.ArgumentOutOfRangeException();
            }
            }
        }
Пример #16
0
        private VA.Drawing.Rectangle ToDocumentCoordinates(VA.Drawing.Rectangle rect)
        {
            var nr = rect.Add(-msagl_bb.Left, -msagl_bb.Bottom).Multiply(ScaleToDocument,
                                                                         ScaleToDocument);

            return(nr);
        }
Пример #17
0
        public void DOM_DrawAndDrop()
        {
            var doc       = this.GetNewDoc();
            var page_node = new VA.DOM.Page();

            var rect0          = new VisioAutomation.Drawing.Rectangle(3, 4, 7, 8);
            var rect1          = new VisioAutomation.Drawing.Rectangle(8, 1, 9, 5);
            var dropped_shape0 = page_node.Shapes.Drop(this.rectangle, this.basic_u_vss, rect0);
            var drawn_shape0   = page_node.Shapes.DrawRectangle(rect0);

            var dropped_shape1 = page_node.Shapes.Drop(this.rectangle, this.basic_u_vss, rect1);
            var drawn_shape1   = page_node.Shapes.DrawRectangle(rect1);

            var page = page_node.Render(doc);

            var xfrms = VA.Shapes.XFormCells.GetCells(page,
                                                      new int[] { dropped_shape0.VisioShapeID,
                                                                  drawn_shape0.VisioShapeID,
                                                                  dropped_shape1.VisioShapeID,
                                                                  drawn_shape1.VisioShapeID });

            Assert.AreEqual(xfrms[1].PinX, xfrms[0].PinX);
            Assert.AreEqual(xfrms[1].PinY, xfrms[0].PinY);

            Assert.AreEqual(xfrms[1].Width, xfrms[0].Width);
            Assert.AreEqual(xfrms[1].Height, xfrms[0].Height);

            Assert.AreEqual(xfrms[3].PinX, xfrms[2].PinX);
            Assert.AreEqual(xfrms[3].PinY, xfrms[2].PinY);
            Assert.AreEqual(xfrms[3].Width, xfrms[2].Width);
            Assert.AreEqual(xfrms[3].Height, xfrms[2].Height);

            doc.Close(true);
        }
Пример #18
0
        public VA.Drawing.Rectangle GetBoundingBox(IVisio.VisBoundingBoxArgs args)
        {
            double bbx0, bby0, bbx1, bby1;

            if (this.Master != null)
            {
                this.Master.BoundingBox((short)args, out bbx0, out bby0, out bbx1, out bby1);
            }
            else if (this.Page != null)
            {
                this.Page.BoundingBox((short)args, out bbx0, out bby0, out bbx1, out bby1);
            }
            else if (this.Shape != null)
            {
                this.Shape.BoundingBox((short)args, out bbx0, out bby0, out bbx1, out bby1);
            }
            else
            {
                throw new System.ArgumentException("Unhandled Drawing Surface");
            }

            var r = new VA.Drawing.Rectangle(bbx0, bby0, bbx1, bby1);

            return(r);
        }
Пример #19
0
        public Oval DrawOval(VA.Drawing.Rectangle r)
        {
            var oval = new Oval(r);

            this.Add(oval);
            return(oval);
        }
Пример #20
0
        private MG.GeometryGraph CreateMSAGLGraph(DGMODEL.Drawing layout_diagram)
        {
            var msagl_graph = new MG.GeometryGraph();
            var defsize     = new VA.Drawing.Size(this.LayoutOptions.DefaultShapeSize.Width,
                                                  this.LayoutOptions.DefaultShapeSize.Height);

            // Create the nodes in MSAGL
            foreach (var layout_shape in layout_diagram.Shapes)
            {
                var nodesize   = ToMSAGLCoordinates(layout_shape.Size ?? defsize);
                var msagl_node = new MG.Node(layout_shape.ID,
                                             MG.Splines.CurveFactory.CreateBox(nodesize.Width, nodesize.Height,
                                                                               new MG.Point()));
                msagl_graph.AddNode(msagl_node);
                msagl_node.UserData = layout_shape;
            }

            bool connectors_ok = this.validate_connectors(layout_diagram);
            // TODO: What to do if connectors_ok is false?

            var msagl_size = this.ToMSAGLCoordinates(DefaultBezierConnectorLabelBoxSize);

            // Create the MSAGL Connectors
            foreach (var layout_connector in layout_diagram.Connectors)
            {
                if (layout_connector.From == null)
                {
                    throw new System.ArgumentException("Connector's From node is null");
                }

                if (layout_connector.To == null)
                {
                    throw new System.ArgumentException("Connector's To node is null");
                }

                var from_node = msagl_graph.NodeMap[layout_connector.From.ID];
                var to_node   = msagl_graph.NodeMap[layout_connector.To.ID];

                var new_edge = new MG.Edge(from_node, to_node);
                new_edge.ArrowheadAtTarget = false;
                new_edge.UserData          = layout_connector;
                msagl_graph.AddEdge(new_edge);

                new_edge.Label = new Microsoft.Msagl.Label(msagl_size.Width, msagl_size.Height, new_edge);
            }

            msagl_graph.CalculateLayout();

            this.msagl_bb = new VA.Drawing.Rectangle(
                msagl_graph.BoundingBox.Left,
                msagl_graph.BoundingBox.Bottom,
                msagl_graph.BoundingBox.Right,
                msagl_graph.BoundingBox.Top);

            this.layout_bb = new VA.Drawing.Rectangle(0, 0, this.msagl_bb.Width, msagl_bb.Height)
                             .Multiply(ScaleToDocument, ScaleToDocument);

            return(msagl_graph);
        }
Пример #21
0
        public IVisio.Shape DrawOval(VA.Drawing.Point center, double radius)
        {
            var A    = center.Add(-radius, -radius);
            var B    = center.Add(radius, radius);
            var rect = new VA.Drawing.Rectangle(A, B);

            return(this.DrawOval(rect));
        }
Пример #22
0
        public static void DrawNode(
            BoxL.Node node,
            VA.Drawing.Rectangle rect, IVisio.Page page)
        {
            var shape = page.DrawRectangle(rect);

            node.Data = shape;
        }
Пример #23
0
 public static VA.Drawing.Rectangle GetBoundingBox(this IVisio.Master master, IVisio.VisBoundingBoxArgs args)
 {
     // MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vissdk11/html/vimthBoundingBox_HV81900422.asp
     double bbx0, bby0, bbx1, bby1;
     master.BoundingBox((short) args, out bbx0, out bby0, out bbx1, out bby1);
     var r = new VA.Drawing.Rectangle(bbx0, bby0, bbx1, bby1);
     return r;
 }
Пример #24
0
        public PieChart(VA.Drawing.Rectangle rect)
        {
            var center = rect.Center;
            var radius = System.Math.Min(rect.Width, rect.Height) / 2.0;

            this.DataPoints = new DataPointList();
            this.Center     = center;
            this.Radius     = radius;
        }
Пример #25
0
        public static VA.Drawing.Rectangle GetBoundingBox(this IVisio.Selection selection, IVisio.VisBoundingBoxArgs args)
        {
            double bbx0, bby0, bbx1, bby1;

            selection.BoundingBox((short)args, out bbx0, out bby0, out bbx1, out bby1);
            var r = new VA.Drawing.Rectangle(bbx0, bby0, bbx1, bby1);

            return(r);
        }
Пример #26
0
        public IVisio.Shape Rectangle(VisioAutomation.Drawing.Rectangle r)
        {
            var surface = this.GetDrawingSurface();

            using (var undoscope = this._client.Application.NewUndoScope("Draw Rectangle"))
            {
                var shape = surface.DrawRectangle(r.Left, r.Bottom, r.Right, r.Top);
                return(shape);
            }
        }
Пример #27
0
        public IVisio.Shape Oval(VisioAutomation.Drawing.Rectangle rect)
        {
            var surface = this.GetDrawingSurface();

            using (var undoscope = this._client.Application.NewUndoScope("Draw Oval"))
            {
                var shape = surface.DrawOval(rect);
                return(shape);
            }
        }
Пример #28
0
        public static VA.Drawing.Rectangle GetBoundingBox(this IVisio.Master master, IVisio.VisBoundingBoxArgs args)
        {
            // MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vissdk11/html/vimthBoundingBox_HV81900422.asp
            double bbx0, bby0, bbx1, bby1;

            master.BoundingBox((short)args, out bbx0, out bby0, out bbx1, out bby1);
            var r = new VA.Drawing.Rectangle(bbx0, bby0, bbx1, bby1);

            return(r);
        }
        public void Draw(Session session)
        {
            var normalized_values = this.DataPoints.GetNormalizedValues();
            var heights = DOMUtil.ConstructPositions(this.DataPoints.Count(), CellHeight, this.VerticalSeparation);
            var widths = DOMUtil.ConstructPositions(new[] { this.CategoryLabelHeight, this.CellWidth }, this.HorizontalSeparation);
            var grid = new GridLayout(widths, heights);

            int catcol = 0;
            int barcol = 2;

            var content_rects = this.SkipOdd(grid.GetRectsInCol(barcol)).ToList();

            var domshapescol = new VA.DOM.ShapeList();

            var bar_rects = new List<VA.Drawing.Rectangle>(content_rects.Count);
            for (int i = 0; i < content_rects.Count; i++)
            {
                var r = content_rects[i];
                domshapescol.DrawRectangle(r);
                var size = new VA.Drawing.Size(normalized_values[i] * r.Width, this.CellHeight);
                var bar_rect = new VA.Drawing.Rectangle(r.LowerLeft, size);
                bar_rects.Add(bar_rect);
            }

            var cat_rects = this.SkipOdd(grid.GetRectsInCol(catcol)).ToList();

            var bar_shapes = DOMUtil.DrawRects(domshapescol, bar_rects, session.MasterRectangle);
            var cat_shapes = DOMUtil.DrawRects(domshapescol, cat_rects, session.MasterRectangle);

            for (int i = 0; i < this.DataPoints.Count; i++)
            {
                bar_shapes[i].Text = new VA.Text.Markup.TextElement(this.DataPoints[i].Text);
                cat_shapes[i].Text = new VA.Text.Markup.TextElement(this.CategoryLabels[i]);
            }

            foreach (var shape in bar_shapes)
            {
                var cells = shape.Cells;

                cells.FillForegnd = this.ValueFillColor;
                cells.LineColor = this.LineLightBorder;

            }

            foreach (var shape in cat_shapes)
            {
                var cells = shape.Cells;

                cells.FillPattern = this.CategoryFillPattern;
                cells.LineWeight = this.CategoryLineWeight;
                cells.LinePattern = this.CategoryLinePattern;
            }
            domshapescol.Render(session.Page);
        }
Пример #30
0
        public IVisio.Shape Oval(double x0, double y0, double x1, double y1)
        {
            var surface = this.GetDrawingSurfaceSafe();
            var rect    = new VA.Drawing.Rectangle(x0, y0, x1, y1);

            using (var undoscope = new VA.Application.UndoScope(this.Client.VisioApplication, "Draw Oval"))
            {
                var shape = surface.DrawOval(rect);
                return(shape);
            }
        }
Пример #31
0
        public static void FontGlyphComparision3(IVisio.Document doc, string[] fontnames, List <string> samplechars)
        {
            var colors = new[] { "rgb(0,0,255)", "rgb(255,0,0)" };

            double w = 2.0;
            double h = 1;

            int chunksize = 12;
            var chunks    = LinqUtil.Split(samplechars, chunksize);


            foreach (var chunk in chunks)
            {
                var domshapescol = new VA.DOM.ShapeList();

                for (int j = 0; j < fontnames.Count(); j++)
                {
                    for (int i = 0; i < chunksize; i++)
                    {
                        double x0 = 0;
                        double y0 = i * h * -1;

                        var r  = new VA.Drawing.Rectangle(x0, y0, x0 + w, y0 + h);
                        var n1 = domshapescol.Drop("Rectangle", "basic_u.vss", r);
                        if (i < chunk.Count)
                        {
                            n1.Text = new VA.Text.Markup.TextElement(chunk[i]);
                            n1.Text.CharacterCells.Color = colors[j];
                        }
                        else
                        {
                            // empty
                        }
                        n1.CharFontName = fontnames[j];

                        //n1.Cells.CharColor = "=RGB(255,0,0)";// colors[j];
                        n1.Cells.CharTransparency = 0.7;
                        n1.Cells.CharSize         = "36pt";
                        n1.Cells.FillPattern      = 0;
                        n1.Cells.LineWeight       = 0.0;
                        n1.Cells.LinePattern      = 0;
                    }
                }

                var page = doc.Pages.Add();

                domshapescol.Render(page);

                var bordersize = new VA.Drawing.Size(0.5, 0.5);
                page.ResizeToFitContents(bordersize);
            }
        }
Пример #32
0
        public static VA.Drawing.Rectangle GetViewRect(this IVisio.Window window)
        {
            // MSDN: http://msdn.microsoft.com/en-us/library/office/ff765846.aspx
            double left, top, height, width;
            window.GetViewRect(out left, out top, out width, out height);
            double x0 = left;
            double x1 = left + width;
            double y0 = top - height;
            double y1 = y0 + height;

            var r = new VA.Drawing.Rectangle(x0, y0, x1, y1);
            return r;
        }
Пример #33
0
        public static VA.Drawing.Rectangle GetViewRect(this IVisio.Window window)
        {
            // MSDN: http://msdn.microsoft.com/en-us/library/office/ff765846.aspx
            double left, top, height, width;

            window.GetViewRect(out left, out top, out width, out height);
            double x0 = left;
            double x1 = left + width;
            double y0 = top - height;
            double y1 = y0 + height;

            var r = new VA.Drawing.Rectangle(x0, y0, x1, y1);

            return(r);
        }
Пример #34
0
        public void Scripting_Draw_BarChart()
        {
            var pagesize   = new VA.Drawing.Size(4, 4);
            var rect1      = new VA.Drawing.Rectangle(0, 0, 4, 4);
            var rect2      = new VA.Drawing.Rectangle(5, 0, 9, 4);
            var rect3      = new VA.Drawing.Rectangle(10, 0, 14, 4);
            var bordersize = new VA.Drawing.Size(1.0, 1.0);

            var chart1 = new VisioAutomation.Models.Charting.BarChart(rect1);

            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(1.0));
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(2.0));
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(3.0));
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(4.0));

            var chart2 = new VisioAutomation.Models.Charting.BarChart(rect2);

            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(1.0));
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(2.0));
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-3.0));
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(4.0));

            var chart3 = new VisioAutomation.Models.Charting.BarChart(rect3);

            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-1.0));
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-2.0));
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-3.0));
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-4.0));

            // Create the page
            var client = this.GetScriptingClient();

            client.Document.New();
            client.Page.New(pagesize, false);

            // Draw the Charts
            client.Draw.BarChart(chart1);
            client.Draw.BarChart(chart2);
            client.Draw.BarChart(chart3);
            client.Page.ResizeToFitContents(bordersize, true);

            // Cleanup
            client.Document.Close(true);
        }
Пример #35
0
        public void Scripting_Draw_AreaChart()
        {
            var pagesize = new VA.Drawing.Size(4, 4);
            var rect1    = new VA.Drawing.Rectangle(0, 0, 4, 4);
            var rect2    = new VA.Drawing.Rectangle(5, 0, 9, 4);
            var rect3    = new VA.Drawing.Rectangle(10, 0, 14, 4);
            var padding  = new VA.Drawing.Size(1.0, 1.0);

            var chart1 = new VisioAutomation.Models.Charting.AreaChart(rect1);

            chart1.DataPoints.Add(1.0);
            chart1.DataPoints.Add(2.0);
            chart1.DataPoints.Add(3.0);
            chart1.DataPoints.Add(4.0);

            var chart2 = new VisioAutomation.Models.Charting.AreaChart(rect2);

            chart2.DataPoints.Add(1.0);
            chart2.DataPoints.Add(2.0);
            chart2.DataPoints.Add(-3.0);
            chart2.DataPoints.Add(4.0);

            var chart3 = new VisioAutomation.Models.Charting.AreaChart(rect3);

            chart3.DataPoints.Add(-1.0);
            chart3.DataPoints.Add(-2.0);
            chart3.DataPoints.Add(-3.0);
            chart3.DataPoints.Add(-4.0);

            // Setup the Page
            var client = this.GetScriptingClient();

            client.Document.New();
            client.Page.New(pagesize, false);

            // Draw the Charts
            client.Draw.AreaChart(chart1);
            client.Draw.AreaChart(chart2);
            client.Draw.AreaChart(chart3);
            client.Page.Get().ResizeToFitContents(padding);

            // Cleanup
            client.Document.Close(true);
        }
Пример #36
0
        public void Scripting_Distribute_With_Spacing()
        {
            var client   = this.GetScriptingClient();
            var pagesize = new VA.Drawing.Size(4, 4);

            client.Document.New();
            client.Page.New(pagesize, false);

            var size1 = new VA.Drawing.Size(0.5, 0.5);
            var size2 = new VA.Drawing.Size(1.0, 1.0);
            var size3 = new VA.Drawing.Size(1.5, 1.5);

            var r1 = new VA.Drawing.Rectangle(new VA.Drawing.Point(1, 1), size1);
            var r2 = new VA.Drawing.Rectangle(new VA.Drawing.Point(2, 2), size2);
            var r3 = new VA.Drawing.Rectangle(new VA.Drawing.Point(4, 4), size3);

            var s1 = client.Draw.Rectangle(r1);
            var s2 = client.Draw.Rectangle(r2);
            var s3 = client.Draw.Rectangle(r3);

            client.Selection.SelectNone();
            client.Selection.Select(s1);
            client.Selection.Select(s2);
            client.Selection.Select(s3);

            var targets = new TargetShapes();

            client.Distribute.DistributeOnAxis(targets, Axis.XAxis, 0.25);
            client.Distribute.DistributeOnAxis(targets, Axis.YAxis, 1.0);

            var shapeids      = new[] { s1.ID, s2.ID, s3.ID };
            var out_xfrms     = VisioAutomation.Shapes.ShapeXFormCells.GetCells(client.Page.Get(), shapeids);
            var out_positions = out_xfrms.Select(xfrm => TestExtensions.ToPoint(xfrm.PinX.Result, xfrm.PinY.Result)).ToArray();

            Assert.AreEqual(1.25, out_positions[0].X);
            Assert.AreEqual(1.25, out_positions[0].Y);
            Assert.AreEqual(2.25, out_positions[1].X);
            Assert.AreEqual(3.00, out_positions[1].Y);
            Assert.AreEqual(3.75, out_positions[2].X);
            Assert.AreEqual(5.25, out_positions[2].Y);

            client.Document.Close(true);
        }
Пример #37
0
        public void Dom_DrawAndDrop()
        {
            var doc       = this.GetNewDoc();
            var page_node = new Page();

            var rect0 = new VisioAutomation.Drawing.Rectangle(3, 4, 7, 8);
            var rect1 = new VisioAutomation.Drawing.Rectangle(8, 1, 9, 5);

            // Draw and Drop two rectangles in the same place
            var s0 = page_node.Shapes.Drop(this.rectangle, this.basic_u_vss, rect0);
            var s1 = page_node.Shapes.DrawRectangle(rect0);

            // Draw and Drop two rectangles in the same place
            var s2 = page_node.Shapes.Drop(this.rectangle, this.basic_u_vss, rect1);
            var s3 = page_node.Shapes.DrawRectangle(rect1);

            // Render the page
            var page = page_node.Render(doc);

            // Verify the locations and sizes
            var shapeids = new int[] {
                s0.VisioShapeID,
                s1.VisioShapeID,
                s2.VisioShapeID,
                s3.VisioShapeID
            };

            var xfrms = VA.Shapes.ShapeXFormCells.GetCells(page, shapeids);

            Assert.AreEqual(xfrms[1].PinX, xfrms[0].PinX);
            Assert.AreEqual(xfrms[1].PinY, xfrms[0].PinY);

            Assert.AreEqual(xfrms[1].Width, xfrms[0].Width);
            Assert.AreEqual(xfrms[1].Height, xfrms[0].Height);

            Assert.AreEqual(xfrms[3].PinX, xfrms[2].PinX);
            Assert.AreEqual(xfrms[3].PinY, xfrms[2].PinY);
            Assert.AreEqual(xfrms[3].Width, xfrms[2].Width);
            Assert.AreEqual(xfrms[3].Height, xfrms[2].Height);

            doc.Close(true);
        }
        public void Scripting_Draw_AreaChart()
        {
            var pagesize = new VA.Drawing.Size(4, 4);
            var rect1 = new VA.Drawing.Rectangle(0, 0, 4, 4);
            var rect2 = new VA.Drawing.Rectangle(5, 0, 9, 4);
            var rect3 = new VA.Drawing.Rectangle(10, 0, 14, 4);
            var padding = new VA.Drawing.Size(1.0, 1.0);

            var chart1 = new VisioAutomation.Models.Charting.AreaChart(rect1);
            chart1.DataPoints.Add(1.0);
            chart1.DataPoints.Add(2.0);
            chart1.DataPoints.Add(3.0);
            chart1.DataPoints.Add(4.0);

            var chart2 = new VisioAutomation.Models.Charting.AreaChart(rect2);
            chart2.DataPoints.Add(1.0);
            chart2.DataPoints.Add(2.0);
            chart2.DataPoints.Add(-3.0);
            chart2.DataPoints.Add(4.0);

            var chart3 = new VisioAutomation.Models.Charting.AreaChart(rect3);
            chart3.DataPoints.Add(-1.0);
            chart3.DataPoints.Add(-2.0);
            chart3.DataPoints.Add(-3.0);
            chart3.DataPoints.Add(-4.0);

            // Setup the Page
            var client = this.GetScriptingClient();
            client.Document.New();
            client.Page.New(pagesize, false);

            // Draw the Charts
            client.Draw.AreaChart(chart1);
            client.Draw.AreaChart(chart2);
            client.Draw.AreaChart(chart3);
            client.Page.Get().ResizeToFitContents(padding);

            // Cleanup
            client.Document.Close(true);
        }
        public void Scripting_Draw_BarChart()
        {
            var pagesize = new VA.Drawing.Size(4, 4);
            var rect1 = new VA.Drawing.Rectangle(0, 0, 4, 4);
            var rect2 = new VA.Drawing.Rectangle(5, 0, 9, 4);
            var rect3 = new VA.Drawing.Rectangle(10, 0, 14, 4);
            var bordersize = new VA.Drawing.Size(1.0, 1.0);

            var chart1 = new VisioAutomation.Models.Charting.BarChart(rect1);
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(1.0));
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(2.0));
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(3.0));
            chart1.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(4.0));

            var chart2 = new VisioAutomation.Models.Charting.BarChart(rect2);
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(1.0));
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(2.0));
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-3.0));
            chart2.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(4.0));

            var chart3 = new VisioAutomation.Models.Charting.BarChart(rect3);
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-1.0));
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-2.0));
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-3.0));
            chart3.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(-4.0));

            // Create the page
            var client = this.GetScriptingClient();
            client.Document.New();
            client.Page.New(pagesize, false);

            // Draw the Charts
            client.Draw.BarChart(chart1);
            client.Draw.BarChart(chart2);
            client.Draw.BarChart(chart3);
            client.Page.ResizeToFitContents(bordersize,true);

            // Cleanup
            client.Document.Close(true);
        }
Пример #40
0
        public IVisio.Shape RenderPie( IVisio.Page page)
        {
            if (this.Angle == 0.0)
            {
                var p1 = this.GetPointAtRadius(this.Center, this.Radius, this.SectorStartAngle);
                return page.DrawLine(this.Center, p1);
            }
            else if (this.Angle >= 2*System.Math.PI)
            {
                var A = this.Center.Add(-this.Radius, -this.Radius);
                var B = this.Center.Add(this.Radius, this.Radius);
                var rect = new VA.Drawing.Rectangle(A, B);
                var shape = page.DrawOval(rect);
                return shape;
            }
            else
            {
                int degree;
                var pie_bez = this.GetShapeBezierForPie(out degree);

                // Render the bezier
                var doubles_array = VA.Drawing.Point.ToDoubles(pie_bez).ToArray();
                var pie_slice = page.DrawBezier(doubles_array, (short)degree, 0);
                return pie_slice;
            }
        }
Пример #41
0
        public void Render(IVisio.Page page)
        {
            double sum = this._slices.Select(s => s.Value).Sum();
            var shapes = new List<IVisio.Shape>();
            double start_angle = 0.0;

            // Draw each slice
            for (int i = 0; i < this.Slices.Count; i++)
            {
                var slice = this.Slices[i];
                double cur_val = slice.Value;
                double cur_val_norm = cur_val / sum;
                double cur_angle = cur_val_norm * System.Math.PI * 2.0;
                double end_angle = start_angle + cur_angle;


                slice.StartAngle = start_angle;
                slice.EndAngle = end_angle;

                var ps = new VA.Layout.Models.Radial.PieSlice(this.Center, start_angle, end_angle, this.Radius);
                var shape = ps.Render(page);
                start_angle += cur_angle;

                shapes.Add(shape);
            }


            for (int i = 0; i < shapes.Count; i++)
            {
                var shape = shapes[i];
                var slice = this._slices[i];
                slice.VisioShape = shape;
                if (!string.IsNullOrEmpty(slice.Text))
                {
                    shape.Text = slice.Text;
                }
            }

            if (this.DrawBackground)
            {
                var ll = this.Center.Subtract(this.Radius, this.Radius);
                var ur = this.Center.Add(this.Radius, this.Radius);
                var rect = new VA.Drawing.Rectangle(ll, ur);
                this._backgroundVisioShape = page.DrawOval(rect);
            }
        }
Пример #42
0
        public void Render(IVisio.Page page)
        {
            this.TotalMarginWidth = this.Rectangle.Width*(0.10);
            this.TotalBarSpacingWidth = this.Rectangle.Width * (0.10);
            this.TotalBarWidth = this.Rectangle.Width*(0.80);

            int num_points = this.DataPoints.Count;

            double bar_spacing = num_points > 1 ? this.TotalBarSpacingWidth/num_points : 0.0;
            double bar_width = num_points > 0 ? this.TotalBarWidth/num_points : this.TotalBarWidth;

            double cur_x = this.Rectangle.Left + (this.TotalMarginWidth/2.0);

            double max = this.DataPoints.Select(i => i.Value).Max();
            double min = this.DataPoints.Select(i => i.Value).Min();
            var range = ChartUtil.GetValueRangeDistance(min, max);

            double base_y = this.Rectangle.Bottom;

            if (min < 0.0)
            {
                base_y += System.Math.Abs(this.Rectangle.Height * (min / range));
            }

            var category_axis_start_point = new VA.Drawing.Point(this.Rectangle.Left, base_y);
            var category_axis_end_point = new VA.Drawing.Point(this.Rectangle.Right, base_y);
            var category_axis_shape = page.DrawLine(category_axis_start_point, category_axis_end_point);

            foreach (var p in this.DataPoints)
            {
                var value_height = System.Math.Abs(this.Rectangle.Height*(p.Value/range));

                VA.Drawing.Point bar_p0;
                VA.Drawing.Point bar_p1;

                if (p.Value >= 0.0)
                {
                    bar_p0 = new VA.Drawing.Point(cur_x, base_y);
                    bar_p1 = new VA.Drawing.Point(cur_x + bar_width, base_y + value_height); ;
                }
                else
                {
                    bar_p0 = new VA.Drawing.Point(cur_x, base_y - value_height);
                    bar_p1 = new VA.Drawing.Point(cur_x + bar_width, base_y);
                }

                var bar_rect = new VA.Drawing.Rectangle(bar_p0, bar_p1);
                var shape = page.DrawRectangle(bar_rect);
                p.VisioShape = shape;

                if (p.Label != null)
                {
                    shape.Text = p.Label;
                }

                cur_x += bar_width + bar_spacing;
            }

            var allshapes = this.DataPoints.Select(dp => dp.VisioShape).Where(s => s != null).ToList();
            allshapes.Add(category_axis_shape);

            ChartUtil.GroupShapesIfNeeded(page, allshapes);
        }
        public static void DrawAllGradients()
        {
            var app = SampleEnvironment.Application;
            var docs = app.Documents;
            var stencil = docs.OpenStencil("basic_u.vss");
            var master = stencil.Masters["Rectangle"];
            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();

            int num_cols = 7;
            int num_rows = 7;

            var page_size = new VA.Drawing.Size(5, 5);
            SampleEnvironment.SetPageSize(page,page_size);

            var lowerleft = new VA.Drawing.Point(0, 0);
            var actual_page_size = SampleEnvironment.GetPageSize(page);
            var page_rect = new VA.Drawing.Rectangle(lowerleft, actual_page_size);

            var layout = new GRIDMODEL.GridLayout(num_cols, num_rows, new VA.Drawing.Size(1, 1), master);
            layout.RowDirection = GRIDMODEL.RowDirection.TopToBottom;
            layout.Origin = page_rect.UpperLeft;
            layout.CellSpacing = new VA.Drawing.Size(0, 0);
            layout.PerformLayout();

            int max_grad_id = 40;
            int n = 0;

            foreach (var node in layout.Nodes)
            {
                int grad_id = n%max_grad_id;
                node.Text = grad_id.ToString();
                n++;
            }

            layout.Render(page);

            var color1 = new VA.Drawing.ColorRGB(0xffdddd);
            var color2 = new VA.Drawing.ColorRGB(0x00ffff);

            var format = new VA.Shapes.FormatCells();

            var update = new VA.ShapeSheet.Update();

            string color1_formula = color1.ToFormula();
            string color2_formula = color2.ToFormula();

            n = 0;

            foreach (var node in layout.Nodes)
            {
                short shapeid = node.ShapeID;
                int grad_id = n%max_grad_id;

                format.FillPattern = grad_id;
                format.FillForegnd = color1_formula;
                format.FillBkgnd = color2_formula;
                format.LinePattern = 0;
                format.LineWeight = 0;
                update.SetFormulas(shapeid, format);

                n++;
            }

            update.Execute(page);

            var bordersize = new VA.Drawing.Size(1, 1);
            page.ResizeToFitContents(bordersize);
        }
        public void PerformLayout()
        {
            var max_rows = this.Containers.Select(c => c.ContainerItems.Count).Max();
            var col_indexes = Enumerable.Range(0, this.Containers.Count);
            var row_indexes = Enumerable.Range(0, max_rows);

            var col_lefts =
                col_indexes.Select(i => i * (this.LayoutOptions.ItemWidth + this.LayoutOptions.ContainerHorizontalDistance + (2 * this.LayoutOptions.Padding))).ToList();

            var col_rights = col_lefts.Select(x => x + this.LayoutOptions.ItemWidth).ToList();

            var row_tops = row_indexes.Select(i => i * -(this.LayoutOptions.ItemHeight + this.LayoutOptions.ItemVerticalSpacing)).ToList();
            var row_bottoms = row_tops.Select(y => y - this.LayoutOptions.ItemHeight).ToList();

            for (int container = 0; container< this.Containers.Count; container++)
            {
                var ct = this.Containers[container];
                for (int ri=0;ri<ct.ContainerItems.Count;ri++)
                {
                    double left = col_lefts[container];
                    double right = col_rights[container];
                    double top = row_tops[ri];
                    double bottom = row_bottoms[ri];

                    var rect = new VA.Drawing.Rectangle(left, bottom, right, top);

                    var item = ct.ContainerItems[ri];
                    item.Rectangle = rect;
                }
            }

            int ctn = 0;
            foreach (var ct in this.Containers)
            {
                if (ct.ContainerItems.Count < 1)
                {
                    double top = this.LayoutOptions.Padding + this.LayoutOptions.ContainerHeaderHeight;
                    double bottom = top - this.LayoutOptions.ContainerHeaderHeight - this.LayoutOptions.Padding;
                    ct.Rectangle = new VA.Drawing.Rectangle(col_lefts[ctn], bottom, col_rights[ctn], top);
                }
                else
                {
                    double max_top = ct.ContainerItems.Select(i => i.Rectangle.Top).Max();
                    double max_right = ct.ContainerItems.Select(i => i.Rectangle.Right).Max();
                    double min_bottom = ct.ContainerItems.Select(i => i.Rectangle.Bottom).Min();
                    double min_left = ct.ContainerItems.Select(i => i.Rectangle.Left).Min();

                    max_top += this.LayoutOptions.Padding + this.LayoutOptions.ContainerHeaderHeight;
                    max_right += this.LayoutOptions.Padding;
                    min_left -= this.LayoutOptions.Padding;
                    min_bottom -= this.LayoutOptions.Padding;

                    ct.Rectangle = new VA.Drawing.Rectangle(min_left, min_bottom, max_right, max_top);
                }

                ctn++;
            }

            this.IsLayedOut = true;
        }
Пример #45
0
 public IVisio.Shape Oval(double x0, double y0, double x1, double y1)
 {
     var surface = this.GetDrawingSurfaceSafe();
     var rect = new VA.Drawing.Rectangle(x0, y0, x1, y1);
     using (var undoscope = new VA.Application.UndoScope(this.Client.VisioApplication, "Draw Oval"))
     {
         var shape = surface.DrawOval(rect);
         return shape;
     }
 }
        public static void FontGlyphComparision2(IVisio.Document doc, string[] fontnames, List<string> samplechars)
        {
            double w = 2.0;
            double h = 1;
            double th = 1;

            int chunksize = 12;
            var chunks = LinqUtil.Split(samplechars, chunksize);

            foreach (var chunk in chunks)
            {
                var domshapescol = new VA.DOM.ShapeList();

                for (int j = 0; j < fontnames.Count(); j++)
                {
                    string fontname = fontnames[j];
                    double x0 = j*w;

                    var r = new VA.Drawing.Rectangle(x0, 0 - th, x0 + w, 0);
                    var n1 = domshapescol.Drop("Rectangle", "basic_u.vss", r);
                    n1.Text = new VA.Text.Markup.TextElement( fontname.ToUpper() ) ;
                    n1.Cells.FillForegnd = "rgb(255,255,255)";
                    n1.Cells.LineWeight = 0.0;
                    n1.Cells.LinePattern = 0;
                    n1.Cells.CharSize = "16pt";
                }

                for (int j = 0; j < fontnames.Count(); j++)
                {
                    for (int i = 0; i < chunksize; i++)
                    {
                        double x0 = j*w;
                        double y0 = i*h*-1 - th - h;

                        var r = new VA.Drawing.Rectangle(x0, y0, x0 + w, y0 + h);
                        var n1 = domshapescol.Drop("Rectangle", "basic_u.vss", r);
                        if (i < chunk.Count)
                        {
                            n1.Text = new VA.Text.Markup.TextElement(chunk[i]);
                        }
                        n1.CharFontName = fontnames[j];
                        n1.Cells.CharSize = "36pt";
                        n1.Cells.FillForegnd = "rgb(255,255,255)";
                        n1.Cells.LineWeight = 0.0;
                        n1.Cells.LinePattern = 0;
                    }
                }

                var page = doc.Pages.Add();
                domshapescol.Render(page);

                var bordersize = new VA.Drawing.Size(0.5, 0.5);
                page.ResizeToFitContents(bordersize);
            }
        }
        public static void FontGlyphComparision3(IVisio.Document doc, string[] fontnames, List<string> samplechars)
        {
            var colors = new[] {"rgb(0,0,255)", "rgb(255,0,0)"};

            double w = 2.0;
            double h = 1;

            int chunksize = 12;
            var chunks = LinqUtil.Split(samplechars, chunksize);

            foreach (var chunk in chunks)
            {
                var domshapescol = new VA.DOM.ShapeList();

                for (int j = 0; j < fontnames.Count(); j++)
                {
                    for (int i = 0; i < chunksize; i++)
                    {
                        double x0 = 0;
                        double y0 = i*h*-1;

                        var r = new VA.Drawing.Rectangle(x0, y0, x0 + w, y0 + h);
                        var n1 = domshapescol.Drop("Rectangle", "basic_u.vss", r);
                        if (i < chunk.Count)
                        {
                            n1.Text = new VA.Text.Markup.TextElement(chunk[i]);
                            n1.Text.CharacterCells.Color = colors[j];

                        }
                        n1.CharFontName = fontnames[j];

                        //n1.Cells.CharColor = "=RGB(255,0,0)";// colors[j];
                        n1.Cells.CharTransparency = 0.7;
                        n1.Cells.CharSize = "36pt";
                        n1.Cells.FillPattern = 0;
                        n1.Cells.LineWeight = 0.0;
                        n1.Cells.LinePattern = 0;
                    }
                }

                var page = doc.Pages.Add();

                domshapescol.Render(page);

                var bordersize = new VA.Drawing.Size(0.5, 0.5);
                page.ResizeToFitContents(bordersize);
            }
        }
Пример #48
0
        private static void SetViewRectToSelection(IVisio.Window window,
            IVisio.VisBoundingBoxArgs bbargs,
            double padding_scale)
        {
            if (padding_scale < 0.0)
            {
                throw new System.ArgumentOutOfRangeException("padding_scale");
            }

            if (padding_scale > 1.0)
            {
                throw new System.ArgumentOutOfRangeException("padding_scale");
            }

            var app = window.Application;
            var active_window = app.ActiveWindow;
            var sel = active_window.Selection;
            var sel_bb = sel.GetBoundingBox(bbargs);

            var delta = sel_bb.Size*padding_scale;
            var view_rect = new VA.Drawing.Rectangle(sel_bb.Left - delta.Width, sel_bb.Bottom - delta.Height,
                                                          sel_bb.Right + delta.Height, sel_bb.Top + delta.Height);
            window.SetViewRect(view_rect);
        }
Пример #49
0
        public void DOM_DrawAndDrop()
        {
            var doc = this.GetNewDoc();
            var page_node = new VA.DOM.Page();

            var rect0 = new VA.Drawing.Rectangle(3, 4, 7, 8);
            var rect1 = new VA.Drawing.Rectangle(8, 1, 9, 5);
            var dropped_shape0 = page_node.Shapes.Drop("Rectangle", "basic_u.vss", rect0);
            var drawn_shape0 = page_node.Shapes.DrawRectangle(rect0);

            var dropped_shape1 = page_node.Shapes.Drop("Rectangle", "basic_u.vss", rect1);
            var drawn_shape1 = page_node.Shapes.DrawRectangle(rect1);

            var page = page_node.Render(doc);

            var xfrms = VA.Shapes.XFormCells.GetCells(page,
                                                        new int[] { dropped_shape0.VisioShapeID,
                                                            drawn_shape0.VisioShapeID,
                                                            dropped_shape1.VisioShapeID,
                                                            drawn_shape1.VisioShapeID });

            Assert.AreEqual(xfrms[1].PinX, xfrms[0].PinX);
            Assert.AreEqual(xfrms[1].PinY, xfrms[0].PinY);

            Assert.AreEqual(xfrms[1].Width, xfrms[0].Width);
            Assert.AreEqual(xfrms[1].Height, xfrms[0].Height);

            Assert.AreEqual(xfrms[3].PinX,   xfrms[2].PinX);
            Assert.AreEqual(xfrms[3].PinY,   xfrms[2].PinY);
            Assert.AreEqual(xfrms[3].Width,  xfrms[2].Width);
            Assert.AreEqual(xfrms[3].Height, xfrms[2].Height);

            doc.Close(true);
        }
Пример #50
0
 public AreaChart(VA.Drawing.Rectangle rect)
 {
     this.Rectangle = rect;
     this.DataPoints = new DataPointList();
 }
Пример #51
0
        public IVisio.Shape RenderDoughnut(IVisio.Page page)
        {
            double total_angle = this.Angle;

            if (total_angle == 0.0)
            {
                var p1 = this.GetPointAtRadius(this.Center, this.SectorStartAngle, this.InnerRadius);
                var p2 = this.GetPointAtRadius(this.Center, this.SectorStartAngle, this.Radius);
                var shape = page.DrawLine(p1, p2);
                return shape;
            }
            else if (total_angle >= System.Math.PI)
            {
                var outer_radius_point = new VA.Drawing.Point(this.Radius, this.Radius);
                var C = this.Center - outer_radius_point;
                var D = this.Center + outer_radius_point;
                var outer_rect = new VA.Drawing.Rectangle(C, D);

                var inner_radius_point = new VA.Drawing.Point(this.InnerRadius, this.InnerRadius);
                var A = this.Center - inner_radius_point - C;
                var B = this.Center + inner_radius_point - C;
                var inner_rect = new VA.Drawing.Rectangle(A, B);

                var shape = page.DrawOval(outer_rect);
                shape.DrawOval(inner_rect.Left, inner_rect.Bottom, inner_rect.Right, inner_rect.Top);

                return shape;
            }
            else
            {
                int degree;
                var thickarc = this.GetShapeBezierForDoughnut(out degree);

                // Render the bezier
                var doubles_array = VA.Drawing.Point.ToDoubles(thickarc).ToArray();
                var pie_slice = page.DrawBezier(doubles_array, (short)degree, 0);
                return pie_slice;
            }
        }