Anton пре 5 година
родитељ
комит
e9fb63ea18

BIN
.vs/GraphDrawer/v16/.suo


BIN
.vs/GraphDrawer/v16/Server/sqlite3/storage.ide


BIN
.vs/GraphDrawer/v16/Server/sqlite3/storage.ide-wal


+ 10 - 8
GraphDrawer/Edge.cs

@@ -9,12 +9,14 @@ namespace GraphDrawer
         public Vertex StartVertex { get; }
         public Vertex FinishVertex { get; }
         public int? Weight { get; set; }
+        public bool IsFocused { get; }
         
         public Edge(Line line, Vertex v1, Vertex v2)
         {
             Line = line;
             StartVertex = v1;
             FinishVertex = v2;
+            IsFocused = false;
         }
 
         public Edge(ArrowLine line, Vertex v1, Vertex v2)
@@ -22,6 +24,7 @@ namespace GraphDrawer
             ArrowLine = line;
             StartVertex = v1;
             FinishVertex = v2;
+            IsFocused = true;
         }
 
         public Edge(Line line, Vertex v1, Vertex v2, int weight)
@@ -30,16 +33,15 @@ namespace GraphDrawer
             StartVertex = v1;
             FinishVertex = v2;
             Weight = weight;
+            IsFocused = false;
         }
-
-        public bool IsFocused
+        public Edge(ArrowLine line, Vertex v1, Vertex v2, int weight)
         {
-            get
-            {
-                if (ArrowLine == null)
-                    return true;
-                return false;
-            }
+            ArrowLine = line;
+            StartVertex = v1;
+            FinishVertex = v2;
+            IsFocused = true;
+            Weight = weight;
         }
 
         public static double GetCenterByX(Edge edge)

+ 55 - 25
GraphDrawer/GraphByClick.xaml.cs

@@ -287,14 +287,42 @@ namespace GraphDrawer
                         for (int k = 0; k < EdgeArray.edge.Length; k++)
                         {
                             var edge = EdgeArray.edge[k];
-                            if (Vertex.Compare(edge.FinishVertex, vertex1) && Vertex.Compare(edge.StartVertex, vertex2))
-                                if (edge.Weight > 0)
-                                    matrix[i, j] = (int)edge.Weight;
-                                else
-                                    matrix[i, j] = 1;
-                            else if (Vertex.Compare(edge.StartVertex, vertex1) && Vertex.Compare(edge.FinishVertex, vertex2))
-                                if (edge.Weight > 0)
-                                    matrix[i, j] = (int)edge.Weight;
+                            if (edge.IsFocused)
+                            {
+                                if (Vertex.Compare(edge.FinishVertex, vertex1) && Vertex.Compare(edge.StartVertex, vertex2))
+                                    if (edge.Weight > 0)
+                                        matrix[i, j] = (int)edge.Weight;
+                                    else
+                                        matrix[i, j] = 1;
+                                else if (Vertex.Compare(edge.StartVertex, vertex1) && Vertex.Compare(edge.FinishVertex, vertex2))
+                                    if (edge.Weight > 0)
+                                        matrix[i, j] = (int)edge.Weight;
+                            }
+                            else
+                            {
+                                if (Vertex.Compare(edge.FinishVertex, vertex1) && Vertex.Compare(edge.StartVertex, vertex2))
+                                    if (edge.Weight > 0)
+                                    {
+                                        matrix[i, j] = (int)edge.Weight;
+                                        InvertElement(matrix, i, j);
+                                    }
+                                    else
+                                    {
+                                        matrix[i, j] = 1;
+                                        InvertElement(matrix, i, j);
+                                    }
+                                else if (Vertex.Compare(edge.StartVertex, vertex1) && Vertex.Compare(edge.FinishVertex, vertex2))
+                                    if (edge.Weight > 0)
+                                    {
+                                        matrix[i, j] = (int)edge.Weight;
+                                        InvertElement(matrix, i, j);
+                                    }
+                                    else
+                                    {
+                                        matrix[i, j] = 1;
+                                        InvertElement(matrix, i, j);
+                                    }
+                            }
                         }
                     }
                     else
@@ -304,11 +332,7 @@ namespace GraphDrawer
                 }
             }
 
