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 sp...@apache.org on 2006/01/10 21:18:22 UTC
svn commit: r367775 - in /xmlgraphics/fop/trunk: ./
src/java/org/apache/fop/area/ src/java/org/apache/fop/layoutmgr/
test/layoutengine/standard-testcases/
Author: spepping
Date: Tue Jan 10 12:18:13 2006
New Revision: 367775
URL: http://svn.apache.org/viewcvs?rev=367775&view=rev
Log:
The last page sequence should also follow its force-page-count trait.
Replace one test case with two leaner test cases, submitted by Gerhard
Oettl, see bug 38087.
Added:
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml (with props)
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml (with props)
Removed:
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_1.xml
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
xmlgraphics/fop/trunk/status.xml
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java?rev=367775&r1=367774&r2=367775&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java Tue Jan 10 12:18:13 2006
@@ -37,6 +37,7 @@
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.FormattingResults;
+import org.apache.fop.datatypes.Numeric;
import org.apache.fop.fo.FOEventHandler;
import org.apache.fop.fo.extensions.ExtensionAttachment;
import org.apache.fop.fo.pagination.PageSequence;
@@ -265,15 +266,21 @@
}
}
- /** @see org.apache.fop.fo.FOEventHandler */
- public void startPageSequence(PageSequence pageSequence) {
- rootFObj = pageSequence.getRoot();
- // finish the previous pageSequence (handle force-page-count)
+ /**
+ * finish the previous pageSequence
+ */
+ private void finishPrevPageSequence(Numeric initialPageNumber) {
if (prevPageSeqLM != null) {
- prevPageSeqLM.doForcePageCount(pageSequence.getInitialPageNumber());
+ prevPageSeqLM.doForcePageCount(initialPageNumber);
prevPageSeqLM.finishPageSequence();
prevPageSeqLM = null;
}
+ }
+
+ /** @see org.apache.fop.fo.FOEventHandler */
+ public void startPageSequence(PageSequence pageSequence) {
+ rootFObj = pageSequence.getRoot();
+ finishPrevPageSequence(pageSequence.getInitialPageNumber());
pageSequence.initPageNumber();
//extension attachments from fo:root
wrapAndAddExtensionAttachments(rootFObj.getExtensionAttachments());
@@ -339,11 +346,7 @@
*/
public void endDocument() throws SAXException {
- // finish the last pageSequence
- if (prevPageSeqLM != null) {
- prevPageSeqLM.finishPageSequence();
- prevPageSeqLM = null;
- }
+ finishPrevPageSequence(null);
// process fo:bookmark-tree
BookmarkTree bookmarkTree = rootFObj.getBookmarkTree();
if (bookmarkTree != null) {
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java?rev=367775&r1=367774&r2=367775&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java Tue Jan 10 12:18:13 2006
@@ -893,8 +893,10 @@
}
- /*
- * check if the page-number of the last page suits to the force-page-count property
+ /**
+ * Act upon the force-page-count trait,
+ * in relation to the initial-page-number trait of the following page-sequence.
+ * @param nextPageSeqInitialPageNumber initial-page-number trait of next page-sequence
*/
public void doForcePageCount(Numeric nextPageSeqInitialPageNumber) {
@@ -913,7 +915,7 @@
// if force-page-count is auto then set the value of forcePageCount
// depending on the initial-page-number of the next page-sequence
- if (forcePageCount == Constants.EN_AUTO) {
+ if (nextPageSeqInitialPageNumber != null && forcePageCount == Constants.EN_AUTO) {
if (nextPageSeqInitialPageNumber.getEnum() != 0) {
// auto | auto-odd | auto-even
int nextPageSeqPageNumberType = nextPageSeqInitialPageNumber.getEnum();
Modified: xmlgraphics/fop/trunk/status.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/status.xml?rev=367775&r1=367774&r2=367775&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/status.xml (original)
+++ xmlgraphics/fop/trunk/status.xml Tue Jan 10 12:18:13 2006
@@ -27,6 +27,10 @@
<changes>
<release version="FOP Trunk">
+ <action context="Code" dev="SP" type="update" fixes-bug="38087"
+ due-to="Gerhard Oettl">
+ Implement force-page-count property of page-sequence.
+ </action>
<action context="Code" dev="JM" type="fix" fixes-bug="38054">
Bugfix: Spans that end up with a negative height don't get swallowed anymore.
</action>
Added: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml?rev=367775&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml Tue Jan 10 12:18:13 2006
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2006 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+ <info>
+ <p>
+ This test checks the behaviour of the force-page-count property
+ when set to auto and it depends therefore on the value of
+ initial-page-number of the following page-sequence.
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal"
+ page-width="5in" page-height="5in">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="normal">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage001</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="auto-even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage002</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="auto-even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage004</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="auto-odd">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage005</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="auto-odd">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage007</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="100">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage100</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="104">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage104</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="111">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage111</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="115">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage115</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="1" xpath="//lineArea[starts-with(., 'onpage001')]/ancestor::pageViewport/@nr"/>
+ <eval expected="2" xpath="//lineArea[starts-with(., 'onpage002')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=3]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=3])"/>
+ <eval expected="4" xpath="//lineArea[starts-with(., 'onpage004')]/ancestor::pageViewport/@nr"/>
+ <eval expected="5" xpath="//lineArea[starts-with(., 'onpage005')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=6]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=6])"/>
+ <eval expected="7" xpath="//lineArea[starts-with(., 'onpage007')]/ancestor::pageViewport/@nr"/>
+ <eval expected="100" xpath="//lineArea[starts-with(., 'onpage100')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=101]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=101])"/>
+ <eval expected="104" xpath="//lineArea[starts-with(., 'onpage104')]/ancestor::pageViewport/@nr"/>
+ <eval expected="111" xpath="//lineArea[starts-with(., 'onpage111')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=112]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=112])"/>
+ <eval expected="115" xpath="//lineArea[starts-with(., 'onpage115')]/ancestor::pageViewport/@nr"/>
+ <eval expected="13" xpath="count(//pageViewport)"/>
+ <result expected="13" property="pagecount"/>
+ </checks>
+</testcase>
Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_auto.xml
------------------------------------------------------------------------------
svn:keywords = Id
Added: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml?rev=367775&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml Tue Jan 10 12:18:13 2006
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2006 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+ <info>
+ <p>
+ This test checks the force-page-count property for nonauto
+ values (end-on-even, end-on-odd, even, odd, no-force) and
+ shows the ignoring on the last page-sequence.
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal"
+ page-width="5in" page-height="5in">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="201"
+ force-page-count="end-on-even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage201</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="end-on-even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage203</fo:block>
+ <fo:block break-before="page">onpage204</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="end-on-odd">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage205</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="end-on-odd">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage206</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage208</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage210</fo:block>
+ <fo:block break-before="page">onpage211</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="odd">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage212</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="odd">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage213</fo:block>
+ <fo:block break-before="page">onpage214</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ force-page-count="no-force">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage216</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ <fo:page-sequence master-reference="normal"
+ initial-page-number="auto-even" force-page-count="even">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>onpage218</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="201" xpath="//lineArea[starts-with(., 'onpage201')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=202]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=202])"/>
+ <eval expected="203" xpath="//lineArea[starts-with(., 'onpage203')]/ancestor::pageViewport/@nr"/>
+ <eval expected="204" xpath="//lineArea[starts-with(., 'onpage204')]/ancestor::pageViewport/@nr"/>
+ <eval expected="205" xpath="//lineArea[starts-with(., 'onpage205')]/ancestor::pageViewport/@nr"/>
+ <eval expected="206" xpath="//lineArea[starts-with(., 'onpage206')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=207]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=207])"/>
+ <eval expected="208" xpath="//lineArea[starts-with(., 'onpage208')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=209]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=209])"/>
+ <eval expected="210" xpath="//lineArea[starts-with(., 'onpage210')]/ancestor::pageViewport/@nr"/>
+ <eval expected="211" xpath="//lineArea[starts-with(., 'onpage211')]/ancestor::pageViewport/@nr"/>
+ <eval expected="212" xpath="//lineArea[starts-with(., 'onpage212')]/ancestor::pageViewport/@nr"/>
+ <eval expected="213" xpath="//lineArea[starts-with(., 'onpage213')]/ancestor::pageViewport/@nr"/>
+ <eval expected="214" xpath="//lineArea[starts-with(., 'onpage214')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=215]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=215])"/>
+ <eval expected="216" xpath="//lineArea[starts-with(., 'onpage216')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="count(//pageViewport[@nr=217])"/>
+ <eval expected="218" xpath="//lineArea[starts-with(., 'onpage218')]/ancestor::pageViewport/@nr"/>
+ <eval expected="0" xpath="sum(//pageViewport[@nr=219]/page/regionViewport/regionBody/mainReference/span/flow/block/@bpda)"/>
+ <eval expected="1" xpath="count(//pageViewport[@nr=219])"/>
+ <eval expected="18" xpath="count(//pageViewport)"/>
+ <result expected="18" property="pagecount"/>
+ </checks>
+</testcase>
Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-sequence_force-page-count_noauto.xml
------------------------------------------------------------------------------
svn:keywords = Id
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org