From: Andreas L. Delmelle Date: Thu, 10 Feb 2011 17:44:33 +0000 (+0000) Subject: Further cleanups: alignment of FlowLM.getNextKE() with pattern of the same method... X-Git-Tag: fop-1_1rc1old~286 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c7271d310f22942bffadabd94bc3d0d198125f7d;p=xmlgraphics-fop.git Further cleanups: alignment of FlowLM.getNextKE() with pattern of the same method in BlockStackingLM. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1069496 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java index 34403a956..7b29db895 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java @@ -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 diff --git a/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java index f5cb983b2..56c02795c 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java @@ -265,16 +265,12 @@ public abstract class BlockStackingLayoutManager extends AbstractLayoutManager LayoutContext childLC; List 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()) { diff --git a/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java b/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java index 5357565a7..2add8e7f9 100644 --- a/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java @@ -83,42 +83,47 @@ public class FlowLayoutManager extends BlockStackingLayoutManager List elements = new LinkedList(); boolean isRestart = (restartPosition != null); + // always reset in case of restart (exception: see below) + boolean doReset = isRestart; LayoutManager currentChildLM; + Stack lmStack = new Stack(); 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 lmStack = new Stack(); 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 addChildElements(List elements, - LayoutManager childLM, LayoutContext context, int alignment) { - return addChildElements(elements, childLM, context, alignment, null, null, null); - } - private List addChildElements(List elements, LayoutManager childLM, LayoutContext context, int alignment, Stack lmStack, Position position, LayoutManager restartAtLM) {