public void Scripting_Draw_Grid()
        {
            var origin = new VisioAutomation.Drawing.Point(0, 4);
            var pagesize = new VisioAutomation.Drawing.Size(4, 4);
            var cellsize = new VisioAutomation.Drawing.Size(0.5, 0.25);
            int cols = 3;
            int rows = 6;

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

            // Find the stencil and master
            var stencildoc = client.Document.OpenStencil("basic_u.vss");
            var master = client.Master.Get("Rectangle", stencildoc);

            // Draw the grid
            var page = client.Page.Get();
            var grid = new VisioAutomation.Models.Grid.GridLayout(cols, rows, cellsize, master);
            grid.Origin = origin;
            grid.Render(page);

            // Verify
            int total_shapes_expected = cols*rows;
            var shapes = page.Shapes.AsEnumerable().ToList();
            int total_shapes_actual = shapes.Count;
            Assert.AreEqual(total_shapes_expected,total_shapes_actual);

            // Cleanup
            client.Document.Close(true);
        }
        public static BezierSegment[] FromArc(double startangle, double endangle)
        {
            if (endangle < startangle)
            {
                throw new System.ArgumentOutOfRangeException("endangle", "endangle must be >= startangle");
            }

            double min_angle = 0;
            double max_angle = System.Math.PI * 2;
            double  total_angle = endangle - startangle;

            if (total_angle == min_angle)
            {
                var arr = new BezierSegment[1];
                double cos_theta = System.Math.Cos(startangle);
                double sin_theta = System.Math.Sin(startangle);
                var p0 = new VA.Drawing.Point(cos_theta, -sin_theta);
                var p1 = RotateAroundOrigin( p0, startangle);
                arr[0] = new BezierSegment(p1,p1,p1,p1);
            }

            if (total_angle > max_angle)
            {
                endangle = startangle + max_angle;
            }

            var bez_arr = subdivide_arc_nicely(startangle, endangle)
                .Select(a => get_bezier_points_for_small_arc(a.begin, a.end))
                .ToArray();

            return bez_arr;
        }
        public void Page_Draw_PieSlices()
        {
            var app = this.GetVisioApplication();
            var doc = this.GetNewDoc();
            var page = app.ActivePage;

            int n = 36;
            double start_angle = 0.0;
            double radius = 1.0;
            double cx = 0.0;
            double cy = 2.0;
            double angle_step = System.Math.PI * 2.0 / (n - 1);

            foreach (double end_angle in Enumerable.Range(0, n).Select(i => i * angle_step))
            {
                var center = new VA.Drawing.Point(cx, cy);
                var ps = new VA.Models.Charting.PieSlice(center, radius, start_angle, end_angle);
                ps.Render(page);
                cx += 2.5;
            }

            var bordersize = new VA.Drawing.Size(1, 1);
            page.ResizeToFitContents(bordersize);

            doc.Close(true);
        }
        public static BezierCurve FromEllipse(VA.Drawing.Point center, VA.Drawing.Size radius)
        {
            var pt1 = new VA.Drawing.Point(0, radius.Height); // top
            var pt2 = new VA.Drawing.Point(radius.Width, 0); // right
            var pt3 = new VA.Drawing.Point(0, -radius.Height); // bottom
            var pt4 = new VA.Drawing.Point(-radius.Width, 0); // left

            double dx = radius.Width * 4.0 * (System.Math.Sqrt(2) - 1) / 3;
            double dy = radius.Height * 4.0 * (System.Math.Sqrt(2) - 1) / 3;

            var curve_ControlPoints = new []
                                      {
                                          pt1,
                                          pt1.Add(dx, 0),
                                          pt2.Add(0, dy),
                                          pt2,
                                          pt2.Add(0, -dy),
                                          pt3.Add(dx, 0),
                                          pt3,
                                          pt3.Add(-dx, 0),
                                          pt4.Add(0, -dy),
                                          pt4,
                                          pt4.Add(0, dy),
                                          pt1.Add(-dx, 0),
                                          pt1
                                      }
                .Select(p => p + center).ToArray();
            var curve_Degree = 3;

            var curve = new BezierCurve(curve_ControlPoints, curve_Degree);
            return curve;
        }
        public void Radial_DrawPieSlices()
        {
            var doc = this.GetNewDoc();
            var app = doc.Application;
            var page = app.ActivePage;

            var center = new VA.Drawing.Point(4, 5);
            double radius = 1.0;
            var values = new[] {1.0, 2.0};
            var slices = VisioAutomation.Models.Charting.PieSlice.GetSlicesFromValues(center, radius, values);

            var shapes = new IVisio.Shape[values.Length];
            for (int i=0 ;i<values.Length;i++)
            {
                var slice = slices[i];
                var shape = slice.Render(page);
                shapes[i] = shape;
                shape.Text = values[i].ToString(CultureInfo.InvariantCulture);
            }

            var shapeids = shapes.Select(s => s.ID).ToList();
            var xfrms = VisioAutomation.Shapes.XFormCells.GetCells(page, shapeids);

            Assert.AreEqual("4.25 in", xfrms[0].PinX.Formula);
            Assert.AreEqual("5.5 in", xfrms[0].PinY.Formula);
            Assert.AreEqual("4 in", xfrms[1].PinX.Formula);
            Assert.AreEqual("4.9330127018922 in", xfrms[1].PinY.Formula);

            doc.Close(true);
        }
 public static VA.Drawing.Point GetPointAtRadius(VA.Drawing.Point origin, double angle, double radius)
 {
     var new_point = new VA.Drawing.Point(radius*System.Math.Cos(angle),
                                  radius*System.Math.Sin(angle));
     new_point = origin + new_point;
     return new_point;
 }
        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 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);
        }
        public static void NURBS1()
        {
            // Draw a simple NURBS
            // Example from this page:http://www.robthebloke.org/opengl_programming.html

            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();

            var points = new[]
                             {
                                 new VA.Drawing.Point(10, 10),
                                 new VA.Drawing.Point(5, 10),
                                 new VA.Drawing.Point(-5, 5),
                                 new VA.Drawing.Point(-10, 5),
                                 new VA.Drawing.Point(-4, 10),
                                 new VA.Drawing.Point(-4, 5),
                                 new VA.Drawing.Point(-8, 1)
                             };

            var origin = new VA.Drawing.Point(4, 4);
            var scale = new VA.Drawing.Size(1.0/4.0, 1.0/4.0);

            var controlpoints = points.Select(x => (x*scale) + origin).ToList();
            var knots = new double[] {0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4};
            var degree = 3;
            var weights = controlpoints.Select(i => 1.0).ToList();

            var s0 = page.DrawNURBS(controlpoints, knots, weights, degree);
            s0.Text = "Generic NURBS shape";
        }
        public static void ConnectorsToBack()
        {
            var doc = SampleEnvironment.Application.ActiveDocument;
            var pages = doc.Pages;
            var page = pages.Add();

            // get the data and the labels to use
            var data = new double[] {1, 2, 3, 4, 5, 6};

            var radius = 3.0;
            var center = new VA.Drawing.Point(4, 4);
            var slices = VA.Models.Charting.PieSlice.GetSlicesFromValues(center, radius, data);
            foreach (var slice in slices)
            {
                slice.Render(page);
            }

            // based on this example: http://www.visguy.com/2009/06/17/send-all-connectors-to-back/

            var stencil = SampleEnvironment.Application.Documents.OpenStencil("basic_u.vss");
            var master = stencil.Masters["Dynamic Connector"];
            var connector = page.Drop(master, 0, 0);
            var r1 = page.DrawRectangle(0, 1, 2, 2);
            var r2 = page.DrawRectangle(7, 7, 8, 8);

            ConnectorHelper.ConnectShapes(connector, r1, r2);

            var con_layer = page.Layers["Connector"];

            var sel = page.CreateSelection(
                IVisio.VisSelectionTypes.visSelTypeByLayer,
                IVisio.VisSelectMode.visSelModeSkipSub,
                con_layer);
            sel.SendToBack();
        }
 protected override void ProcessRecord()
 {
     var center = new VisioAutomation.Drawing.Point(this.X0, this.Y0);
     var chart = new VisioAutomation.Models.Charting.PieChart(center,this.Radius);
     chart.InnerRadius = this.InnerRadius;
     chart.DataPoints = new VisioAutomation.Models.Charting.DataPointList(this.Values, this.Labels);
     this.WriteObject(chart);
 }
 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;
 }
 public void Page_Draw_Line()
 {
     var page1 = this.GetNewPage();
     var p0 = new VA.Drawing.Point(0, 0);
     var p1 = new VA.Drawing.Point(3, 2);
     var s0 = page1.DrawLine(p0, p1);
     page1.Delete(0);
 }
        public static void DistributeWithSpacing(IVisio.Page page, IList<int> shapeids, VA.Drawing.Axis axis, double spacing)
        {
            if (page == null)
            {
                throw new System.ArgumentNullException("page");
            }

            if (shapeids == null)
            {
                throw new System.ArgumentNullException("shapeids");
            }

            if (spacing < 0.0)
            {
                throw new System.ArgumentOutOfRangeException("spacing");
            }

            if (shapeids.Count < 2)
            {
                return;
            }

            // Calculate the new Xfrms
            var sortpos = axis == VA.Drawing.Axis.XAxis
                ? PositionOnShape.PinX
                : PositionOnShape.PinY;

            var delta = axis == VA.Drawing.Axis.XAxis
                ? new VA.Drawing.Size(spacing, 0)
                : new VA.Drawing.Size(0, spacing);

            var sorted_shape_ids = ArrangeHelper.SortShapesByPosition(page, shapeids, sortpos);
            var input_xfrms = ArrangeHelper.GetXForm(page, sorted_shape_ids); ;
            var output_xfrms = new List<VA.Shapes.XFormCells>(input_xfrms.Count);
            var bb = GetBoundingBox(input_xfrms);
            var cur_pos = new VA.Drawing.Point(bb.Left, bb.Bottom);

            foreach (var input_xfrm in input_xfrms)
            {
                var new_pinpos = axis == VA.Drawing.Axis.XAxis
                    ? new VA.Drawing.Point(cur_pos.X + input_xfrm.LocPinX.Result, input_xfrm.PinY.Result)
                    : new VA.Drawing.Point(input_xfrm.PinX.Result, cur_pos.Y + input_xfrm.LocPinY.Result);

                var output_xfrm = new VA.Shapes.XFormCells();
                output_xfrm.PinX = new_pinpos.X;
                output_xfrm.PinY = new_pinpos.Y;
                output_xfrms.Add(output_xfrm);

                cur_pos = cur_pos.Add(input_xfrm.Width.Result, input_xfrm.Height.Result).Add(delta);
            }

            // Apply the changes
            update_xfrms(page,sorted_shape_ids,output_xfrms);
        }
