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