Exemplo n.º 1
0
 void DoDrawingLineMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (currentFigure is IPolyline)
     {
         if (!(currentFigure is IRepositionPoint))
         {
             // test for finished line
             bool lineNotFinished = false;
             if (((IPolyline)currentFigure).Points.Count < 2)
             {
                 if (UsePolylineDots)
                 {
                     DPoint currentPt = ((IPolyline)currentFigure).Points[0];
                     DPoint newPt = new DPoint(currentPt.X + 0.01, currentPt.Y + 0.01);
                     ((IPolyline)currentFigure).Points.Add(newPt);
                 }
                 else
                     lineNotFinished = true;
             }
             if (!lineNotFinished)
             {
                 // simplify polyline
                 if (SimplifyPolylines && currentFigure is IPolyline)
                 {
                     ((IPolyline)currentFigure).Points = DGeom.SimplifyPolyline(((IPolyline)currentFigure).Points, simplifyPolylinesTolerance);
                     dv.Update(currentFigure.GetSelectRect());
                 }
                 // auto group
                 if (autoGroupPolylineTimeoutMet)
                 {
                     autoGroupPolylineXLimitMet = DGeom.DistXBetweenRects(autoGroupPolylineFigure.GetEncompassingRect(),
                         currentFigure.GetEncompassingRect()) < autoGroupPolylinesXLimit;
                     autoGroupPolylineYLimitMet = DGeom.DistYBetweenRects(autoGroupPolylineFigure.GetEncompassingRect(),
                         currentFigure.GetEncompassingRect()) < autoGroupPolylinesYLimit;
                     if (autoGroupPolylineXLimitMet && autoGroupPolylineYLimitMet)
                     {
                         if (autoGroupPolylineFigure is GroupFigure)
                         {
                             figureHandler.Remove(currentFigure);
                             IChildFigureable cf = (IChildFigureable)autoGroupPolylineFigure;
                             cf.ChildFigures.Add(currentFigure);
                             cf.ChildFigures = cf.ChildFigures;
                         }
                         else if (autoGroupPolylineFigure is IPolyline)
                         {
                             figureHandler.Remove(autoGroupPolylineFigure);
                             figureHandler.Remove(currentFigure);
                             GroupFigure gf = new GroupFigure(new List<Figure>(new Figure[] { autoGroupPolylineFigure, currentFigure }));
                             figureHandler.Add(gf, false);
                             autoGroupPolylineFigure = gf;
                         }
                     }
                     else
                         autoGroupPolylineFigure = currentFigure;
                 }
             }
             autoGroupPolylineStart = Environment.TickCount;
         }
     }
     // commit to undo/redo
     CommitOrRollback(false);
     // transition
     TransitionTo(DrawLineDefault);
 }
Exemplo n.º 2
0
 public QMouseEvent(int qSignal, DTkViewer dv, DMouseButton button, DPoint pt)
     : base(qSignal, dv)
 {
     this.button = button;
     this.pt = pt;
 }
Exemplo n.º 3
0
 void DoDragFigureMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (btn == DMouseButton.Left)
     {
         // drag figure end event
         if ((mouseHitTest == DHitTest.Body || mouseHitTest == DHitTest.SelectRect) &&
             !currentFigure.Locked && DragFigureEnd != null)
             DragFigureEnd(null, currentFigure, dv.EngineToClient(pt));
         // nullify currentFigure
         currentFigure = null;
         // transition
         TransitionTo(SelectDefault);
     }
 }
Exemplo n.º 4
0
 void dv_MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (MouseUp != null)
         MouseUp(dv, btn, pt);
     foreach (DTkViewer dvOther in viewers)
         if (dvOther != dv)
             dvOther.Update();
 }
Exemplo n.º 5
0
 void dv_MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     Dispatch(new QMouseEvent((int)DHsmSignals.MouseUp, dv, btn, pt));
 }
Exemplo n.º 6
0
 void viewerHandler_MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (MouseUp != null)
         MouseUp(dv, btn, pt);
 }
Exemplo n.º 7
0
 protected void DoMouseUp(DMouseButton btn, DPoint pt)
 {
     if (MouseUp != null)
         MouseUp(this, btn, pt);
 }
