/*-- $Id$ -- * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources." */ package org.apache.fop.layout; // FOP import org.apache.fop.render.Renderer; import org.apache.fop.fo.flow.*; import org.apache.fop.fo.*; import org.apache.fop.apps.*; // Java import java.util.Vector; import java.util.Enumeration; public class Page { private int height; private int width; private BodyAreaContainer body; private AreaContainer before; private AreaContainer after; private AreaContainer start; private AreaContainer end; private AreaTree areaTree; protected int pageNumber = 0; protected Vector linkSets = new Vector(); private Vector idList = new Vector(); private Vector footnotes = null; Page(AreaTree areaTree, int height, int width) { this.areaTree = areaTree; this.height = height; this.width = width; } public void setNumber(int number) { this.pageNumber = number; } public int getNumber() { return this.pageNumber; } void addAfter(AreaContainer area) { this.after = area; area.setPage(this); } void addBefore(AreaContainer area) { this.before = area; area.setPage(this); } /** * Ensure that page is set not only on B.A.C. but also on the * three top-level reference areas. * @param area The region-body area container (special) */ public void addBody(BodyAreaContainer area) { this.body = area; area.setPage(this); ((BodyAreaContainer)area).getMainReferenceArea().setPage(this); ((BodyAreaContainer)area).getBeforeFloatReferenceArea().setPage(this); ((BodyAreaContainer)area).getFootnoteReferenceArea().setPage(this); } void addEnd(AreaContainer area) { this.end = area; area.setPage(this); } void addStart(AreaContainer area) { this.start = area; area.setPage(this); } public void render(Renderer renderer) { renderer.renderPage(this); } public AreaContainer getAfter() { return this.after; } public AreaContainer getBefore() { return this.before; } public AreaContainer getStart() { return this.start; } public AreaContainer getEnd() { return this.end; } public BodyAreaContainer getBody() { return this.body; } public int getHeight() { return this.height; } public int getWidth() { return this.width; } public FontInfo getFontInfo() { return this.areaTree.getFontInfo(); } public void addLinkSet(LinkSet linkSet) { this.linkSets.addElement(linkSet); } public Vector getLinkSets() { return this.linkSets; } public boolean hasLinks() { return (!this.linkSets.isEmpty()); } public void addToIDList(String id){ idList.addElement(id); } public Vector getIDList(){ return idList; } public Vector getPendingFootnotes() { return footnotes; } public void setPendingFootnotes(Vector v) { footnotes = v; if(footnotes != null) { for(Enumeration e = footnotes.elements(); e.hasMoreElements(); ) { FootnoteBody fb = (FootnoteBody)e.nextElement(); if(!Footnote.layoutFootnote(this, fb, null)) { // footnotes are too large to fit on empty page } } footnotes = null; } } public void addPendingFootnote(FootnoteBody fb) { if(footnotes == null) { footnotes = new Vector(); } footnotes.addElement(fb); } }