Beispiel #15
0
        private static IVisio.Shape draw_leaf(IVisio.Page page, VA.Drawing.Point p0)
        {
            var p1            = p0.Add(1, 1);
            var p2            = p1.Add(1, 0);
            var p3            = p2.Add(1, -1);
            var p4            = p3.Add(-1, -1);
            var p5            = p4.Add(-1, 0);
            var p6            = p5.Add(-1, 1);
            var bezier_points = new[] { p0, p1, p2, p3, p4, p5, p6 };

            var s = page.DrawBezier(bezier_points);

            return(s);
        }
        public static void GradientTransparencies()
        {
            int num_cols = 1;
            int num_rows = 10;
            var color1 = new VA.Drawing.ColorRGB(0xff000);
            var color2 = new VA.Drawing.ColorRGB(0x000ff);

            var page_size = new VA.Drawing.Size(num_rows/2.0, num_rows);
            var upperleft = new VA.Drawing.Point(0, page_size.Height);

            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();
            var app = page.Application;
            var docs = app.Documents;
            var stencil = docs.OpenStencil("basic_U.vss");
            var master = stencil.Masters["Rectangle"];

            SampleEnvironment.SetPageSize(page,page_size);

            var layout = new GRIDMODEL.GridLayout(num_cols, num_rows, new VA.Drawing.Size(6.0, 1.0), master);
            layout.RowDirection = GRIDMODEL.RowDirection.TopToBottom;
            layout.Origin = upperleft;
            layout.CellSpacing = new VA.Drawing.Size(0.1, 0.1);
            layout.PerformLayout();

            double[] trans = RangeSteps(0.0, 1.0, num_rows).ToArray();

            int i = 0;
            foreach (var node in layout.Nodes)
            {
                double transparency = trans[i];

                var fmt = new VA.DOM.ShapeCells();
                node.Cells = fmt;

                fmt.FillPattern = 25; // Linear pattern left to right
                fmt.FillForegnd = color1.ToFormula();
                fmt.FillBkgnd = color2.ToFormula();
                fmt.FillForegndTrans = 0;
                fmt.FillBkgndTrans = transparency;
                fmt.LinePattern = 0;

                node.Text = string.Format("bg trans = {0}%", transparency);
                i++;
            }

            layout.Render(page);

            page.ResizeToFitContents();
        }
        public static void Spirograph()
        {
            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();
            page.Name = "Spirograph";

            var colors = new[]
                    {
                        0xf26420, 0xf7931c, 0xfec20d, 0xfff200, 
                        0xcada28, 0x8cc63e, 0x6c9d30, 0x288f39,
                        0x006f3a, 0x006f71, 0x008eb0, 0x00adee, 
                        0x008ed3, 0x0071bb, 0x0053a6, 0x2e3091, 
                        0x5b57a6, 0x652d91, 0x92278e, 0xbd198c, 
                        0xec008b, 0xec1c23, 0xc1272c, 0x981a1e
                    };

            var origin = new VA.Drawing.Point(4, 4);
            double radius = 3.0;
            int numpoints = colors.Length;
            double angle_step = (System.Math.PI*2/numpoints);
            var angles = Enumerable.Range(0, numpoints).Select(i => i*angle_step).ToList();
            var centers = angles.Select(a => PlaygroundSamples.GetPointAtRadius(origin, a, radius)).ToList();
            var shapes = centers.Select(p => PlaygroundSamples.draw_leaf(page, p)).ToList();
            var angles_as_formulas = angles.Select(a => a.ToString(CultureInfo.InvariantCulture)).ToList();

            var color_formulas = colors.Select(x => new VA.Drawing.ColorRGB(x).ToFormula()).ToList();

            var shapeids = shapes.Select(s => s.ID16).ToList();

            var update = new VA.ShapeSheet.Update();
            var format = new VA.Shapes.FormatCells();
            var xfrm = new VA.Shapes.XFormCells();

            foreach (int i in Enumerable.Range(0, shapeids.Count))
            {
                short shapeid = shapeids[i];

                xfrm.Angle = angles_as_formulas[i];
                format.FillForegnd = color_formulas[i];
                format.LineWeight = 0;
                format.LinePattern = 0;
                format.FillForegndTrans = 0.5;

                update.SetFormulas(shapeid, xfrm);
                update.SetFormulas(shapeid, format);
            }

            update.Execute(page);
            VA.Pages.PageHelper.ResizeToFitContents(page, new VA.Drawing.Size(1.0, 1.0));
        }
