SetHeader() private method

private SetHeader ( ) : void
return void
コード例 #1
0
        /// <summary>
        /// Updates the table row additions in the underlying table object
        /// </summary>

        private void updateRowAdditionsInternal()
        {
            // correct table : fill empty cells/ parse table in table
            var     prevRows    = Rows;
            var     rowNumber   = 0;
            var     groupNumber = 0;
            bool    groupChange;
            var     firstDataRow = Table.LastHeaderRow + 1;
            Cell    cell;
            PdfCell currentCell;
            var     newCells = new ArrayList();
            var     rows     = Table.Size + 1;
            var     offsets  = new float[rows];

            for (var 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 (var 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
            var n = newCells.Count;

            for (var 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];
        }
コード例 #2
0
ファイル: PdfTable.cs プロジェクト: hjgode/iTextSharpCF
        /**
        * Updates the table row additions in the underlying table object
        */
        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.FirstDataRow;
            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);
                            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;
                                }
                            }
                            if (rowNumber < firstDataRow) {
                                currentCell.SetHeader();
                                headercells.Add(currentCell);
                            }
                            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];
        }