コード例 #1
0
        // ========================================
        // method
        // ========================================
        public override void Execute()
        {
            var newIndex = _prevEdgePointRef.Index + 1;

            _target.InsertBendPoint(newIndex, _location);
            _createdEdgePointRef = _target.EdgePointRefs.ElementAt(newIndex);
        }
コード例 #2
0
ファイル: IEditorExt.cs プロジェクト: rajeshwarn/MochaNote
        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));
        }
コード例 #3
0
ファイル: IEditorExt.cs プロジェクト: rajeshwarn/MochaNote
        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));
        }
コード例 #4
0
        // ========================================
        // constructor
        // ========================================
        public MoveEdgePointHandle(EdgePointRef edgePointRef)
        {
            var fig = new SimpleRect();

            _figure     = fig;
            _figureSize = new Size(8, 8);

            _request = new MoveEdgePointRequest();
            _request.EdgePointRef = edgePointRef;
        }
コード例 #5
0
        // ========================================
        // 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;
        }
コード例 #6
0
        // ========================================
        // 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;
        }
コード例 #7
0
        // ------------------------------
        // 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);
        }
コード例 #8
0
 // ========================================
 // constructor
 // ========================================
 public MoveEdgePointCommand(IEdge target, EdgePointRef edgePointRef, Point location)
 {
     _target       = target;
     _edgePointRef = edgePointRef;
     _location     = location;
 }
コード例 #9
0
 // ========================================
 // constructor
 // ========================================
 public NewEdgePointCommand(IEdge target, EdgePointRef prevEdgePointRef, Point location)
 {
     _target           = target;
     _prevEdgePointRef = prevEdgePointRef;
     _location         = location;
 }