Beispiel #18
0
        public void Scripting_Draw_PieSlice()
        {
            var client = GetScriptingClient();

            client.Document.New();
            client.Page.New(new VA.Drawing.Size(4, 4), false);

            var    center      = new VA.Drawing.Point(2, 2);
            double radius      = 1.0;
            double start_angle = 0;
            double end_angle   = System.Math.PI;

            var shape = client.Draw.PieSlice(center, radius, start_angle, end_angle);

            client.Document.Close(true);
        }
Beispiel #19
0
        public IVisio.Shape PieSlice(VisioAutomation.Drawing.Point center,
                                     double radius,
                                     double start_angle,
                                     double end_angle)
        {
            this._client.Application.AssertApplicationAvailable();
            this._client.Document.AssertDocumentAvailable();

            var application = this._client.Application.Get();

            using (var undoscope = this._client.Application.NewUndoScope("Draw Pie Slice"))
            {
                var active_page = application.ActivePage;
                var slice       = new VisioAutomation.Models.Charting.PieSlice(center, radius, start_angle, end_angle);
                var shape       = slice.Render(active_page);
                return(shape);
            }
        }
Beispiel #20
0
        public void Scripting_Draw_PieChart()
        {
            var client = GetScriptingClient();

            client.Document.New();
            client.Page.New(new VA.Drawing.Size(4, 4), false);

            var    center = new VA.Drawing.Point(2, 2);
            double radius = 1.0;
            var    chart  = new VA.Models.Charting.PieChart(center, radius);

            chart.DataPoints.Add(new VA.Models.Charting.DataPoint(1.0));
            chart.DataPoints.Add(new VA.Models.Charting.DataPoint(2.0));
            chart.DataPoints.Add(new VA.Models.Charting.DataPoint(3.0));
            chart.DataPoints.Add(new VA.Models.Charting.DataPoint(4.0));
            client.Draw.PieChart(chart);
            client.Document.Close(true);
        }
