if (rowController == null)
{
Log.warn("Table-Cell has no parent. Unable to calculate the image-size.");
return null;
}
final Section tableRow = (Section) rowController.getNode();
// we are now making the assumption, that the row is a section, that contains the table-cell.
// This breaks the ability to return nodes or to construct reports on the fly, but the OO-report format
// is weird anyway and wont support such advanced techniques for the next few centuries ..
final int columnPos = findNodeInSection(tableRow, tableCell,"covered-table-cell");
if (columnPos == -1)
{
Log.warn("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
return null;
}
final LayoutController tableController = rowController.getParent();
if (tableController == null)
{
Log.warn("Table-Row has no Table. Unable to calculate the image-size.");
return null;
}
final Section table = (Section) tableController.getNode();
// ok, we got a table, so as next we have to search for the columns now.
final Section columns = (Section) table.findFirstChild(OfficeNamespaces.TABLE_NS, "table-columns");
if (columns.getNodeCount() <= columnPos + colSpan)
{
// the colspan is to large. The table definition is therefore invalid. We do not try to fix this.
Log.warn(
"The Table's defined columns do not match the col-span or col-position. Unable to calculate the image-size.");
return null;
}
final ImageElementContext context = new ImageElementContext(colSpan, rowSpan);
final Node[] columnDefs = columns.getNodeArray();
int columnCounter = 0;
for (int i = 0; i < columnDefs.length; i++)
{
final Element column = (Element) columnDefs[i];