Inheritance: Drawable
Exemplo n.º 1
0
 public void TestAxis()
 {
     Point c = new Point (10, 10);
     Ellipse e = new Ellipse (c, 3, 2);
     Assert.AreEqual (new Point (13, 10), e.Right);
     Assert.AreEqual (new Point (7, 10), e.Left);
     Assert.AreEqual (new Point (10, 12), e.Top);
     Assert.AreEqual (new Point (10, 8), e.Bottom);
 }
Exemplo n.º 2
0
        public void TestMove()
        {
            Point c = new Point (10, 10);
            Ellipse e = new Ellipse (c, 3, 2);

            /* Move axis */
            Point p = new Point (8, 9);
            e.Move (SelectionPosition.Left, p, null);
            Assert.AreEqual (10, e.Center.X);
            Assert.AreEqual (10, e.Center.Y);
            Assert.AreEqual (2, e.AxisX);
            Assert.AreEqual (2, e.AxisY);

            p = new Point (15, 5);
            e.Move (SelectionPosition.Left, p, null);
            Assert.AreEqual (10, e.Center.X);
            Assert.AreEqual (10, e.Center.Y);
            Assert.AreEqual (5, e.AxisX);
            Assert.AreEqual (2, e.AxisY);

            p = new Point (15, 5);
            e.Move (SelectionPosition.Bottom, p, null);
            Assert.AreEqual (10, e.Center.X);
            Assert.AreEqual (10, e.Center.Y);
            Assert.AreEqual (5, e.AxisX);
            Assert.AreEqual (5, e.AxisY);

            p = new Point (15, 12);
            e.Move (SelectionPosition.Top, p, null);
            Assert.AreEqual (10, e.Center.X);
            Assert.AreEqual (10, e.Center.Y);
            Assert.AreEqual (5, e.AxisX);
            Assert.AreEqual (2, e.AxisY);

            /* Move all */
            p = new Point (15, 12);
            e.Move (SelectionPosition.All, p, new Point (10, 10));
            Assert.AreEqual (15, e.Center.X);
            Assert.AreEqual (12, e.Center.Y);
            Assert.AreEqual (5, e.AxisX);
            Assert.AreEqual (2, e.AxisY);
        }
Exemplo n.º 3
0
 public void TestSerialization()
 {
     Point c = new Point (10, 10);
     Ellipse e = new Ellipse (c, 3, 2);
     Utils.CheckSerialization (e);
     Ellipse ne = Utils.SerializeDeserialize (e);
     Assert.AreEqual (ne.Center, e.Center);
     Assert.AreEqual (ne.AxisX, e.AxisX);
     Assert.AreEqual (ne.AxisY, e.AxisY);
 }
Exemplo n.º 4
0
        protected override void StartMove(Selection sel)
        {
            Drawable drawable = null;
            SelectionPosition pos = SelectionPosition.BottomRight;
            bool resize = true, copycolor = true, sele = true;

            if (Tool == DrawTool.Selection) {
                if (Selections.Count == 0 && currentZoom != 1) {
                    widget.SetCursorForTool (DrawTool.Move);
                    inZooming = true;
                }
                return;
            }

            if (sel != null) {
                ClearSelection ();
            }

            switch (Tool) {
            case DrawTool.Line:
                drawable = new Line (MoveStart, new Point (MoveStart.X + 1, MoveStart.Y + 1),
                    LineType, LineStyle);
                drawable.FillColor = Color;
                pos = SelectionPosition.LineStop;
                break;
            case DrawTool.Cross:
                drawable = new Cross (MoveStart, new Point (MoveStart.X + 1, MoveStart.Y + 1),
                    LineStyle);
                break;
            case DrawTool.Ellipse:
                drawable = new Ellipse (MoveStart, 2, 2);
                break;
            case DrawTool.Rectangle:
                drawable = new Rectangle (MoveStart, 2, 2);
                break;
            case DrawTool.CircleArea:
                drawable = new Ellipse (MoveStart, 2, 2);
                drawable.FillColor = Color.Copy ();
                drawable.FillColor.A = byte.MaxValue / 2;
                break;
            case DrawTool.RectangleArea:
                drawable = new Rectangle (MoveStart, 2, 2);
                drawable.FillColor = Color.Copy ();
                drawable.FillColor.A = byte.MaxValue / 2;
                break;
            case DrawTool.Counter:
                drawable = new Counter (MoveStart, 3 * LineWidth, 0);
                drawable.FillColor = Color.Copy ();
                (drawable as Counter).TextColor = Color.Grey2;
                resize = false;
                break;
            case DrawTool.Text:
            case DrawTool.Player:
                {
                    int width, heigth;
                    Text text = new Text (MoveStart, 1, 1, "");
                    if (ConfigureObjectEvent != null) {
                        ConfigureObjectEvent (text, Tool);
                    }
                    if (text.Value == null) {
                        return;
                    }
                    Config.DrawingToolkit.MeasureText (text.Value, out width, out heigth,
                        Config.Style.Font, FontSize, FontWeight.Normal);
                    text.Update (new Point (MoveStart.X - width / 2, MoveStart.Y - heigth / 2),
                        width, heigth);
                    text.TextColor = TextColor.Copy ();
                    text.FillColor = text.StrokeColor = TextBackgroundColor.Copy ();
                    text.TextSize = FontSize;
                    resize = copycolor = sele = false;
                    drawable = text;
                    break;
                }
            case DrawTool.Pen:
            case DrawTool.Eraser:
                handdrawing = true;
                break;
            case DrawTool.Zoom:
                {
                    double newZoom = currentZoom;

                    if (modifier == ButtonModifier.Shift) {
                        newZoom -= 0.1;
                    } else {
                        newZoom += 0.1;
                    }
                    newZoom = Math.Max (newZoom, MinZoom);
                    newZoom = Math.Min (newZoom, MaxZoom);
                    Zoom (newZoom, MoveStart);
                    break;
                }
            }

            if (drawable != null) {
                if (copycolor) {
                    drawable.StrokeColor = Color.Copy ();
                }
                drawable.LineWidth = LineWidth;
                drawable.Style = LineStyle;
                var selo = Add (drawable);
                drawing.Drawables.Add (drawable);
                if (Tool == DrawTool.Counter) {
                    UpdateCounters ();
                }
                if (sele) {
                    if (resize) {
                        UpdateSelection (new Selection (selo, pos, 5));
                    } else {
                        UpdateSelection (new Selection (selo, SelectionPosition.All, 5));
                    }
                    inObjectCreation = true;
                }
                widget.ReDraw ();
            }
        }