-            for (int i = 0; i < length; i++)
-                for (int j = 0; j < length; j++)
-                    matrix[i, j] = matrix[j, i];
-
-            MatrixOutput output = new MatrixOutput(matrix);
+            var output = new MatrixOutput(matrix);
             output.Show();
         }
 
@@ -351,6 +375,12 @@ namespace GraphDrawer
             matrix.Show();
             Close();
         }
+
+        public int[,] InvertElement(int[,] matrix, int indexX, int indexY)
+        {
+            matrix[indexY, indexX] = matrix[indexX, indexY];
+            return matrix;
+        }
     }
 
     public static class VertexArray
@@ -432,10 +462,10 @@ namespace GraphDrawer
             edge[edgeCount-1] = new Edge(line[edgeCount-1], v1, v2);
             line[edgeCount - 1].Stroke = new SolidColorBrush(Color.FromRgb(0, 0, 0));
             line[edgeCount - 1].StrokeThickness = 4;
-            line[edgeCount - 1].X1 = v1.X;
-            line[edgeCount - 1].Y1 = v1.Y;
-            line[edgeCount - 1].X2 = v2.X;
-            line[edgeCount - 1].Y2 = v2.Y;
+            line[edgeCount - 1].X1 = v1.CenterByX;
+            line[edgeCount - 1].Y1 = v1.CenterByY;
+            line[edgeCount - 1].X2 = v2.CenterByX;
+            line[edgeCount - 1].Y2 = v2.CenterByY;
             Panel.SetZIndex(line[edgeCount-1], -5);
             canvas.Children.Add(line[edgeCount - 1]);
         }
@@ -449,11 +479,11 @@ namespace GraphDrawer
             line[edgeCount - 1] = new Line
             {
                 StrokeThickness = 2,
-                X1 = v1.X,
-                Y1 = v1.Y,
+                X1 = v1.CenterByX,
+                Y1 = v1.CenterByY,
                 Stroke = new SolidColorBrush(lineColor),
-                Y2 = v2.Y,
-                X2 = v2.X
+                Y2 = v2.CenterByY,
+                X2 = v2.CenterByX
             };
             edge[edgeCount - 1] = new Edge(line[edgeCount - 1], v1, v2) {Weight = weight};
 
@@ -506,10 +536,10 @@ namespace GraphDrawer
             edge[edgeCount - 1] = new Edge(ArrowLine[edgeCount - 1], v1, v2);
             ArrowLine[edgeCount - 1].Stroke = new SolidColorBrush(lineColor);
             ArrowLine[edgeCount - 1].StrokeThickness = 2;
-            ArrowLine[edgeCount - 1].X1 = v1.CenterByX - 5;
-            ArrowLine[edgeCount - 1].Y1 = v1.CenterByY - 5;
-            ArrowLine[edgeCount - 1].X2 = v2.CenterByX - 2;
-            ArrowLine[edgeCount - 1].Y2 = v2.CenterByY - 3;
+            ArrowLine[edgeCount - 1].X1 = v1.CenterByX;
+            ArrowLine[edgeCount - 1].Y1 = v1.CenterByY;
+            ArrowLine[edgeCount - 1].X2 = v2.CenterByX;
+            ArrowLine[edgeCount - 1].Y2 = v2.CenterByY;
             edge[edgeCount - 1].Weight = Weight;
 
             if (Weight > 0)

+ 1 - 1
GraphDrawer/MatrixOutput.xaml.cs

@@ -17,7 +17,7 @@ namespace GraphDrawer
     /// <summary>
     /// Interaction logic for MatrixOutput.xaml
     /// </summary>
-    public partial class MatrixOutput : Window
+    public partial class MatrixOutput
     {
         public MatrixOutput(int[,] matrix)
         {

BIN
GraphDrawer/bin/Debug/GraphDrawer.exe


BIN
GraphDrawer/bin/Debug/GraphDrawer.pdb


BIN
GraphDrawer/obj/Debug/GraphDrawer.csprojAssemblyReference.cache


BIN
GraphDrawer/obj/Debug/GraphDrawer.exe


BIN
GraphDrawer/obj/Debug/GraphDrawer.pdb