private void tsBtnAddEdge_Click(object sender, EventArgs e) { if (sourceModel == null || stockModel == null || sourceModel.Key == stockModel.Key) { return; } string weight = null; if (_field.IsWeighted) { SetWeightForm window = new SetWeightForm(); window.Owner = this; window.ShowDialog(); if (window.Ok) { weight = window.Weight; } } AEdgeModel edgeModel; if (_field.IsOrgraph) { edgeModel = new OrientEdgeModel(sourceModel, stockModel, weight); } else { edgeModel = new NonOrientEdgeModel(sourceModel, stockModel, weight); } CommandEntered?.Invoke(this, new AddModelCommandArgs(edgeModel)); _field.UnmarkGraphModels(); }
private void DrawOrientedEdge(Graphics g, OrientEdgeModel edge, vec2 min, vec2 max) { vec2 A = new vec2(edge.PosA); vec2 B = new vec2(edge.PosB); if (Clip.RectangleClip(ref A, ref B, min, max)) { g.DrawLine(pen, A.x, A.y, B.x, B.y); } B = new vec2(edge.PosB); vec2 C = new vec2(edge.PosC); if (Clip.RectangleClip(ref B, ref C, min, max)) { g.DrawLine(pen, B.x, B.y, C.x, C.y); } C = new vec2(edge.PosC); vec2 D = new vec2(edge.PosD); if (Clip.RectangleClip(ref C, ref D, min, max) && (C - D).Length() > 6) { endPen.Color = pen.Color; endPen.Width = pen.Width; if (!D.Equals(edge.PosD)) { ServiceFunctions.Swap(ref D, ref C); } g.DrawLine(endPen, C.x, C.y, D.x, D.y); } if (edge.Weighted && Clip.SimpleClip(new vec2(edge.WeightPos.x + 5f, edge.WeightPos.y + 5f), max, min, GlobalParameters.Radius)) { DrawWeight(g, edge, min, max); } }