gmazza      2004/12/16 16:19:11

  Modified:    src/java/org/apache/fop/area AreaTreeHandler.java
                        BookmarkData.java
  Log:
  Moved the (upcoming) fo:bookmark-tree construction code from AreaTreeHandler
  to the BookmarkData object.
  
  Revision  Changes    Path
  1.27      +24 -54    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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- AreaTreeHandler.java      16 Dec 2004 23:59:13 -0000      1.26
  +++ AreaTreeHandler.java      17 Dec 2004 00:19:10 -0000      1.27
  @@ -36,7 +36,6 @@
   import org.apache.fop.apps.FOPException;
   import org.apache.fop.apps.FOUserAgent;
   import org.apache.fop.fo.FOEventHandler;
  -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.fo.pagination.Root;
  @@ -194,31 +193,6 @@
       }
   
       /**
  -     * End the document.
  -     *
  -     * @throws SAXException if there is some error
  -     */
  -    public void endDocument() throws SAXException {
  -        addBookmarks(rootFObj.getBookmarks());
  -
  -        model.endDocument();
  -
  -        if (outputStatistics) {
  -            long memoryNow = runtime.totalMemory() - runtime.freeMemory();
  -            long memoryUsed = (memoryNow - initialMemory) / 1024L;
  -            long timeUsed = System.currentTimeMillis() - startTime;
  -            log.debug("Initial heap size: " + (initialMemory / 1024L) + 
"Kb");
  -            log.debug("Current heap size: " + (memoryNow / 1024L) + "Kb");
  -            log.debug("Total memory used: " + memoryUsed + "Kb");
  -            log.debug("Total time used: " + timeUsed + "ms");
  -            log.debug("Pages rendered: " + pageCount);
  -            if (pageCount > 0) {
  -                log.debug("Avg render time: " + (timeUsed / pageCount) + 
"ms/page");
  -            }
  -        }
  -    }
  -
  -    /**
        * End the PageSequence.
        * The PageSequence formats Pages and adds them to the AreaTree.
        * The area tree then handles what happens with the pages.
  @@ -243,38 +217,34 @@
       }
   
       /**
  -     * Create the bookmark data in the area tree.
  +     * End the document.
  +     *
  +     * @throws SAXException if there is some error
        */
  -    private void addBookmarks(Bookmarks bookmarks) {
  -        if (bookmarks == null) {
  -            return;
  -        }
  +    public void endDocument() throws SAXException {
   
  -        BookmarkData data = new BookmarkData();
  -        for (int count = 0; count < bookmarks.getOutlines().size(); count++) 
{
  -            Outline out = (Outline)(bookmarks.getOutlines()).get(count);
  -            data.addSubData(createBookmarkData(out));
  +        // process fo:bookmark-tree
  +        Bookmarks bookmarks = rootFObj.getBookmarks();
  +        if (bookmarks != null) {
  +            BookmarkData data = new BookmarkData(bookmarks);
  +            addOffDocumentItem(data);
           }
  -        addOffDocumentItem(data);
  -    }
   
  -    /**
  -     * 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
  -     */
  -    private 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));
  +        model.endDocument();
  +
  +        if (outputStatistics) {
  +            long memoryNow = runtime.totalMemory() - runtime.freeMemory();
  +            long memoryUsed = (memoryNow - initialMemory) / 1024L;
  +            long timeUsed = System.currentTimeMillis() - startTime;
  +            log.debug("Initial heap size: " + (initialMemory / 1024L) + 
"Kb");
  +            log.debug("Current heap size: " + (memoryNow / 1024L) + "Kb");
  +            log.debug("Total memory used: " + memoryUsed + "Kb");
  +            log.debug("Total time used: " + timeUsed + "ms");
  +            log.debug("Pages rendered: " + pageCount);
  +            if (pageCount > 0) {
  +                log.debug("Avg render time: " + (timeUsed / pageCount) + 
"ms/page");
  +            }
           }
  -        return data;
       }
   
       /**
  
  
  
  1.8       +32 -2     xml-fop/src/java/org/apache/fop/area/BookmarkData.java
  
  Index: BookmarkData.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/BookmarkData.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BookmarkData.java 16 Dec 2004 23:59:13 -0000      1.7
  +++ BookmarkData.java 17 Dec 2004 00:19:11 -0000      1.8
  @@ -22,6 +22,9 @@
   import java.util.List;
   import java.util.HashMap;
   
  +import org.apache.fop.fo.extensions.Bookmarks;
  +import org.apache.fop.fo.extensions.Outline;
  +
   /**
    * An instance of this class is either a PDF bookmark-tree and
    * its child bookmark-items, or a bookmark-item and the child
  @@ -46,10 +49,17 @@
        * Create a new bookmark data object.
        * This should only be called by the bookmark-tree item because
        * it has no idref item that needs to be resolved.
  +     *
  +     * @param bookmarks fo:bookmark-tree for this document
        */
  -    public BookmarkData() {
  +    public BookmarkData(Bookmarks bookmarks) {
           idRef = null;
           whenToProcess = END_OF_DOC;
  +        
  +        for (int count = 0; count < bookmarks.getOutlines().size(); count++) 
{
  +            Outline out = (Outline)(bookmarks.getOutlines()).get(count);
  +            addSubData(createBookmarkData(out));
  +        }
       }
   
       /**
  @@ -183,5 +193,25 @@
       public String getName() {
           return "Bookmarks";
       }
  +
  +    /**
  +     * 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
  +     */
  +    private 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;
  +    }
  +
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to