]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Switched from curPage to uglier but more accurate curPV in PSLM; ditto
authorGlen Mazza <gmazza@apache.org>
Fri, 29 Apr 2005 00:06:21 +0000 (00:06 +0000)
committerGlen Mazza <gmazza@apache.org>
Fri, 29 Apr 2005 00:06:21 +0000 (00:06 +0000)
in LM interface, removed addMarkersToPV() middleman.

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

src/java/org/apache/fop/area/PageViewport.java
src/java/org/apache/fop/layoutmgr/AbstractLayoutManager.java
src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java
src/java/org/apache/fop/layoutmgr/LayoutManager.java
src/java/org/apache/fop/layoutmgr/PageNumberLayoutManager.java
src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java

index 948b1c7c3ec536d0ecffda977e9b27e7b6d9fc4e..d3e9c6bc01666c328282079fcaf8fb8b4cae99f3 100644 (file)
@@ -267,6 +267,11 @@ public class PageViewport implements Resolvable, Cloneable {
      */
     public void addMarkers(Map marks, boolean starting,
             boolean isfirst, boolean islast) {
+
+        if (marks == null) {
+            return;
+        }
+        
         // at the start of the area, register is-first and any areas
         if (starting) {
             if (isfirst) {
index ffb1a0eb84e29eb67a7e6a68b787191aa46b6b6e..ec3f9fa61099be1a4bd4e0b946abad1731abdd33 100644 (file)
@@ -351,8 +351,8 @@ public abstract class AbstractLayoutManager implements LayoutManager, Constants
      *
      * @see org.apache.fop.layoutmgr.LayoutManager
      */
-    public PageViewport getCurrentPageViewport() {
-        return parentLM.getCurrentPageViewport();
+    public PageViewport getCurrentPV() {
+        return parentLM.getCurrentPV();
     }
 
     /**
@@ -392,15 +392,6 @@ public abstract class AbstractLayoutManager implements LayoutManager, Constants
         parentLM.addUnresolvedArea(id, res);
     }
 
-    /**
-     * Add the markers to the PageViewport when adding an area.
-     */
-    protected void addMarkersToPV(boolean starting, boolean isfirst, boolean islast) {
-        if (markers != null) {
-            getCurrentPageViewport().addMarkers(markers, starting, isfirst, islast);
-        }
-    }
-
     /**
      * Delegate retrieve marker to the parent layout manager.
      *
index 5a10e8539ecc39d34982168f058f9394369f48c1..2594d8b2622816e8205589bb21cc779757b92ad3 100644 (file)
@@ -351,7 +351,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
             allocBPD = 0;
             if (abProps.bottom.getEnum() != EN_AUTO) {
                 if (isFixed()) {
-                    allocBPD = (int)getCurrentPageViewport().getViewArea().getHeight();
+                    allocBPD = (int)getCurrentPV().getViewArea().getHeight();
                 } else {
                     allocBPD = context.getStackLimit().opt; 
                 }
@@ -368,7 +368,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
             allocIPD += getIPIndents();
         } else {
             if (isFixed()) {
-                allocIPD = (int)getCurrentPageViewport().getViewArea().getWidth(); 
+                allocIPD = (int)getCurrentPV().getViewArea().getWidth(); 
             } else {
                 allocIPD = context.getRefIPD();
             }
@@ -742,7 +742,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
             allocBPD = 0;
             if (abProps.bottom.getEnum() != EN_AUTO) {
                 if (isFixed()) {
-                    allocBPD = (int)getCurrentPageViewport().getViewArea().getHeight();
+                    allocBPD = (int)getCurrentPV().getViewArea().getHeight();
                 } else {
                     allocBPD = context.getStackLimit().opt; 
                 }
@@ -759,7 +759,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
             allocIPD += getIPIndents();
         } else {
             if (isFixed()) {
-                allocIPD = (int)getCurrentPageViewport().getViewArea().getWidth(); 
+                allocIPD = (int)getCurrentPV().getViewArea().getWidth(); 
             } else {
                 allocIPD = context.getRefIPD();
             }
@@ -843,7 +843,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
 
         addID(getBlockContainerFO().getId());
         //addMarkersToPV(true, bp1.isFirstArea(), bp1.isLastArea());
-        addMarkersToPV(true, true, false);
+        getCurrentPV().addMarkers(markers, true, true, false);
 
         LayoutManager childLM = null;
         LayoutManager lastLM = null;
@@ -998,7 +998,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
 
         int bIndents = getBlockContainerFO().getCommonBorderPaddingBackground().getBPPaddingAndBorder(false);
 
-        addMarkersToPV(false, false, true);
+        getCurrentPV().addMarkers(markers, false, false, true);
 
         flush();
 
@@ -1025,7 +1025,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
 
         BreakPoss bp1 = (BreakPoss)parentIter.peekNext();
         addID(getBlockContainerFO().getId());
-        addMarkersToPV(true, bp1.isFirstArea(), bp1.isLastArea());
+        getCurrentPV().addMarkers(markers, true, bp1.isFirstArea(), bp1.isLastArea());
 
         LayoutManager childLM;
         int iStartPos = 0;
@@ -1043,7 +1043,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
         }
 
         flush();
-        addMarkersToPV(true, bp1.isFirstArea(), bp1.isLastArea());
+        getCurrentPV().addMarkers(markers, true, bp1.isFirstArea(), bp1.isLastArea());
 
         /*
         if (!isAbsoluteOrFixed()) {
index 389b31e5a9413b9ffccc2f9d790776b1fa0788df..f72f0e1991942673a9292763f17c1e2fee39f5f5 100644 (file)
@@ -348,7 +348,8 @@ public class BlockLayoutManager extends BlockStackingLayoutManager {
 
         if (!isBogus()) {
             addID(getBlockFO().getId());
-            addMarkersToPV(true, bp1.isFirstArea(), bp1.isLastArea());
+            getCurrentPV().addMarkers(markers, true, bp1.isFirstArea(), 
+                    bp1.isLastArea());
         }
 
         try {
@@ -370,7 +371,8 @@ public class BlockLayoutManager extends BlockStackingLayoutManager {
             }
         } finally {
             if (!isBogus()) {
-                addMarkersToPV(false, bp1.isFirstArea(), bp1.isLastArea());
+                getCurrentPV().addMarkers(markers, false, bp1.isFirstArea(), 
+                    bp1.isLastArea());
             }
             flush();
 
@@ -394,7 +396,7 @@ public class BlockLayoutManager extends BlockStackingLayoutManager {
 
         addID(getBlockFO().getId());
         //addMarkersToPV(true, bp1.isFirstArea(), bp1.isLastArea());
-        addMarkersToPV(true, true, false);
+        getCurrentPV().addMarkers(markers, true, true, false);
 
         LayoutManager childLM = null;
         LayoutManager lastLM = null;
@@ -534,7 +536,7 @@ public class BlockLayoutManager extends BlockStackingLayoutManager {
 
         int bIndents = getBlockFO().getCommonBorderPaddingBackground().getBPPaddingAndBorder(false);
 
-        addMarkersToPV(false, false, true);
+        getCurrentPV().addMarkers(markers, false, false, true);
 
         flush();
 
index edfa597a06ee1589aa3e04f6146c2c3e9fafae69..a92b0a70ca5e75668284f57041fb549581e92d07 100644 (file)
@@ -250,8 +250,8 @@ public class ContentLayoutManager implements InlineLevelLayoutManager {
             Position bp2) { }
 
     /** @see org.apache.fop.layoutmgr.LayoutManager */
-    public PageViewport getCurrentPageViewport() {
-        return parentLM.getCurrentPageViewport();
+    public PageViewport getCurrentPV() {
+        return parentLM.getCurrentPV();
     }
 
     /** @see org.apache.fop.layoutmgr.LayoutManager */
index 813fa809e820351f19f79bf3956cbf06c9e3a838..b69cc918f017dfe0aa46e7e6d938f88020cd0ea5 100644 (file)
@@ -171,7 +171,7 @@ public interface LayoutManager {
      *
      * @return the current PageViewport
      */
-    PageViewport getCurrentPageViewport();
+    PageViewport getCurrentPV();
 
     /**
      * Resolve the id reference.
index 305a0725a6d9827b045d7da4478b6629d28ec6e3..77904172d31c0bee1cf366833e5cbdfa2a3c3c2f 100644 (file)
@@ -46,7 +46,7 @@ public class PageNumberLayoutManager extends LeafNodeLayoutManager {
     public InlineArea get(LayoutContext context) {
         // get page string from parent, build area
         TextArea inline = new TextArea();
-        String str = parentLM.getCurrentPageViewport().getPageNumberString();
+        String str = parentLM.getCurrentPV().getPageNumberString();
         int width = 0;
         for (int count = 0; count < str.length(); count++) {
             width += font.getCharWidth(str.charAt(count));
index e923daf8d0fcc06483e75056ddf2a91e5ed3316c..40be2318476732e568d512d59e9325d98c22ecc7 100644 (file)
@@ -63,8 +63,8 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
     private int startPageNum = 0;
     private int currentPageNum = 0;
 
-    /** Current page being worked on. */
-    private PageViewport curPage = null;
+    /** Current page-viewport-area being filled. */
+    private PageViewport curPV = null;
 
     /** Zero-based index of column (Normal Flow) in span being filled. */
     private int curFlowIdx = -1;
@@ -142,7 +142,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         makeNewPage(false, true, false);
 
         PageBreaker breaker = new PageBreaker(this);
-        int flowBPD = (int) curPage.getBodyRegion().getBPD();
+        int flowBPD = (int) curPV.getBodyRegion().getBPD();
         breaker.doLayout(flowBPD);
         
         finishPage();
@@ -162,7 +162,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         
         protected LayoutContext createLayoutContext() {
             LayoutContext lc = new LayoutContext(0);
-            int flowIPD = curPage.getCurrentSpan().getColumnWidth();
+            int flowIPD = curPV.getCurrentSpan().getColumnWidth();
             lc.setRefIPD(flowIPD);
             return lc;
         }
@@ -176,7 +176,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         }
         
         protected int getCurrentDisplayAlign() {
-            return curPage.getSPM().getRegion(Constants.FO_REGION_BODY).getDisplayAlign();
+            return curPV.getSPM().getRegion(Constants.FO_REGION_BODY).getDisplayAlign();
         }
         
         protected boolean hasMoreContent() {
@@ -194,14 +194,14 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         }
         
         protected void startPart(BlockSequence list, boolean bIsFirstPage) {
-            if (curPage == null) {
-                throw new IllegalStateException("curPage must not be null");
+            if (curPV == null) {
+                throw new IllegalStateException("curPV must not be null");
             } else {
                 //firstPart is necessary because we need the first page before we start the 
                 //algorithm so we have a BPD and IPD. This may subject to change later when we
                 //start handling more complex cases.
                 if (!firstPart) {
-                    if (curFlowIdx < curPage.getCurrentSpan().getColumnCount()-1) {
+                    if (curFlowIdx < curPV.getCurrentSpan().getColumnCount()-1) {
                         curFlowIdx++;
                     } else  {
                         // if this is the first page that will be created by
@@ -258,8 +258,8 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
             childLC.setRefIPD(context.getRefIPD());
 
             if (!curLM.isFinished()) {
-                int flowIPD = curPage.getCurrentSpan().getColumnWidth();
-                int flowBPD = (int) curPage.getBodyRegion().getBPD();
+                int flowIPD = curPV.getCurrentSpan().getColumnWidth();
+                int flowBPD = (int) curPV.getBodyRegion().getBPD();
                 pageSeq.setLayoutDimension(PercentBase.REFERENCE_AREA_IPD, flowIPD);
                 pageSeq.setLayoutDimension(PercentBase.REFERENCE_AREA_BPD, flowBPD);
 /*LF*/          returnedList = curLM.getNextKnuthElements(childLC, alignment);
@@ -276,8 +276,8 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      * Provides access to the current page.
      * @return the current PageViewport
      */
-    public PageViewport getCurrentPageViewport() {
-        return this.curPage;
+    public PageViewport getCurrentPV() {
+        return curPV;
     }
 
     /**
@@ -305,7 +305,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      * @param id the ID reference to add
      */
     public void addIDToPage(String id) {
-        areaTreeHandler.associateIDWithPageViewport(id, curPage);
+        areaTreeHandler.associateIDWithPageViewport(id, curPV);
     }
 
     /**
@@ -321,9 +321,9 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      */
     public void addUnresolvedArea(String id, Resolvable res) {
         // add to the page viewport so it can serialize
-        curPage.addUnresolvedIDRef(id, res);
+        curPV.addUnresolvedIDRef(id, res);
         // add unresolved to tree
-        areaTreeHandler.addUnresolvedIDRef(id, curPage);
+        areaTreeHandler.addUnresolvedIDRef(id, curPV);
     }
 
     /**
@@ -345,7 +345,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      */
     public Marker retrieveMarker(String name, int pos, int boundary) {
         // get marker from the current markers on area tree
-        Marker mark = (Marker)curPage.getMarker(name, pos);
+        Marker mark = (Marker)curPV.getMarker(name, pos);
         if (mark == null && boundary != EN_PAGE) {
             // go back over pages until mark found
             // if document boundary then keep going
@@ -393,7 +393,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
     }
 
     private PageViewport makeNewPage(boolean bIsBlank, boolean bIsFirst, boolean bIsLast) {
-        if (curPage != null) {
+        if (curPV != null) {
             finishPage();
         }
 
@@ -414,26 +414,26 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
                  + spm.getMasterName() + "'.  FOP presently "
                  + "does not support this.");
             }
-            curPage = new PageViewport(spm);
+            curPV = new PageViewport(spm);
         } catch (FOPException fopex) {
             throw new IllegalArgumentException("Cannot create page: " + fopex.getMessage());
         }
 
-        curPage.setPageNumberString(pageNumberString);
+        curPV.setPageNumberString(pageNumberString);
         if (log.isDebugEnabled()) {
-            log.debug("[" + curPage.getPageNumberString() + (bIsBlank ? "*" : "") + "]");
+            log.debug("[" + curPV.getPageNumberString() + (bIsBlank ? "*" : "") + "]");
         }
 
-        curPage.createSpan(false);
+        curPV.createSpan(false);
         curFlowIdx = 0;
-        return curPage;
+        return curPV;
     }
 
     /* TODO: See if can initialize the SCLM's just once for
      * the page sequence, instead of after every page.
      */
     private void layoutSideRegion(int regionID) {
-        SideRegion reg = (SideRegion)curPage.getSPM().getRegion(regionID);
+        SideRegion reg = (SideRegion)curPV.getSPM().getRegion(regionID);
         if (reg == null) {
             return;
         }
@@ -442,7 +442,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
             return;
         }
         
-        RegionViewport rv = curPage.getPage().getRegionViewport(regionID);
+        RegionViewport rv = curPV.getPage().getRegionViewport(regionID);
         StaticContentLayoutManager lm;
         lm = (StaticContentLayoutManager)
             areaTreeHandler.getLayoutManagerMaker().makeLayoutManager(sc);
@@ -451,7 +451,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         lm.setParent(this);
         /*
         LayoutContext childLC = new LayoutContext(0);
-        childLC.setStackLimit(new MinOptMax((int)curPage.getViewArea().getHeight()));
+        childLC.setStackLimit(new MinOptMax((int)curPV.getViewArea().getHeight()));
         childLC.setRefIPD(rv.getRegion().getIPD());
         */
         
@@ -480,9 +480,9 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         layoutSideRegion(FO_REGION_START);
         layoutSideRegion(FO_REGION_END);
         // Queue for ID resolution and rendering
-        areaTreeModel.addPage(curPage);
-        log.debug("page finished: " + curPage.getPageNumberString() + ", current num: " + currentPageNum);
-        curPage = null;
+        areaTreeModel.addPage(curPV);
+        log.debug("page finished: " + curPV.getPageNumberString() + ", current num: " + currentPageNum);
+        curPV = null;
         curFlowIdx = -1;
     }
 
@@ -496,8 +496,8 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         if (breakVal != Constants.EN_AUTO) {
             // We may be forced to make new page
             handleBreak(breakVal);
-        } else if (curPage == null) {
-            log.debug("curPage is null. Making new page");
+        } else if (curPV == null) {
+            log.debug("curPV is null. Making new page");
             makeNewPage(false, false, false);
         }
         /* Determine if a new span is needed.  From the XSL
@@ -514,11 +514,11 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         if (span == Constants.EN_ALL) {
             numColsNeeded = 1;
         } else { // EN_NONE
-            numColsNeeded = curPage.getBodyRegion().getColumnCount();
+            numColsNeeded = curPV.getBodyRegion().getColumnCount();
         }
-        if (numColsNeeded != curPage.getCurrentSpan().getColumnCount()) {
+        if (numColsNeeded != curPV.getCurrentSpan().getColumnCount()) {
             // need a new Span, with numColsNeeded columns
-            if (curPage.getCurrentSpan().getColumnCount() > 1) {
+            if (curPV.getCurrentSpan().getColumnCount() > 1) {
                 // finished with current span, so balance 
                 // its columns to make them the same "height"
                 // balanceColumns();  // TODO: implement
@@ -526,7 +526,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
             bNeedNewSpan = true;
         }
         if (bNeedNewSpan) {
-            curPage.createSpan(span == Constants.EN_ALL);
+            curPV.createSpan(span == Constants.EN_ALL);
             curFlowIdx = 0;
         }
     }
@@ -545,24 +545,24 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         if (aclass == Area.CLASS_NORMAL) {
             //We now do this in PageBreaker
             //prepareNormalFlowArea(childArea);
-            return curPage.getCurrentSpan().getNormalFlow(curFlowIdx);
+            return curPV.getCurrentSpan().getNormalFlow(curFlowIdx);
         } else {
-            if (curPage == null) {
+            if (curPV == null) {
                 makeNewPage(false, false, false);
             }
             // Now handle different kinds of areas
             if (aclass == Area.CLASS_BEFORE_FLOAT) {
-                BeforeFloat bf = curPage.getBodyRegion().getBeforeFloat();
+                BeforeFloat bf = curPV.getBodyRegion().getBeforeFloat();
                 if (bf == null) {
                     bf = new BeforeFloat();
-                    curPage.getBodyRegion().setBeforeFloat(bf);
+                    curPV.getBodyRegion().setBeforeFloat(bf);
                 }
                 return bf;
             } else if (aclass == Area.CLASS_FOOTNOTE) {
-                Footnote fn = curPage.getBodyRegion().getFootnote();
+                Footnote fn = curPV.getBodyRegion().getFootnote();
                 if (fn == null) {
                     fn = new Footnote();
-                    curPage.getBodyRegion().setFootnote(fn);
+                    curPV.getBodyRegion().setFootnote(fn);
                 }
                 return fn;
             }
@@ -580,7 +580,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      */
     private void handleBreak(int breakVal) {
         if (breakVal == Constants.EN_COLUMN) {
-            if (curFlowIdx < curPage.getCurrentSpan().getColumnCount()) {
+            if (curFlowIdx < curPV.getCurrentSpan().getColumnCount()) {
                 // Move to next column
                 curFlowIdx++;
                 return;
@@ -590,10 +590,10 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
         }
         log.debug("handling break after page " + currentPageNum + " breakVal=" + breakVal);
         if (needEmptyPage(breakVal)) {
-            curPage = makeNewPage(true, false, false);
+            curPV = makeNewPage(true, false, false);
         }
         if (needNewPage(breakVal)) {
-            curPage = makeNewPage(false, false, false);
+            curPV = makeNewPage(false, false, false);
         }
     }
 
@@ -607,7 +607,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      */
     private boolean needEmptyPage(int breakValue) {
 
-        if (breakValue == Constants.EN_PAGE || ((curPage != null) && curPage.getPage().isEmpty())) {
+        if (breakValue == Constants.EN_PAGE || ((curPV != null) && curPV.getPage().isEmpty())) {
             // any page is OK or we already have an empty page
             return false;
         } else {
@@ -625,7 +625,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
      * See if need to generate a new page for a forced break condition.
      */
     private boolean needNewPage(int breakValue) {
-        if (curPage != null && curPage.getPage().isEmpty()) {
+        if (curPV != null && curPV.getPage().isEmpty()) {
             if (breakValue == Constants.EN_PAGE) {
                 return false;
             }