]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Moved the (upcoming) fo:bookmark-tree construction code from AreaTreeHandler
authorGlen Mazza <gmazza@apache.org>
Fri, 17 Dec 2004 00:19:11 +0000 (00:19 +0000)
committerGlen Mazza <gmazza@apache.org>
Fri, 17 Dec 2004 00:19:11 +0000 (00:19 +0000)
to the BookmarkData object.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198203 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/area/AreaTreeHandler.java
src/java/org/apache/fop/area/BookmarkData.java

index 68ac04914a08e2d7c63394d69caef43067d48bfe..df60e0cbbf2242bacb0e468aeccc88e972dc487c 100644 (file)
@@ -36,7 +36,6 @@ import org.apache.commons.logging.LogFactory;
 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;
@@ -193,31 +192,6 @@ public class AreaTreeHandler extends FOEventHandler {
         }
     }
 
-    /**
-     * 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.
@@ -243,38 +217,34 @@ public class AreaTreeHandler extends FOEventHandler {
     }
 
     /**
-     * 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;
     }
 
     /**
index 9e814a0d97516492bd6504ffa70ef75ee9592d6c..8a0a4b39d5e19c1f5724d3d61a49b202334e837c 100644 (file)
@@ -22,6 +22,9 @@ import java.util.ArrayList;
 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 @@ public class BookmarkData extends OffDocumentItem implements Resolvable {
      * 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 class BookmarkData extends OffDocumentItem implements Resolvable {
     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;
+    }
+
 }