diff options
Diffstat (limited to 'src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java')
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java b/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java index c6bd7bcec..3a688cce8 100644 --- a/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java +++ b/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java @@ -491,6 +491,9 @@ public abstract class BreakingAlgorithm { elementIndex, previousIsBox, allowedBreaks).isBox(); if (activeNodeCount == 0) { + if (ipdChanged()) { + return handleIpdChange(); + } if (!force) { log.debug("Could not find a set of breaking points " + threshold); return 0; @@ -535,6 +538,14 @@ public abstract class BreakingAlgorithm { return line; } + protected boolean ipdChanged() { + return false; + } + + protected int handleIpdChange() { + throw new IllegalStateException(); + } + /** * Recover from a {@link KnuthNode} leading to a line that is too long. * The default implementation creates a new node corresponding to a break @@ -1283,12 +1294,8 @@ public abstract class BreakingAlgorithm { * @return the width/length in millipoints */ protected int getLineWidth(int line) { - if (this.lineWidth < 0) { - throw new IllegalStateException("lineWidth must be set" - + (this.lineWidth != 0 ? " and positive, but it is: " + this.lineWidth : "")); - } else { - return this.lineWidth; - } + assert lineWidth >= 0; + return this.lineWidth; } /** @return the constant line/part width or -1 if there is no such value */ @@ -1321,7 +1328,7 @@ public abstract class BreakingAlgorithm { * @param par the corresponding paragraph * @param total the number of lines into which the paragraph will be broken */ - private void calculateBreakPoints(KnuthNode node, KnuthSequence par, + protected void calculateBreakPoints(KnuthNode node, KnuthSequence par, int total) { KnuthNode bestActiveNode = node; // use bestActiveNode to determine the optimum breakpoints |