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 je...@apache.org on 2006/01/25 14:48:38 UTC
svn commit: r372214 - in /xmlgraphics/fop/trunk:
src/java/org/apache/fop/render/rtf/RTFHandler.java status.xml
Author: jeremias
Date: Wed Jan 25 05:48:32 2006
New Revision: 372214
URL: http://svn.apache.org/viewcvs?rev=372214&view=rev
Log:
Bugfix: Regions with non-standard names got ignored in RTF output leading to missing headers and footers.
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java
xmlgraphics/fop/trunk/status.xml
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java?rev=372214&r1=372213&r2=372214&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java Wed Jan 25 05:48:32 2006
@@ -32,6 +32,9 @@
// FOP
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.datatypes.LengthBase;
+import org.apache.fop.datatypes.PercentBaseContext;
+import org.apache.fop.datatypes.SimplePercentBaseContext;
import org.apache.fop.fo.FOEventHandler;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.flow.BasicLink;
@@ -57,6 +60,7 @@
import org.apache.fop.fo.flow.TableRow;
import org.apache.fop.fo.pagination.Flow;
import org.apache.fop.fo.pagination.PageSequence;
+import org.apache.fop.fo.pagination.Region;
import org.apache.fop.fo.pagination.SimplePageMaster;
import org.apache.fop.fo.pagination.StaticContent;
import org.apache.fop.fo.Constants;
@@ -121,6 +125,7 @@
//in current page-sequence
private BuilderContext builderContext = new BuilderContext(null);
+ private SimplePageMaster pagemaster;
/**
* Creates a new RTF structure handler.
@@ -179,7 +184,7 @@
String reference = pageSeq.getMasterReference();
- SimplePageMaster pagemaster
+ this.pagemaster
= pageSeq.getRoot().getLayoutMasterSet().getSimplePageMaster(reference);
//only simple-page-master supported, so pagemaster may be null
@@ -232,7 +237,11 @@
try {
log.debug("starting flow: " + fl.getFlowName());
- if (fl.getFlowName().equals("xsl-region-body")) {
+ boolean handled = false;
+ Region regionBody = pagemaster.getRegion(Constants.FO_REGION_BODY);
+ Region regionBefore = pagemaster.getRegion(Constants.FO_REGION_BEFORE);
+ Region regionAfter = pagemaster.getRegion(Constants.FO_REGION_AFTER);
+ if (fl.getFlowName().equals(regionBody.getRegionName())) {
// if there is no header in current page-sequence but there has been
// a header in a previous page-sequence, insert an empty header.
if (bPrevHeaderSpecified && !bHeaderSpecified) {
@@ -256,8 +265,9 @@
(IRtfAfterContainer.class, true, this);
contAfter.newAfter(attr);
}
-
- } else if (fl.getFlowName().equals("xsl-region-before")) {
+ handled = true;
+ } else if (regionBefore != null
+ && fl.getFlowName().equals(regionBefore.getRegionName())) {
bHeaderSpecified = true;
bPrevHeaderSpecified = true;
@@ -274,7 +284,9 @@
RtfBefore before = c.newBefore(beforeAttributes);
builderContext.pushContainer(before);
- } else if (fl.getFlowName().equals("xsl-region-after")) {
+ handled = true;
+ } else if (regionAfter != null
+ && fl.getFlowName().equals(regionAfter.getRegionName())) {
bFooterSpecified = true;
bPrevFooterSpecified = true;
@@ -292,6 +304,10 @@
RtfAfter after = c.newAfter(afterAttributes);
builderContext.pushContainer(after);
+ handled = true;
+ }
+ if (!handled) {
+ log.warn("A " + fl.getLocalName() + " has been skipped: " + fl.getFlowName());
}
} catch (IOException ioe) {
log.error("startFlow: " + ioe.getMessage());
@@ -312,11 +328,16 @@
}
try {
- if (fl.getFlowName().equals("xsl-region-body")) {
+ Region regionBody = pagemaster.getRegion(Constants.FO_REGION_BODY);
+ Region regionBefore = pagemaster.getRegion(Constants.FO_REGION_BEFORE);
+ Region regionAfter = pagemaster.getRegion(Constants.FO_REGION_AFTER);
+ if (fl.getFlowName().equals(regionBody.getRegionName())) {
//just do nothing
- } else if (fl.getFlowName().equals("xsl-region-before")) {
+ } else if (regionBefore != null
+ && fl.getFlowName().equals(regionBefore.getRegionName())) {
builderContext.popContainer();
- } else if (fl.getFlowName().equals("xsl-region-after")) {
+ } else if (regionAfter != null
+ && fl.getFlowName().equals(regionAfter.getRegionName())) {
builderContext.popContainer();
}
} catch (Exception e) {
@@ -1421,16 +1442,23 @@
if (foNode instanceof PageSequence) {
PageSequence pageSequence = (PageSequence) foNode;
- FONode regionBefore = (FONode) pageSequence.flowMap.get("xsl-region-before");
- FONode regionAfter = (FONode) pageSequence.flowMap.get("xsl-region-after");
-
+ Region regionBefore = pagemaster.getRegion(Constants.FO_REGION_BEFORE);
if (regionBefore != null) {
- recurseFONode(regionBefore);
+ FONode staticBefore = (FONode) pageSequence.flowMap.get(
+ regionBefore.getRegionName());
+ if (staticBefore != null) {
+ recurseFONode(staticBefore);
+ }
}
-
+ Region regionAfter = pagemaster.getRegion(Constants.FO_REGION_AFTER);
if (regionAfter != null) {
- recurseFONode(regionAfter);
+ FONode staticAfter = (FONode) pageSequence.flowMap.get(
+ regionAfter.getRegionName());
+ if (staticAfter != null) {
+ recurseFONode(staticAfter);
+ }
}
+
recurseFONode( pageSequence.getMainFlow() );
} else if (foNode instanceof Table) {
Modified: xmlgraphics/fop/trunk/status.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/status.xml?rev=372214&r1=372213&r2=372214&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/status.xml (original)
+++ xmlgraphics/fop/trunk/status.xml Wed Jan 25 05:48:32 2006
@@ -28,6 +28,10 @@
<changes>
<release version="FOP Trunk">
<action context="Code" dev="JM" type="fix">
+ Bugfix: Regions with non-standard names got ignored in RTF output leading to
+ missing headers and footers.
+ </action>
+ <action context="Code" dev="JM" type="fix">
The RTF output now properly generates the "\landscape" flag for documents in
landscape orientation.
</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org