Browse Source

More simplifications to PSLM.


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198490 13f79535-47bb-0310-9956-ffa450edef68
tags/Root_Temp_KnuthStylePageBreaking
Glen Mazza 19 years ago
parent
commit
fbc248fb1e

+ 19
- 0
src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java View 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
*

+ 13
- 47
src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java View 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;
}
}

Loading…
Cancel
Save