Beispiel #21
0
        public Rectangle(VA.Drawing.Point lowerleft, Drawing.Point upperright)
            : this()
        {
            if (upperright.X < lowerleft.X)
            {
                throw new System.ArgumentException("left must be <=right");
            }

            if (upperright.Y < lowerleft.Y)
            {
                throw new System.ArgumentException("bottom must be <= top");
            }

            Left   = lowerleft.X;
            Bottom = lowerleft.Y;
            Right  = upperright.X;
            Top    = upperright.Y;
        }
Beispiel #22
0
        public Rectangle(VA.Drawing.Point lowerleft, VA.Drawing.Size s)
            : this()
        {
            if (s.Width < 0)
            {
                throw new System.ArgumentOutOfRangeException("s", "width must be non-negative");
            }

            if (s.Height < 0)
            {
                throw new System.ArgumentOutOfRangeException("s", "height must be non-negative");
            }

            Left   = lowerleft.X;
            Bottom = lowerleft.Y;
            Right  = lowerleft.X + s.Width;
            Top    = lowerleft.Y + s.Height;
        }
Beispiel #23
0
        public BezierSegment(IList <VA.Drawing.Point> points)
            : this()
        {
            if (points == null)
            {
                throw new System.ArgumentNullException("points");
            }

            if (points.Count != 4)
            {
                throw new System.ArgumentException("Must have exactly 4 points");
            }

            this.Start   = points[0];
            this.Handle1 = points[1];
            this.Handle2 = points[2];
            this.End     = points[3];
        }
Beispiel #24
0
        public void Scripting_Shape_Text_Set()
        {
            var page1   = this.GetNewPage();
            var stencil = "basic_u.vss";

            short flags       = (short)IVisio.VisOpenSaveArgs.visOpenRO | (short)IVisio.VisOpenSaveArgs.visOpenDocked;
            var   app         = page1.Application;
            var   documents   = app.Documents;
            var   stencil_doc = documents.OpenEx(stencil, flags);

            var masters1 = stencil_doc.Masters;
            var masters  = new[] { masters1["Rounded Rectangle"], masters1["Ellipse"] };
            var point0   = new VA.Drawing.Point(1, 2);
            var point1   = new VA.Drawing.Point(3, 4);
            var points   = new[] { point0, point1 };

            Assert.AreEqual(0, page1.Shapes.Count);

            var shapeids = page1.DropManyU(masters, points);

            Assert.AreEqual(2, page1.Shapes.Count);
            Assert.AreEqual(2, shapeids.Length);

            var shapes = page1.Shapes.GetShapesFromIDs(shapeids);
            var client = this.GetScriptingClient();
            var names  = new[] { "TestName", "TestName2" };
            var texts  = names.ToArray();

            var targets = new VA.Scripting.TargetShapes(shapes);

            client.Text.Set(targets, texts);
            client.ShapeSheet.SetName(targets, names);

            for (int i = 0; i < page1.Shapes.Count; i++)
            {
                var shape = shapes[i];
                var name  = names[i];
                var text  = texts[i];
                Assert.AreEqual(name, shape.Name);
                Assert.AreEqual(text, shape.Text);
            }

            page1.Delete(0);
        }
Beispiel #25
0
        public static void SnapCorner(IVisio.Page page, TargetShapeIDs target, Drawing.Size snapsize, SnapCornerPosition corner)
        {
            // First caculate the new transforms
            var snap_grid    = new SnappingGrid(snapsize);
            var input_xfrms  = ShapeXFormData.Get(page, target);
            var output_xfrms = new List <VisioAutomation.Drawing.Point>(input_xfrms.Count);

            foreach (var input_xfrm in input_xfrms)
            {
                var old_rect         = input_xfrm.GetRectangle();
                var old_lower_left   = old_rect.LowerLeft;
                var new_lower_left   = snap_grid.Snap(old_lower_left);
                var new_pin_position = ArrangeHelper.GetPinPositionForCorner(input_xfrm, new_lower_left, corner);
                var output_xfrm      = new VisioAutomation.Drawing.Point(new_pin_position.X, new_pin_position.Y);
                output_xfrms.Add(output_xfrm);
            }

            ModifyPinPositions(page, target.ShapeIDs, output_xfrms);
        }
