From 4ca428ec7c83c577c98df603e389f1745689fd68 Mon Sep 17 00:00:00 2001 From: arved Date: Mon, 23 Jul 2001 02:00:37 +0000 Subject: AHS: continued work on fo:marker support git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194364 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/layout/AreaTree.java | 39 +++++++++++++++++++++++++++++++++ src/org/apache/fop/layout/Page.java | 15 +++++++++++++ 2 files changed, 54 insertions(+) (limited to 'src/org/apache/fop/layout') diff --git a/src/org/apache/fop/layout/AreaTree.java b/src/org/apache/fop/layout/AreaTree.java index a0195082d..315230d9f 100644 --- a/src/org/apache/fop/layout/AreaTree.java +++ b/src/org/apache/fop/layout/AreaTree.java @@ -13,6 +13,7 @@ import org.apache.fop.svg.*; import org.apache.fop.render.Renderer; import org.apache.fop.datatypes.IDReferences; import org.apache.fop.extensions.ExtensionObj; +import org.apache.fop.fo.pagination.PageSequence; // Java import java.io.IOException; @@ -67,5 +68,43 @@ public class AreaTree { return rootExtensions; } + public Page getNextPage(Page current, boolean isWithinPageSequence, + boolean isFirstCall) { + Page nextPage = null; + int pageIndex = 0; + if (isFirstCall) + pageIndex = pageList.size(); + else + pageIndex = pageList.indexOf(current); + if ((pageIndex + 1) < pageList.size()) { + nextPage = (Page)pageList.elementAt(pageIndex + 1); + if (isWithinPageSequence && !nextPage.getPageSequence().equals(current.getPageSequence())) { + nextPage = null; + } + } + return nextPage; + } + public Page getPreviousPage(Page current, boolean isWithinPageSequence, + boolean isFirstCall) { + Page previousPage = null; + int pageIndex = 0; + if (isFirstCall) + pageIndex = pageList.size(); + else + pageIndex = pageList.indexOf(current); + // System.out.println("Page index = " + pageIndex); + if ((pageIndex - 1) >= 0) { + previousPage = (Page)pageList.elementAt(pageIndex - 1); + PageSequence currentPS = current.getPageSequence(); + // System.out.println("Current PS = '" + currentPS + "'"); + PageSequence previousPS = previousPage.getPageSequence(); + // System.out.println("Previous PS = '" + previousPS + "'"); + if (isWithinPageSequence && !previousPS.equals(currentPS)) { + // System.out.println("Outside page sequence"); + previousPage = null; + } + } + return previousPage; + } } diff --git a/src/org/apache/fop/layout/Page.java b/src/org/apache/fop/layout/Page.java index 73c5b1ce6..0b837317f 100644 --- a/src/org/apache/fop/layout/Page.java +++ b/src/org/apache/fop/layout/Page.java @@ -11,6 +11,7 @@ import org.apache.fop.render.Renderer; import org.apache.fop.fo.flow.*; import org.apache.fop.fo.*; import org.apache.fop.apps.*; +import org.apache.fop.fo.pagination.PageSequence; // Java import java.util.Vector; @@ -29,6 +30,8 @@ public class Page { private AreaTree areaTree; + private PageSequence pageSequence; + protected int pageNumber = 0; protected String formattedPageNumber; @@ -47,6 +50,18 @@ public class Page { markers = new Vector(); } + public void setPageSequence(PageSequence pageSequence) { + this.pageSequence = pageSequence; + } + + public PageSequence getPageSequence() { + return pageSequence; + } + + public AreaTree getAreaTree() { + return areaTree; + } + public void setNumber(int number) { this.pageNumber = number; } -- cgit v1.2.3