コード例 #1
0
ファイル: GuiVesselsPartGraph.cs プロジェクト: trumb/KML
 private bool InsertGrid(int x, int y, GuiVesselsPartGraphNode node)
 {
     // Grid koords [-4][-6] will be translated in list index [-4 - minX][-6 - minY]
     // so index will always be >= 0
     // Also keep the grid (list of lists) quadratic
     // On new min value create a new list, insert amount of blanks, append old list
     // and replace list by new list
     if (x < PartGridMinX)
     {
         int diffX = PartGridMinX - x;
         List <List <GuiVesselsPartGraphNode> > list = new List <List <GuiVesselsPartGraphNode> >();
         for (int i = 0; i < diffX; i++)
         {
             List <GuiVesselsPartGraphNode> l = new List <GuiVesselsPartGraphNode>();
             for (int j = PartGridMinY; j <= PartGridMaxY; j++)
             {
                 l.Add(null);
             }
             list.Add(l);
         }
         list.AddRange(PartGrid);
         PartGrid     = list;
         PartGridMinX = x;
     }
     if (y < PartGridMinY)
     {
         int diffY = PartGridMinY - y;
         for (int i = 0; i < PartGrid.Count; i++)
         {
             List <GuiVesselsPartGraphNode> list = new List <GuiVesselsPartGraphNode>();
             for (int j = 0; j < diffY; j++)
             {
                 list.Add(null);
             }
             list.AddRange(PartGrid[i]);
             PartGrid[i] = list;
         }
         PartGridMinY = y;
     }
     if (x > PartGridMaxX)
     {
         int diffX = x - PartGridMaxX;
         for (int i = 0; i < diffX; i++)
         {
             List <GuiVesselsPartGraphNode> list = new List <GuiVesselsPartGraphNode>();
             for (int j = PartGridMinY; j <= PartGridMaxY; j++)
             {
                 list.Add(null);
             }
             PartGrid.Add(list);
         }
         PartGridMaxX = x;
     }
     if (y > PartGridMaxY)
     {
         int diffY = y - PartGridMaxY;
         for (int i = 0; i < PartGrid.Count; i++)
         {
             for (int j = 0; j < diffY; j++)
             {
                 PartGrid[i].Add(null);
             }
         }
         PartGridMaxY = y;
     }
     if (PartGrid[x - PartGridMinX][y - PartGridMinY] == null)
     {
         PartGrid[x - PartGridMinX][y - PartGridMinY] = node;
         return(true);
     }
     else
     {
         return(false);
     }
 }