gmazza 2004/07/12 17:16:22
Modified: src/java/org/apache/fop/apps Driver.java
src/java/org/apache/fop/area/extensions BookmarkData.java
src/java/org/apache/fop/fo FOInputHandler.java
src/java/org/apache/fop/layoutmgr AbstractLayoutManager.java
ContentLayoutManager.java LMiter.java
LayoutManager.java PageLayoutManager.java
Added: src/java/org/apache/fop/area AreaTreeHandler.java
Removed: src/java/org/apache/fop/area AreaTree.java
src/java/org/apache/fop/fo FOTreeHandler.java
Log:
1.) Combined the AreaTree and FOTreeHandler into a new AreaTreeHandler
object. FOTreeHandler was primarily acting as an AreaTreeHandler,
and AreaTree had a 1-to-1 relationship with it. Comments most welcome.
2.) Created convenience methods in FOInputHandler for those subclasses
which do not handle certain signals/events called from the formatting
objects (i.e., AreaTreeHandler).
Revision Changes Path
1.82 +3 -3 xml-fop/src/java/org/apache/fop/apps/Driver.java
Index: Driver.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Driver.java,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -r1.81 -r1.82
--- Driver.java 9 Jul 2004 01:48:58 -0000 1.81
+++ Driver.java 13 Jul 2004 00:16:22 -0000 1.82
@@ -34,7 +34,7 @@
import org.apache.fop.fo.ElementMapping;
import org.apache.fop.fo.FOTreeBuilder;
import org.apache.fop.fo.FOInputHandler;
-import org.apache.fop.fo.FOTreeHandler;
+import org.apache.fop.area.AreaTreeHandler;
import org.apache.fop.render.awt.AWTRenderer;
import org.apache.fop.render.mif.MIFHandler;
import org.apache.fop.render.rtf.RTFHandler;
@@ -314,7 +314,7 @@
"Renderer must be set using setRenderer(int renderType)");
}
- foInputHandler = new FOTreeHandler(foUserAgent, rendererType,
+ foInputHandler = new AreaTreeHandler(foUserAgent, rendererType,
stream);
}
1.1 xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java
Index: AreaTreeHandler.java
===================================================================
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed 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: AreaTreeHandler.java,v 1.1 2004/07/13 00:16:22 gmazza Exp $ */
package org.apache.fop.area;
// Java
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
// XML
import org.xml.sax.SAXException;
// Apache
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.area.extensions.BookmarkData;
import org.apache.fop.fo.FOInputHandler;
import org.apache.fop.fo.extensions.Outline;
import org.apache.fop.fo.extensions.Bookmarks;
import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.layoutmgr.AddLMVisitor;
import org.apache.fop.layoutmgr.ContentLayoutManager;
import org.apache.fop.layoutmgr.InlineStackingLayoutManager;
import org.apache.fop.layoutmgr.LMiter;
import org.apache.fop.layoutmgr.PageLayoutManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
// Java
import java.io.OutputStream;
import java.util.HashSet;
import java.util.Iterator;
/**
* Area tree handler for formatting objects.
*
* Concepts:
* The area tree is to be as small as possible. With minimal classes
* and data to fully represent an area tree for formatting objects.
* The area tree needs to be simple to render and follow the spec
* closely.
* This area tree has the concept of page sequences.
* Where ever possible information is discarded or optimized to
* keep memory use low. The data is also organized to make it
* possible for renderers to minimize their output.
* A page can be saved if not fully resolved and once rendered
* a page contains only size and id reference information.
* The area tree pages are organized in a model that depends on the
* type of renderer.
*/
public class AreaTreeHandler extends FOInputHandler {
// TODO: Collecting of statistics should be configurable
private final boolean collectStatistics = true;
private static final boolean MEM_PROFILE_WITH_GC = false;
private boolean pageSequenceFound = false;
// for statistics gathering
private Runtime runtime;
// heap memory allocated (for statistics)
private long initialMemory;
// time used in rendering (for statistics)
private long startTime;
// count of number of pages rendered
private int pageCount;
/** Useful only for allowing subclasses of AddLMVisitor to be set by those
extending FOP **/
private AddLMVisitor addLMVisitor = null;
// AreaTreeModel in use
private AreaTreeModel model;
// hashmap of arraylists containing pages with id area
private Map idLocations = new HashMap();
// list of id's yet to be resolved and arraylists of pages
private Map resolve = new HashMap();
private List treeExtensions = new ArrayList();
private static Log log = LogFactory.getLog(AreaTreeHandler.class);
/**
* Constructor.
* @param userAgent FOUserAgent object for process
* @param renderType Desired fo.Constants output type (RENDER_PDF,
* RENDER_PS, etc.)
* @param stream OutputStream
*/
public AreaTreeHandler (FOUserAgent userAgent, int renderType,
OutputStream stream) throws FOPException {
super(userAgent);
// model = new CachedRenderPagesModel(userAgent, renderType,
// fontInfo, stream);
model = new RenderPagesModel(userAgent, renderType, fontInfo,
stream);
if (collectStatistics) {
runtime = Runtime.getRuntime();
}
}
/**
* Get the area tree model for this area tree.
*
* @return AreaTreeModel the model being used for this area tree
*/
public AreaTreeModel getAreaTreeModel() {
return model;
}
/**
* Add a new page to the area tree.
* @param page the page to add
*/
public void addPage(PageViewport page) {
model.addPage(page);
}
/**
* Add an id reference pointing to a page viewport.
* @param id the id of the reference
* @param pv the page viewport that contains the id reference
*/
public void addIDRef(String id, PageViewport pv) {
List list = (List)idLocations.get(id);
if (list == null) {
list = new ArrayList();
idLocations.put(id, list);
}
list.add(pv);
Set todo = (Set)resolve.get(id);
if (todo != null) {
for (Iterator iter = todo.iterator(); iter.hasNext();) {
Resolveable res = (Resolveable)iter.next();
res.resolve(id, list);
}
resolve.remove(id);
}
}
/**
* Get the list of id references for an id.
* @param id the id to lookup
* @return the list of id references.
*/
public List getIDReferences(String id) {
return (List)idLocations.get(id);
}
/**
* Add an unresolved object with a given id.
* @param id the id reference that needs resolving
* @param res the Resolveable object to resolve
*/
public void addUnresolvedID(String id, Resolveable res) {
Set todo = (Set)resolve.get(id);
if (todo == null) {
todo = new HashSet();
resolve.put(id, todo);
}
todo.add(res);
}
/**
* Add a tree extension.
* This checks if the extension is resolveable and attempts
* to resolve or add the resolveable ids for later resolution.
* @param ext the tree extension to add.
*/
public void addTreeExtension(TreeExt ext) {
treeExtensions.add(ext);
if (ext.isResolveable()) {
Resolveable res = (Resolveable)ext;
String[] ids = res.getIDs();
for (int count = 0; count < ids.length; count++) {
if (idLocations.containsKey(ids[count])) {
res.resolve(ids[count], (List)idLocations.get(ids[count]));
} else {
Set todo = (Set)resolve.get(ids[count]);
if (todo == null) {
todo = new HashSet();
resolve.put(ids[count], todo);
}
todo.add(ext);
}
}
} else {
handleTreeExtension(ext, TreeExt.IMMEDIATELY);
}
}
/**
* Handle a tree extension.
* This sends the extension to the model for handling.
* @param ext the tree extension to handle
* @param when when the extension should be handled by the model
*/
public void handleTreeExtension(TreeExt ext, int when) {
// queue tree extension according to the when
model.addExtension(ext, when);
}
/**
* Prepare AreaTreeHandler for document processing
* This is called from FOTreeBuilder.startDocument()
*
* @throws SAXException if there is an error
*/
public void startDocument() throws SAXException {
//Initialize statistics
if (collectStatistics) {
pageCount = 0;
if (MEM_PROFILE_WITH_GC) {
System.gc(); // This takes time but gives better results
}
initialMemory = runtime.totalMemory() - runtime.freeMemory();
startTime = System.currentTimeMillis();
}
}
/**
* End the document.
*
* @throws SAXException if there is some error
*/
public void endDocument() throws SAXException {
if (pageSequenceFound == false) {
throw new SAXException("Error: No fo:page-sequence child " +
"found within fo:root element.");
}
// deal with unresolved references
for (Iterator iter = resolve.keySet().iterator(); iter.hasNext();) {
String id = (String)iter.next();
Set list = (Set)resolve.get(id);
for (Iterator resIter = list.iterator(); resIter.hasNext();) {
Resolveable res = (Resolveable)resIter.next();
if (!res.isResolved()) {
res.resolve(id, null);
}
}
}
model.endDocument();
if (collectStatistics) {
if (MEM_PROFILE_WITH_GC) {
// This takes time but gives better results
System.gc();
}
long memoryNow = runtime.totalMemory() - runtime.freeMemory();
long memoryUsed = (memoryNow - initialMemory) / 1024L;
long timeUsed = System.currentTimeMillis() - startTime;
if (logger != null && logger.isDebugEnabled()) {
logger.debug("Initial heap size: " + (initialMemory / 1024L) + "Kb");
logger.debug("Current heap size: " + (memoryNow / 1024L) + "Kb");
logger.debug("Total memory used: " + memoryUsed + "Kb");
if (!MEM_PROFILE_WITH_GC) {
logger.debug(" Memory use is indicative; no GC was performed");
logger.debug(" These figures should not be used comparatively");
}
logger.debug("Total time used: " + timeUsed + "ms");
logger.debug("Pages rendered: " + pageCount);
if (pageCount > 0) {
logger.debug("Avg render time: " + (timeUsed / pageCount) +
"ms/page");
}
}
}
}
/**
* Create the bookmark data in the area tree.
*/
public void addBookmarks(Bookmarks bookmarks) {
if (bookmarks == null) {
return;
}
log.debug("adding bookmarks to area tree");
BookmarkData data = new BookmarkData();
for (int count = 0; count < bookmarks.getOutlines().size(); count++) {
Outline out = (Outline)(bookmarks.getOutlines()).get(count);
data.addSubData(createBookmarkData(out));
}
addTreeExtension(data);
data.setAreaTreeHandler(this);
}
/**
* Create and return the bookmark data for this outline.
* This creates a bookmark data with the destination
* and adds all the data from child outlines.
*
* @param outline the Outline object for which a bookmark entry should be
* created
* @return the new bookmark data
*/
public BookmarkData createBookmarkData(Outline outline) {
BookmarkData data = new BookmarkData(outline.getInternalDestination());
data.setLabel(outline.getLabel());
for (int count = 0; count < outline.getOutlines().size(); count++) {
Outline out = (Outline)(outline.getOutlines()).get(count);
data.addSubData(createBookmarkData(out));
}
return data;
}
/**
* Start a page sequence.
* At the start of a page sequence it can start the page sequence
* on the area tree with the page sequence title.
*
* @param pageSeq the page sequence starting
*/
public void startPageSequence(PageSequence pageSeq) {
pageSequenceFound = true;
}
/**
* End the PageSequence.
* The PageSequence formats Pages and adds them to the AreaTree.
* The area tree then handles what happens with the pages.
*
* @param pageSequence the page sequence ending
* @throws FOPException if there is an error formatting the pages
*/
public void endPageSequence(PageSequence pageSequence)
throws FOPException {
//areaTree.setFontInfo(fontInfo);
if (collectStatistics) {
if (MEM_PROFILE_WITH_GC) {
// This takes time but gives better results
System.gc();
}
long memoryNow = runtime.totalMemory() - runtime.freeMemory();
if (logger != null) {
logger.debug("Current heap size: " + (memoryNow / 1024L) + "Kb");
}
}
addBookmarks(pageSequence.getRoot().getBookmarks());
formatPageSequence(pageSequence);
}
/**
* Runs the formatting of this page sequence into the given area tree
*
* @param pageSeq the PageSequence to be formatted
* @param areaTree the area tree to format this page sequence into
* @throws FOPException if there is an error formatting the contents
*/
private void formatPageSequence(PageSequence pageSeq)
throws FOPException {
Title title = null;
if (pageSeq.getTitleFO() != null) {
title = getTitleArea(pageSeq.getTitleFO());
}
model.startPageSequence(title);
// Make a new PageLayoutManager and a FlowLayoutManager
// Run the PLM in a thread
// Wait for them to finish.
// If no main flow, nothing to layout!
if (pageSeq.getMainFlow() == null) {
return;
}
// Initialize if already used?
// this.layoutMasterSet.resetPageMasters();
if (pageSeq.getPageSequenceMaster() != null) {
pageSeq.getPageSequenceMaster().reset();
}
pageSeq.initPageNumber();
// This will layout pages and add them to the area tree
PageLayoutManager pageLM = new PageLayoutManager(this, pageSeq);
pageLM.setPageCounting(pageSeq.getCurrentPageNumber(),
pageSeq.getPageNumberGenerator());
// For now, skip the threading and just call run directly.
pageLM.run();
// Thread layoutThread = new Thread(pageLM);
// layoutThread.start();
// log.debug("Layout thread started");
// // wait on both managers
// try {
// layoutThread.join();
// log.debug("Layout thread done");
// } catch (InterruptedException ie) {
// log.error("PageSequence.format() interrupted waiting on layout");
// }
pageSeq.setCurrentPageNumber(pageLM.getPageCount());
// Tell the root the last page number we created.
pageSeq.getRoot().setRunningPageNumberCounter(pageSeq.getCurrentPageNumber());
}
/**
* @return the Title area
*/
private org.apache.fop.area.Title
getTitleArea(org.apache.fop.fo.pagination.Title foTitle) {
// use special layout manager to add the inline areas
// to the Title.
InlineStackingLayoutManager lm;
lm = new InlineStackingLayoutManager(foTitle);
lm.setLMiter(new LMiter(lm, foTitle.children.listIterator()));
lm.initialize();
// get breaks then add areas to title
org.apache.fop.area.Title title =
new org.apache.fop.area.Title();
ContentLayoutManager clm = new ContentLayoutManager(title);
clm.setUserAgent(foTitle.getUserAgent());
lm.setParent(clm);
clm.fillArea(lm);
return title;
}
/**
* Public accessor to get the AddLMVisitor object that should be used.
* @return the AddLMVisitor object that should be used.
*/
public AddLMVisitor getAddLMVisitor() {
if (this.addLMVisitor == null) {
this.addLMVisitor = new AddLMVisitor();
}
return this.addLMVisitor;
}
}
1.4 +9 -9
xml-fop/src/java/org/apache/fop/area/extensions/BookmarkData.java
Index: BookmarkData.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/area/extensions/BookmarkData.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BookmarkData.java 27 Feb 2004 17:40:31 -0000 1.3
+++ BookmarkData.java 13 Jul 2004 00:16:22 -0000 1.4
@@ -21,7 +21,7 @@
import org.apache.fop.area.PageViewport;
import org.apache.fop.area.Resolveable;
import org.apache.fop.area.TreeExt;
-import org.apache.fop.area.AreaTree;
+import org.apache.fop.area.AreaTreeHandler;
import java.util.ArrayList;
import java.util.List;
@@ -36,8 +36,8 @@
private ArrayList subData = new ArrayList();
private HashMap idRefs = new HashMap();
- // area tree for the top level object to notify when resolved
- private AreaTree areaTree = null;
+ // area tree handler for the top level object to notify when resolved
+ private AreaTreeHandler areaTreeHandler = null;
private String idRef;
private PageViewport pageRef = null;
@@ -69,10 +69,10 @@
* This should only be called for the top level element.
* The area tree is used once resolving is complete.
*
- * @param at the area tree for the current document
+ * @param at the area tree handler for the current document
*/
- public void setAreaTree(AreaTree at) {
- areaTree = at;
+ public void setAreaTreeHandler(AreaTreeHandler ath) {
+ areaTreeHandler = ath;
}
/**
@@ -229,8 +229,8 @@
private void checkFinish() {
if (idRefs.size() == 0) {
idRefs = null;
- if (areaTree != null) {
- areaTree.handleTreeExtension(this, TreeExt.AFTER_PAGE);
+ if (areaTreeHandler != null) {
+ areaTreeHandler.handleTreeExtension(this, TreeExt.AFTER_PAGE);
}
}
}
1.23 +100 -51 xml-fop/src/java/org/apache/fop/fo/FOInputHandler.java
Index: FOInputHandler.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOInputHandler.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- FOInputHandler.java 27 Jun 2004 13:29:32 -0000 1.22
+++ FOInputHandler.java 13 Jul 2004 00:16:22 -0000 1.23
@@ -26,7 +26,6 @@
// Apache
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.FOPException;
-import org.apache.fop.area.AreaTree;
import org.apache.fop.fo.flow.BasicLink;
import org.apache.fop.fo.flow.Block;
import org.apache.fop.fo.flow.ExternalGraphic;
@@ -127,38 +126,44 @@
* This method is called to indicate the start of a new document run.
* @throws SAXException In case of a problem
*/
- public abstract void startDocument() throws SAXException;
+ public void startDocument() throws SAXException {
+ }
/**
* This method is called to indicate the end of a document run.
* @throws SAXException In case of a problem
*/
- public abstract void endDocument() throws SAXException;
+ public void endDocument() throws SAXException {
+ }
/**
*
* @param pageSeq PageSequence that is starting.
*/
- public abstract void startPageSequence(PageSequence pageSeq);
+ public void startPageSequence(PageSequence pageSeq) {
+ }
/**
*
* @param pageSeq PageSequence that is ending.
* @throws FOPException For errors encountered.
*/
- public abstract void endPageSequence(PageSequence pageSeq) throws FOPException;
+ public void endPageSequence(PageSequence pageSeq) throws FOPException {
+ }
/**
*
* @param pagenum PageNumber that is starting.
*/
- public abstract void startPageNumber(PageNumber pagenum);
+ public void startPageNumber(PageNumber pagenum) {
+ }
/**
*
* @param pagenum PageNumber that is ending.
*/
- public abstract void endPageNumber(PageNumber pagenum);
+ public void endPageNumber(PageNumber pagenum) {
+ }
/**
* This method is called to indicate the start of a new fo:flow or
fo:static-content.
@@ -167,122 +172,142 @@
*
* @param fl Flow that is starting.
*/
- public abstract void startFlow(Flow fl);
+ public void startFlow(Flow fl) {
+ }
/**
*
* @param fl Flow that is ending.
*/
- public abstract void endFlow(Flow fl);
+ public void endFlow(Flow fl) {
+ }
/**
*
* @param bl Block that is starting.
*/
- public abstract void startBlock(Block bl);
+ public void startBlock(Block bl) {
+ }
/**
*
* @param bl Block that is ending.
*/
- public abstract void endBlock(Block bl);
+ public void endBlock(Block bl) {
+ }
/**
*
* @param inl Inline that is starting.
*/
- public abstract void startInline(Inline inl);
+ public void startInline(Inline inl) {
+ }
/**
*
* @param inl Inline that is ending.
*/
- public abstract void endInline(Inline inl);
+ public void endInline(Inline inl) {
+ }
// Tables
/**
*
* @param tbl Table that is starting.
*/
- public abstract void startTable(Table tbl);
+ public void startTable(Table tbl) {
+ }
/**
*
* @param tbl Table that is ending.
*/
- public abstract void endTable(Table tbl);
+ public void endTable(Table tbl) {
+ }
/**
*
* @param tc TableColumn that is starting;
*/
- public abstract void startColumn(TableColumn tc);
+ public void startColumn(TableColumn tc) {
+ }
/**
*
* @param tc TableColumn that is ending;
*/
- public abstract void endColumn(TableColumn tc);
+ public void endColumn(TableColumn tc) {
+ }
/**
*
* @param th TableBody that is starting;
*/
- public abstract void startHeader(TableBody th);
+ public void startHeader(TableBody th) {
+ }
/**
*
* @param th TableBody that is ending.
*/
- public abstract void endHeader(TableBody th);
+ public void endHeader(TableBody th) {
+ }
/**
*
* @param tf TableFooter that is starting.
*/
- public abstract void startFooter(TableBody tf);
+ public void startFooter(TableBody tf) {
+ }
/**
*
* @param tf TableFooter that is ending.
*/
- public abstract void endFooter(TableBody tf);
+ public void endFooter(TableBody tf) {
+ }
/**
*
* @param tb TableBody that is starting.
*/
- public abstract void startBody(TableBody tb);
+ public void startBody(TableBody tb) {
+ }
/**
*
* @param tb TableBody that is ending.
*/
- public abstract void endBody(TableBody tb);
+ public void endBody(TableBody tb) {
+ }
/**
*
* @param tr TableRow that is starting.
*/
- public abstract void startRow(TableRow tr);
+ public void startRow(TableRow tr) {
+ }
/**
*
* @param tr TableRow that is ending.
*/
- public abstract void endRow(TableRow tr);
+ public void endRow(TableRow tr) {
+ }
/**
*
* @param tc TableCell that is starting.
*/
- public abstract void startCell(TableCell tc);
+ public void startCell(TableCell tc) {
+ }
/**
*
* @param tc TableCell that is ending.
*/
- public abstract void endCell(TableCell tc);
+ public void endCell(TableCell tc) {
+ }
// Lists
@@ -290,124 +315,147 @@
*
* @param lb ListBlock that is starting.
*/
- public abstract void startList(ListBlock lb);
+ public void startList(ListBlock lb) {
+ }
/**
*
* @param lb ListBlock that is ending.
*/
- public abstract void endList(ListBlock lb);
+ public void endList(ListBlock lb) {
+ }
/**
*
* @param li ListItem that is starting.
*/
- public abstract void startListItem(ListItem li);
+ public void startListItem(ListItem li) {
+ }
/**
*
* @param li ListItem that is ending.
*/
- public abstract void endListItem(ListItem li);
+ public void endListItem(ListItem li) {
+ }
/**
* Process start of a ListLabel.
*/
- public abstract void startListLabel();
+ public void startListLabel() {
+ }
/**
* Process end of a ListLabel.
*/
- public abstract void endListLabel();
+ public void endListLabel() {
+ }
/**
* Process start of a ListBody.
*/
- public abstract void startListBody();
+ public void startListBody() {
+ }
/**
* Process end of a ListBody.
*/
- public abstract void endListBody();
+ public void endListBody() {
+ }
// Static Regions
/**
* Process start of a Static.
*/
- public abstract void startStatic();
+ public void startStatic() {
+ }
/**
* Process end of a Static.
*/
- public abstract void endStatic();
+ public void endStatic() {
+ }
+
/**
* Process start of a Markup.
*/
- public abstract void startMarkup();
+ public void startMarkup() {
+ }
/**
* Process end of a Markup.
*/
- public abstract void endMarkup();
+ public void endMarkup() {
+ }
/**
* Process start of a Link.
* @param basicLink BasicLink that is ending
*/
- public abstract void startLink(BasicLink basicLink);
+ public void startLink(BasicLink basicLink) {
+ }
/**
* Process end of a Link.
*/
- public abstract void endLink();
+ public void endLink() {
+ }
/**
* Process an ExternalGraphic.
* @param eg ExternalGraphic to process.
*/
- public abstract void image(ExternalGraphic eg);
+ public void image(ExternalGraphic eg) {
+ }
/**
* Process a pageRef.
*/
- public abstract void pageRef();
+ public void pageRef() {
+ }
/**
* Process an InstreamForeignObject.
* @param ifo InstreamForeignObject to process.
*/
- public abstract void foreignObject(InstreamForeignObject ifo);
+ public void foreignObject(InstreamForeignObject ifo) {
+ }
/**
* Process the start of a footnote.
* @param footnote Footnote that is starting
*/
- public abstract void startFootnote(Footnote footnote);
+ public void startFootnote(Footnote footnote) {
+ }
/**
* Process the ending of a footnote.
* @param footnote Footnote that is ending
*/
- public abstract void endFootnote(Footnote footnote);
+ public void endFootnote(Footnote footnote) {
+ }
/**
* Process the start of a footnote body.
* @param body FootnoteBody that is starting
*/
- public abstract void startFootnoteBody(FootnoteBody body);
+ public void startFootnoteBody(FootnoteBody body) {
+ }
/**
* Process the ending of a footnote body.
* @param body FootnoteBody that is ending
*/
- public abstract void endFootnoteBody(FootnoteBody body);
+ public void endFootnoteBody(FootnoteBody body) {
+ }
/**
* Process a Leader.
* @param l Leader to process.
*/
- public abstract void leader(Leader l);
+ public void leader(Leader l) {
+ }
/**
* Process character data.
@@ -415,7 +463,8 @@
* @param start Offset for characters to process.
* @param length Portion of array to process.
*/
- public abstract void characters(char data[], int start, int length);
+ public void characters(char data[], int start, int length) {
+ }
}
1.17 +3 -3
xml-fop/src/java/org/apache/fop/layoutmgr/AbstractLayoutManager.java
Index: AbstractLayoutManager.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/AbstractLayoutManager.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- AbstractLayoutManager.java 13 Jun 2004 01:11:49 -0000 1.16
+++ AbstractLayoutManager.java 13 Jul 2004 00:16:22 -0000 1.17
@@ -21,11 +21,11 @@
import org.apache.fop.fo.FObj;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.area.Area;
+import org.apache.fop.area.AreaTreeHandler;
import org.apache.fop.area.Resolveable;
import org.apache.fop.area.PageViewport;
import org.apache.fop.fo.Constants;
import org.apache.fop.fo.flow.Marker;
-import org.apache.fop.fo.FOTreeHandler;
import org.apache.fop.fo.PropertyManager;
import org.apache.commons.logging.Log;
@@ -108,8 +108,8 @@
return this.parentLM;
}
- public FOTreeHandler getFOTreeHandler() {
- return getParent().getFOTreeHandler();
+ public AreaTreeHandler getAreaTreeHandler() {
+ return getParent().getAreaTreeHandler();
}
// /**
1.11 +3 -3
xml-fop/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java
Index: ContentLayoutManager.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ContentLayoutManager.java 13 Jun 2004 01:11:49 -0000 1.10
+++ ContentLayoutManager.java 13 Jul 2004 00:16:22 -0000 1.11
@@ -19,10 +19,10 @@
package org.apache.fop.layoutmgr;
import org.apache.fop.fo.FObj;
-import org.apache.fop.fo.FOTreeHandler;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fo.flow.Marker;
import org.apache.fop.area.Area;
+import org.apache.fop.area.AreaTreeHandler;
import org.apache.fop.area.Resolveable;
import org.apache.fop.area.PageViewport;
@@ -171,8 +171,8 @@
return this.parentLM;
}
- public FOTreeHandler getFOTreeHandler() {
- return getParent().getFOTreeHandler();
+ public AreaTreeHandler getAreaTreeHandler() {
+ return getParent().getAreaTreeHandler();
}
/** @see org.apache.fop.layoutmgr.LayoutManager */
1.8 +1 -1 xml-fop/src/java/org/apache/fop/layoutmgr/LMiter.java
Index: LMiter.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LMiter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- LMiter.java 13 Jun 2004 01:11:49 -0000 1.7
+++ LMiter.java 13 Jul 2004 00:16:22 -0000 1.8
@@ -46,7 +46,7 @@
}
protected boolean preLoadNext() {
- AddLMVisitor addLMVisitor = lp.getFOTreeHandler().getAddLMVisitor();
+ AddLMVisitor addLMVisitor = lp.getAreaTreeHandler().getAddLMVisitor();
// skip over child FObj's that don't add lms
while (baseIter != null && baseIter.hasNext()) {
Object theobj = baseIter.next();
1.9 +4 -4 xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManager.java
Index: LayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManager.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- LayoutManager.java 13 Jun 2004 01:11:49 -0000 1.8
+++ LayoutManager.java 13 Jul 2004 00:16:22 -0000 1.9
@@ -27,7 +27,7 @@
import org.apache.fop.area.PageViewport;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fo.FObj;
-import org.apache.fop.fo.FOTreeHandler;
+import org.apache.fop.area.AreaTreeHandler;
/**
* The interface for all LayoutManagers.
@@ -58,10 +58,10 @@
LayoutManager getParent();
/**
- * Get the FOTreeHandler object that is activating the LM Tree
- * @return the FOTreeHandler object
+ * Get the AreaTreeHandler object that is activating the LM Tree
+ * @return the AreaTreeHandler object
*/
- FOTreeHandler getFOTreeHandler();
+ AreaTreeHandler getAreaTreeHandler();
/**
* Initialize this layout manager.
1.43 +11 -15 xml-fop/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java
Index: PageLayoutManager.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- PageLayoutManager.java 18 Jun 2004 17:58:35 -0000 1.42
+++ PageLayoutManager.java 13 Jul 2004 00:16:22 -0000 1.43
@@ -21,7 +21,7 @@
import org.apache.fop.apps.FOPException;
import org.apache.fop.area.CTM;
-import org.apache.fop.area.AreaTree;
+import org.apache.fop.area.AreaTreeHandler;
import org.apache.fop.area.AreaTreeModel;
import org.apache.fop.area.Area;
import org.apache.fop.area.PageViewport;
@@ -41,7 +41,6 @@
import org.apache.fop.datatypes.FODimension;
import org.apache.fop.fo.FObj;
-import org.apache.fop.fo.FOTreeHandler;
import org.apache.fop.fo.Constants;
import org.apache.fop.fo.flow.Marker;
import org.apache.fop.fo.pagination.PageNumberGenerator;
@@ -108,9 +107,8 @@
* laid out and ready for rendering, except for resolution of ID
* references?
*/
- private AreaTree areaTree;
+ private AreaTreeHandler areaTreeHandler;
private PageSequence pageSequence;
- private FOTreeHandler foTreeHandler;
/**
* This is the SimplePageMaster that should be used to create the page. It
@@ -133,12 +131,10 @@
* @param areaTree the area tree to add pages to
* @param pageseq the page sequence fo
*/
- public PageLayoutManager(AreaTree areaTree, PageSequence pageseq,
- FOTreeHandler foTreeHandler) {
+ public PageLayoutManager(AreaTreeHandler areaTreeHandler, PageSequence pageseq)
{
super(pageseq);
- this.areaTree = areaTree;
+ this.areaTreeHandler = areaTreeHandler;
pageSequence = pageseq;
- this.foTreeHandler = foTreeHandler;
}
/**
@@ -262,7 +258,7 @@
* @return the first page viewport that contains the reference
*/
public PageViewport resolveRefID(String ref) {
- List list = areaTree.getIDReferences(ref);
+ List list = areaTreeHandler.getIDReferences(ref);
if (list != null && list.size() > 0) {
return (PageViewport)list.get(0);
}
@@ -292,7 +288,7 @@
* @param id the ID reference to add
*/
public void addIDToPage(String id) {
- areaTree.addIDRef(id, curPage);
+ areaTreeHandler.addIDRef(id, curPage);
}
/**
@@ -310,7 +306,7 @@
// add unresolved to tree
// adds to the page viewport so it can serialize
curPage.addUnresolvedID(id, res);
- areaTree.addUnresolvedID(id, curPage);
+ areaTreeHandler.addUnresolvedID(id, curPage);
}
/**
@@ -345,7 +341,7 @@
// go back over pages until mark found
// if document boundary then keep going
boolean doc = boundary == RetrieveBoundary.DOCUMENT;
- AreaTreeModel atm = areaTree.getAreaTreeModel();
+ AreaTreeModel atm = areaTreeHandler.getAreaTreeModel();
int seq = atm.getPageSequenceCount();
int page = atm.getPageCount(seq) - 1;
while (page >= 0) {
@@ -503,7 +499,7 @@
layoutStaticContent(currentSimplePageMaster.getRegion(Region.END_CODE),
Region.END_CODE);
// Queue for ID resolution and rendering
- areaTree.addPage(curPage);
+ areaTreeHandler.addPage(curPage);
curPage = null;
curBody = null;
curSpan = null;
@@ -903,7 +899,7 @@
/**
* @return the apps.FOTreeHandler object controlling this generation
*/
- public FOTreeHandler getFOTreeHandler() {
- return foTreeHandler;
+ public AreaTreeHandler getAreaTreeHandler() {
+ return areaTreeHandler;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]