/** * Performs a second pass over all cells to handle cell row/column spanning. */ protected internal void HandleCellSpanning() { RtfCell deletedCell = new RtfCell(true); for (int i = 0; i < this.cells.Count; i++) { RtfCell rtfCell = (RtfCell)this.cells[i]; if (rtfCell.Colspan > 1) { int cSpan = rtfCell.Colspan; for (int j = i + 1; j < i + cSpan; j++) { if (j < this.cells.Count) { RtfCell rtfCellMerge = (RtfCell)this.cells[j]; rtfCell.SetCellRight(rtfCell.GetCellRight() + rtfCellMerge.GetCellWidth()); rtfCell.SetCellWidth(rtfCell.GetCellWidth() + rtfCellMerge.GetCellWidth()); this.cells[j] = deletedCell; } } } if (rtfCell.Rowspan > 1) { ArrayList rows = this.parentTable.GetRows(); for (int j = 1; j < rtfCell.Rowspan; j++) { RtfRow mergeRow = (RtfRow)rows[this.rowNumber + j]; if (this.rowNumber + j < rows.Count) { RtfCell rtfCellMerge = (RtfCell)mergeRow.GetCells()[i]; rtfCellMerge.SetCellMergeChild(rtfCell); } if (rtfCell.Colspan > 1) { int cSpan = rtfCell.Colspan; for (int k = i + 1; k < i + cSpan; k++) { if (k < mergeRow.GetCells().Count) { mergeRow.GetCells()[k] = deletedCell; } } } } } } }
/** * Constructs a RtfCell based on a Cell. * * @param doc The RtfDocument this RtfCell belongs to * @param row The RtfRow this RtfCell lies in * @param cell The Cell to base this RtfCell on */ protected internal RtfCell(RtfDocument doc, RtfRow row, Cell cell) { this.document = doc; this.parentRow = row; ImportCell(cell); }
/// <summary> /// Constructs a RtfCell based on a Cell. /// @since 2.1.3 /// </summary> /// <param name="doc">The RtfDocument this RtfCell belongs to</param> /// <param name="row">The RtfRow this RtfCell lies in</param> /// <param name="cell">The PdfPCell to base this RtfCell on</param> protected internal RtfCell(RtfDocument doc, RtfRow row, PdfPCell cell) { _document = doc; _parentRow = row; importCell(cell); }