gmazza 2004/10/27 17:06:47 Modified: src/java/org/apache/fop/area AreaTreeHandler.java AreaTreeModel.java OffDocumentItem.java RenderPagesModel.java StorePagesModel.java src/java/org/apache/fop/render/pdf PDFRenderer.java Added: src/java/org/apache/fop/area BookmarkData.java Removed: src/java/org/apache/fop/area/extensions BookmarkData.java Log: 1.) Changed OffDocumentItem from an interface to an abstract base class. 2.) Removed the "extensions" package. Revision Changes Path 1.16 +2 -3 xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java Index: AreaTreeHandler.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- AreaTreeHandler.java 27 Oct 2004 23:36:32 -0000 1.15 +++ AreaTreeHandler.java 28 Oct 2004 00:06:46 -0000 1.16 @@ -33,7 +33,6 @@ // 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.FOEventHandler; import org.apache.fop.fo.extensions.Outline; import org.apache.fop.fo.extensions.Bookmarks; @@ -317,7 +316,7 @@ } } } else { - model.handleOffDocumentItem(ext, OffDocumentItem.IMMEDIATELY); + model.handleOffDocumentItem(ext); } } } 1.10 +1 -2 xml-fop/src/java/org/apache/fop/area/AreaTreeModel.java Index: AreaTreeModel.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/AreaTreeModel.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- AreaTreeModel.java 27 Oct 2004 23:36:32 -0000 1.9 +++ AreaTreeModel.java 28 Oct 2004 00:06:46 -0000 1.10 @@ -45,9 +45,8 @@ /** * Handle an OffDocumentItem * @param ext the extension to handle - * @param when when the extension should be handled */ - public abstract void handleOffDocumentItem(OffDocumentItem ext, int when); + public abstract void handleOffDocumentItem(OffDocumentItem ext); /** * Signal the end of the document for any processing. 1.2 +17 -6 xml-fop/src/java/org/apache/fop/area/OffDocumentItem.java Index: OffDocumentItem.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/OffDocumentItem.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- OffDocumentItem.java 27 Oct 2004 23:36:32 -0000 1.1 +++ OffDocumentItem.java 28 Oct 2004 00:06:46 -0000 1.2 @@ -19,28 +19,39 @@ package org.apache.fop.area; /** - * Interface for objects that are processed by the renderer outside + * Abstract base class for objects that are processed by the renderer outside * of the actual document. * This object can be handled by the renderer according to three * possibilities, IMMEDIATELY, AFTER_PAGE, or END_OF_DOC. */ -public interface OffDocumentItem { +public abstract class OffDocumentItem { + /** - * Render this extension immediately when + * Process this extension immediately when * being handled by the area tree. */ public static final int IMMEDIATELY = 0; /** - * Render this extension after the next page is rendered + * Process this extension after the next page is rendered * or prepared when being handled by the area tree. */ public static final int AFTER_PAGE = 1; /** - * Render this extension at the end of the document once + * Process this extension at the end of the document once * all pages have been fully rendered. */ public static final int END_OF_DOC = 2; + + protected int whenToProcess = IMMEDIATELY; + + /** + * Get an indicator of when this item should be processed + * @return int constant (IMMEDIATELY, AFTER_PAGE, END_OF_DOC) + */ + public int getWhenToProcess() { + return whenToProcess; + } } 1.9 +16 -17 xml-fop/src/java/org/apache/fop/area/RenderPagesModel.java Index: RenderPagesModel.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/RenderPagesModel.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- RenderPagesModel.java 27 Oct 2004 23:36:32 -0000 1.8 +++ RenderPagesModel.java 28 Oct 2004 00:06:46 -0000 1.9 @@ -52,8 +52,8 @@ * Pages that have been prepared but not rendered yet. */ protected List prepared = new java.util.ArrayList(); - private List pendingExt = new java.util.ArrayList(); - private List endDocExt = new java.util.ArrayList(); + private List pendingODI = new java.util.ArrayList(); + private List endDocODI = new java.util.ArrayList(); /** * Create a new render pages model with the given renderer. @@ -126,8 +126,8 @@ boolean cont = checkPreparedPages(page); if (cont) { - processOffDocumentItems(pendingExt); - pendingExt.clear(); + processOffDocumentItems(pendingODI); + pendingODI.clear(); } } @@ -175,41 +175,40 @@ } /** - * @see org.apache.fop.area.AreaTreeModel#handleOffDocumentItem(OffDocumentItem, int) + * @see org.apache.fop.area.AreaTreeModel#handleOffDocumentItem(OffDocumentItem) */ - public void handleOffDocumentItem(OffDocumentItem ext, int when) { - switch(when) { + public void handleOffDocumentItem(OffDocumentItem oDI) { + switch(oDI.getWhenToProcess()) { case OffDocumentItem.IMMEDIATELY: - renderer.processOffDocumentItem(ext); + renderer.processOffDocumentItem(oDI); break; case OffDocumentItem.AFTER_PAGE: - pendingExt.add(ext); + pendingODI.add(oDI); break; case OffDocumentItem.END_OF_DOC: - endDocExt.add(ext); + endDocODI.add(oDI); break; } } private void processOffDocumentItems(List list) { for (int count = 0; count < list.size(); count++) { - OffDocumentItem ext = (OffDocumentItem)list.get(count); - renderer.processOffDocumentItem(ext); + OffDocumentItem oDI = (OffDocumentItem)list.get(count); + renderer.processOffDocumentItem(oDI); } } /** - * End the document. Render any end document extensions. + * End the document. Render any end document OffDocumentItems * @see org.apache.fop.area.AreaTreeModel#endDocument() */ public void endDocument() throws SAXException { // render any pages that had unresolved ids checkPreparedPages(null); - processOffDocumentItems(pendingExt); - pendingExt.clear(); - - processOffDocumentItems(endDocExt); + processOffDocumentItems(pendingODI); + pendingODI.clear(); + processOffDocumentItems(endDocODI); try { renderer.stopRenderer(); 1.12 +12 -12 xml-fop/src/java/org/apache/fop/area/StorePagesModel.java Index: StorePagesModel.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/StorePagesModel.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- StorePagesModel.java 27 Oct 2004 23:36:32 -0000 1.11 +++ StorePagesModel.java 28 Oct 2004 00:06:46 -0000 1.12 @@ -33,7 +33,7 @@ public class StorePagesModel extends AreaTreeModel { private List pageSequence = null; private List currSequence; - private List extensions = new java.util.ArrayList(); + private List offDocumentItems = new java.util.ArrayList(); /** * Create a new store pages model @@ -92,11 +92,11 @@ } /** - * @see org.apache.fop.area.AreaTreeModel#handleOffDocumentItem(OffDocumentItem, int) + * @see org.apache.fop.area.AreaTreeModel#handleOffDocumentItem(OffDocumentItem) */ - public void handleOffDocumentItem(OffDocumentItem ext, int when) { + public void handleOffDocumentItem(OffDocumentItem ext) { int seq, page; - switch(when) { + switch(ext.getWhenToProcess()) { case OffDocumentItem.IMMEDIATELY: seq = pageSequence == null ? 0 : pageSequence.size(); page = currSequence == null ? 0 : currSequence.size(); @@ -106,26 +106,26 @@ case OffDocumentItem.END_OF_DOC: break; } - extensions.add(ext); + offDocumentItems.add(ext); } /** - * Get the list of extensions that apply at a particular + * Get the list of OffDocumentItems that apply at a particular * position in the document. * @param seq the page sequence number * @param count the page count in the sequence - * @return the list of extensions + * @return the list of OffDocumentItems */ - public List getExtensions(int seq, int count) { + public List getOffDocumentItems(int seq, int count) { return null; } /** - * Get the end of document extensions for this stroe pages model. - * @return the list of end extensions + * Get the end of document OffDocumentItems for this store pages model. + * @return the list of end OffDocumentItems */ - public List getEndExtensions() { - return extensions; + public List getEndOffDocumentItems() { + return offDocumentItems; } /** 1.1 xml-fop/src/java/org/apache/fop/area/BookmarkData.java Index: BookmarkData.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: BookmarkData.java,v 1.1 2004/10/28 00:06:46 gmazza Exp $ */ package org.apache.fop.area; import java.util.ArrayList; import java.util.List; import java.util.HashMap; /** * This class holds the PDF bookmark OffDocumentItem */ public class BookmarkData extends OffDocumentItem implements Resolvable { private ArrayList subData = new ArrayList(); private HashMap idRefs = new HashMap(); // area tree model for the top level object to activate when resolved private AreaTreeModel areaTreeModel = null; private String idRef; private PageViewport pageRef = null; private String label = null; /** * Create a new bookmark data object. * This should only be call by the top level element as the * id reference will be null. */ public BookmarkData() { idRef = null; whenToProcess = IMMEDIATELY; } /** * Create a new pdf bookmark data object. * This is used by the outlines to create a data object * with a id reference. The id reference is to be resolved. * * @param id the id reference */ public BookmarkData(String id) { idRef = id; idRefs.put(idRef, this); } /** * Set the area tree model * This should only be called for the top level element. * The area tree model is used once resolving is complete. * * @param atm the area tree model for the current document */ public void setAreaTreeModel(AreaTreeModel atm) { areaTreeModel = atm; } /** * Get the id reference for this data. * * @return the id reference */ public String getID() { return idRef; } /** * Add the child bookmark data object. * This adds a child bookmark in the bookmark hierarchy. * * @param sub the child bookmark data */ public void addSubData(BookmarkData sub) { subData.add(sub); idRefs.put(sub.getID(), sub); String[] ids = sub.getIDs(); for (int count = 0; count < ids.length; count++) { idRefs.put(ids[count], sub); } } /** * Set the label for this bookmark. * * @param l the string label */ public void setLabel(String l) { label = l; } /** * Get the label for this bookmark object. * * @return the label string */ public String getLabel() { return label; } /** * Get the size of child data objects. * * @return the number of child bookmark data */ public int getCount() { return subData.size(); } /** * Get the child data object. * * @param count the index to get * @return the child bookmark data */ public BookmarkData getSubData(int count) { return (BookmarkData)subData.get(count); } /** * Get the page that this resolves to. * * @return the PageViewport that this extension resolves to */ public PageViewport getPage() { return pageRef; } /** * Check if this resolvable object has been resolved. * Once the id reference is null then it has been resolved. * * @return true if this has been resolved */ public boolean isResolved() { return idRefs == null; } /** * Get the id references held by this object. * Also includes all id references of all children. * * @return the array of id references */ public String[] getIDs() { return (String[])idRefs.keySet().toArray(new String[] {}); } /** * Resolve this resolvable object. * This resolves the id reference and if possible also * resolves id references of child elements that have the same * id reference. * * @param id the id reference being resolved * @param pages the list of pages the the id reference resolves to */ public void resolve(String id, List pages) { // this method is buggy if (!id.equals(idRef)) { BookmarkData bd = (BookmarkData)idRefs.get(id); idRefs.remove(id); if (bd != null) { bd.resolve(id, pages); if (bd.isResolved()) { checkFinish(); } } else if (idRef == null) { checkFinish(); } } else { if (pages != null) { pageRef = (PageViewport)pages.get(0); } // TODO get rect area of id on page idRefs.remove(idRef); checkFinish(); } } private void checkFinish() { if (idRefs.size() == 0) { idRefs = null; if (areaTreeModel != null) { areaTreeModel.handleOffDocumentItem(this); } } } } 1.59 +1 -1 xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- PDFRenderer.java 27 Oct 2004 23:36:33 -0000 1.58 +++ PDFRenderer.java 28 Oct 2004 00:06:47 -0000 1.59 @@ -47,7 +47,7 @@ import org.apache.fop.area.RegionViewport; import org.apache.fop.area.Trait; import org.apache.fop.area.OffDocumentItem; -import org.apache.fop.area.extensions.BookmarkData; +import org.apache.fop.area.BookmarkData; import org.apache.fop.area.inline.Character; import org.apache.fop.area.inline.TextArea; import org.apache.fop.area.inline.Viewport;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]