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;
}
}
}
}
}
}
}