aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarved <arved@unknown>2000-10-21 01:02:59 +0000
committerarved <arved@unknown>2000-10-21 01:02:59 +0000
commitf30f4167bfc797b10960eb96583606f85c2fad27 (patch)
tree0b84704fdd917929c8ce33ec4ce250eeb6bbbb82
parentdd994ba44c5a943355ae4f32be373bb235157882 (diff)
downloadxmlgraphics-fop-f30f4167bfc797b10960eb96583606f85c2fad27.tar.gz
xmlgraphics-fop-f30f4167bfc797b10960eb96583606f85c2fad27.zip
Further pagination support
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-0_14_0_regions@193733 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java33
-rw-r--r--src/org/apache/fop/fo/pagination/LayoutMasterSet.java30
-rw-r--r--src/org/apache/fop/fo/pagination/PageSequence.java55
-rw-r--r--src/org/apache/fop/fo/pagination/PageSequenceMaster.java38
-rw-r--r--src/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java29
-rw-r--r--src/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java37
-rw-r--r--src/org/apache/fop/fo/pagination/Root.java13
-rw-r--r--src/org/apache/fop/fo/pagination/SimplePageMaster.java9
-rw-r--r--src/org/apache/fop/fo/pagination/SinglePageMasterReference.java19
-rw-r--r--src/org/apache/fop/fo/pagination/SubSequenceSpecifier.java4
10 files changed, 215 insertions, 52 deletions
diff --git a/src/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java b/src/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
index 4be8320e9..ea02d3758 100644
--- a/src/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
+++ b/src/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
@@ -55,8 +55,7 @@ import org.apache.fop.fo.properties.*;
import org.apache.fop.apps.FOPException;
import org.apache.fop.messaging.MessageHandler;
-public class ConditionalPageMasterReference
- extends PageMasterReference implements SubSequenceSpecifier {
+public class ConditionalPageMasterReference extends FObj {
public static class Maker extends FObj.Maker {
public FObj make(FObj parent, PropertyList propertyList)
@@ -103,7 +102,8 @@ public class ConditionalPageMasterReference
}
}
- protected boolean isValid( int currentPageNumber, boolean thisIsFirstPage )
+ protected boolean isValid( int currentPageNumber, boolean thisIsFirstPage,
+ boolean isEmptyPage )
{
// page-position
boolean okOnPagePosition = true; // default is 'any'
@@ -137,9 +137,19 @@ public class ConditionalPageMasterReference
okOnOddOrEven = false;
}
- // no check for blankness at the moment
-
- return (okOnOddOrEven && okOnPagePosition);
+ // experimental check for blank-or-not-blank
+ boolean okOnBlankOrNotBlank = true; // default is 'any'
+ int bnb = getBlankOrNotBlank();
+ if ((BlankOrNotBlank.BLANK == bnb) && !isEmptyPage)
+ {
+ okOnBlankOrNotBlank = false;
+ }
+ else if ((BlankOrNotBlank.NOT_BLANK == bnb) && isEmptyPage)
+ {
+ okOnBlankOrNotBlank = false;
+ }
+
+ return (okOnOddOrEven && okOnPagePosition && okOnBlankOrNotBlank);
}
protected void setPagePosition( int pagePosition )
@@ -171,4 +181,15 @@ public class ConditionalPageMasterReference
{
return this.blankOrNotBlank;
}
+
+ public void setMasterName( String masterName )
+ {
+ this.masterName = masterName;
+ }
+
+ public String getMasterName()
+ {
+ return this.masterName;
+ }
+
}
diff --git a/src/org/apache/fop/fo/pagination/LayoutMasterSet.java b/src/org/apache/fop/fo/pagination/LayoutMasterSet.java
index b89a98770..7ee676647 100644
--- a/src/org/apache/fop/fo/pagination/LayoutMasterSet.java
+++ b/src/org/apache/fop/fo/pagination/LayoutMasterSet.java
@@ -52,6 +52,7 @@ package org.apache.fop.fo.pagination;
// FOP
import org.apache.fop.fo.*;
+import org.apache.fop.fo.flow.Flow;
import org.apache.fop.fo.properties.*;
import org.apache.fop.apps.FOPException;
import org.apache.fop.layout.PageMaster;
@@ -80,6 +81,7 @@ public class LayoutMasterSet extends FObj {
private Root root;
private String currentPageMasterName;
private Hashtable allRegions;
+ private PageSequenceMaster lastPageSequenceMaster;
protected LayoutMasterSet(FObj parent, PropertyList propertyList)
throws FOPException {
@@ -101,7 +103,7 @@ public class LayoutMasterSet extends FObj {
}
public PageMaster getNextPageMaster( String pageSequenceName,
- int currentPageNumber, boolean thisIsFirstPage )
+ int currentPageNumber, boolean thisIsFirstPage, boolean isEmptyPage )
throws FOPException
{
PageMaster pm = null;
@@ -109,7 +111,9 @@ public class LayoutMasterSet extends FObj {
PageSequenceMaster psm = getPageSequenceMaster( pageSequenceName );
if (null != psm)
{
- pm = psm.getNextPageMaster( currentPageNumber, thisIsFirstPage );
+ pm = psm.getNextPageMaster( currentPageNumber, thisIsFirstPage,
+ isEmptyPage );
+ lastPageSequenceMaster = psm;
// call in this sequence
currentPageMasterName = psm.getNextPageMasterName();
} else {
@@ -214,4 +218,26 @@ public class LayoutMasterSet extends FObj {
}
}
}
+
+ public void resetPageMasters()
+ {
+ for (Enumeration e = pageSequenceMasters.elements(); e.hasMoreElements(); )
+ {
+ ((PageSequenceMaster)e.nextElement()).reset();
+ }
+
+ }
+
+ public boolean isFlowForMasterNameDone( String masterName )
+ {
+ // parameter is master-name of PMR; we need to locate PM
+ // referenced by this, and determine whether flow(s) are OK
+ SimplePageMaster spm = getSimplePageMaster( masterName );
+ PageSequence ps = this.root.getCurrentPageSequence();
+ Flow flow = ps.getFlow( masterName );
+ if ((null == flow) || flow.getCurrentStatus().isIncomplete())
+ return false;
+ else
+ return true;
+ }
}
diff --git a/src/org/apache/fop/fo/pagination/PageSequence.java b/src/org/apache/fop/fo/pagination/PageSequence.java
index 6cdc6be50..b0dea539a 100644
--- a/src/org/apache/fop/fo/pagination/PageSequence.java
+++ b/src/org/apache/fop/fo/pagination/PageSequence.java
@@ -174,7 +174,9 @@ public class PageSequence extends FObj
masterName = ((MasterName) this.properties.get("master-name")).getString();
}
- protected Page makePage(AreaTree areaTree) throws FOPException {
+ protected Page makePage(AreaTree areaTree, int firstAvailPageNumber,
+ boolean isFirstPage, boolean isEmptyPage)
+ throws FOPException {
// layout this page sequence
// while there is still stuff in the flow, ask the
@@ -183,7 +185,7 @@ public class PageSequence extends FObj
// page number is 0-indexed
PageMaster pageMaster =
this.layoutMasterSet.getNextPageMaster(
- masterName, currentPageNumber, thisIsFirstPage );
+ masterName, firstAvailPageNumber, isFirstPage, isEmptyPage );
// store the current 'master-name' for access by format()
currentPageMasterName = this.layoutMasterSet.getCurrentPageMasterName();
@@ -200,12 +202,19 @@ public class PageSequence extends FObj
public void format(AreaTree areaTree) throws FOPException {
Status status = new Status(Status.OK);
+ this.layoutMasterSet.resetPageMasters();
+
do
{
- currentPage = makePage(areaTree);
-
+ // makePage() moved to after the page-number computations,
+ // but store the page-number at this point for that method,
+ // since we want the 'current' current page-number...
+ int firstAvailPageNumber = this.runningPageNumberCounter;
+ boolean tempIsFirstPage = false;
+
if ( thisIsFirstPage )
{
+ tempIsFirstPage = thisIsFirstPage;
if ( pageNumberType==AUTO )
{
this.currentPageNumber=this.runningPageNumberCounter;
@@ -228,8 +237,30 @@ public class PageSequence extends FObj
}
thisIsFirstPage=false;
}
-
- currentPage.setNumber(++this.currentPageNumber);
+ this.currentPageNumber++;
+
+ // deliberately moved down here so page-number calculations
+ // are complete;
+ // compute flag for 'blank-or-not-blank'
+ boolean isEmptyPage = false;
+ if ( (status.getCode() == Status.FORCE_PAGE_BREAK_EVEN) &&
+ ((currentPageNumber % 2) == 1) )
+ {
+ isEmptyPage = true;
+ }
+ else if ( (status.getCode() == Status.FORCE_PAGE_BREAK_ODD) &&
+ ((currentPageNumber % 2) == 0) )
+ {
+ isEmptyPage = true;
+ }
+ else
+ {
+ isEmptyPage = false;
+ }
+
+ currentPage = makePage(areaTree, firstAvailPageNumber, tempIsFirstPage, isEmptyPage);
+
+ currentPage.setNumber(this.currentPageNumber);
this.runningPageNumberCounter=this.currentPageNumber;
MessageHandler.log(" [" + currentPageNumber);
@@ -266,12 +297,10 @@ public class PageSequence extends FObj
if ( (status.getCode() == Status.FORCE_PAGE_BREAK_EVEN) &&
((currentPageNumber % 2) == 1) )
{
- // linkage to ConditionalPageMasterReference for blank pages?
}
else if ( (status.getCode() == Status.FORCE_PAGE_BREAK_ODD) &&
((currentPageNumber % 2) == 0) )
{
- // linkage to ConditionalPageMasterReference for blank pages?
}
else
{
@@ -378,8 +407,16 @@ public class PageSequence extends FObj
boolean isIncomplete = false;
for (Enumeration e = flows.elements(); e.hasMoreElements(); )
{
- isIncomplete = ((Flow)e.nextElement()).getCurrentStatus().isIncomplete();
+ Flow flow = (Flow)e.nextElement();
+ Status status = flow.getCurrentStatus();
+ isIncomplete |= status.isIncomplete();
}
+
return isIncomplete;
}
+
+ public Flow getFlow( String flowName )
+ {
+ return (Flow)flows.get( flowName );
+ }
}
diff --git a/src/org/apache/fop/fo/pagination/PageSequenceMaster.java b/src/org/apache/fop/fo/pagination/PageSequenceMaster.java
index 735304888..2d6cf2b2c 100644
--- a/src/org/apache/fop/fo/pagination/PageSequenceMaster.java
+++ b/src/org/apache/fop/fo/pagination/PageSequenceMaster.java
@@ -60,6 +60,7 @@ import org.apache.fop.messaging.MessageHandler;
// Java
import java.util.Vector;
+import java.util.Enumeration;
public class PageSequenceMaster extends FObj {
@@ -77,6 +78,7 @@ public class PageSequenceMaster extends FObj {
LayoutMasterSet layoutMasterSet;
Vector subSequenceSpecifiers;
SubSequenceSpecifier currentPmr;
+ private int ssIndex;
// SimplePageMasters are not exposed outside this class. Hence, this
// variable tracks the current master-name for the last SPM.
@@ -94,6 +96,7 @@ public class PageSequenceMaster extends FObj {
this.name = "fo:page-sequence-master";
subSequenceSpecifiers = new Vector();
+ ssIndex = 0;
if (parent.getName().equals("fo:layout-master-set")) {
this.layoutMasterSet = (LayoutMasterSet) parent;
@@ -118,12 +121,15 @@ public class PageSequenceMaster extends FObj {
protected SubSequenceSpecifier getNextSubsequenceSpecifier()
{
- currentPmr = (SubSequenceSpecifier)subSequenceSpecifiers.elementAt( 0 );
- subSequenceSpecifiers.removeElementAt(0);
- return currentPmr;
+ if (ssIndex == subSequenceSpecifiers.size())
+ return null;
+ SubSequenceSpecifier pmr = (SubSequenceSpecifier)subSequenceSpecifiers.elementAt( ssIndex );
+ ssIndex++;
+ return pmr;
}
- public PageMaster getNextPageMaster( int currentPageNumber, boolean thisIsFirstPage )
+ public PageMaster getNextPageMaster( int currentPageNumber, boolean thisIsFirstPage,
+ boolean isEmptyPage )
{
if (null == currentPmr)
{
@@ -131,17 +137,18 @@ public class PageSequenceMaster extends FObj {
}
String nextPageMaster =
- currentPmr.getNextPageMaster( currentPageNumber, thisIsFirstPage );
+ currentPmr.getNextPageMaster( currentPageNumber, thisIsFirstPage, isEmptyPage );
if (null == nextPageMaster)
{
currentPmr = getNextSubsequenceSpecifier();
nextPageMaster =
- currentPmr.getNextPageMaster( currentPageNumber, thisIsFirstPage );
+ currentPmr.getNextPageMaster( currentPageNumber, thisIsFirstPage, isEmptyPage );
}
SimplePageMaster spm = this.layoutMasterSet.getSimplePageMaster( nextPageMaster );
currentPageMasterName = spm.getMasterName(); // store for outside access
+
return spm.getPageMaster();
}
@@ -154,4 +161,23 @@ public class PageSequenceMaster extends FObj {
{
return currentPageMasterName;
}
+
+ public void reset()
+ {
+ for (Enumeration e = subSequenceSpecifiers.elements(); e.hasMoreElements(); )
+ {
+ ((SubSequenceSpecifier)e.nextElement()).reset();
+ }
+ ssIndex = 0;
+ }
+
+ public boolean isFlowForMasterNameDone( String masterName )
+ {
+ // parameter is master-name of PMR; we need to locate PM
+ // referenced by this, and determine whether flow(s) are OK
+ if (this.layoutMasterSet.isFlowForMasterNameDone( masterName ))
+ return true;
+ else
+ return false;
+ }
}
diff --git a/src/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java b/src/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
index 358536e40..38a2678c2 100644
--- a/src/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
+++ b/src/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
@@ -72,14 +72,14 @@ public class RepeatablePageMasterAlternatives extends FObj
}
private PageSequenceMaster pageSequenceMaster;
-
+
private int maximumRepeats;
private int numberConsumed = 0;
-
+
private int BOUNDED = 1;
private int UNBOUNDED = 0;
-
- private int state;
+ private int boundedness;
+
private Vector conditionalPageMasterRefs;
public RepeatablePageMasterAlternatives(FObj parent, PropertyList propertyList)
@@ -103,22 +103,24 @@ public class RepeatablePageMasterAlternatives extends FObj
{
try {
setMaximumRepeats( Integer.parseInt( mr ) );
- this.state = BOUNDED;
+ this.boundedness = BOUNDED;
} catch (NumberFormatException nfe) {
throw new FOPException( "Invalid number for " +
"'maximum-repeats' property" );
}
} else {
- this.state = UNBOUNDED; // unbounded
+ this.boundedness = UNBOUNDED; // unbounded
}
}
- public String getNextPageMaster( int currentPageNumber, boolean thisIsFirstPage ) {
+ public String getNextPageMaster( int currentPageNumber, boolean thisIsFirstPage,
+ boolean isEmptyPage ) {
+
String pm = null;
- if (this.state == BOUNDED ) {
+ if (this.boundedness == BOUNDED ) {
if (numberConsumed < getMaximumRepeats()) {
numberConsumed++;
} else {
@@ -129,16 +131,19 @@ public class RepeatablePageMasterAlternatives extends FObj
for (int i = 0; i < conditionalPageMasterRefs.size(); i++)
{
ConditionalPageMasterReference cpmr =
- (ConditionalPageMasterReference)conditionalPageMasterRefs.get(i);
+ (ConditionalPageMasterReference)conditionalPageMasterRefs.elementAt(i);
// 0-indexed page number
- if (cpmr.isValid(currentPageNumber + 1, thisIsFirstPage))
+ if (cpmr.isValid(currentPageNumber + 1, thisIsFirstPage, isEmptyPage ))
{
pm = cpmr.getMasterName();
break;
}
}
+ if ((pm != null) && this.pageSequenceMaster.isFlowForMasterNameDone( pm ))
+ pm = null;
+
return pm;
}
@@ -159,4 +164,8 @@ public class RepeatablePageMasterAlternatives extends FObj
this.conditionalPageMasterRefs.addElement( cpmr );
}
+ public void reset()
+ {
+ numberConsumed = 0;
+ }
}
diff --git a/src/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java b/src/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java
index ec195fa84..db289617c 100644
--- a/src/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java
+++ b/src/org/apache/fop/fo/pagination/RepeatablePageMasterReference.java
@@ -53,7 +53,7 @@ package org.apache.fop.fo.pagination;
import org.apache.fop.fo.*;
import org.apache.fop.apps.FOPException;
-public class RepeatablePageMasterReference extends PageMasterReference
+public class RepeatablePageMasterReference extends FObj
implements SubSequenceSpecifier {
public static class Maker extends FObj.Maker {
@@ -72,11 +72,10 @@ public class RepeatablePageMasterReference extends PageMasterReference
private int maximumRepeats;
private int numberConsumed = 0;
-
+
private int BOUNDED = 1;
private int UNBOUNDED = 0;
-
- private int state;
+ private int boundedness;
public RepeatablePageMasterReference(FObj parent, PropertyList propertyList)
throws FOPException {
@@ -94,7 +93,7 @@ public class RepeatablePageMasterReference extends PageMasterReference
}
} else {
throw new FOPException("fo:repeatable-page-master-reference must be" +
- "child of fo:page-sequence, not "
+ "child of fo:page-sequence-master, not "
+ parent.getName());
}
@@ -103,23 +102,24 @@ public class RepeatablePageMasterReference extends PageMasterReference
{
try {
setMaximumRepeats( Integer.parseInt( mr ) );
- this.state = BOUNDED;
+ this.boundedness = BOUNDED;
} catch (NumberFormatException nfe) {
throw new FOPException( "Invalid number for " +
"'maximum-repeats' property" );
}
} else {
- this.state = UNBOUNDED; // unbounded
+ this.boundedness = UNBOUNDED; // unbounded
}
}
public String getNextPageMaster( int currentPageNumber,
- boolean thisIsFirstPage ) {
+ boolean thisIsFirstPage, boolean isEmptyPage ) {
+
String pm = getMasterName();
- if (this.state == BOUNDED)
+ if (this.boundedness == BOUNDED)
{
if (numberConsumed < getMaximumRepeats()) {
numberConsumed++;
@@ -127,6 +127,11 @@ public class RepeatablePageMasterReference extends PageMasterReference
pm = null;
}
}
+
+ // is flow OK?
+ if ((pm != null) && this.pageSequenceMaster.isFlowForMasterNameDone( pm ))
+ pm = null;
+
return pm;
}
@@ -141,4 +146,18 @@ public class RepeatablePageMasterReference extends PageMasterReference
return this.maximumRepeats;
}
+ public void setMasterName( String masterName )
+ {
+ this.masterName = masterName;
+ }
+
+ public String getMasterName()
+ {
+ return masterName;
+ }
+
+ public void reset()
+ {
+ numberConsumed = 0;
+ }
}
diff --git a/src/org/apache/fop/fo/pagination/Root.java b/src/org/apache/fop/fo/pagination/Root.java
index 23546b083..8eb2721e5 100644
--- a/src/org/apache/fop/fo/pagination/Root.java
+++ b/src/org/apache/fop/fo/pagination/Root.java
@@ -76,7 +76,8 @@ public class Root extends FObj {
LayoutMasterSet layoutMasterSet;
Vector pageSequences;
-
+ PageSequence currentPageSequence;
+
protected Root(FObj parent, PropertyList propertyList) throws FOPException
{
super(parent, propertyList);
@@ -113,13 +114,19 @@ public class Root extends FObj {
Enumeration e = pageSequences.elements();
while (e.hasMoreElements())
{
- ((PageSequence) e.nextElement()).format(areaTree);
+ currentPageSequence = (PageSequence) e.nextElement();
+ currentPageSequence.format(areaTree);
}
}
public void setLayoutMasterSet(LayoutMasterSet layoutMasterSet) {
- this.layoutMasterSet = layoutMasterSet;
+ this.layoutMasterSet = layoutMasterSet;
}
+
+ public PageSequence getCurrentPageSequence()
+ {
+ return currentPageSequence;
+ }
}
diff --git a/src/org/apache/fop/fo/pagination/SimplePageMaster.java b/src/org/apache/fop/fo/pagination/SimplePageMaster.java
index 685c7a9be..e553611d8 100644
--- a/src/org/apache/fop/fo/pagination/SimplePageMaster.java
+++ b/src/org/apache/fop/fo/pagination/SimplePageMaster.java
@@ -121,12 +121,15 @@ public class SimplePageMaster extends FObj {
int contentRectangleHeight = pageHeight - marginTop - marginBottom;
this.pageMaster = new PageMaster(pageWidth, pageHeight);
- this.pageMaster.addBody(this.regionBody.makeRegion(contentRectangleXPosition,contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
+ this.pageMaster.addBody(this.regionBody.makeRegion(contentRectangleXPosition,
+ contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
if (this.regionBefore != null)
- this.pageMaster.addBefore(this.regionBefore.makeRegion(contentRectangleXPosition,contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
+ this.pageMaster.addBefore(this.regionBefore.makeRegion(contentRectangleXPosition,
+ contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
if (this.regionAfter != null)
- this.pageMaster.addAfter(this.regionAfter.makeRegion(contentRectangleXPosition,contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
+ this.pageMaster.addAfter(this.regionAfter.makeRegion(contentRectangleXPosition,
+ contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
}
public PageMaster getPageMaster() {
diff --git a/src/org/apache/fop/fo/pagination/SinglePageMasterReference.java b/src/org/apache/fop/fo/pagination/SinglePageMasterReference.java
index 34d96bc28..b5f180034 100644
--- a/src/org/apache/fop/fo/pagination/SinglePageMasterReference.java
+++ b/src/org/apache/fop/fo/pagination/SinglePageMasterReference.java
@@ -54,7 +54,7 @@ import org.apache.fop.fo.*;
import org.apache.fop.apps.FOPException;
import org.apache.fop.messaging.MessageHandler;
-public class SinglePageMasterReference extends PageMasterReference
+public class SinglePageMasterReference extends FObj
implements SubSequenceSpecifier {
public static class Maker extends FObj.Maker {
@@ -101,8 +101,15 @@ public class SinglePageMasterReference extends PageMasterReference
this.state = FIRST;
}
- public String getNextPageMaster( int currentPageNumber, boolean thisIsFirstPage ) {
- return getMasterName();
+ public String getNextPageMaster( int currentPageNumber, boolean thisIsFirstPage,
+ boolean isEmptyPage) {
+ if (this.state == FIRST)
+ {
+ this.state = DONE;
+ return getMasterName();
+ }
+ else
+ return null;
}
public void setMasterName( String masterName )
@@ -114,4 +121,10 @@ public class SinglePageMasterReference extends PageMasterReference
{
return this.masterName;
}
+
+ public void reset()
+ {
+ this.state = FIRST;
+ }
+
}
diff --git a/src/org/apache/fop/fo/pagination/SubSequenceSpecifier.java b/src/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
index fe18f15fb..e7ae2cdbb 100644
--- a/src/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
+++ b/src/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
@@ -56,6 +56,8 @@ package org.apache.fop.fo.pagination;
public interface SubSequenceSpecifier
{
public String getNextPageMaster( int currentPageNumber,
- boolean thisIsFirstPage );
+ boolean thisIsFirstPage, boolean isEmptyPage );
+
+ public void reset();
}