You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ke...@apache.org on 2002/01/08 09:18:42 UTC
cvs commit: xml-fop/src/org/apache/fop/fo/flow RowSpanMgr.java TableBody.java
keiron 02/01/08 00:18:42
Modified: src/org/apache/fop/fo/flow Tag: fop-0_20_2-maintain
RowSpanMgr.java TableBody.java
Log:
fix for infinite loops with table keeps
Submitted by: Christian Geisert <Ch...@isu-gmbh.de>
Revision Changes Path
No revision
No revision
1.2.2.1 +21 -1 xml-fop/src/org/apache/fop/fo/flow/RowSpanMgr.java
Index: RowSpanMgr.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/RowSpanMgr.java,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -u -r1.2 -r1.2.2.1
--- RowSpanMgr.java 30 Jul 2001 20:29:23 -0000 1.2
+++ RowSpanMgr.java 8 Jan 2002 08:18:42 -0000 1.2.2.1
@@ -1,5 +1,5 @@
/*
- * -- $Id: RowSpanMgr.java,v 1.2 2001/07/30 20:29:23 tore Exp $ --
+ * -- $Id: RowSpanMgr.java,v 1.2.2.1 2002/01/08 08:18:42 keiron Exp $ --
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
@@ -52,6 +52,8 @@
private SpanInfo spanInfo[];
+ private boolean ignoreKeeps = false;
+
public RowSpanMgr(int numCols) {
this.spanInfo = new SpanInfo[numCols];
}
@@ -123,6 +125,24 @@
return spanInfo[colNum - 1].isInLastRow();
} else
return false;
+ }
+
+ /**
+ * helper method to prevent infinite loops if
+ * keeps or spans are not fitting on a page
+ * @param <code>true</code> if keeps and spans should be ignored
+ */
+ public void setIgnoreKeeps(boolean ignoreKeeps) {
+ this.ignoreKeeps = ignoreKeeps;
+ }
+
+ /**
+ * helper method (i.e. hack ;-) to prevent infinite loops if
+ * keeps or spans are not fitting on a page
+ * @return true if keeps or spans should be ignored
+ */
+ public boolean ignoreKeeps() {
+ return ignoreKeeps;
}
}
1.38.2.1 +12 -3 xml-fop/src/org/apache/fop/fo/flow/TableBody.java
Index: TableBody.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/TableBody.java,v
retrieving revision 1.38
retrieving revision 1.38.2.1
diff -u -r1.38 -r1.38.2.1
--- TableBody.java 6 Aug 2001 09:12:59 -0000 1.38
+++ TableBody.java 8 Jan 2002 08:18:42 -0000 1.38.2.1
@@ -1,5 +1,5 @@
/*
- * $Id: TableBody.java,v 1.38 2001/08/06 09:12:59 keiron Exp $
+ * $Id: TableBody.java,v 1.38.2.1 2002/01/08 08:18:42 keiron Exp $
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
@@ -186,8 +186,9 @@
}
return status;
}
- if (keepWith.size()
- > 0) { // && status.getCode() == Status.AREA_FULL_NONE
+ if ((keepWith.size() > 0)
+ && (!rowSpanMgr.ignoreKeeps())) {
+ // && status.getCode() == Status.AREA_FULL_NONE
// FIXME!!! Handle rows spans!!!
row.removeLayout(areaContainer);
for (Enumeration e = keepWith.elements();
@@ -198,6 +199,10 @@
}
if (i == 0) {
resetMarker();
+
+ // Fix for infinite loop bug if keeps are too big for page
+ rowSpanMgr.setIgnoreKeeps(true);
+
return new Status(Status.AREA_FULL_NONE);
}
}
@@ -212,6 +217,10 @@
area.increaseHeight(areaContainer.getHeight());
area.setAbsoluteHeight(areaContainer.getAbsoluteHeight());
}
+
+ // Fix for infinite loop bug if spanned rows are too big for page
+ rowSpanMgr.setIgnoreKeeps(true);
+
return status;
} else if (status.getCode() == Status.KEEP_WITH_NEXT
|| rowSpanMgr.hasUnfinishedSpans()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org