Пример #1
0
        /// <summary>
        /// The overview rectangle should only appear selected if the <see cref="T:Northwoods.Go.GoOverview" />
        /// supports resizing (i.e. <see cref="P:Northwoods.Go.GoView.AllowSelect" /> and <see cref="P:Northwoods.Go.GoView.AllowResize" /> are true),
        /// and even then the handles will not be seen since their <see cref="T:Northwoods.Go.GoHandle" />.<see cref="T:Northwoods.Go.GoHandleStyle" />
        /// is <see cref="F:Northwoods.Go.GoHandleStyle.None" />.
        /// </summary>
        /// <param name="sel"></param>
        /// <param name="selectedObj"></param>
        public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
        {
            GoView view = sel.View;

            if (view != null && view.CanSelectObjects() && view.CanResizeObjects())
            {
                view.ResizeHandleSize = new SizeF(4f / view.DocScale, 4f / view.DocScale);
                RemoveSelectionHandles(sel);
                RectangleF bounds   = Bounds;
                GoHandle   goHandle = sel.CreateResizeHandle(this, selectedObj, new PointF(bounds.Left, bounds.Top), 2, filled: true) as GoHandle;
                if (goHandle != null)
                {
                    goHandle.Style = GoHandleStyle.None;
                }
                goHandle = (sel.CreateResizeHandle(this, selectedObj, new PointF(bounds.Right, bounds.Top), 4, filled: true) as GoHandle);
                if (goHandle != null)
                {
                    goHandle.Style = GoHandleStyle.None;
                }
                goHandle = (sel.CreateResizeHandle(this, selectedObj, new PointF(bounds.Right, bounds.Bottom), 8, filled: true) as GoHandle);
                if (goHandle != null)
                {
                    goHandle.Style = GoHandleStyle.None;
                }
                goHandle = (sel.CreateResizeHandle(this, selectedObj, new PointF(bounds.Left, bounds.Bottom), 16, filled: true) as GoHandle);
                if (goHandle != null)
                {
                    goHandle.Style = GoHandleStyle.None;
                }
            }
        }
Пример #2
0
 /// <summary>
 /// If Resizable and Reshapable, support individual triangle vertex
 /// resize handles.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     if (!CanResize() || !CanReshape())
     {
         base.AddSelectionHandles(sel, selectedObj);
         return;
     }
     sel.RemoveHandles(this);
     sel.CreateResizeHandle(this, selectedObj, A, 8192, filled: true);
     sel.CreateResizeHandle(this, selectedObj, B, 8193, filled: true);
     sel.CreateResizeHandle(this, selectedObj, C, 8194, filled: true);
 }
Пример #3
0
        public static void AddRectangleHandles(GoObject myObject, RectangleF rect, PointF center, float angle, GoSelection sel, GoObject selectedObj)
        {
            GoView view  = sel.View;
            bool   flag  = view?.CanResizeObjects() ?? true;
            bool   flag2 = view?.CanReshapeObjects() ?? true;

            if (myObject.CanResize() && flag)
            {
                float  x      = rect.X;
                float  x2     = rect.X + rect.Width / 2f;
                float  x3     = rect.X + rect.Width;
                float  y      = rect.Y;
                float  y2     = rect.Y + rect.Height / 2f;
                float  y3     = rect.Y + rect.Height;
                double num    = (double)angle * Math.PI / 180.0;
                double cosine = Math.Cos(num);
                double sine   = Math.Sin(num);
                SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x, y), center, cosine, sine), 2, filled: true), angle);
                SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x3, y), center, cosine, sine), 4, filled: true), angle);
                SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x3, y3), center, cosine, sine), 8, filled: true), angle);
                SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x, y3), center, cosine, sine), 16, filled: true), angle);
                if (myObject.CanReshape() && flag2)
                {
                    SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x2, y), center, cosine, sine), 32, filled: true), angle);
                    SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x3, y2), center, cosine, sine), 64, filled: true), angle);
                    SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x2, y3), center, cosine, sine), 128, filled: true), angle);
                    SetResizeCursor(sel.CreateResizeHandle(myObject, selectedObj, RotatePoint(new PointF(x, y2), center, cosine, sine), 256, filled: true), angle);
                }
            }
        }
