void AddLine(UnitPoint point, DrawTools.Line line) { if (m_originalLines.ContainsKey(line) == false) { line.Highlighted = true; LinePoints lp = new LinePoints(); lp.SetLine(line); lp.MousePoint = point; m_originalLines.Add(line, lp); } }
void AddLine(UnitPoint point, DrawTools.LineTool line) { try { if (m_originalLines.ContainsKey(line) == false) { line.Highlighted = true; LinePoints lp = new LinePoints(); lp.SetLine(line); lp.MousePoint = point; m_originalLines.Add(line, lp); } } catch (Exception ex) { throw ex; } }
/// <summary> /// /// </summary> /// <param name="canvas"></param> /// <param name="point"></param> /// <param name="snappoint"></param> /// <returns></returns> public eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint) { List <IDrawObject> drawitems = canvas.DataModel.GetHitObjects(canvas, point); List <DrawTools.Line> lines = GetLines(drawitems); // add to source lines if (m_originalLines.Count == 0 || Control.ModifierKeys == Keys.Shift) { foreach (DrawTools.Line line in lines) { AddLine(point, line); } SetSelectHint(); return(eDrawObjectMouseDown.Continue); } if (m_originalLines.Count == 0 || Control.ModifierKeys == Keys.Control) { foreach (DrawTools.Line line in lines) { if (m_originalLines.ContainsKey(line)) { RemoveLine(line); } else { AddLine(point, line); } } SetSelectHint(); return(eDrawObjectMouseDown.Continue); } if (drawitems.Count == 0) { return(eDrawObjectMouseDown.Continue); } // all lines have been added, now find edge to where to extend if (drawitems[0] is DrawTools.Line) { DrawTools.Line edge = (DrawTools.Line)drawitems[0]; bool modified = false; foreach (LinePoints originalLp in m_originalLines.Values) { UnitPoint intersectpoint = HitUtil.LinesIntersectPoint(edge.P1, edge.P2, originalLp.Line.P1, originalLp.Line.P2); // lines intersect so shrink line if (intersectpoint != UnitPoint.Empty) { LinePoints lp = new LinePoints(); lp.SetLine(originalLp.Line); lp.MousePoint = originalLp.MousePoint; m_modifiedLines.Add(lp.Line, lp); lp.SetNewPoints(lp.Line, lp.MousePoint, intersectpoint); modified = true; continue; } // lines do not intersect, find apparent intersect point on existing edge line if (intersectpoint == UnitPoint.Empty) { UnitPoint apprarentISPoint = HitUtil.FindApparentIntersectPoint( edge.P1, edge.P2, originalLp.Line.P1, originalLp.Line.P2, false, true); if (apprarentISPoint == UnitPoint.Empty) { continue; } modified = true; originalLp.Line.ExtendLineToPoint(apprarentISPoint); LinePoints lp = new LinePoints(); lp.SetLine(originalLp.Line); lp.MousePoint = point; m_modifiedLines.Add(lp.Line, lp); } } if (modified) { canvas.DataModel.AfterEditObjects(this); } return(eDrawObjectMouseDown.Done); } if (drawitems[0] is DrawTools.Arc) { DrawTools.Arc edge = (DrawTools.Arc)drawitems[0]; foreach (LinePoints originalLp in m_originalLines.Values) { } bool modified = false; } return(eDrawObjectMouseDown.Done); }
public eDrawObjectMouseDown OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint) { List<IDrawObject> drawitems = canvas.DataModel.GetHitObjects(canvas, point); List<DrawTools.Line> lines = GetLines(drawitems); // add to source lines if (m_originalLines.Count == 0 || Control.ModifierKeys == Keys.Shift) { foreach (DrawTools.Line line in lines) AddLine(point, line); SetSelectHint(); return eDrawObjectMouseDown.Continue; } if (m_originalLines.Count == 0 || Control.ModifierKeys == Keys.Control) { foreach (DrawTools.Line line in lines) { if (m_originalLines.ContainsKey(line)) RemoveLine(line); else AddLine(point, line); } SetSelectHint(); return eDrawObjectMouseDown.Continue; } if (drawitems.Count == 0) return eDrawObjectMouseDown.Continue; // all lines have been added, now find edge to where to extend if (drawitems[0] is DrawTools.Line) { DrawTools.Line edge = (DrawTools.Line)drawitems[0]; bool modified = false; foreach (LinePoints originalLp in m_originalLines.Values) { UnitPoint intersectpoint = HitUtil.LinesIntersectPoint(edge.P1, edge.P2, originalLp.Line.P1, originalLp.Line.P2); // lines intersect so shrink line if (intersectpoint != UnitPoint.Empty) { LinePoints lp = new LinePoints(); lp.SetLine(originalLp.Line); lp.MousePoint = originalLp.MousePoint; m_modifiedLines.Add(lp.Line, lp); lp.SetNewPoints(lp.Line, lp.MousePoint, intersectpoint); modified = true; continue; } // lines do not intersect, find apparent intersect point on existing edge line if (intersectpoint == UnitPoint.Empty) { UnitPoint apprarentISPoint = HitUtil.FindApparentIntersectPoint( edge.P1, edge.P2, originalLp.Line.P1, originalLp.Line.P2, false, true); if (apprarentISPoint == UnitPoint.Empty) continue; modified = true; originalLp.Line.ExtendLineToPoint(apprarentISPoint); LinePoints lp = new LinePoints(); lp.SetLine(originalLp.Line); lp.MousePoint = point; m_modifiedLines.Add(lp.Line, lp); } } if (modified) canvas.DataModel.AfterEditObjects(this); return eDrawObjectMouseDown.Done; } if (drawitems[0] is DrawTools.Arc) { DrawTools.Arc edge = (DrawTools.Arc)drawitems[0]; foreach (LinePoints originalLp in m_originalLines.Values) { } bool modified = false; } return eDrawObjectMouseDown.Done; }
public eDrawObjectMouseDownEnum OnMouseDown(ICanvas canvas, UnitPoint point, ISnapPoint snappoint) { try { List <IDrawObject> drawitems = canvas.DataModel.GetHitObjects(canvas, point); List <DrawTools.LineTool> lines = GetLines(drawitems); if (m_originalLines.Count == 0 || Control.ModifierKeys == Keys.Shift) { foreach (DrawTools.LineTool line in lines) { AddLine(point, line); } SetSelectHint(); return(eDrawObjectMouseDownEnum.Continue); } if (m_originalLines.Count == 0 || Control.ModifierKeys == Keys.Control) { foreach (DrawTools.LineTool line in lines) { if (m_originalLines.ContainsKey(line)) { RemoveLine(line); } else { AddLine(point, line); } } SetSelectHint(); return(eDrawObjectMouseDownEnum.Continue); } if (drawitems.Count == 0) { return(eDrawObjectMouseDownEnum.Continue); } if (drawitems[0] is DrawTools.LineTool) { DrawTools.LineTool edge = (DrawTools.LineTool)drawitems[0]; if (edge.Type == DrawTools.LineType.PointLine) { return(eDrawObjectMouseDownEnum.Done); } bool modified = false; foreach (LinePoints originalLp in m_originalLines.Values) { UnitPoint intersectpoint = HitUtil.LinesIntersectPoint(edge.P1, edge.P2, originalLp.Line.P1, originalLp.Line.P2); if (intersectpoint != UnitPoint.Empty) { LinePoints lp = new LinePoints(); lp.SetLine(originalLp.Line); lp.MousePoint = originalLp.MousePoint; m_modifiedLines.Add(lp.Line, lp); lp.SetNewPoints(lp.Line, lp.MousePoint, intersectpoint); modified = true; continue; } if (intersectpoint == UnitPoint.Empty) { UnitPoint apprarentISPoint = HitUtil.FindApparentIntersectPoint( edge.P1, edge.P2, originalLp.Line.P1, originalLp.Line.P2, false, true); if (apprarentISPoint == UnitPoint.Empty) { continue; } modified = true; originalLp.Line.ExtendLineToPoint(apprarentISPoint); LinePoints lp = new LinePoints(); lp.SetLine(originalLp.Line); lp.MousePoint = point; m_modifiedLines.Add(lp.Line, lp); } } if (modified) { canvas.DataModel.AfterEditObjects(this); } return(eDrawObjectMouseDownEnum.Done); } return(eDrawObjectMouseDownEnum.Done); } catch (Exception ex) { throw ex; } }