]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
More simplifications to PSLM.
authorGlen Mazza <gmazza@apache.org>
Sun, 13 Mar 2005 04:14:04 +0000 (04:14 +0000)
committerGlen Mazza <gmazza@apache.org>
Sun, 13 Mar 2005 04:14:04 +0000 (04:14 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198490 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java
src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java

index e1dc46e89ff7e240b1244b14eef6bcdb2390ca73..d6d9bb963dbf89583e33cb9fed243c9eea109d09 100644 (file)
@@ -21,9 +21,11 @@ package org.apache.fop.layoutmgr;
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.fo.FObj;
 import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.pagination.Title;
 import org.apache.fop.fo.flow.Marker;
 import org.apache.fop.area.Area;
 import org.apache.fop.area.AreaTreeHandler;
+import org.apache.fop.area.LineArea;
 import org.apache.fop.area.inline.InlineArea;
 import org.apache.fop.area.Resolvable;
 import org.apache.fop.area.PageViewport;
@@ -65,6 +67,23 @@ public class ContentLayoutManager implements InlineLevelLayoutManager {
         holder = area;
     }
 
+    /**
+     * Constructor using a fo:title formatting object
+     */
+    public ContentLayoutManager(Title foTitle) {
+        // get breaks then add areas to title
+        holder = new LineArea();
+
+        setUserAgent(foTitle.getUserAgent());
+
+        // use special layout manager to add the inline areas
+        // to the Title.
+        InlineLayoutManager lm;
+        lm = new InlineLayoutManager(foTitle);
+        addChildLM(lm);
+        fillArea(lm);
+    }
+
     /**
      * Set the FO object for this layout manager
      *
index 1c5948e342b96e3c250366d533e81410e6dfbc71..83da86b3e663dcd269f00b1a82fd9c364460a58a 100644 (file)
@@ -48,7 +48,6 @@ import org.apache.fop.fo.pagination.Region;
 import org.apache.fop.fo.pagination.RegionBody;
 import org.apache.fop.fo.pagination.SimplePageMaster;
 import org.apache.fop.fo.pagination.StaticContent;
-import org.apache.fop.fo.pagination.Title;
 import org.apache.fop.fo.properties.CommonMarginBlock;
 
 import java.util.List;
@@ -142,29 +141,6 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         return areaTreeHandler;
     }
 
-    /**
-     * Each fo:page-sequence may have an fo:title object.
-     * @return the Title area
-     */
-    private LineArea getTitleArea(Title foTitle) {
-        // get breaks then add areas to title
-        LineArea title = new LineArea();
-
-        ContentLayoutManager clm = new ContentLayoutManager(title);
-        clm.setUserAgent(foTitle.getUserAgent());
-        clm.setAreaTreeHandler(areaTreeHandler);
-
-        // use special layout manager to add the inline areas
-        // to the Title.
-        InlineLayoutManager lm;
-        lm = new InlineLayoutManager(foTitle);
-        clm.addChildLM(lm);
-
-        clm.fillArea(lm);
-
-        return title;
-    }
-
     /**
      * Start the layout of this page sequence.
      * This completes the layout of the page sequence
@@ -176,8 +152,12 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         pageNumberString = pageSeq.makeFormattedPageNumber(currentPageNum);
 
         LineArea title = null;
+
         if (pageSeq.getTitleFO() != null) {
-            title = getTitleArea(pageSeq.getTitleFO());
+            ContentLayoutManager clm = 
+               new ContentLayoutManager(pageSeq.getTitleFO());
+            clm.setAreaTreeHandler(areaTreeHandler);
+            title = (LineArea) clm.getParentArea(null); // can improve
         }
 
         areaTreeModel.startPageSequence(title);
@@ -201,9 +181,9 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         }
         // TODO: Don't decrement currentPageNum when no pages are generated
         currentPageNum--;
-        log.debug("Ending layout");
         finishPage();
         pageSeq.getRoot().notifyPageSequenceFinished(currentPageNum, (currentPageNum - startPageNum) + 1);
+        log.debug("Ending layout");
     }
 
     /** @see org.apache.fop.layoutmgr.LayoutManager#isBogus() */
@@ -316,9 +296,9 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      * @param res the resolvable object that needs resolving
      */
     public void addUnresolvedArea(String id, Resolvable res) {
-        // add unresolved to tree
-        // adds to the page viewport so it can serialize
+        // add to the page viewport so it can serialize
         curPage.addUnresolvedIDRef(id, res);
+        // add unresolved to tree
         areaTreeHandler.addUnresolvedIDRef(id, curPage);
     }
 
@@ -512,19 +492,20 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         if (region == null) {
             return;
         }
-        StaticContent flow = pageSeq.getStaticContent(region.getRegionName());
-        if (flow == null) {
+        StaticContent sc = pageSeq.getStaticContent(region.getRegionName());
+        if (sc == null) {
             return;
         }
         
         RegionViewport reg = curPage.getPage().getRegionViewport(region.getNameId());
         StaticContentLayoutManager lm;
         try {
-            lm = getStaticContentLayoutManager(flow);
+            lm = (StaticContentLayoutManager)
+               areaTreeHandler.getLayoutManagerMaker().makeLayoutManager(sc);
         } catch (FOPException e) {
             log.error
                 ("Failed to create a StaticContentLayoutManager for flow "
-                 + flow.getFlowName()
+                 + sc.getFlowName()
                  + "; no static content will be laid out:");
             log.error(e.getMessage());
             return;
@@ -842,19 +823,4 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         rr.setIPD(reldims.ipd);
         rr.setBPD(reldims.bpd);
     }
-
-    /**
-     * @return a StaticContent layout manager
-     */
-    private StaticContentLayoutManager getStaticContentLayoutManager(StaticContent sc)
-        throws FOPException {
-        StaticContentLayoutManager lm;
-        //lm = (StaticContentLayoutManager) staticContentLMs.get(sc.getFlowName());
-        //if (lm == null) {
-            lm = (StaticContentLayoutManager)
-                getAreaTreeHandler().getLayoutManagerMaker().makeLayoutManager(sc);
-            //staticContentLMs.put(sc.getFlowName(), lm);
-        //}
-        return lm;
-    }
 }