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