|
|
@@ -875,7 +875,7 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
*/ |
|
|
|
private List postProcessLineBreaks(int alignment, LayoutContext context) { |
|
|
|
|
|
|
|
List returnList = new LinkedList(); |
|
|
|
List<ListElement> returnList = new LinkedList<ListElement>(); |
|
|
|
|
|
|
|
int endIndex = -1; |
|
|
|
for (int p = 0; p < knuthParagraphs.size(); p++) { |
|
|
@@ -893,7 +893,7 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(p); |
|
|
|
|
|
|
|
if (!seq.isInlineSequence()) { |
|
|
|
List targetList = new LinkedList(); |
|
|
|
List<ListElement> targetList = new LinkedList<ListElement>(); |
|
|
|
ListIterator listIter = seq.listIterator(); |
|
|
|
while (listIter.hasNext()) { |
|
|
|
ListElement tempElement; |
|
|
@@ -933,10 +933,10 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
endIndex = ((LineBreakPosition) llPoss.getChosenPosition(i)).getLeafPos(); |
|
|
|
// create a list of the FootnoteBodyLM handling footnotes |
|
|
|
// whose citations are in this line |
|
|
|
List footnoteList = new LinkedList(); |
|
|
|
ListIterator elementIterator = seq.listIterator(startIndex); |
|
|
|
List<LayoutManager> footnoteList = new LinkedList<LayoutManager>(); |
|
|
|
ListIterator<KnuthElement> elementIterator = seq.listIterator(startIndex); |
|
|
|
while (elementIterator.nextIndex() <= endIndex) { |
|
|
|
KnuthElement element = (KnuthElement) elementIterator.next(); |
|
|
|
KnuthElement element = elementIterator.next(); |
|
|
|
if (element instanceof KnuthInlineBox |
|
|
|
&& ((KnuthInlineBox) element).isAnchor()) { |
|
|
|
footnoteList.add(((KnuthInlineBox) element).getFootnoteBodyLM()); |
|
|
@@ -949,15 +949,6 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
returnList.add(new KnuthBlockBox |
|
|
|
(lbp.lineHeight + lbp.spaceBefore + lbp.spaceAfter, |
|
|
|
footnoteList, lbp, false)); |
|
|
|
/* // add stretch and shrink to the returnlist |
|
|
|
if (!seq.isInlineSequence() |
|
|
|
&& lbp.availableStretch != 0 || lbp.availableShrink != 0) { |
|
|
|
returnList.add(new KnuthPenalty(0, -KnuthElement.INFINITE, |
|
|
|
false, new Position(this), false)); |
|
|
|
returnList.add(new KnuthGlue(0, lbp.availableStretch, lbp.availableShrink, |
|
|
|
new Position(this), false)); |
|
|
|
} |
|
|
|
*/ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@@ -965,7 +956,7 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
return returnList; |
|
|
|
} |
|
|
|
|
|
|
|
private void createElements(List list, LineLayoutPossibilities llPoss, |
|
|
|
private void createElements(List<ListElement> list, LineLayoutPossibilities llPoss, |
|
|
|
Position elementPosition) { |
|
|
|
/* number of normal, inner lines */ |
|
|
|
int innerLines = 0; |
|
|
@@ -984,36 +975,27 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
/* number of the last unbreakable lines */ |
|
|
|
int lastLines = fobj.getWidows(); |
|
|
|
/* sub-sequence used to separate the elements representing different lines */ |
|
|
|
List breaker = new LinkedList(); |
|
|
|
List<KnuthElement> breaker = new LinkedList<KnuthElement>(); |
|
|
|
|
|
|
|
/* comment out the next lines in order to test particular situations */ |
|
|
|
if (fobj.getOrphans() + fobj.getWidows() <= llPoss.getMinLineCount()) { |
|
|
|
innerLines = llPoss.getMinLineCount() |
|
|
|
- (fobj.getOrphans() + fobj.getWidows()); |
|
|
|
optionalLines = llPoss.getMaxLineCount() |
|
|
|
- llPoss.getOptLineCount(); |
|
|
|
eliminableLines = llPoss.getOptLineCount() |
|
|
|
- llPoss.getMinLineCount(); |
|
|
|
innerLines = llPoss.getMinLineCount() - (fobj.getOrphans() + fobj.getWidows()); |
|
|
|
optionalLines = llPoss.getMaxLineCount()- llPoss.getOptLineCount(); |
|
|
|
eliminableLines = llPoss.getOptLineCount() - llPoss.getMinLineCount(); |
|
|
|
} else if (fobj.getOrphans() + fobj.getWidows() <= llPoss.getOptLineCount()) { |
|
|
|
optionalLines = llPoss.getMaxLineCount() |
|
|
|
- llPoss.getOptLineCount(); |
|
|
|
eliminableLines = llPoss.getOptLineCount() |
|
|
|
- (fobj.getOrphans() + fobj.getWidows()); |
|
|
|
conditionalEliminableLines = (fobj.getOrphans() + fobj.getWidows()) |
|
|
|
- llPoss.getMinLineCount(); |
|
|
|
optionalLines = llPoss.getMaxLineCount() - llPoss.getOptLineCount(); |
|
|
|
eliminableLines = llPoss.getOptLineCount() - (fobj.getOrphans() + fobj.getWidows()); |
|
|
|
conditionalEliminableLines |
|
|
|
= (fobj.getOrphans() + fobj.getWidows()) - llPoss.getMinLineCount(); |
|
|
|
} else if (fobj.getOrphans() + fobj.getWidows() <= llPoss.getMaxLineCount()) { |
|
|
|
optionalLines = llPoss.getMaxLineCount() |
|
|
|
- (fobj.getOrphans() + fobj.getWidows()); |
|
|
|
conditionalOptionalLines = (fobj.getOrphans() + fobj.getWidows()) |
|
|
|
- llPoss.getOptLineCount(); |
|
|
|
conditionalEliminableLines = llPoss.getOptLineCount() |
|
|
|
- llPoss.getMinLineCount(); |
|
|
|
optionalLines = llPoss.getMaxLineCount() - (fobj.getOrphans() + fobj.getWidows()); |
|
|
|
conditionalOptionalLines |
|
|
|
= (fobj.getOrphans() + fobj.getWidows()) - llPoss.getOptLineCount(); |
|
|
|
conditionalEliminableLines = llPoss.getOptLineCount() - llPoss.getMinLineCount(); |
|
|
|
firstLines -= conditionalOptionalLines; |
|
|
|
} else { |
|
|
|
conditionalOptionalLines = llPoss.getMaxLineCount() |
|
|
|
- llPoss.getOptLineCount(); |
|
|
|
conditionalEliminableLines = llPoss.getOptLineCount() |
|
|
|
- llPoss.getMinLineCount(); |
|
|
|
conditionalOptionalLines = llPoss.getMaxLineCount() - llPoss.getOptLineCount(); |
|
|
|
conditionalEliminableLines = llPoss.getOptLineCount() - llPoss.getMinLineCount(); |
|
|
|
firstLines = llPoss.getOptLineCount(); |
|
|
|
lastLines = 0; |
|
|
|
} |
|
|
@@ -1044,12 +1026,6 @@ public class LineLayoutManager extends InlineStackingLayoutManager |
|
|
|
breaker.add(new KnuthPenalty(0, 0, false, elementPosition, false)); |
|
|
|
} |
|
|
|
|
|
|
|
//log.debug("first=" + firstLines + " inner=" + innerLines |
|
|
|
// + " optional=" + optionalLines + " eliminable=" + eliminableLines |
|
|
|
// + " last=" + lastLines |
|
|
|
// + " (condOpt=" + conditionalOptionalLines |
|
|
|
// + " condEl=" + conditionalEliminableLines + ")"); |
|
|
|
|
|
|
|
// creation of the elements: |
|
|
|
// first group of lines |
|
|
|
list.add(new KnuthBox(firstLines * constantLineHeight, elementPosition, |