diff options
author | Andreas L. Delmelle <adelmelle@apache.org> | 2011-02-10 17:44:33 +0000 |
---|---|---|
committer | Andreas L. Delmelle <adelmelle@apache.org> | 2011-02-10 17:44:33 +0000 |
commit | c7271d310f22942bffadabd94bc3d0d198125f7d (patch) | |
tree | ae4bc7c9289d4be27f5467a773406bdad2b1cfb8 | |
parent | faefb6aa9d051948ed8d6aa592694f5cedfb2239 (diff) | |
download | xmlgraphics-fop-c7271d310f22942bffadabd94bc3d0d198125f7d.tar.gz xmlgraphics-fop-c7271d310f22942bffadabd94bc3d0d198125f7d.zip |
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
3 files changed, 31 insertions, 42 deletions
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<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()) { 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<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); @@ -129,11 +134,6 @@ public class FlowLayoutManager extends BlockStackingLayoutManager } 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) { if (handleSpanChange(childLM, context)) { |