Пример #4
0
 /// <summary>
 /// If <see cref="M:Northwoods.Go.GoObject.CanReshape" /> and <see cref="P:Northwoods.Go.GoOctagon.ReshapableCorner" />
 /// are true, this supports corner control handles.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     base.AddSelectionHandles(sel, selectedObj);
     if (CanReshape() && ReshapableCorner)
     {
         RectangleF bounds = Bounds;
         PointF     loc    = new PointF(bounds.X + Corner.Width, bounds.Y);
         IGoHandle  handle = sel.CreateResizeHandle(this, selectedObj, loc, 1030, filled: true);
         MakeDiamondResizeHandle(handle, 64);
         loc    = new PointF(bounds.X, bounds.Y + Corner.Height);
         handle = sel.CreateResizeHandle(this, selectedObj, loc, 1031, filled: true);
         MakeDiamondResizeHandle(handle, 128);
     }
 }
Пример #5
0
        /// <summary>
        /// If Resizable and Reshapable, support individual triangle vertex
        /// resize handles.
        /// </summary>
        /// <param name="sel"></param>
        /// <param name="selectedObj"></param>
        public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
        {
            if (!CanResize() || !CanReshape())
            {
                base.AddSelectionHandles(sel, selectedObj);
                return;
            }
            PointF pointF  = default(PointF);
            PointF pointF2 = default(PointF);
            PointF pointF3 = default(PointF);
            PointF pointF4 = default(PointF);
            bool   flag    = A.X <= B.X;
            bool   flag2   = A.Y <= D.Y;

            sel.RemoveHandles(this);
            if (flag && flag2)
            {
                pointF  = A;
                pointF2 = B;
                pointF3 = D;
                pointF4 = C;
            }
            else if (!flag && flag2)
            {
                pointF  = B;
                pointF2 = A;
                pointF3 = C;
                pointF4 = D;
            }
            else if (flag && !flag2)
            {
                pointF  = D;
                pointF2 = C;
                pointF3 = A;
                pointF4 = B;
            }
            else
            {
                pointF  = C;
                pointF2 = D;
                pointF3 = B;
                pointF4 = A;
            }
            PointF loc = new PointF((pointF.X + pointF3.X) / 2f, (pointF.Y + pointF3.Y) / 2f);

            sel.CreateResizeHandle(this, selectedObj, loc, 256, filled: true);
            loc = new PointF((pointF2.X + pointF4.X) / 2f, (pointF2.Y + pointF4.Y) / 2f);
            sel.CreateResizeHandle(this, selectedObj, loc, 64, filled: true);
            loc = new PointF((pointF.X + pointF2.X) / 2f, (pointF.Y + pointF2.Y) / 2f);
            sel.CreateResizeHandle(this, selectedObj, loc, 32, filled: true);
            loc = new PointF((pointF3.X + pointF4.X) / 2f, (pointF3.Y + pointF4.Y) / 2f);
            sel.CreateResizeHandle(this, selectedObj, loc, 128, filled: true);
            sel.CreateResizeHandle(this, selectedObj, A, 1034, filled: true);
            sel.CreateResizeHandle(this, selectedObj, B, 1035, filled: true);
            sel.CreateResizeHandle(this, selectedObj, C, 1036, filled: true);
            sel.CreateResizeHandle(this, selectedObj, D, 1037, filled: true);
        }
Пример #6
0
 /// <summary>
 /// When <see cref="P:Northwoods.Go.GoBalloon.Reanchorable" /> is true, add a special handle that lets the user change the <see cref="P:Northwoods.Go.GoBalloon.Anchor" />
 /// by dragging the end point of the balloon to another object.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     base.AddSelectionHandles(sel, selectedObj);
     if (Reanchorable)
     {
         IGoHandle handle = sel.CreateResizeHandle(this, selectedObj, ComputeAnchorPoint(), 1026, filled: true);
         MakeDiamondResizeHandle(handle, 1);
     }
 }
Пример #7
0
 /// <summary>
 /// If <see cref="M:Northwoods.Go.GoObject.CanReshape" /> and <see cref="P:Northwoods.Go.GoCube.ReshapableDepth" />
 /// are true, this supports a depth control handle.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     base.AddSelectionHandles(sel, selectedObj);
     if (CanReshape() && ReshapableDepth)
     {
         PointF    loc    = getPoints()[1];
         IGoHandle handle = sel.CreateResizeHandle(this, selectedObj, loc, 1033, filled: true);
         MakeDiamondResizeHandle(handle, 1);
     }
 }
