// ======================================== // method // ======================================== public override void Execute() { var newIndex = _prevEdgePointRef.Index + 1; _target.InsertBendPoint(newIndex, _location); _createdEdgePointRef = _target.EdgePointRefs.ElementAt(newIndex); }
public static ICommand RequestNewEdgePoint(this IEditor editor, EdgePointRef prevEdgePointRef, Point location) { var req = new NewEdgePointRequest(); req.PrevEdgePointRef = prevEdgePointRef; req.Location = location; return(editor.PerformRequest(req)); }
public static ICommand RequestMoveEdgePoint(this IEditor editor, EdgePointRef edgePointRef, Point location) { var req = new MoveEdgePointRequest(); req.EdgePointRef = edgePointRef; req.Location = location; return(editor.PerformRequest(req)); }
// ======================================== // constructor // ======================================== public MoveEdgePointHandle(EdgePointRef edgePointRef) { var fig = new SimpleRect(); _figure = fig; _figureSize = new Size(8, 8); _request = new MoveEdgePointRequest(); _request.EdgePointRef = edgePointRef; }
// ======================================== // constructor // ======================================== public NewEdgePointHandle(EdgePointRef prevEdgePointRef) { var fig = new SimpleRect(); fig.Foreground = Color.Gray; _figure = fig; _figureSize = new Size(8, 8); _request = new NewEdgePointRequest(); _request.PrevEdgePointRef = prevEdgePointRef; }
// ======================================== // constructor // ======================================== public MoveOrthogonalEdgePointHandle(EdgePointRef prevEdgePointRef) { var fig = new SimpleRect(); fig.Foreground = Color.Gray; fig.Background = new SolidBrushDescription(Color.Yellow); _figure = fig; _figureSize = new Size(8, 8); _prevPointRequest = new MoveEdgePointRequest(); _prevPointRequest.AdjustGrid = false; _prevPointRequest.DontFlatten = true; _prevPointRequest.EdgePointRef = prevEdgePointRef; _nextPointRequest = new MoveEdgePointRequest(); _nextPointRequest.AdjustGrid = false; _nextPointRequest.DontFlatten = true; _nextPointRequest.EdgePointRef = prevEdgePointRef.Next; }
// ------------------------------ // protected // ------------------------------ protected ICommand GetEdgeFlattenCommand(IEdge edge, EdgePointRef edgePointRef, Point location) { if (edgePointRef.HasPrevEdgePointReference && edgePointRef.HasNextEdgePointReference) { Point prev = edgePointRef.Prev.EdgePoint; Point next = edgePointRef.Next.EdgePoint; double dist = Vector2D.GetDistanceLineSegAndPoint( (Vector2D)prev, (Vector2D)next, (Vector2D)location ); if (dist < _flattenWidth) { return(new RemoveEdgePointCommand(edge, edgePointRef.Index)); } } if (edgePointRef.HasPrevEdgePointReference && edgePointRef.Prev.HasPrevEdgePointReference) { Point prev = edgePointRef.Prev.EdgePoint; Point prevprev = edgePointRef.Prev.Prev.EdgePoint; double dist = Vector2D.GetDistanceLineSegAndPoint( (Vector2D)prevprev, (Vector2D)location, (Vector2D)prev ); if (dist < _flattenWidth) { return(new RemoveEdgePointCommand(edge, edgePointRef.Index - 1)); } } if (edgePointRef.HasNextEdgePointReference && edgePointRef.Next.HasNextEdgePointReference) { Point next = edgePointRef.Next.EdgePoint; Point nextnext = edgePointRef.Next.Next.EdgePoint; double dist = Vector2D.GetDistanceLineSegAndPoint( (Vector2D)nextnext, (Vector2D)location, (Vector2D)next ); if (dist < _flattenWidth) { return(new RemoveEdgePointCommand(edge, edgePointRef.Index + 1)); } } return(null); }
// ======================================== // constructor // ======================================== public MoveEdgePointCommand(IEdge target, EdgePointRef edgePointRef, Point location) { _target = target; _edgePointRef = edgePointRef; _location = location; }
// ======================================== // constructor // ======================================== public NewEdgePointCommand(IEdge target, EdgePointRef prevEdgePointRef, Point location) { _target = target; _prevEdgePointRef = prevEdgePointRef; _location = location; }