コード例 #1
0
ファイル: Reposition.cs プロジェクト: Angeldude/sodium
 public Reposition(DragInfo dragInfo, MouseEvt me, bool axisLock)
 {
     double tx = me.Pt.X - dragInfo.Me.Pt.X;
     double ty = me.Pt.Y - dragInfo.Me.Pt.Y;
     if (axisLock)
     {
         if (Math.Abs(tx) < Math.Abs(ty))
         {
             tx = 0;
         }
         else
         {
             ty = 0;
         }
     }
     this.output = new Lazy<Tuple<Polygon, Point>>(() => Tuple.Create(dragInfo.Me.Element.Polygon, new Point(dragInfo.OriginalLeft + tx, dragInfo.OriginalTop + ty)));
 }
コード例 #2
0
ファイル: Reposition.cs プロジェクト: gitter-badger/sodium-1
        public Reposition(DragInfo dragInfo, MouseEvt me, bool axisLock)
        {
            double tx = me.Pt.X - dragInfo.Me.Pt.X;
            double ty = me.Pt.Y - dragInfo.Me.Pt.Y;

            if (axisLock)
            {
                if (Math.Abs(tx) < Math.Abs(ty))
                {
                    tx = 0;
                }
                else
                {
                    ty = 0;
                }
            }
            this.output = new Lazy <Tuple <Polygon, Point> >(() => Tuple.Create(dragInfo.Me.Element.Polygon, new Point(dragInfo.OriginalLeft + tx, dragInfo.OriginalTop + ty)));
        }
コード例 #3
0
ファイル: Classic.cs プロジェクト: Angeldude/sodium
 public void HandleMouseUp(MouseEvt me)
 {
     this.dragInfo.Reset();
 }
コード例 #4
0
ファイル: Classic.cs プロジェクト: Angeldude/sodium
 public void HandleMouseMove(MouseEvt me)
 {
     this.lastMe = Maybe.Just(me);
     this.Reposition();
 }
コード例 #5
0
 protected EvtBase(MouseEvt me)
 {
     this.Me = me;
 }
コード例 #6
0
        public Actor(Action <string> addMessage, Dispatcher dispatcher)
        {
            this.addMessage = addMessage;

            BlockingCollection <Reposition> @out = new BlockingCollection <Reposition>(1);

            Task.Run(() =>
            {
                try
                {
                    while (true)
                    {
                        this.cts.Token.ThrowIfCancellationRequested();

                        bool axisLock = false;

                        DragInfo dragInfo;
                        while (true)
                        {
                            this.cts.Token.ThrowIfCancellationRequested();

                            object e    = [email protected](this.cts.Token);
                            EvtDown me  = e as EvtDown;
                            ShiftEvt se = e as ShiftEvt;
                            if (me != null)
                            {
                                dragInfo = dispatcher.Invoke(() => new DragInfo(me.Me, Canvas.GetLeft(me.Me.Element.Polygon).ZeroIfNaN(), Canvas.GetTop(me.Me.Element.Polygon).ZeroIfNaN()));
                                break;
                            }
                            if (se != null)
                            {
                                axisLock = se.IsDown;
                            }
                        }

                        dispatcher.Invoke(() => this.addMessage("actor dragging " + dragInfo.Me.Element.Name));
                        MouseEvt lastMe = dragInfo.Me;
                        while (true)
                        {
                            this.cts.Token.ThrowIfCancellationRequested();

                            object me = [email protected](this.cts.Token);

                            EvtUp meUp     = me as EvtUp;
                            EvtMove meMove = me as EvtMove;
                            ShiftEvt se    = me as ShiftEvt;
                            if (meUp != null)
                            {
                                break;
                            }
                            if (meMove != null)
                            {
                                lastMe = meMove.Me;
                                @out.Add(new Reposition(dragInfo, lastMe, axisLock), this.cts.Token);
                            }
                            else if (se != null)
                            {
                                axisLock = se.IsDown;
                                @out.Add(new Reposition(dragInfo, lastMe, axisLock), this.cts.Token);
                            }
                        }
                    }
                }
                catch (OperationCanceledException)
                {
                }
            });

            Task.Run(() =>
            {
                try
                {
                    while (true)
                    {
                        this.cts.Token.ThrowIfCancellationRequested();

                        Reposition r = @out.Take(this.cts.Token);
                        dispatcher.Invoke(() =>
                        {
                            Canvas.SetLeft(r.Polygon, r.Left);
                            Canvas.SetTop(r.Polygon, r.Top);
                        });
                    }
                }
                catch (OperationCanceledException)
                {
                }
            });
        }
コード例 #7
0
 public EvtUp(MouseEvt me)
     : base(me)
 {
 }
コード例 #8
0
ファイル: Actor.cs プロジェクト: Angeldude/sodium
 protected EvtBase(MouseEvt me)
 {
     this.Me = me;
 }
コード例 #9
0
ファイル: Classic.cs プロジェクト: zzazang/sodium
 public void HandleMouseMove(MouseEvt me)
 {
     this.lastMe = Maybe.Just(me);
     this.Reposition();
 }
コード例 #10
0
ファイル: Frp.cs プロジェクト: Angeldude/sodium
 public void HandleMouseUp(MouseEvt me) => this.sMouseUp.Send(me);
コード例 #11
0
 public void HandleMouseUp(MouseEvt me)
 {
     this.dragInfo = Maybe.None;
 }
コード例 #12
0
ファイル: Frp.cs プロジェクト: Angeldude/sodium
 public void HandleMouseMove(MouseEvt me) => this.sMouseMove.Send(me);
コード例 #13
0
ファイル: Actor.cs プロジェクト: Angeldude/sodium
 public EvtUp(MouseEvt me)
     : base(me)
 {
 }
コード例 #14
0
ファイル: Actor.cs プロジェクト: Angeldude/sodium
 public EvtMove(MouseEvt me)
     : base(me)
 {
 }
コード例 #15
0
 public void HandleMouseMove(MouseEvt me) => this.sMouseMove.Send(me);
コード例 #16
0
 public void HandleMouseUp(MouseEvt me)
 {
     Task.Run(() => [email protected](new EvtUp(me), this.cts.Token));
 }
コード例 #17
0
 public void HandleMouseUp(MouseEvt me) => this.sMouseUp.Send(me);
コード例 #18
0
 public EvtMove(MouseEvt me)
     : base(me)
 {
 }
コード例 #19
0
ファイル: Classic.cs プロジェクト: zzazang/sodium
 public void HandleMouseUp(MouseEvt me)
 {
     this.dragInfo.Reset();
 }
コード例 #20
0
ファイル: Actor.cs プロジェクト: Angeldude/sodium
 public void HandleMouseUp(MouseEvt me)
 {
     Task.Run(() => [email protected](new EvtUp(me), this.cts.Token));
 }