Exemple #1
0
        public void InitHeaders(int ncolumns)
        {
            rootHeader = new ColumnHeader();

            for (int i = 0; i<ncolumns; i++)
            {
                ColumnHeader header = new ColumnHeader();

                columnHeaders.Add(header);

                // embedding the header to the list among other headers

                header.left = rootHeader.left;
                header.right = rootHeader;

                rootHeader.left.right = header;
                rootHeader.left = header;
            }
        }
Exemple #2
0
 // uncover
 void Restore(ColumnHeader colHeader)
 {
     //Iterate all the nodes in the column
     for (Node row = colHeader.up; row != colHeader; row = row.up) {
         //Reconnect vertically (add the row)
         for (Node col = row.left; col != row; col = col.left)
         {
             col.header.count++;
             col.down.up = col;
             col.up.down = col;
         }
     }
     //Reconnect the header
     colHeader.right.left = colHeader;
     colHeader.left.right = colHeader;
 }
Exemple #3
0
        // cover
        void Remove(ColumnHeader colHeader)
        {
            // Remove the header
            colHeader.right.left = colHeader.left;
            colHeader.left.right = colHeader.right;

            // Iterate all the nodes in the column going down
            for (Node row = colHeader.down; row != colHeader; row = row.down) {
                // Remove the rows for every node
                for (Node col = row.right; col != row; col = col.right) {
                    // Removing the items
                    col.down.up = col.up;
                    col.up.down = col.down;
                    col.header.count--;
                }
            }
        }