Пример #8
0
 /// <summary>
 /// If <see cref="M:Northwoods.Go.GoObject.CanReshape" /> is true, supports angle control handles if
 /// <see cref="P:Northwoods.Go.GoPie.ResizableStartAngle" /> and/or <see cref="P:Northwoods.Go.GoPie.ResizableEndAngle" /> are true.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     base.AddSelectionHandles(sel, selectedObj);
     if (CanReshape())
     {
         if (ResizableStartAngle)
         {
             PointF    pointAtAngle = GetPointAtAngle(StartAngle);
             IGoHandle handle       = sel.CreateResizeHandle(this, selectedObj, pointAtAngle, 1039, filled: true);
             MakeDiamondResizeHandle(handle, 1);
         }
         if (ResizableEndAngle)
         {
             PointF    pointAtAngle2 = GetPointAtAngle(StartAngle + SweepAngle);
             IGoHandle handle2       = sel.CreateResizeHandle(this, selectedObj, pointAtAngle2, 1040, filled: true);
             MakeDiamondResizeHandle(handle2, 1);
         }
     }
 }
Пример #9
0
 /// <summary>
 /// If <see cref="M:Northwoods.Go.GoObject.CanReshape" /> and <see cref="P:Northwoods.Go.GoParallelogram.ReshapableSkew" />
 /// are true, this supports a skew control handle.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     base.AddSelectionHandles(sel, selectedObj);
     if (CanReshape() && ReshapableSkew)
     {
         RectangleF bounds = Bounds;
         SizeF      skew   = Skew;
         PointF     pointF = default(PointF);
         pointF = (Direction ? new PointF(bounds.X + skew.Width, bounds.Y + skew.Height) : new PointF(bounds.X + bounds.Width - skew.Width, bounds.Y + skew.Height));
         IGoHandle handle = sel.CreateResizeHandle(this, selectedObj, pointF, 1038, filled: true);
         MakeDiamondResizeHandle(handle, 1);
     }
 }
Пример #10
0
 /// <summary>
 /// If <see cref="M:Northwoods.Go.GoObject.CanReshape" /> and <see cref="P:Northwoods.Go.GoCylinder.ResizableRadius" />
 /// are true, this supports a radius control handle.
 /// </summary>
 /// <param name="sel"></param>
 /// <param name="selectedObj"></param>
 public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
 {
     base.AddSelectionHandles(sel, selectedObj);
     if (CanReshape() && ResizableRadius)
     {
         RectangleF bounds      = Bounds;
         PointF     pointF      = default(PointF);
         float      minorRadius = MinorRadius;
         pointF = ((Orientation == Orientation.Vertical) ? ((Perspective != 0 && Perspective != GoPerspective.TopRight) ? new PointF(bounds.X + bounds.Width / 2f, bounds.Y + bounds.Height - 2f * minorRadius) : new PointF(bounds.X + bounds.Width / 2f, bounds.Y + 2f * minorRadius)) : ((Perspective == GoPerspective.TopLeft || Perspective == GoPerspective.BottomLeft) ? new PointF(bounds.X + 2f * minorRadius, bounds.Y + bounds.Height / 2f) : new PointF(bounds.X + bounds.Width - 2f * minorRadius, bounds.Y + bounds.Height / 2f)));
         IGoHandle handle = sel.CreateResizeHandle(this, selectedObj, pointF, 1032, filled: true);
         MakeDiamondResizeHandle(handle, (Orientation == Orientation.Horizontal) ? 64 : 128);
     }
 }
Пример #11
0
        /// <summary>
        /// Display the appropriate selected appearance, normally, resize selection handles
        /// at each point of the polygon.
        /// </summary>
        /// <param name="sel"></param>
        /// <param name="selectedObj"></param>
        /// <remarks>
        /// If this polygon is resizable and reshapable, we add resize selection
        /// handles at each polygon point, with handle IDs equal to
        /// <see cref="F:Northwoods.Go.GoObject.LastHandle" /> plus the index of the point.
        /// </remarks>
        public override void AddSelectionHandles(GoSelection sel, GoObject selectedObj)
        {
            GoView view  = sel.View;
            bool   flag  = view?.CanResizeObjects() ?? true;
            bool   flag2 = view?.CanReshapeObjects() ?? true;

            if (!(CanResize() && flag) || !(CanReshape() && flag2))
            {
                base.AddSelectionHandles(sel, selectedObj);
                return;
            }
            sel.RemoveHandles(this);
            checked
            {
                int num = PointsCount - 1;
                for (int i = 0; i <= num; i++)
                {
                    PointF point = GetPoint(i);
                    sel.CreateResizeHandle(this, selectedObj, point, 8192 + i, filled: true);
                }
            }
        }