public void ComputeDetourAroundVertex()

in GraphLayout/MSAGL/GraphmapsWithMesh/Tiling.cs [1076:1149]


        public void ComputeDetourAroundVertex(WeightedPoint[] pt, int numPoints)
        {
            for (int i = numPoints; i >= 1; i--)
            {
                var x = pt[i].X;
                var y = pt[i].Y;
                int neighb;

                if (x + 1 < N && y + 1 < N && NodeMap[x + 1, y + 1] > 0 &&
                    x + 2 < N && y < N && NodeMap[x + 2, y] > 0)
                {
                    for (neighb = 1; neighb <= DegList[NodeMap[x + 1, y + 1]]; neighb++)
                    {
                        if (EList[NodeMap[x + 1, y + 1], neighb].NodeId == VList[NodeMap[x + 2, y]].Id)
                        {
                            SelectEdge(EList, DegList, VList[NodeMap[x + 1, y + 1]], VList[EList[NodeMap[x + 1, y + 1], neighb].NodeId], 6);
                            break;
                        }
                    }
                }

                if (x + 1 > 0 && y - 1 > 0 && NodeMap[x + 1, y - 1] > 0 &&
                    x + 2 < N && y < N && NodeMap[x + 2, y] > 0)
                {
                    for (neighb = 1; neighb <= DegList[NodeMap[x + 1, y - 1]]; neighb++)
                    {
                        if (EList[NodeMap[x + 1, y - 1], neighb].NodeId == VList[NodeMap[x + 2, y]].Id)
                        {
                            SelectEdge(EList, DegList, VList[NodeMap[x + 1, y - 1]], VList[EList[NodeMap[x + 1, y - 1], neighb].NodeId], 6);
                            break;
                        }
                    }
                }

                if (x - 1 > 0 && y - 1 > 0 && NodeMap[x - 1, y - 1] > 0 &&
                    x - 2 > 0 && y > 0 && NodeMap[x - 2, y] > 0)
                {
                    for (neighb = 1; neighb <= DegList[NodeMap[x - 1, y - 1]]; neighb++)
                    {
                        if (EList[NodeMap[x - 1, y - 1], neighb].NodeId == VList[NodeMap[x - 2, y]].Id)
                        {
                            SelectEdge(EList, DegList, VList[NodeMap[x - 1, y - 1]], VList[EList[NodeMap[x - 1, y - 1], neighb].NodeId], 6);
                            break;
                        }
                    }
                }

                if (x - 1 > 0 && y + 1 < N && NodeMap[x - 1, y + 1] > 0 &&
                    x - 2 > 0 && y > 0 && NodeMap[x - 2, y] > 0)
                {
                    for (neighb = 1; neighb <= DegList[NodeMap[x - 1, y + 1]]; neighb++)
                    {
                        if (EList[NodeMap[x - 1, y + 1], neighb].NodeId == VList[NodeMap[x - 2, y]].Id)
                        {
                            SelectEdge(EList, DegList, VList[NodeMap[x - 1, y + 1]], VList[EList[NodeMap[x - 1, y + 1], neighb].NodeId], 6);
                            break;
                        }
                    }
                }

                if (x - 1 > 0 && y + 1 < N && NodeMap[x - 1, y + 1] > 0 &&
                   x + 1 < N && y + 1 < N && NodeMap[x + 1, y + 1] > 0)
                {
                    for (neighb = 1; neighb <= DegList[NodeMap[x - 1, y + 1]]; neighb++)
                    {
                        if (EList[NodeMap[x - 1, y + 1], neighb].NodeId == VList[NodeMap[x + 1, y + 1]].Id)
                        {
                            SelectEdge(EList, DegList, VList[NodeMap[x - 1, y + 1]], VList[EList[NodeMap[x - 1, y + 1], neighb].NodeId], 6);
                            break;
                        }
                    }
                }
            }
        }