Beispiel #26
0
        public IVisio.Shape DoughnutSlice(VA.Drawing.Point center,
                                          double inner_radius,
                                          double outer_radius,
                                          double start_angle,
                                          double end_angle)
        {
            this.AssertApplicationAvailable();
            this.AssertDocumentAvailable();

            var application = this.Client.VisioApplication;

            using (var undoscope = new VA.Application.UndoScope(this.Client.VisioApplication, "Draw Pie Slice"))
            {
                var active_page = application.ActivePage;
                var slice       = new VA.Models.Charting.PieSlice(center, inner_radius, outer_radius, start_angle, end_angle);
                var shape       = slice.Render(active_page);
                return(shape);
            }
        }
Beispiel #27
0
 public IVisio.Shape DrawQuarterArc(VA.Drawing.Point p0, VA.Drawing.Point p1, IVisio.VisArcSweepFlags flags)
 {
     if (this.Master != null)
     {
         return(this.Master.DrawQuarterArc(p0.X, p0.Y, p1.X, p1.Y, flags));
     }
     else if (this.Page != null)
     {
         return(this.Page.DrawQuarterArc(p0.X, p0.Y, p1.X, p1.Y, flags));
     }
     else if (this.Shape != null)
     {
         return(this.Shape.DrawQuarterArc(p0.X, p0.Y, p1.X, p1.Y, flags));
     }
     else
     {
         throw new System.ArgumentException("Unhandled Drawing Surface");
     }
 }
Beispiel #28
0
        public static void DistributeWithSpacing(IVisio.Page page, VisioScripting.Models.TargetShapeIDs target, VisioScripting.Models.Axis axis, double spacing)
        {
            if (spacing < 0.0)
            {
                throw new System.ArgumentOutOfRangeException(nameof(spacing));
            }

            if (target.ShapeIDs.Count < 2)
            {
                return;
            }

            // Calculate the new Xfrms
            var sortpos = axis == VisioScripting.Models.Axis.XAxis
                ? VisioScripting.Models.ShapeRelativePosition.PinX
                : VisioScripting.Models.ShapeRelativePosition.PinY;

            var delta = axis == VisioScripting.Models.Axis.XAxis
                ? new VisioAutomation.Drawing.Size(spacing, 0)
                : new VisioAutomation.Drawing.Size(0, spacing);


            var input_xfrms = VisioScripting.Models.ShapeXFormData.Get(page, target);
            var bb          = VisioScripting.Models.ShapeXFormData.GetBoundingBox(input_xfrms);
            var cur_pos     = new VisioAutomation.Drawing.Point(bb.Left, bb.Bottom);

            var newpositions = new List <VisioAutomation.Drawing.Point>(target.ShapeIDs.Count);

            foreach (var input_xfrm in input_xfrms)
            {
                var new_pinpos = axis == VisioScripting.Models.Axis.XAxis
                    ? new VisioAutomation.Drawing.Point(cur_pos.X + input_xfrm.LocPinX, input_xfrm.PinY)
                    : new VisioAutomation.Drawing.Point(input_xfrm.PinX, cur_pos.Y + input_xfrm.LocPinY);

                newpositions.Add(new_pinpos);
                cur_pos = cur_pos.Add(input_xfrm.Width, input_xfrm.Height).Add(delta);
            }

            // Apply the changes
            var sorted_shape_ids = ArrangeHelper.SortShapesByPosition(page, target, sortpos);

            ModifyPinPositions(page, sorted_shape_ids, newpositions);
        }
Beispiel #29
0
        public static void DrawGridOfMasters()
        {
            // http://blogs.msdn.com/saveenr/archive/2008/08/06/visioautoext-simplifying-dropmany-to-quickly-draw-a-grid.aspx

            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();

            // Resize the page to a sqaure
            var page_size = new VA.Drawing.Size(4, 4);

            SampleEnvironment.SetPageSize(page, page_size);

            // Load the Stencil
            var application     = page.Application;
            var documents       = application.Documents;
            var stencil         = documents.OpenStencil("basic_u.vss");
            var stencil_masters = stencil.Masters;
            var master          = stencil_masters["Rectangle"];

            // Calculate where to drop the masters
            int num_cols = 10;
            int num_rows = 10;

            var centerpoints = new List <VA.Drawing.Point>(num_rows * num_cols);

            foreach (var row in Enumerable.Range(0, num_rows))
            {
                foreach (var col in Enumerable.Range(0, num_cols))
                {
                    var p = new VA.Drawing.Point(row * 1.0, col * 1.0);
                    centerpoints.Add(p);
                }
            }

            var masters = new[] { master };

            // Draw the masters
            var shapeids = page.DropManyU(masters, centerpoints);

            var bordersize = new VA.Drawing.Size(1, 1);

            page.ResizeToFitContents(bordersize);
        }
Beispiel #30
0
        public static List <PieSlice> GetSlicesFromValues(VA.Drawing.Point center, double radius, IList <double> values)
        {
            double sectors_sum = values.Sum();
            var    slices      = new List <PieSlice>(values.Count);
            double start_angle = 0;

            foreach (int i in Enumerable.Range(0, values.Count))
            {
                double cur_val      = values[i];
                double cur_val_norm = cur_val / sectors_sum;
                double cur_angle    = cur_val_norm * System.Math.PI * 2.0;
                double end_angle    = start_angle + cur_angle;

                var ps = new VA.Models.Charting.PieSlice(center, radius, start_angle, end_angle);
                slices.Add(ps);

                start_angle += cur_angle;
            }
            return(slices);
        }
