]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Further cleanups: alignment of FlowLM.getNextKE() with pattern of the same method...
authorAndreas L. Delmelle <adelmelle@apache.org>
Thu, 10 Feb 2011 17:44:33 +0000 (17:44 +0000)
committerAndreas L. Delmelle <adelmelle@apache.org>
Thu, 10 Feb 2011 17:44:33 +0000 (17:44 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1069496 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java

index 34403a95662d23966c4dac6c98ac8b39c254d071..7b29db895613f7ebe43f7244504cebbf8a030369 100644 (file)
@@ -232,15 +232,12 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
             LayoutManager prevLM = null; // previously active LM
 
             LayoutContext childLC;
-            boolean doReset = isRestart;
             if (isRestart) {
                 if (emptyStack) {
                     assert restartAtLM != null && restartAtLM.getParent() == this;
                     curLM = restartAtLM;
                 } else {
                     curLM = (LayoutManager) lmStack.pop();
-                    // make sure the initial LM is not reset
-                    doReset = false;
                 }
                 setCurrentChildLM(curLM);
             } else {
@@ -248,14 +245,13 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
             }
 
             while (curLM != null) {
-                if (doReset) {
-                    curLM.reset();
-                }
-
                 childLC = makeChildLayoutContext(context);
 
                 // get elements from curLM
                 if (!isRestart || emptyStack) {
+                    if (isRestart) {
+                        curLM.reset();
+                    }
                     returnedList = getNextChildElements(curLM, context, childLC, alignment,
                             null, null, null);
                 } else {
@@ -263,8 +259,6 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
                             lmStack, restartPosition, restartAtLM);
                     // once encountered, irrelevant for following child LMs
                     emptyStack = true;
-                    // force reset as of the next child
-                    doReset = true;
                 }
                 if (contentList.isEmpty() && childLC.isKeepWithPreviousPending()) {
                     //Propagate keep-with-previous up from the first child
index f5cb983b21374955c6111ea0ad91df815f0c302a..56c02795caafaa0dc4a632f46d2b40965b225444 100644 (file)
@@ -265,16 +265,12 @@ public abstract class BlockStackingLayoutManager extends AbstractLayoutManager
         LayoutContext childLC;
         List<ListElement> childElements;
         LayoutManager currentChildLM;
-        // always reset in case of a restart (exception: see below)
-        boolean doReset = isRestart;
         if (isRestart) {
             if (emptyStack) {
                 assert restartAtLM != null && restartAtLM.getParent() == this;
                 currentChildLM = restartAtLM;
             } else {
                 currentChildLM = (LayoutManager) lmStack.pop();
-                // make sure the initial child LM is not reset
-                doReset = false;
             }
             setCurrentChildLM(currentChildLM);
         } else {
@@ -282,13 +278,14 @@ public abstract class BlockStackingLayoutManager extends AbstractLayoutManager
         }
 
         while (currentChildLM != null) {
-            if (doReset) {
-                currentChildLM.reset(); // TODO won't work with forced breaks
-            }
 
             childLC = makeChildLayoutContext(context);
 
             if (!isRestart || emptyStack) {
+                if (isRestart) {
+                    currentChildLM.reset(); // TODO won't work with forced breaks
+                }
+
                 childElements = getNextChildElements(currentChildLM, context, childLC, alignment,
                         null, null, null);
             } else {
@@ -297,8 +294,6 @@ public abstract class BlockStackingLayoutManager extends AbstractLayoutManager
                         lmStack, restartPosition, restartAtLM);
                 // once encountered, irrelevant for following child LMs
                 emptyStack = true;
-                // force reset as of the next child
-                doReset = true;
             }
 
             if (contentList.isEmpty()) {
index 5357565a792a2a43da414bed78450c5c71fbee4d..2add8e7f91550ce57c858d7993165557133f0347 100644 (file)
@@ -83,42 +83,47 @@ public class FlowLayoutManager extends BlockStackingLayoutManager
         List<ListElement> elements = new LinkedList<ListElement>();
 
         boolean isRestart = (restartPosition != null);
+        // always reset in case of restart (exception: see below)
+        boolean doReset = isRestart;
         LayoutManager currentChildLM;
+        Stack<LayoutManager> lmStack = new Stack<LayoutManager>();
         if (isRestart) {
             currentChildLM = restartPosition.getLM();
             if (currentChildLM == null) {
-                throw new IllegalStateException(
-                        "Cannot find layout manager from where to re-start "
-                        + "layout after IPD change");
+                throw new IllegalStateException("Cannot find layout manager to restart from");
             }
             if (restartLM != null && restartLM.getParent() == this) {
                 currentChildLM = restartLM;
-                setCurrentChildLM(currentChildLM);
-                currentChildLM.reset();
-                if (addChildElements(elements, currentChildLM, context, alignment) != null) {
-                    return elements;
-                }
             } else {
-                Stack<LayoutManager> lmStack = new Stack<LayoutManager>();
                 while (currentChildLM.getParent() != this) {
                     lmStack.push(currentChildLM);
                     currentChildLM = currentChildLM.getParent();
                 }
-                setCurrentChildLM(currentChildLM);
+                doReset = false;
+            }
+            setCurrentChildLM(currentChildLM);
+        } else {
+            currentChildLM = getChildLM();
+        }
+
+        while (currentChildLM != null) {
+            if (!isRestart || doReset) {
+                if (doReset) {
+                    currentChildLM.reset(); // TODO won't work with forced breaks
+                }
+                if (addChildElements(elements, currentChildLM, context, alignment,
+                        null, null, null) != null) {
+                    return elements;
+                }
+            } else {
                 if (addChildElements(elements, currentChildLM, context, alignment, lmStack,
                         restartPosition, restartLM) != null) {
                     return elements;
                 }
+                // restarted; force reset as of next child
+                doReset = true;
             }
-        }
-
-        while ((currentChildLM = getChildLM()) != null) {
-            if (isRestart) {
-                currentChildLM.reset(); // TODO won't work with forced breaks
-            }
-            if (addChildElements(elements, currentChildLM, context, alignment) != null) {
-                return elements;
-            }
+            currentChildLM = getChildLM();
         }
 
         SpaceResolver.resolveElementList(elements);
@@ -128,11 +133,6 @@ public class FlowLayoutManager extends BlockStackingLayoutManager
         return elements;
     }
 
-    private List<ListElement> addChildElements(List<ListElement> elements,
-            LayoutManager childLM, LayoutContext context, int alignment) {
-        return addChildElements(elements, childLM, context, alignment, null, null, null);
-    }
-
     private List<ListElement> addChildElements(List<ListElement> elements,
             LayoutManager childLM, LayoutContext context, int alignment,
             Stack<LayoutManager> lmStack, Position position, LayoutManager restartAtLM) {