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 ss...@apache.org on 2015/02/06 16:48:44 UTC
svn commit: r1657872 - in
/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr: LocalBreaker.java
table/TableCellLayoutManager.java table/TableContentLayoutManager.java
table/TableLayoutManager.java
Author: ssteiner
Date: Fri Feb 6 15:48:44 2015
New Revision: 1657872
URL: http://svn.apache.org/r1657872
Log:
FOP-2443: Repeated Table headers and footers with markers are not being treated as artifacts
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LocalBreaker.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LocalBreaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LocalBreaker.java?rev=1657872&r1=1657871&r2=1657872&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LocalBreaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/LocalBreaker.java Fri Feb 6 15:48:44 2015
@@ -31,6 +31,17 @@ public abstract class LocalBreaker exten
private int displayAlign;
private int ipd;
private int overflow;
+ private boolean repeatedHeader;
+ private boolean isDescendantOfTableFooter;
+ private boolean repeatedFooter;
+
+ public void setRepeatedFooter(boolean repeatedFooter) {
+ this.repeatedFooter = repeatedFooter;
+ }
+
+ public void setDescendantOfTableFooter(boolean isDescendantOfTableFooter) {
+ this.isDescendantOfTableFooter = isDescendantOfTableFooter;
+ }
public LocalBreaker(BlockStackingLayoutManager lm, int ipd, int displayAlign) {
this.lm = lm;
@@ -38,6 +49,10 @@ public abstract class LocalBreaker exten
this.displayAlign = displayAlign;
}
+ public void setRepeatedHeader(boolean repeatedHeader) {
+ this.repeatedHeader = repeatedHeader;
+ }
+
/** {@inheritDoc} */
protected boolean isPartOverflowRecoveryActivated() {
// For side regions, this must be disabled because of wanted overflow.
@@ -109,6 +124,15 @@ public abstract class LocalBreaker exten
}
protected void addAreas(PositionIterator posIter, LayoutContext context) {
+ if (isDescendantOfTableFooter) {
+ if (repeatedHeader) {
+ context.setTreatAsArtifact(true);
+ }
+ } else {
+ if (repeatedFooter) {
+ context.setTreatAsArtifact(true);
+ }
+ }
AreaAdditionUtil.addAreas(lm, posIter, context);
}
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java?rev=1657872&r1=1657871&r2=1657872&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java Fri Feb 6 15:48:44 2015
@@ -88,6 +88,7 @@ public class TableCellLayoutManager exte
private boolean isDescendantOfTableFooter;
private boolean isDescendantOfTableHeader;
private boolean hasRetrieveTableMarker;
+ private boolean hasRepeatedHeader;
// place holder for the addAreas arguments
private boolean savedAddAreasArguments;
@@ -140,6 +141,9 @@ public class TableCellLayoutManager exte
return getTableCell().getTable();
}
+ public void setHasRepeatedHeader(boolean hasRepeatedHeader) {
+ this.hasRepeatedHeader = hasRepeatedHeader;
+ }
/** {@inheritDoc} */
protected int getIPIndents() {
@@ -534,6 +538,12 @@ public class TableCellLayoutManager exte
recreateChildrenLMs();
int displayAlign = ((TableCell) this.getFObj()).getDisplayAlign();
TableCellBreaker breaker = new TableCellBreaker(this, cellIPD, displayAlign);
+ breaker.setDescendantOfTableFooter(isDescendantOfTableHeader);
+ if (isDescendantOfTableHeader) {
+ breaker.setRepeatedHeader(hasRepeatedHeader);
+ } else {
+ breaker.setRepeatedFooter(layoutContext.treatAsArtifact());
+ }
breaker.doLayout(usedBPD, false);
// this is needed so the next time the LMs are recreated they look like the originals; this
// is due to the fact that during the doLayout() above the FO tree changes when the
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java?rev=1657872&r1=1657871&r2=1657872&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java Fri Feb 6 15:48:44 2015
@@ -78,6 +78,7 @@ public class TableContentLayoutManager i
private TableStepper stepper;
private boolean headerIsBeingRepeated;
+ private boolean atLeastOnce;
/**
* Main constructor
@@ -478,7 +479,9 @@ public class TableContentLayoutManager i
// if there are TCLMs saved because they have a RetrieveTableMarker, we repeat the header areas now;
// this can also be done after the areas for the footer are added but should be the same as here
+ tableLM.setRepeateHeader(atLeastOnce);
tableLM.repeatAddAreasForSavedTableHeaderTableCellLayoutManagers();
+ atLeastOnce = true;
if (footerElements != null) {
boolean ancestorTreatAsArtifact = layoutContext.treatAsArtifact();
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java?rev=1657872&r1=1657871&r2=1657872&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java Fri Feb 6 15:48:44 2015
@@ -99,6 +99,8 @@ public class TableLayoutManager extends
private boolean hasRetrieveTableMarker;
+ private boolean repeatedHeader;
+
private List<List<KnuthElement>> headerFootnotes = Collections.emptyList();
private List<List<KnuthElement>> footerFootnotes = Collections.emptyList();
@@ -558,6 +560,9 @@ public class TableLayoutManager extends
areAllTCLMsSaved = true;
for (int i = 0; i < savedTCLMs.size(); i++) {
TableCellLayoutManager tclm = savedTCLMs.get(i);
+ if (this.repeatedHeader) {
+ tclm.setHasRepeatedHeader(true);
+ }
tclm.repeatAddAreas();
}
}
@@ -652,6 +657,10 @@ public class TableLayoutManager extends
this.footerFootnotes = footnotes;
}
+ public void setRepeateHeader(boolean repeateHeader) {
+ this.repeatedHeader = repeateHeader;
+ }
+
List<List<KnuthElement>> getFooterFootnotes() {
return footerFootnotes;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org