Beispiel #31
0
        public VA.Drawing.Point[] GetConnectionBezier(ParentChildConnection <Node <T> > connection)
        {
            var lineseg = this.GetConnectionLine(connection);

            VA.Drawing.Point parent_attach_point = lineseg.Start;
            VA.Drawing.Point child_attach_point  = lineseg.End;

            double scale = this.Options.LevelSeparation / 2.0;
            var    dif   = child_attach_point.Subtract(parent_attach_point).Multiply(scale);


            var handle_displacement = IsVertical(this.Options.Direction)
                                          ? new VA.Drawing.Point(0, dif.Y)
                                          : new VA.Drawing.Point(dif.X, 0);

            VA.Drawing.Point h1 = parent_attach_point.Add(handle_displacement);
            VA.Drawing.Point h2 = child_attach_point.Add(handle_displacement * (-1));

            return(new[] { parent_attach_point, h1, h2, child_attach_point });
        }
Beispiel #32
0
        public void Scripting_Draw_PieSlice()
        {
            var    pagesize    = new VA.Drawing.Size(4, 4);
            var    center      = new VA.Drawing.Point(2, 2);
            double radius      = 1.0;
            double start_angle = 0;
            double end_angle   = Math.PI;

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

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

            // Draw the Shape
            var shape = client.Draw.PieSlice(center, radius, start_angle, end_angle);

            // Cleanup
            client.Document.Close(true);
        }
Beispiel #33
0
        public PieSlice(VA.Drawing.Point center, double start, double end, double inner_radius, double radius) :
            this(center, start, end)
        {
            if (inner_radius < 0.0)
            {
                throw new System.ArgumentException("inner_radius", "must be non-negative");
            }

            if (radius < 0.0)
            {
                throw new System.ArgumentException("outer_radius", "must be non-negative");
            }

            if (inner_radius > radius)
            {
                throw new System.ArgumentException("inner_radius", "must be less than or equal to outer_radius");
            }

            this.InnerRadius = inner_radius;
            this.Radius      = radius;
        }
        public void Scripting_Shape_Text_Set()
        {
            var page1 = this.GetNewPage();
            var stencil = "basic_u.vss";

            short flags = (short)IVisio.VisOpenSaveArgs.visOpenRO | (short)IVisio.VisOpenSaveArgs.visOpenDocked;
            var app = page1.Application;
            var documents = app.Documents;
            var stencil_doc = documents.OpenEx(stencil, flags);

            var masters1 = stencil_doc.Masters;
            var masters = new[] { masters1["Rounded Rectangle"], masters1["Ellipse"] };
            var point0 = new VA.Drawing.Point(1, 2);
            var point1 = new VA.Drawing.Point(3, 4);
            var points = new[] { point0, point1 };
            Assert.AreEqual(0, page1.Shapes.Count);

            var shapeids = page1.DropManyU(masters, points);
            Assert.AreEqual(2, page1.Shapes.Count);
            Assert.AreEqual(2, shapeids.Length);

            var shapes = page1.Shapes.GetShapesFromIDs(shapeids);
            var client = this.GetScriptingClient();
            var names = new[] { "TestName", "TestName2" };
            var texts = names.ToArray();

            client.Text.Set(shapes, texts);
            client.ShapeSheet.SetName(shapes, names);

            for (int i = 0; i < page1.Shapes.Count; i++)
            {
                var shape = shapes[i];
                var name = names[i];
                var text = texts[i];
                Assert.AreEqual(name, shape.Name);
                Assert.AreEqual(text, shape.Text);
            }

            page1.Delete(0);
        }
Beispiel #35
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);
            }
        }
Beispiel #36
0
 public IVisio.Shape DrawLine(VA.Drawing.Point p1, VA.Drawing.Point p2)
 {
     if (this.Master != null)
     {
         var shape = this.Master.DrawLine(p1.X, p1.Y, p2.X, p2.Y);
         return(shape);
     }
     else if (this.Page != null)
     {
         var shape = this.Page.DrawLine(p1.X, p1.Y, p2.X, p2.Y);
         return(shape);
     }
     else if (this.Shape != null)
     {
         var shape = this.Shape.DrawLine(p1.X, p1.Y, p2.X, p2.Y);
         return(shape);
     }
     else
     {
         throw new System.ArgumentException("Unhandled Drawing Surface");
     }
 }
