Beispiel #1
0
        protected override void AddEdge(EdgesAddedOrRemoved edge)
        {
            Line edgeElem = new Line();

            edgeElem.Uid    = GenerateEdgeUid(edge);
            edgeElem.Stroke = (SolidColorBrush) new BrushConverter().ConvertFromString("#323336");
            if (edge.Vertex1 < Vertices.Length)
            {
                edgeElem.X1 = Vertices[edge.Vertex1].X;
                edgeElem.Y1 = Vertices[edge.Vertex1].Y;
            }
            else
            {
                // ModelType = BA, VertexCount = 5, Edges = 10, Probability = 0.1, StepCount = 10
                // Cashes here. IndexOutOfBounds Exception
                // Vertex1 = 5, InitialVertexCount = 5
                // Crashes on master also.
                edgeElem.X1 = addedVertexPoints[edge.Vertex1 - InitialVertexCount].X;
                edgeElem.Y1 = addedVertexPoints[edge.Vertex1 - InitialVertexCount].Y;
            }
            if (edge.Vertex2 < Vertices.Length)
            {
                edgeElem.X2 = Vertices[edge.Vertex2].X;
                edgeElem.Y2 = Vertices[edge.Vertex2].Y;
            }
            else
            {
                edgeElem.X2 = addedVertexPoints[edge.Vertex2 - InitialVertexCount].X;
                edgeElem.Y2 = addedVertexPoints[edge.Vertex2 - InitialVertexCount].Y;
            }
            MainCanvas.Children.Add(edgeElem);
        }
Beispiel #2
0
        protected void RemoveEdge(EdgesAddedOrRemoved edge)
        {
            string edgeUid = GenerateEdgeUid(edge);

            for (int i = 0; i < MainCanvas.Children.Count; i++)
            {
                if (MainCanvas.Children[i].Uid == edgeUid)
                {
                    MainCanvas.Children.RemoveAt(i);
                    break;
                }
            }
        }
Beispiel #3
0
        protected override void AddEdge(EdgesAddedOrRemoved edge)
        {
            Line edgeElem = new Line
            {
                Uid    = GenerateEdgeUid(edge),
                Stroke = (SolidColorBrush) new BrushConverter().ConvertFromString("#323336"),
                X1     = Vertices[edge.Vertex1].X,
                Y1     = Vertices[edge.Vertex1].Y,
                X2     = Vertices[edge.Vertex2].X,
                Y2     = Vertices[edge.Vertex2].Y
            };

            MainCanvas.Children.Add(edgeElem);
        }
Beispiel #4
0
        protected void AddInitialEdge(EdgesAddedOrRemoved edge)
        {
            int vertexDif = Math.Abs(edge.Vertex2 - edge.Vertex1);

            if (vertexDif == InitialVertexCount - 1 || vertexDif == 1)
            {
                Line edgeElem = new Line()
                {
                    Uid    = GenerateEdgeUid(edge),
                    Stroke = (SolidColorBrush) new BrushConverter().ConvertFromString("#323336"),
                    X1     = Vertices[edge.Vertex1].X,
                    Y1     = Vertices[edge.Vertex1].Y,
                    X2     = Vertices[edge.Vertex2].X,
                    Y2     = Vertices[edge.Vertex2].Y,
                };
                MainCanvas.Children.Add(edgeElem);
            }
            else
            {
                Path path = new Path()
                {
                    Uid             = GenerateEdgeUid(edge),
                    Stroke          = (SolidColorBrush) new BrushConverter().ConvertFromString("#323336"),
                    StrokeThickness = 1
                };

                PathGeometry pathGeometry = new PathGeometry();
                PathFigure   pathFigure   = new PathFigure()
                {
                    StartPoint = Vertices[Math.Min(edge.Vertex1, edge.Vertex2)]
                };

                ArcSegment arc = new ArcSegment()
                {
                    Point          = Vertices[Math.Max(edge.Vertex2, edge.Vertex1)],
                    Size           = new Size(5, 5),
                    SweepDirection = SweepDirection.Counterclockwise
                };

                pathFigure.Segments.Add(arc);

                pathGeometry.Figures.Add(pathFigure);
                path.Data = pathGeometry;

                MainCanvas.Children.Add(path);
            }
        }
Beispiel #5
0
        private void PrepareEdgeToRemove(EdgesAddedOrRemoved edge)
        {
            edgesToRemove.Add(edge);

            string edgeUid = DrawObj.GenerateEdgeUid(edge);

            for (int j = 0; j < MWindow.mainCanvas.Children.Count; j++)
            {
                if (MWindow.mainCanvas.Children[j].Uid == edgeUid)
                {
                    Line line = (Line)MWindow.mainCanvas.Children[j];
                    line.Stroke          = (SolidColorBrush) new BrushConverter().ConvertFromString("#ff0000");
                    line.StrokeThickness = 2;
                    break;
                }
            }
        }
Beispiel #6
0
        private void AddEdge(EdgesAddedOrRemoved edge)
        {
            edgesToChangeColor.Add(edge);

            Line edgeElem = new Line
            {
                Uid             = DrawObj.GenerateEdgeUid(edge),
                Stroke          = (SolidColorBrush) new BrushConverter().ConvertFromString("#006600"),
                StrokeThickness = 2,
                X1 = DrawObj.Vertices[edge.Vertex1].X,
                Y1 = DrawObj.Vertices[edge.Vertex1].Y,
                X2 = DrawObj.Vertices[edge.Vertex2].X,
                Y2 = DrawObj.Vertices[edge.Vertex2].Y
            };

            MWindow.mainCanvas.Children.Add(edgeElem);
        }
Beispiel #7
0
 public string GenerateEdgeUid(EdgesAddedOrRemoved edge)
 {
     return(edge.Vertex1 < edge.Vertex2 ? "v" + edge.Vertex1.ToString() + "v" + edge.Vertex2.ToString() :
            "v" + edge.Vertex2.ToString() + "v" + edge.Vertex1.ToString());
 }
Beispiel #8
0
 protected abstract void AddEdge(EdgesAddedOrRemoved edge);