aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas L. Delmelle <adelmelle@apache.org>2011-02-10 17:44:33 +0000
committerAndreas L. Delmelle <adelmelle@apache.org>2011-02-10 17:44:33 +0000
commitc7271d310f22942bffadabd94bc3d0d198125f7d (patch)
treeae4bc7c9289d4be27f5467a773406bdad2b1cfb8
parentfaefb6aa9d051948ed8d6aa592694f5cedfb2239 (diff)
downloadxmlgraphics-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
-rw-r--r--src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java12
-rw-r--r--src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java13
-rw-r--r--src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java48
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)) {