From: Glen Mazza Date: Sun, 13 Mar 2005 04:14:04 +0000 (+0000) Subject: More simplifications to PSLM. X-Git-Tag: Root_Temp_KnuthStylePageBreaking~17 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fbc248fb1e89778ced77d78ed0c3ff4f24efaf45;p=xmlgraphics-fop.git More simplifications to PSLM. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198490 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java b/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java index e1dc46e89..d6d9bb963 100644 --- a/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java @@ -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 * diff --git a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java index 1c5948e34..83da86b3e 100644 --- a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java @@ -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; - } }