Beispiel #37
0
        public void Add(VA.Drawing.Point p)
        {
            if (this.initialized)
            {
                if (p.X < this.min_x)
                {
                    this.min_x = p.X;
                }
                else if (p.X > this.max_x)
                {
                    this.max_x = p.X;
                }
                else
                {
                    // do nothing
                }

                if (p.Y < this.min_y)
                {
                    this.min_y = p.Y;
                }
                else if (p.Y > this.max_y)
                {
                    this.max_y = p.Y;
                }
                else
                {
                    // do nothing
                }
            }
            else
            {
                this.min_x       = p.X;
                this.max_x       = p.X;
                this.min_y       = p.Y;
                this.max_y       = p.Y;
                this.initialized = true;
            }
        }
        public static void DrawGridOfMasters()
        {
            // http://blogs.msdn.com/saveenr/archive/2008/08/06/visioautoext-simplifying-dropmany-to-quickly-draw-a-grid.aspx

            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();

            // Resize the page to a sqaure
            var page_size = new VA.Drawing.Size(4, 4);
            SampleEnvironment.SetPageSize(page,page_size);

            // Load the Stencil
            var application = page.Application;
            var documents = application.Documents;
            var stencil = documents.OpenStencil("basic_u.vss");
            var stencil_masters = stencil.Masters;
            var master = stencil_masters["Rectangle"];

            // Calculate where to drop the masters
            int num_cols = 10;
            int num_rows = 10;

            var centerpoints = new List<VA.Drawing.Point>(num_rows*num_cols);
            foreach (var row in Enumerable.Range(0, num_rows))
            {
                foreach (var col in Enumerable.Range(0, num_cols))
                {
                    var p = new VA.Drawing.Point(row*1.0, col*1.0);
                    centerpoints.Add(p);
                }
            }

            var masters = new[] {master};

            // Draw the masters
            var shapeids = page.DropManyU(masters, centerpoints);

            var bordersize = new VA.Drawing.Size(1,1);
            page.ResizeToFitContents(bordersize);
        }
        public static void ConnectorsToBack()
        {
            var doc   = SampleEnvironment.Application.ActiveDocument;
            var pages = doc.Pages;
            var page  = pages.Add();

            // get the data and the labels to use
            var data = new double[] { 1, 2, 3, 4, 5, 6 };

            var radius = 3.0;
            var center = new VA.Drawing.Point(4, 4);
            var slices = VA.Models.Charting.PieSlice.GetSlicesFromValues(center, radius, data);

            foreach (var slice in slices)
            {
                slice.Render(page);
            }

            // based on this example: http://www.visguy.com/2009/06/17/send-all-connectors-to-back/

            var stencil   = SampleEnvironment.Application.Documents.OpenStencil("basic_u.vss");
            var master    = stencil.Masters["Dynamic Connector"];
            var connector = page.Drop(master, 0, 0);
            var r1        = page.DrawRectangle(0, 1, 2, 2);
            var r2        = page.DrawRectangle(7, 7, 8, 8);

            ConnectorHelper.ConnectShapes(connector, r1, r2);

            var con_layer = page.Layers["Connector"];

            var sel = page.CreateSelection(
                IVisio.VisSelectionTypes.visSelTypeByLayer,
                IVisio.VisSelectMode.visSelModeSkipSub,
                con_layer);

            sel.SendToBack();
        }
Beispiel #40
0
 public Oval(double x0, double y0, double x1, double y1)
 {
     this.P0 = new VA.Drawing.Point(x0, y0);
     this.P1 = new VA.Drawing.Point(x1, y1);
 }
 private static VA.Drawing.Rectangle GetRectangle(VA.Shapes.XFormCells xFormCells)
 {
     var pin = new VA.Drawing.Point(xFormCells.PinX.Result, xFormCells.PinY.Result);
     var locpin = new VA.Drawing.Point(xFormCells.LocPinX.Result, xFormCells.LocPinY.Result);
     var size = new VA.Drawing.Size(xFormCells.Width.Result, xFormCells.Height.Result);
     return new VA.Drawing.Rectangle(pin - locpin, size);
 }
 protected VA.Drawing.Point GetPointAtRadius(VA.Drawing.Point origin, double angle, double radius)
 {
     double x = radius * System.Math.Cos(angle);
     double y = radius * System.Math.Sin(angle);
     var new_point = new VA.Drawing.Point(x, y);
     new_point = origin + new_point;
     return new_point;
 }
        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;
            }
        }
        public static void NURBS2()
        {
            // Draw a simple NURBS
            // Example from Graham Wideman's book

            var page = SampleEnvironment.Application.ActiveDocument.Pages.Add();

            var points = new[]
                             {
                                 new VA.Drawing.Point(0.2500, 0.2500),
                                 new VA.Drawing.Point(0.2500, 0.7500),
                                 new VA.Drawing.Point(0.4063, 0.8125),
                                 new VA.Drawing.Point(0.5625, 0.3750),
                                 new VA.Drawing.Point(0.5538, 0.8125),
                                 new VA.Drawing.Point(0.7600, 0.7500),
                                 new VA.Drawing.Point(0.7600, 0.2500)
                             };

            var origin = new VA.Drawing.Point(4, 4);
            var scale = new VA.Drawing.Size(4, 4);

            var controlpoints = points.Select(x => (x*scale) + origin).ToList();
            var knots = new double[] {0, 0, 0, 0, 25, 50, 75, 100, 100, 100, 100};
            var degree = 3;
            var Weights = controlpoints.Select(i => 1.0).ToList();

            var s0 = page.DrawNURBS(controlpoints, knots, Weights, degree);
            s0.Text = "Generic NURBS shape";
        }
 public void MoveRight(double advance)
 {
     this.InsertionPoint = new VA.Drawing.Point(this.InsertionPoint.X + advance, this.InsertionPoint.Y);
 }
        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.Colors.ColorRGB(0xffdddd);
            var color2 = new VA.Colors.ColorRGB(0x00ffff);

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

            var writer = new FormulaWriterSIDSRC();

            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;
                format.SetFormulas(shapeid, writer);

                n++;
            }

            writer.Commit(page);

            var bordersize = new VA.Drawing.Size(1, 1);

            page.ResizeToFitContents(bordersize);
        }
 private void AdjustInsertionPoint(VA.Drawing.Size size)
 {
     this.InsertionPoint = this.InsertionPoint.Add(size.Width, 0);
     this.CurrentLineHeight = System.Math.Max(this.CurrentLineHeight, size.Height);
 }
        public void Scripting_Draw_PieSlice()
        {
            var pagesize = new VA.Drawing.Size(4, 4);
            var center = new VA.Drawing.Point(2, 2);
            double radius = 1.0;
            double start_angle = 0;
            double end_angle = Math.PI;

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

            // Draw the Shape
            var shape = client.Draw.PieSlice(center, radius, start_angle, end_angle);

            // Cleanup
            client.Document.Close(true);
        }
        public void Scripting_Draw_PieChart()
        {
            var pagesize = new VA.Drawing.Size(4, 4);
            var center = new VA.Drawing.Point(2, 2);
            double radius = 1.0;

            var chart = new VisioAutomation.Models.Charting.PieChart(center, radius);
            chart.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(1.0));
            chart.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(2.0));
            chart.DataPoints.Add(new VisioAutomation.Models.Charting.DataPoint(3.0));
            chart.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 chart

            client.Draw.PieChart(chart);

            // Cleanup
            client.Document.Close(true);
        }