Exemplo n.º 8
0
        void DoSelectDefaultMouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
        {
            if (btn == DMouseButton.Left)
            {
                // find and select clicked figure
                List<Figure> children = new List<Figure>();
                IGlyph glyph;
                Figure f = figureHandler.HitTestSelect(pt, out mouseHitTest, children, out glyph, figureSelectToggleToSelection);
                // update selected figures
                if (glyph != null)
                {

                }
                else if (f != null)
                {
                    // set drag infomation
                    currentFigure = f;
                    switch (mouseHitTest)
                    {
                        case DHitTest.Body:
                            // store drag point
                            dragPt = pt;
                            if (!f.Locked)
                            {
                                // drag figure start event
                                if (DragFigureStart != null)
                                    DragFigureStart(null, f, dv.EngineToClient(pt));
                            }
                            break;
                        case DHitTest.SelectRect:
                            goto case DHitTest.Body;
                        case DHitTest.Resize:
                            dragPt = new DPoint(0, 0);
                            dragPt = CalcSizeDelta(f.RotatePointToFigure(pt), f, LockingAspectRatio || f.LockAspectRatio);
                            lockInitialAspectRatio = figureLockAspectRatioMode == DHsmLockAspectRatioMode.Default;
                            break;
                        case DHitTest.RepositionPoint:
                            break;
                        case DHitTest.Rotate:
                            dragRot = GetRotationOfPointComparedToFigure(f, pt) - f.Rotation;
                            if (dragRot > Math.PI)
                                dragRot = dragRot - (Math.PI * 2);
                            break;
                        case DHitTest.Context:
                            if (FigureContextClick != null)
                                FigureContextClick(null, f, dv.EngineToClient(pt));
                            break;
                        case DHitTest.Lock:
                            if (FigureLockClick != null)
                                FigureLockClick(null, f, dv.EngineToClient(pt));
                            break;
                    }
                }
                else
                {
                    if (!figureSelectToggleToSelection)
                        figureHandler.ClearSelected();
                    dragPt = pt; // mouseHitTest = DHitTest.None
                    // transition
                    TransitionTo(DragSelect);
                }
                // update drawing
                dv.Update();
            }
        }
Exemplo n.º 9
0
 void DoSelectDefaultMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     DHitTest hitTest;
     List<Figure> children = new List<Figure>();
     IGlyph glyph;
     if (btn == DMouseButton.Left)
     {
         Figure f = figureHandler.HitTestFigures(pt, out hitTest, children, out glyph);
         if (hitTest == DHitTest.Glyph)
         {
             if (children.Count > 0)
                 glyph.CallClicked(children[0], dv.EngineToClient(pt));
             else
                 glyph.CallClicked(f, dv.EngineToClient(pt));
         }
         else if ((hitTest == DHitTest.Body || hitTest == DHitTest.SelectRect) && FigureClick != null)
         {
             foreach (Figure child in children)
                 if (child.ClickEvent)
                     FigureClick(null, child, dv.EngineToClient(pt));
             if (f.ClickEvent)
                 FigureClick(null, f, dv.EngineToClient(pt));
             if (FiguresDeselectOnSingleClick && !FigureSelectToggleToSelection)
             {
                 figureHandler.SelectFigures(new List<Figure>(new Figure[] { f }), false);
                 dv.Update();
             }
         }
     }
     else if (btn == DMouseButton.Right)
     {
         Figure f = figureHandler.HitTestSelect(pt, out hitTest, null, out glyph, figureSelectToggleToSelection);
         dv.SetCursor(DCursor.Default);
         dv.Update();
         if (ContextClick != null)
             ContextClick(null, f, dv.EngineToClient(pt));
     }
     // nullify current figure for DoSelectDefault -> DHsmSignals.MouseMove:
     currentFigure = null;
 }
Exemplo n.º 10
0
 void DoDrawTextMouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (btn == DMouseButton.Left)
     {
         undoRedoArea.Start(addTextName);
         // bound pt to canvas
         BoundPtToPage(pt);
         // create TextFigure
         currentFigure = new TextFigure(pt, "", 0);
         // add to list of figures
         figureHandler.Add(currentFigure, true);
         // update DViewer
         dv.Update();
         // transition
         TransitionTo(TextEdit);
     }
 }
Exemplo n.º 11
0
 void DoDrawTextMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
 }
Exemplo n.º 12
0
 void DoDrawRectDefaultMouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (btn == DMouseButton.Left)
     {
         undoRedoArea.Start(string.Format("{0} {1}", addName, currentFigureClass.Name));
         // bound pt to canvas
         BoundPtToPage(pt);
         // create Figure
         currentFigure = (Figure)Activator.CreateInstance(currentFigureClass);
         currentFigure.TopLeft = pt;
         // add to list of figures
         figureHandler.Add(currentFigure, true);
         // store drag pt for reference on mousemove event)
         dragPt = pt;
         // transition
         TransitionTo(DrawingRect);
     }
     else if (btn == DMouseButton.Right)
         TransitionTo(Select);
 }
