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); }
public QMouseEvent(int qSignal, DTkViewer dv, DMouseButton button, DPoint pt) : base(qSignal, dv) { this.button = button; this.pt = pt; }
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); } }
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(); }
void dv_MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt) { Dispatch(new QMouseEvent((int)DHsmSignals.MouseUp, dv, btn, pt)); }
void viewerHandler_MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt) { if (MouseUp != null) MouseUp(dv, btn, pt); }
protected void DoMouseUp(DMouseButton btn, DPoint pt) { if (MouseUp != null) MouseUp(this, btn, pt); }
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(); } }
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; }
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); } }
void DoDrawTextMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt) { }
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); }
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); }
void DoDrawingRectMouseUp(DTkViewer dv, DMouseButton btn, DPoint pt) { CommitOrRollback(true); // transition TransitionTo(DrawRectDefault); // update drawing dv.Update(figureHandler.SelectionFigure.Rect); }
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(); }
void DoTextEditDoubleClick(DTkViewer dv, DMouseButton b, DPoint pt) { ((TextEditFigure)currentFigure).DoubleClick(pt); dv.Update(currentFigure.Rect); }
public void MouseUp(DTkViewer dv, DMouseButton btn, DPoint pt) { editingFirstHand = false; editingSecondHand = false; }
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); }
protected void DoMouseDown(DMouseButton btn, DPoint pt) { if (MouseDown != null) MouseDown(this, btn, pt); }
void DoTextEditMouseUp(DTkViewer dv, DMouseButton b, DPoint pt) { textEditMouseDown = false; }
void de_MouseDown(DTkViewer dv, DMouseButton btn, DPoint pt) { textInsertionPoint = pt; }
void dv_MouseDown(DTkViewer dv, DMouseButton btn, DPoint pt) { if (MouseDown != null) MouseDown(dv, btn, pt); }