Beispiel #50
0
 public Oval(VA.Drawing.Point p0, VA.Drawing.Point p1)
 {
     this.P0 = p0;
     this.P1 = p1;
 }
Beispiel #51
0
 public Oval(VA.Drawing.Rectangle r0)
 {
     this.P0 = r0.LowerLeft;
     this.P1 = r0.UpperRight;
 }
Beispiel #52
0
 public PieChart(VA.Drawing.Point center, double radius)
 {
     this.DataPoints = new DataPointList();
     this.Center     = center;
     this.Radius     = radius;
 }
Beispiel #53
0
        public static IVisio.Shape DrawLine(this IVisio.Page page, VA.Drawing.Point p1, VA.Drawing.Point p2)
        {
            var surface = new VA.Drawing.DrawingSurface(page);
            var shape   = surface.DrawLine(p1.X, p1.Y, p2.X, p2.Y);

            return(shape);
        }
 public void Linefeed(double advance)
 {
     this.InsertionPoint = new VA.Drawing.Point(this.FormPage.Margin.Left, this.InsertionPoint.Y - this.CurrentLineHeight - advance);
     this.CurrentLineHeight = 0;
 }
Beispiel #55
0
        public static IVisio.Shape DrawLine(this IVisio.Shape shape, VA.Drawing.Point p1, VA.Drawing.Point p2)
        {
            var surface = new VA.Drawing.DrawingSurface(shape);
            var s       = surface.DrawLine(p1, p2);

            return(s);
        }
 private void ResetInsertionPoint()
 {
     this.InsertionPoint = new VA.Drawing.Point(this.FormPage.Margin.Left,
         this.FormPage.Size.Height - this.FormPage.Margin.Top);
 }
Beispiel #57
0
        public static IVisio.Shape DrawQuarterArc(this IVisio.Shape shape, VA.Drawing.Point p0, VA.Drawing.Point p1, IVisio.VisArcSweepFlags flags)
        {
            var surface = new VA.Drawing.DrawingSurface(shape);
            var s       = surface.DrawQuarterArc(p0, p1, flags);

            return(s);
        }
        private static VA.Drawing.Point GetPinPositionForCorner( VA.Shapes.XFormCells input_xfrm, VA.Drawing.Point new_lower_left, VA.Arrange.SnapCornerPosition corner)
        {
            var size = new VA.Drawing.Size(input_xfrm.Width.Result, input_xfrm.Height.Result);
            var locpin = new VA.Drawing.Point(input_xfrm.LocPinX.Result, input_xfrm.LocPinY.Result);

            switch (corner)
            {
                case VA.Arrange.SnapCornerPosition.LowerLeft:
                {
                    return new_lower_left.Add(locpin.X, locpin.Y);
                }
                case VA.Arrange.SnapCornerPosition.UpperRight:
                {
                    return new_lower_left.Subtract(size.Width, size.Height).Add(locpin.X, locpin.Y);
                }
                case VA.Arrange.SnapCornerPosition.LowerRight:
                {
                    return new_lower_left.Subtract(size.Width, 0).Add(locpin.X, locpin.Y);
                }
                case VA.Arrange.SnapCornerPosition.UpperLeft:
                {
                    return new_lower_left.Subtract(0, size.Height).Add(locpin.X, locpin.Y);
                }
                default:
                {
                    throw new System.ArgumentOutOfRangeException("corner", "Unsupported corner");
                }
            }
        }
Beispiel #59
0
        private VA.Drawing.Point ToDocumentCoordinates(VA.Drawing.Point point)
        {
            var np = point.Add(-this._mg_bb.Left, -this._mg_bb.Bottom).Multiply(this.ScaleToDocument, this.ScaleToDocument);

            return(np);
        }
 public void CarriageReturn()
 {
     this.InsertionPoint = new VA.Drawing.Point(this.FormPage.Margin.Left, this.InsertionPoint.Y);
 }