Author: vhennebert
Date: Tue Jan 29 20:15:21 2013
New Revision: 1440094

URL: http://svn.apache.org/viewvc?rev=1440094&view=rev
Log:
JIRA-1719 Fix IIOBE thrown when the final footnote-only page starts on a new 
footnote

Added:
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple.xml
      - copied unchanged from r1440087, 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote-create_new_page.xml
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml
   (with props)
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_several-pages.xml
      - copied unchanged from r1440087, 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_overflow-to-multiple-pages.xml
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_simple.xml
      - copied unchanged from r1440087, 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_overflow-to-empty-page.xml
Removed:
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote-create_new_page.xml
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_overflow-to-empty-page.xml
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_overflow-to-multiple-pages.xml
Modified:
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java?rev=1440094&r1=1440093&r2=1440094&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
 (original)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
 Tue Jan 29 20:15:21 2013
@@ -885,19 +885,11 @@ class PageBreakingAlgorithm extends Brea
 
         // create pages containing the remaining footnote bodies
         while (insertedFootnotesLength < totalFootnotesLength) {
-            final int tmpLength = lengthList.get(footnoteListIndex);
-            // check if last footnote has already been added completely
-            if (insertedFootnotesLength == tmpLength) {
-                footnoteListIndex++;
-                footnoteElementIndex
-                    = getFootnoteList(footnoteListIndex).size() - 1;
-            } else if ((tmpLength - insertedFootnotesLength) <= availableBPD) {
-                // try adding some more content
-                // add a whole footnote
-                availableBPD -= tmpLength - insertedFootnotesLength;
-                insertedFootnotesLength = tmpLength;
-                footnoteElementIndex
-                    = getFootnoteList(footnoteListIndex).size() - 1;
+            if (totalFootnotesLength - insertedFootnotesLength <= 
availableBPD) {
+                // All the remaining footnotes fit
+                insertedFootnotesLength = totalFootnotesLength;
+                footnoteListIndex = lengthList.size() - 1;
+                footnoteElementIndex = 
getFootnoteList(footnoteListIndex).size() - 1;
             } else if ((split = getFootnoteSplit                // CSOK: 
InnerAssignment
                         (footnoteListIndex, footnoteElementIndex,
                          insertedFootnotesLength, availableBPD, true)) > 0) {

Added: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml?rev=1440094&view=auto
==============================================================================
--- 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml
 (added)
+++ 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml
 Tue Jan 29 20:15:21 2013
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more 
contributor 
+ license agreements. See the NOTICE file distributed with this work for 
additional 
+ information regarding copyright ownership. The ASF licenses this file to 
+ You 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>When a footnote-only final page must be created, check the case where the 
final page starts on 
+    a footnote that must be split over several pages.</p>
+ </info>
+ <fo>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
+  <fo:layout-master-set>
+    <fo:simple-page-master master-name="page"
+      page-height="120pt" page-width="220pt" margin="10pt">
+      <fo:region-body background-color="#F0F0F0"/>
+    </fo:simple-page-master>
+    <fo:simple-page-master master-name="small"
+      page-height="120pt" page-width="220pt" margin="10pt">
+      <fo:region-body margin-top="45pt" margin-bottom="45pt" 
background-color="#F0F0F0"/>
+    </fo:simple-page-master>
+    <fo:page-sequence-master master-name="pages">
+      <fo:single-page-master-reference master-reference="page"/>
+      <fo:single-page-master-reference master-reference="small"/>
+      <fo:repeatable-page-master-reference master-reference="page"/>
+    </fo:page-sequence-master>
+  </fo:layout-master-set>
+
+  <fo:page-sequence master-reference="pages">
+    <fo:flow flow-name="xsl-region-body" text-align="justify" font-size="8pt" 
line-height="10pt">
+      <fo:block space-before="50pt" 
space-before.conditionality="retain">Foonote call <fo:footnote>
+          <fo:inline>1</fo:inline>
+          <fo:footnote-body>
+            <fo:block>
+              <fo:block>Footnote 1</fo:block>
+            </fo:block>
+          </fo:footnote-body>
+          </fo:footnote>, <fo:footnote>
+          <fo:inline>2</fo:inline>
+          <fo:footnote-body>
+            <fo:block>
+              <fo:block>Footnote 2.1</fo:block>
+              <fo:block>Footnote 2.2</fo:block>
+              <fo:block>Footnote 2.3</fo:block>
+            </fo:block>
+          </fo:footnote-body>
+          </fo:footnote>, and <fo:footnote>
+          <fo:inline>3</fo:inline>
+          <fo:footnote-body>
+            <fo:block>
+              <fo:block>Footnote 3.1</fo:block>
+              <fo:block>Footnote 3.2</fo:block>
+              <fo:block>Footnote 3.3</fo:block>
+            </fo:block>
+          </fo:footnote-body>
+      </fo:footnote>.</fo:block>
+    </fo:flow>
+  </fo:page-sequence>
+</fo:root>
+ </fo>
+ <checks>
+   <eval expected="2"      xpath="count(//pageViewport[1]//footnote/block)"/>
+   <eval expected="3"      
xpath="count(//pageViewport[1]//footnote/block[2]/block)"/>
+   <eval expected="Footnote 2.1" 
xpath="//pageViewport[1]//footnote/block[2]/block[1]"/>
+   <eval expected="Footnote 2.2" 
xpath="//pageViewport[1]//footnote/block[2]/block[2]"/>
+   <eval expected="Footnote 2.3" 
xpath="//pageViewport[1]//footnote/block[2]/block[3]"/>
+   <eval expected="1"      xpath="count(//pageViewport[2]//footnote/block)"/>
+   <eval expected="1"      
xpath="count(//pageViewport[2]//footnote/block/block)"/>
+   <eval expected="Footnote 3.1" 
xpath="//pageViewport[2]//footnote/block/block"/>
+   <eval expected="1"      xpath="count(//pageViewport[3]//footnote/block)"/>
+   <eval expected="2"      
xpath="count(//pageViewport[3]//footnote/block/block)"/>
+   <eval expected="Footnote 3.2" 
xpath="//pageViewport[3]//footnote/block/block[1]"/>
+   <eval expected="Footnote 3.3" 
xpath="//pageViewport[3]//footnote/block/block[2]"/>
+ </checks>
+</testcase>

Propchange: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/footnote_footnote-only-final-page_multiple_whole.xml
------------------------------------------------------------------------------
    svn:keywords = Revision Id



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to