]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
start of structure handler concept and adjusted the layout
authorKeiron Liddle <keiron@apache.org>
Mon, 27 May 2002 12:34:19 +0000 (12:34 +0000)
committerKeiron Liddle <keiron@apache.org>
Mon, 27 May 2002 12:34:19 +0000 (12:34 +0000)
handling appropriately

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

13 files changed:
src/org/apache/fop/apps/Driver.java
src/org/apache/fop/apps/Fop.java
src/org/apache/fop/apps/LayoutHandler.java [new file with mode: 0644]
src/org/apache/fop/apps/StreamRenderer.java [deleted file]
src/org/apache/fop/apps/StructureHandler.java [new file with mode: 0644]
src/org/apache/fop/extensions/Bookmarks.java
src/org/apache/fop/fo/FONode.java
src/org/apache/fop/fo/FOTreeBuilder.java
src/org/apache/fop/fo/FObj.java
src/org/apache/fop/fo/FObjMixed.java
src/org/apache/fop/fo/flow/Block.java
src/org/apache/fop/fo/pagination/PageSequence.java
src/org/apache/fop/layout/AreaTree.java

index e67443bcf2484dab667aa925bb3e295d06464d60..5c4d98c0f926a651f4ae1eca7a0012ccb48a5553 100644 (file)
@@ -453,11 +453,11 @@ public class Driver {
      * events but isn't a SAX Parser itself.
      */
     public ContentHandler getContentHandler() {
-        StreamRenderer streamRenderer = new StreamRenderer(_stream, _renderer);
-        streamRenderer.setLogger(getLogger());
+        StructureHandler handler = new LayoutHandler(_stream, _renderer, true);
+        handler.setLogger(getLogger());
         _treeBuilder.setLogger(getLogger());
         _treeBuilder.setUserAgent(getUserAgent());
-        _treeBuilder.setStreamRenderer(streamRenderer);
+        _treeBuilder.setStructHandler(handler);
 
         return _treeBuilder;
     }
index 4dc42dcfb037edd9d435c9245c1c4203428d977d..7b170a7e293984bae598645a02dd5932585ec28d 100644 (file)
@@ -17,8 +17,8 @@ public class Fop {
             Starter starter = options.getStarter();
             starter.run();
         } catch (FOPException e) {
-            if("null".equals(e.getMessage())) {
-                System.err.println("NullPointerException");
+            if("null".equals("" + e.getMessage())) {
+                System.err.println("Exception occured with a null error message");
             } else {
                 System.err.println("" + e.getMessage());
             }
diff --git a/src/org/apache/fop/apps/LayoutHandler.java b/src/org/apache/fop/apps/LayoutHandler.java
new file mode 100644 (file)
index 0000000..ba4bdc0
--- /dev/null
@@ -0,0 +1,189 @@
+package org.apache.fop.apps;
+
+import java.io.OutputStream;
+import java.io.IOException;
+import java.util.HashSet;
+
+import org.xml.sax.SAXException;
+
+import org.apache.fop.layout.FontInfo;
+import org.apache.fop.area.PageViewport;
+import org.apache.fop.area.AreaTree;
+import org.apache.fop.area.Title;
+import org.apache.fop.render.Renderer;
+import org.apache.fop.fo.pagination.PageSequence;
+
+import org.apache.avalon.framework.logger.Logger;
+
+/**
+ * Layout handler that receives the structure events.
+ * This initiates layout processes and corresponding
+ * rendering processes such as start/end.
+ */
+public class LayoutHandler extends StructureHandler {
+    private static final boolean MEM_PROFILE_WITH_GC = false;
+
+    /**
+      Somewhere to get our stats from.
+     */
+    private Runtime runtime = Runtime.getRuntime();
+
+    /**
+      Keep track of the number of pages rendered.
+     */
+    int pageCount = 0;
+
+    /**
+      Keep track of heap memory allocated,
+      for statistical purposes.
+     */
+    private long initialMemory;
+
+    /**
+      Keep track of time used by renderer.
+     */
+    private long startTime;
+
+    /**
+      The stream to which this rendering is to be
+      written to. <B>Note</B> that some renderers
+      do not render to a stream, and that this
+      member can therefore be null.
+     */
+    private OutputStream outputStream;
+
+    /**
+      The renderer being used.
+     */
+    private Renderer renderer;
+
+    /**
+      The FontInfo for this renderer.
+     */
+    private FontInfo fontInfo = new FontInfo();
+
+    /**
+     * The current AreaTree for the PageSequence being rendered.
+     */
+    private AreaTree areaTree;
+    private AreaTree.StorePagesModel atModel;
+
+    /**
+     * @param outputStream the stream that the result is rendered to
+     * @param renderer the renderer to call
+     * @param store if true then use the store pages model and keep the
+     *              area tree in memory
+     */
+    public LayoutHandler(OutputStream outputStream, Renderer renderer,
+                         boolean store) {
+        this.outputStream = outputStream;
+        this.renderer = renderer;
+
+        this.areaTree = new AreaTree();
+        this.atModel = AreaTree.createStorePagesModel();
+        areaTree.setTreeModel(atModel);
+    }
+
+    public AreaTree getAreaTree() {
+        return areaTree;
+    }
+
+    public void startDocument() throws SAXException {
+        pageCount = 0;
+
+        if (MEM_PROFILE_WITH_GC)
+            System.gc(); // This takes time but gives better results
+
+        initialMemory = runtime.totalMemory() - runtime.freeMemory();
+        startTime = System.currentTimeMillis();
+
+        try {
+            renderer.setupFontInfo(fontInfo);
+            renderer.startRenderer(outputStream);
+        } catch (IOException e) {
+            throw new SAXException(e);
+        }
+    }
+
+    public void endDocument() throws SAXException {
+        /*
+           Force the processing of any more queue elements,
+           even if they are not resolved.
+         */
+        try {
+            //processQueue(true);
+            processAreaTree();
+            renderer.stopRenderer();
+        } catch (FOPException e) {
+            throw new SAXException(e);
+        }
+        catch (IOException e) {
+            throw new SAXException(e);
+        }
+
+        if (MEM_PROFILE_WITH_GC)
+            System.gc(); // This takes time but gives better results
+
+        long memoryNow = runtime.totalMemory() - runtime.freeMemory();
+        long memoryUsed = (memoryNow - initialMemory) / 1024L;
+
+        log.debug("Initial heap size: " + (initialMemory / 1024L) + "Kb");
+        log.debug("Current heap size: " + (memoryNow / 1024L) + "Kb");
+        log.debug("Total memory used: " + memoryUsed + "Kb");
+
+        if (!MEM_PROFILE_WITH_GC) {
+            log.debug("  Memory use is indicative; no GC was performed");
+            log.debug("  These figures should not be used comparatively");
+        }
+
+        long timeUsed = System.currentTimeMillis() - startTime;
+
+        log.debug("Total time used: " + timeUsed + "ms");
+        log.debug("Pages rendered: " + pageCount);
+        //log.debug("Avg render time: " + (timeUsed / pageCount) + "ms/page");
+    }
+
+    /**
+       Format the PageSequence. The PageSequence
+       formats Pages and adds them to the AreaTree,
+       which subsequently calls the StreamRenderer
+       instance (this) again to render the page.
+       At this time the page might be printed
+       or it might be queued. A page might not
+       be renderable immediately if the IDReferences
+       are not all valid. In this case we defer
+       the rendering until they are all valid.
+     */
+    public void endPageSequence(PageSequence pageSequence)
+    throws FOPException {
+        //areaTree.setFontInfo(fontInfo);
+
+        pageSequence.format(areaTree);
+    }
+
+
+    private void processAreaTree() throws FOPException {
+        int count = 0;
+        int seqc = atModel.getPageSequenceCount();
+        while (count < seqc) {
+            Title title = atModel.getTitle(count);
+            renderer.startPageSequence(title);
+            int pagec = atModel.getPageCount(count);
+            for (int c = 0; c < pagec; c++) {
+                try {
+                    renderer.renderPage(atModel.getPage(count, c));
+                } catch (java.io.IOException ioex) {
+                    throw new FOPException("I/O Error rendering page",
+                                           ioex);
+                }
+            }
+            count++;
+        }
+
+    }
+
+    public FontInfo getFontInfo() {
+        return this.fontInfo;
+    }
+}
+
diff --git a/src/org/apache/fop/apps/StreamRenderer.java b/src/org/apache/fop/apps/StreamRenderer.java
deleted file mode 100644 (file)
index 74c5453..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-package org.apache.fop.apps;
-
-import java.io.OutputStream;
-import java.io.IOException;
-import java.util.HashSet;
-
-import org.xml.sax.SAXException;
-
-import org.apache.fop.layout.FontInfo;
-import org.apache.fop.area.PageViewport;
-import org.apache.fop.area.AreaTree;
-import org.apache.fop.area.Title;
-import org.apache.fop.render.Renderer;
-import org.apache.fop.fo.pagination.PageSequence;
-
-import org.apache.avalon.framework.logger.Logger;
-
-/**
-  This class acts as a bridge between the XML:FO parser
-  and the formatting/rendering classes. It will queue
-  PageSequences up until all the IDs required by them
-  are satisfied, at which time it will render the
-  pages.<P>
-  StreamRenderer is created by Driver and called from
-  FOTreeBuilder when a PageSequence is created,
-  and AreaTree when a Page is formatted.<P>
-*/
-public class StreamRenderer {
-    private static final boolean MEM_PROFILE_WITH_GC = false;
-
-    /**
-      Somewhere to get our stats from.
-    */
-    private Runtime runtime = Runtime.getRuntime();
-
-    /**
-      Keep track of the number of pages rendered.
-    */
-    int pageCount = 0;
-
-    /**
-      Keep track of heap memory allocated,
-      for statistical purposes.
-    */
-    private long initialMemory;
-
-    /**
-      Keep track of time used by renderer.
-    */
-    private long startTime;
-
-    /**
-      The stream to which this rendering is to be
-      written to. <B>Note</B> that some renderers
-      do not render to a stream, and that this
-      member can therefore be null.
-    */
-    private OutputStream outputStream;
-
-    /**
-      The renderer being used.
-    */
-    private Renderer renderer;
-
-    /**
-      The FontInfo for this renderer.
-    */
-    private FontInfo fontInfo = new FontInfo();
-
-    /**
-      The current set of id's in the FO tree
-      This is used so we know if the FO tree contains duplicates
-    */
-    private HashSet idReferences = new HashSet();
-
-    private Logger log;
-
-    /**
-     * The current AreaTree for the PageSequence being rendered.
-     */
-    private AreaTree areaTree;
-    private AreaTree.StorePagesModel atModel;
-
-    public StreamRenderer(OutputStream outputStream, Renderer renderer) {
-        this.outputStream = outputStream;
-        this.renderer = renderer;
-
-        this.areaTree = new AreaTree();
-        this.atModel = AreaTree.createStorePagesModel();
-        areaTree.setTreeModel(atModel);
-    }
-
-    public void setLogger(Logger logger) {
-        log = logger;
-    }
-
-    public HashSet getIDReferences() {
-        return idReferences;
-    }
-
-    public AreaTree getAreaTree() {
-        return areaTree;
-    }
-
-    public void startRenderer()
-    throws SAXException {
-        pageCount = 0;
-
-        if (MEM_PROFILE_WITH_GC)
-            System.gc();               // This takes time but gives better results
-
-        initialMemory = runtime.totalMemory() - runtime.freeMemory();
-        startTime = System.currentTimeMillis();
-
-        try {
-            renderer.setupFontInfo(fontInfo);
-            renderer.startRenderer(outputStream);
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-
-    public void stopRenderer()
-    throws SAXException {
-        /*
-          Force the processing of any more queue elements,
-          even if they are not resolved.
-        */
-        try {
-            //processQueue(true);
-           processAreaTree();
-            renderer.stopRenderer();
-        } catch (FOPException e) {
-            throw new SAXException(e);
-        }
-        catch (IOException e) {
-            throw new SAXException(e);
-        }
-
-        if (MEM_PROFILE_WITH_GC)
-            System.gc();               // This takes time but gives better results
-
-        long memoryNow = runtime.totalMemory() - runtime.freeMemory();
-        long memoryUsed = (memoryNow - initialMemory) / 1024L;
-
-        log.debug("Initial heap size: " + (initialMemory/1024L) + "Kb");
-        log.debug("Current heap size: " + (memoryNow/1024L) + "Kb");
-        log.debug("Total memory used: " + memoryUsed + "Kb");
-
-        if (!MEM_PROFILE_WITH_GC) {
-            log.debug("  Memory use is indicative; no GC was performed");
-            log.debug("  These figures should not be used comparatively");
-        }
-
-        long timeUsed = System.currentTimeMillis() - startTime;
-
-        log.debug("Total time used: " + timeUsed + "ms");
-        log.debug("Pages rendered: " + pageCount);
-        //log.debug("Avg render time: " + (timeUsed / pageCount) + "ms/page");
-    }
-
-    /**
-      Format the PageSequence. The PageSequence
-      formats Pages and adds them to the AreaTree,
-      which subsequently calls the StreamRenderer
-      instance (this) again to render the page.
-      At this time the page might be printed
-      or it might be queued. A page might not
-      be renderable immediately if the IDReferences
-      are not all valid. In this case we defer
-      the rendering until they are all valid.
-    */
-    public void render(PageSequence pageSequence)
-    throws FOPException {
-        //areaTree.setFontInfo(fontInfo);
-
-       pageSequence.format(areaTree);
-    }
-
-
-    private void processAreaTree() throws FOPException {
-       int count = 0;
-       int seqc = atModel.getPageSequenceCount();
-       while (count < seqc) {
-           Title title = atModel.getTitle(count);
-           renderer.startPageSequence(title);
-           int pagec = atModel.getPageCount(count);
-           for (int c=0; c < pagec; c++) {
-               try {
-                   renderer.renderPage(atModel.getPage(count, c));
-               } catch (java.io.IOException ioex) {
-                   throw new FOPException("I/O Error rendering page", ioex);
-               }
-           }
-           count++;
-       }
-       
-    }
-
-    public FontInfo getFontInfo() {
-       return this.fontInfo;
-    }
-}
-
diff --git a/src/org/apache/fop/apps/StructureHandler.java b/src/org/apache/fop/apps/StructureHandler.java
new file mode 100644 (file)
index 0000000..3eb7163
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * $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.apps;
+
+// Java
+import java.util.HashSet;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.fop.fo.pagination.PageSequence;
+import org.apache.fop.layout.FontInfo;
+
+import org.xml.sax.SAXException;
+
+/**
+ * This class receives structure events from the FO Tree.
+ * Sub-classes can then implement various methods to handle
+ * the FO Tree when the SAX events occur.
+ */
+public class StructureHandler {
+    /**
+       The current set of id's in the FO tree
+       This is used so we know if the FO tree contains duplicates
+     */
+    private HashSet idReferences = new HashSet();
+    protected Logger log;
+
+    public StructureHandler() {
+    }
+
+    public void setLogger(Logger logger) {
+        log = logger;
+    }
+
+    public HashSet getIDReferences() {
+        return idReferences;
+    }
+
+    public FontInfo getFontInfo() {
+        return null;
+    }
+
+    public void startDocument() throws SAXException {
+
+    }
+
+    public void endDocument() throws SAXException {
+
+    }
+
+    public void startPageSequence() {
+
+    }
+
+    public void endPageSequence(PageSequence pageSeq) throws FOPException {
+
+    }
+
+    public void setPageInfo() {
+
+    }
+
+    public void startBlock() {
+
+    }
+
+    public void endBlock() {
+
+    }
+
+
+    // Tables
+    public void startTable() {
+
+    }
+
+    public void endTable() {
+
+    }
+
+    public void startHeader() {
+
+    }
+
+    public void endHeader() {
+
+    }
+
+    public void startFooter() {
+
+    }
+
+    public void endFooter() {
+
+    }
+
+    public void startBody() {
+
+    }
+
+    public void endBody() {
+
+    }
+
+    public void startRow() {
+
+    }
+
+    public void endRow() {
+
+    }
+
+    public void startCell() {
+
+    }
+
+    public void endCell() {
+
+    }
+
+
+    // Lists
+    public void startList() {
+
+    }
+
+    public void endList() {
+
+    }
+
+    public void startListItem() {
+
+    }
+
+    public void endListItem() {
+
+    }
+
+    public void startListLabel() {
+
+    }
+
+    public void endListLabel() {
+
+    }
+
+    public void startListBody() {
+
+    }
+
+    public void endListBody() {
+
+    }
+
+
+    // Static Regions
+    public void startStatic() {
+
+    }
+
+    public void endStatic() {
+
+    }
+
+
+    public void startMarkup() {
+
+    }
+
+    public void endMarkup() {
+
+    }
+
+
+    public void startLink() {
+
+    }
+
+    public void endLink() {
+
+    }
+
+
+    public void image() {
+
+    }
+
+    public void pageRef() {
+
+    }
+
+    public void foreignObject() {
+
+    }
+
+    public void footnote() {
+
+    }
+
+    public void leader() {
+
+    }
+
+
+    public void characters() {
+
+    }
+
+    public void pageBreak() {
+
+    }
+
+
+}
+
index 03ac929f699e5af0b0cab9daa3669fac10083f8f..4a4415ea0432bab006ad6e857e74ef2713dc265a 100644 (file)
@@ -7,6 +7,7 @@
 
 package org.apache.fop.extensions;
 
+import org.apache.fop.apps.LayoutHandler;
 import org.apache.fop.fo.FONode;
 import org.apache.fop.area.AreaTree;
 
@@ -40,8 +41,10 @@ public class Bookmarks extends ExtensionObj {
             data.addSubData(out.getData());
         }
         // add data to area tree for resolving and handling
-        AreaTree at = streamRenderer.getAreaTree();
-        at.addTreeExtension(data);
+        if(structHandler instanceof LayoutHandler) {
+            AreaTree at = ((LayoutHandler)structHandler).getAreaTree();
+            at.addTreeExtension(data);
+        }
     }
 }
 
index 2e0dc72d882da7520e3aae285b7ed6aab6b19bf6..ee0b6ad6ad26cb5092a9662dabca7362e872114d 100644 (file)
@@ -9,7 +9,7 @@ package org.apache.fop.fo;
 
 // FOP
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
+import org.apache.fop.apps.StructureHandler;
 import org.apache.fop.layout.Area;
 import org.apache.fop.util.CharUtilities;
 
@@ -48,7 +48,7 @@ abstract public class FONode {
         userAgent = ua;
     }
 
-    public void setStreamRenderer(StreamRenderer st) {
+    public void setStructHandler(StructureHandler st) {
     }
 
     public void handleAttrs(Attributes attlist) throws FOPException {
index 988f7739f8a5b27b4ea38a89d654f84475d8604a..946007d32f6cc066ef8ef7964e817edb2012c5ac 100644 (file)
@@ -10,7 +10,7 @@ package org.apache.fop.fo;
 // FOP
 import org.apache.fop.layout.AreaTree;
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
+import org.apache.fop.apps.StructureHandler;
 import org.apache.fop.fo.pagination.Root;
 import org.apache.fop.fo.pagination.PageSequence;
 import org.apache.fop.extensions.ExtensionObj;
@@ -70,7 +70,7 @@ public class FOTreeBuilder extends DefaultHandler {
      * The class that handles formatting and rendering to a stream
      * (mark-fop@inomial.com)
      */
-    private StreamRenderer streamRenderer;
+    private StructureHandler structHandler;
     private Logger log;
     private FOUserAgent userAgent;
 
@@ -89,8 +89,8 @@ public class FOTreeBuilder extends DefaultHandler {
     }
 
 
-    public void setStreamRenderer(StreamRenderer streamRenderer) {
-        this.streamRenderer = streamRenderer;
+    public void setStructHandler(StructureHandler sh) {
+        this.structHandler = sh;
     }
 
     /**
@@ -131,13 +131,13 @@ public class FOTreeBuilder extends DefaultHandler {
     throws SAXException {
         rootFObj = null;    // allows FOTreeBuilder to be reused
         log.info("building formatting object tree");
-        streamRenderer.startRenderer();
+        structHandler.startDocument();
     }
 
     public void endDocument()
     throws SAXException {
         log.info("Parsing of document complete, stopping renderer");
-        streamRenderer.stopRenderer();
+        structHandler.endDocument();
     }
 
     /**
@@ -185,7 +185,7 @@ public class FOTreeBuilder extends DefaultHandler {
             fobj.setUserAgent(userAgent);
             // set the stream renderer so that appropriate
             // elements can add pages and handle resolving references
-            fobj.setStreamRenderer(streamRenderer);
+            fobj.setStructHandler(structHandler);
 
             fobj.handleAttrs(attlist);
         } catch (FOPException e) {
@@ -209,7 +209,7 @@ public class FOTreeBuilder extends DefaultHandler {
     public void reset() {
         currentFObj = null;
         rootFObj = null;
-        streamRenderer = null;
+        structHandler = null;
     }
 
     public boolean hasData() {
index 6e421922300cc005b189af3bcff36e68de674bb3..7be9fb52210147292309e602f5e97f881a61d778 100644 (file)
@@ -11,7 +11,7 @@ package org.apache.fop.fo;
 import org.apache.fop.layout.Area;
 import org.apache.fop.layout.AreaClass;
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
+import org.apache.fop.apps.StructureHandler;
 import org.apache.fop.layoutmgr.LayoutManager;
 import org.apache.fop.fo.properties.FOPropertyMapping;
 import org.apache.fop.layout.Area;
@@ -34,7 +34,7 @@ import java.util.HashSet;
  * base class for representation of formatting objects and their processing
  */
 public class FObj extends FONode {
-    protected StreamRenderer streamRenderer;
+    protected StructureHandler structHandler;
     public PropertyList properties;
     protected PropertyManager propMgr;
     protected String areaClass = AreaClass.UNASSIGNED;
@@ -135,8 +135,8 @@ public class FObj extends FONode {
         children.add(child);
     }
 
-    public void setStreamRenderer(StreamRenderer st) {
-        streamRenderer = st;
+    public void setStructHandler(StructureHandler st) {
+        structHandler = st;
     }
 
     /**
@@ -154,7 +154,7 @@ public class FObj extends FONode {
         if(prop != null) {
             String str = prop.getString();
             if(str != null && !str.equals("")) {
-                HashSet idrefs = streamRenderer.getIDReferences();
+                HashSet idrefs = structHandler.getIDReferences();
                 if(!idrefs.contains(str)) {
                     id = str;
                     idrefs.add(id);
index a21732c1a720ca8107b33430fc77895644ad1ace..93cad87582c7c089af3a4494e633a9d1eee33d91 100644 (file)
@@ -11,7 +11,7 @@ import org.apache.fop.layout.Area;
 import org.apache.fop.layout.FontState;
 import org.apache.fop.layout.FontInfo;
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
+import org.apache.fop.apps.StructureHandler;
 import org.apache.fop.datatypes.ColorType;
 import org.apache.fop.layoutmgr.InlineStackingBPLayoutManager;
 import org.apache.fop.layoutmgr.LMiter;
@@ -30,7 +30,8 @@ public class FObjMixed extends FObj {
         super(parent);
     }
 
-    public void setStreamRenderer(StreamRenderer st) {
+    public void setStructHandler(StructureHandler st) {
+        super.setStructHandler(st);
         fontInfo = st.getFontInfo();
     }
 
index 9fb9c9e8391db192ce7192e0716f8fed458fca77..5483ea68510293a6438b2bcdf43f87d9dae927b8 100644 (file)
@@ -16,7 +16,6 @@ import org.apache.fop.apps.FOPException;
 import org.apache.fop.layoutmgr.LayoutManager;
 import org.apache.fop.layoutmgr.BlockLayoutManager;
 import org.apache.fop.util.CharUtilities;
-import org.apache.fop.apps.StreamRenderer;
 
 import org.xml.sax.Attributes;
 
index 591df45f769016e32b4735a66cb0d7df2829dbd2..3b75628cbbcc1ab8dba17893bcee0210d0bee8ba 100644 (file)
@@ -21,7 +21,6 @@ import org.apache.fop.layout.PageMaster;
 import org.apache.fop.area.AreaTree;
 import org.apache.fop.area.PageViewport;
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
 
 import org.apache.fop.layoutmgr.PageLayoutManager;
 
@@ -47,11 +46,6 @@ public class PageSequence extends FObj {
     //
     // associations
     //
-    /**
-     * Use to layout and render the page sequence.
-     */
-    private StreamRenderer streamRenderer;
-
     /**
      * The parent root object
      */
@@ -271,14 +265,9 @@ public class PageSequence extends FObj {
        }
     }
 
-
-    public void setStreamRenderer(StreamRenderer st) {
-       this.streamRenderer = st;
-    }
-
     public void end() {
        try {
-           this.streamRenderer.render(this);
+           this.structHandler.endPageSequence(this);
        } catch (FOPException fopex) {
            log.error("Error in PageSequence.end(): " +
                      fopex.getMessage());
index 234e77de95e7b4ff96a395c19570fdcd559b0ea1..12554efd0779e57c8cead1eb6149d9efd632bd55 100644 (file)
@@ -9,7 +9,6 @@ package org.apache.fop.layout;
 
 // FOP
 import org.apache.fop.apps.FOPException;
-import org.apache.fop.apps.StreamRenderer;
 import org.apache.fop.fo.flow.StaticContent;
 import org.apache.fop.svg.*;
 import org.apache.fop.render.Renderer;
@@ -49,10 +48,7 @@ public class AreaTree {
      */
     Vector rootExtensions = null;
 
-    private StreamRenderer streamRenderer;
-
-    public AreaTree(StreamRenderer streamRenderer) {
-        this.streamRenderer = streamRenderer;
+    public AreaTree() {
     }
 
     public void setFontInfo(FontInfo fontInfo) {