iTextSharp.text.pdf.PdfTable.UpdateRowAdditionsInternal C# (CSharp) Метод

UpdateRowAdditionsInternal() приватный Метод

private UpdateRowAdditionsInternal ( ) : void
Результат void
        private void UpdateRowAdditionsInternal() {
            // correct table : fill empty cells/ parse table in table
            int prevRows = Rows;
            int rowNumber = 0;
            int groupNumber = 0;
            bool groupChange;
            int firstDataRow = table.LastHeaderRow + 1;
            Cell cell;
            PdfCell currentCell;
            ArrayList newCells = new ArrayList();
            int rows = table.Size + 1;
            float[] offsets = new float[rows];
            for (int i = 0; i < rows; i++) {
                offsets[i] = Bottom;
            }
            
            // loop over all the rows
            foreach (Row row in table) {
                groupChange = false;
                if (row.IsEmpty()) {
                    if (rowNumber < rows - 1 && offsets[rowNumber + 1] > offsets[rowNumber]) offsets[rowNumber + 1] = offsets[rowNumber];
                }
                else {
                    for (int i = 0; i < row.Columns; i++) {
                        cell = (Cell) row.GetCell(i);
                        if (cell != null) {
                            currentCell = new PdfCell(cell, rowNumber+prevRows, positions[i], positions[i + cell.Colspan], offsets[rowNumber], Cellspacing, Cellpadding);
                            if (rowNumber < firstDataRow) {
                                currentCell.SetHeader();
                                headercells.Add(currentCell);
                                if (!table.NotAddedYet)
                                    continue;
                            }
                            try {
                                if (offsets[rowNumber] - currentCell.Height - Cellpadding < offsets[rowNumber + currentCell.Rowspan]) {
                                    offsets[rowNumber + currentCell.Rowspan] = offsets[rowNumber] - currentCell.Height - Cellpadding;
                                }
                            }
                            catch (ArgumentOutOfRangeException) {
                                if (offsets[rowNumber] - currentCell.Height < offsets[rows - 1]) {
                                    offsets[rows - 1] = offsets[rowNumber] - currentCell.Height;
                                }
                            }
                            currentCell.GroupNumber = groupNumber;
                            groupChange |= cell.GroupChange;
                            newCells.Add(currentCell);
                        }
                    }
                }
                rowNumber++;
                if ( groupChange ) groupNumber++;
            }
            
            // loop over all the cells
            int n = newCells.Count;
            for (int i = 0; i < n; i++) {
                currentCell = (PdfCell) newCells[i];
                try {
                    currentCell.Bottom = offsets[currentCell.Rownumber-prevRows + currentCell.Rowspan];
                }
                catch (ArgumentOutOfRangeException) {
                    currentCell.Bottom = offsets[rows - 1];
                }
            }
            cells.AddRange(newCells);
            Bottom = offsets[rows - 1];
        }