/// <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; } } }
/// <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); }
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); } } }
/// <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); } }
/// <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); }
/// <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); } }
/// <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); } }
/// <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); } } }
/// <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); } }
/// <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); } }
/// <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); } } }