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]