Browse Source

Minor fixups

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1067681 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-1_1rc1old
Andreas L. Delmelle 13 years ago
parent
commit
039e412b31
1 changed files with 20 additions and 44 deletions
  1. 20
    44
      src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java

+ 20
- 44
src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java View File

*/ */
private List postProcessLineBreaks(int alignment, LayoutContext context) { private List postProcessLineBreaks(int alignment, LayoutContext context) {


List returnList = new LinkedList();
List<ListElement> returnList = new LinkedList<ListElement>();


int endIndex = -1; int endIndex = -1;
for (int p = 0; p < knuthParagraphs.size(); p++) { for (int p = 0; p < knuthParagraphs.size(); p++) {
KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(p); KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(p);


if (!seq.isInlineSequence()) { if (!seq.isInlineSequence()) {
List targetList = new LinkedList();
List<ListElement> targetList = new LinkedList<ListElement>();
ListIterator listIter = seq.listIterator(); ListIterator listIter = seq.listIterator();
while (listIter.hasNext()) { while (listIter.hasNext()) {
ListElement tempElement; ListElement tempElement;
endIndex = ((LineBreakPosition) llPoss.getChosenPosition(i)).getLeafPos(); endIndex = ((LineBreakPosition) llPoss.getChosenPosition(i)).getLeafPos();
// create a list of the FootnoteBodyLM handling footnotes // create a list of the FootnoteBodyLM handling footnotes
// whose citations are in this line // 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) { while (elementIterator.nextIndex() <= endIndex) {
KnuthElement element = (KnuthElement) elementIterator.next();
KnuthElement element = elementIterator.next();
if (element instanceof KnuthInlineBox if (element instanceof KnuthInlineBox
&& ((KnuthInlineBox) element).isAnchor()) { && ((KnuthInlineBox) element).isAnchor()) {
footnoteList.add(((KnuthInlineBox) element).getFootnoteBodyLM()); footnoteList.add(((KnuthInlineBox) element).getFootnoteBodyLM());
returnList.add(new KnuthBlockBox returnList.add(new KnuthBlockBox
(lbp.lineHeight + lbp.spaceBefore + lbp.spaceAfter, (lbp.lineHeight + lbp.spaceBefore + lbp.spaceAfter,
footnoteList, lbp, false)); 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));
}
*/
} }
} }
} }
return returnList; return returnList;
} }


private void createElements(List list, LineLayoutPossibilities llPoss,
private void createElements(List<ListElement> list, LineLayoutPossibilities llPoss,
Position elementPosition) { Position elementPosition) {
/* number of normal, inner lines */ /* number of normal, inner lines */
int innerLines = 0; int innerLines = 0;
/* number of the last unbreakable lines */ /* number of the last unbreakable lines */
int lastLines = fobj.getWidows(); int lastLines = fobj.getWidows();
/* sub-sequence used to separate the elements representing different lines */ /* 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 */ /* comment out the next lines in order to test particular situations */
if (fobj.getOrphans() + fobj.getWidows() <= llPoss.getMinLineCount()) { 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()) { } 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()) { } 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; firstLines -= conditionalOptionalLines;
} else { } else {
conditionalOptionalLines = llPoss.getMaxLineCount()
- llPoss.getOptLineCount();
conditionalEliminableLines = llPoss.getOptLineCount()
- llPoss.getMinLineCount();
conditionalOptionalLines = llPoss.getMaxLineCount() - llPoss.getOptLineCount();
conditionalEliminableLines = llPoss.getOptLineCount() - llPoss.getMinLineCount();
firstLines = llPoss.getOptLineCount(); firstLines = llPoss.getOptLineCount();
lastLines = 0; lastLines = 0;
} }
breaker.add(new KnuthPenalty(0, 0, false, elementPosition, false)); 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: // creation of the elements:
// first group of lines // first group of lines
list.add(new KnuthBox(firstLines * constantLineHeight, elementPosition, list.add(new KnuthBox(firstLines * constantLineHeight, elementPosition,

Loading…
Cancel
Save