Exemplo n.º 13
0
 void DoDrawLineDefaultMouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (btn == DMouseButton.Left)
     {
         undoRedoArea.Start(addLineName);
         // bound pt to canvas
         BoundPtToPage(pt);
         // create line figure
         currentFigure = (Figure)Activator.CreateInstance(currentFigureClass);
         if (currentFigure is IPolyline)
         {
             ((IPolyline)currentFigure).AddPoint(pt);
             if (!(currentFigure is IRepositionPoint))
             {
                 // auto grouping stuff
                 if (AutoGroupPolylines)
                 {
                     if (autoGroupPolylineFigure == null)
                     {
                         autoGroupPolylineFigure = currentFigure;
                         autoGroupPolylineTimeoutMet = false;
                     }
                     else
                     {
                         if (Environment.TickCount <= autoGroupPolylineStart + AutoGroupPolylinesTimeout)
                             autoGroupPolylineTimeoutMet = true;
                         else
                         {
                             autoGroupPolylineTimeoutMet = false;
                             autoGroupPolylineFigure = currentFigure;
                         }
                     }
                 }
             }
             else
                 ((IPolyline)currentFigure).AddPoint(pt);
         }
         // add to list of figures
         figureHandler.Add(currentFigure, true);
         // transition
         TransitionTo(DrawingLine);
     }
     else if (btn == DMouseButton.Right)
         TransitionTo(Select);
 }
Exemplo n.º 14
0
 void DoDrawingRectMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     CommitOrRollback(true);
     // transition
     TransitionTo(DrawRectDefault);
     // update drawing
     dv.Update(figureHandler.SelectionFigure.Rect);
 }
Exemplo n.º 15
0
 public void MouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     IGlyph glyph;
     if (editing && HitTest(pt, null, out glyph) == DHitTest.Body)
     {
         DRect r = GetClockRect();
         DPoint fhp = FirstHandPoint(r);
         DPoint shp = SecondHandPoint(r);
         if (DGeom.DistBetweenTwoPts(pt, fhp) <= DGeom.DistBetweenTwoPts(pt, shp))
         {
             editingFirstHand = true;
             firstHandAngle.Value = DGeom.AngleBetweenPoints(r.Center, pt);
         }
         else
         {
             editingSecondHand = true;
             secondHandAngle.Value = DGeom.AngleBetweenPoints(r.Center, pt);
         }
         dv.Update(r);
     }
     else
         DoEditFinished();
 }
Exemplo n.º 16
0
 void DoTextEditDoubleClick(DTkViewer dv, DMouseButton b, DPoint pt)
 {
     ((TextEditFigure)currentFigure).DoubleClick(pt);
     dv.Update(currentFigure.Rect);
 }
Exemplo n.º 17
0
 public void MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     editingFirstHand = false;
     editingSecondHand = false;
 }
Exemplo n.º 18
0
 void DoTextEditMouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (btn == DMouseButton.Left)
     {
         TextEditFigure tef = (TextEditFigure)currentFigure;
         IGlyph glyph;
         if (currentFigure.HitTest(pt, null, out glyph) == DHitTest.Body)
         {
             textEditMouseDown = true;
             textEditChangeTextWrap = tef.HitTestTextWrapHandle(pt);
             textEditMove = tef.HitTestBorder(pt);
             if (textEditChangeTextWrap)
                 textEditDragWrapOffset = tef.X + tef.BorderWidth + tef.WrapLength - pt.X;
             if (textEditMove)
                 dragPt = pt;
             else
             {
                 tef.SetCursorPoint(pt, false);
                 dv.Update(currentFigure.Rect);
             }
         }
         else
         {
             // find and select clicked figure
             Figure f = figureHandler.HitTestSelect(pt, out mouseHitTest, null, out glyph, false);
             // select the TextFigure from the TextEditFigure
             if (f == tef)
             {
                 if (tef.HasText)
                 {
                     f = tef.Figure;
                     figureHandler.SelectFigures(new List<Figure>(new Figure[] { f }), false);
                 }
             }
             // setup for select mouse move
             dragPt = pt;
             // transition to select state
             TransitionTo(DragFigure);
             currentFigure = f;
         }
     }
     else if (btn == DMouseButton.Right)
         TransitionTo(Select);
 }
Exemplo n.º 19
0
 protected void DoMouseDown(DMouseButton btn, DPoint pt)
 {
     if (MouseDown != null)
         MouseDown(this, btn, pt);
 }
Exemplo n.º 20
0
 void DoTextEditMouseUp(DTkViewer dv, DMouseButton b, DPoint pt)
 {
     textEditMouseDown = false;
 }
Exemplo n.º 21
0
 void de_MouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     textInsertionPoint = pt;
 }
Exemplo n.º 22
0
 void dv_MouseDown(DTkViewer dv, DMouseButton btn, DPoint pt)
 {
     if (MouseDown != null)
         MouseDown(dv, btn, pt);
 }