diff options
author | Andreas L. Delmelle <adelmelle@apache.org> | 2008-05-04 11:37:31 +0000 |
---|---|---|
committer | Andreas L. Delmelle <adelmelle@apache.org> | 2008-05-04 11:37:31 +0000 |
commit | c8cb0583fc806ea8f5ee56e670092f44066fbcd7 (patch) | |
tree | 08ccd4fa673c4309361b9dc92575cc41b4b4480b /src | |
parent | 3337d89c3ed0df06e69c0658c200c78c2ae88d77 (diff) | |
download | xmlgraphics-fop-c8cb0583fc806ea8f5ee56e670092f44066fbcd7.tar.gz xmlgraphics-fop-c8cb0583fc806ea8f5ee56e670092f44066fbcd7.zip |
Change private element-generating methods to add the elements to a passed List (improves code-readability and reduces the amount of temporary LinkedList instances)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@653202 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java | 302 |
1 files changed, 147 insertions, 155 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java index 9af0ba90d..f87605b27 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java @@ -88,7 +88,7 @@ public class TextLayoutManager extends LeafNodeLayoutManager { this.isSpace = isSpace; this.breakOppAfter = breakOppAfter; } - + public String toString() { return "[ lscnt=" + letterSpaceCount + ", wscnt=" + wordSpaceCount @@ -190,15 +190,29 @@ public class TextLayoutManager extends LeafNodeLayoutManager { } private KnuthPenalty makeInfinitePenalty() { - return new KnuthPenalty(0, KnuthElement.INFINITE, false, getAuxiliaryPosition(), true); + return new KnuthPenalty( + 0, + KnuthElement.INFINITE, + false, + getAuxiliaryPosition(), + true); } private KnuthPenalty makeZeroPenalty() { - return new KnuthPenalty(0, 0, false, getAuxiliaryPosition(), true); + return new KnuthPenalty( + 0, + 0, + false, + getAuxiliaryPosition(), + true); } private KnuthInlineBox makeZeroWidthBox() { - return new KnuthInlineBox(0, null, notifyPos(getAuxiliaryPosition()), true); + return new KnuthInlineBox( + 0, + null, + notifyPos(getAuxiliaryPosition()), + true); } /** {@inheritDoc} */ @@ -519,7 +533,7 @@ public class TextLayoutManager extends LeafNodeLayoutManager { thisStart = nextStart; boolean inWord = false; boolean inWhitespace = false; - char ch = 0; + char ch = 0; while (nextStart < textArray.length) { ch = textArray[nextStart]; boolean breakOpportunity = false; @@ -564,12 +578,12 @@ public class TextLayoutManager extends LeafNodeLayoutManager { } else if (prevAi != null && !prevAi.isSpace && prevAi.breakIndex > 0) { char previous = textArray[prevAi.breakIndex - 1]; kern = font.getKernValue(previous, c) * font.getFontSize() / 1000; - } + } if (kern != 0) { //log.info("Kerning between " + previous + " and " + c + ": " + kern); addToLetterAdjust(i, kern); wordIPD.add(kern); - } + } } } if (kerning && breakOpportunity && !isSpace(ch) && lastIndex > 0 && textArray[lastIndex] == CharUtilities.SOFT_HYPHEN) { @@ -596,8 +610,8 @@ public class TextLayoutManager extends LeafNodeLayoutManager { tempStart = nextStart; //add the elements - sequence.addAll(createElementsForAWordFragment(alignment, ai, - vecAreaInfo.size() - 1, letterSpaceIPD)); + addElementsForAWordFragment(sequence, alignment, ai, + vecAreaInfo.size() - 1, letterSpaceIPD); ai = null; thisStart = nextStart; } @@ -613,8 +627,7 @@ public class TextLayoutManager extends LeafNodeLayoutManager { prevAi = ai; // create the elements - sequence.addAll - (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1)); + addElementsForASpace(sequence, alignment, ai, vecAreaInfo.size() - 1); ai = null; thisStart = nextStart; @@ -623,16 +636,15 @@ public class TextLayoutManager extends LeafNodeLayoutManager { if (ai != null) { vecAreaInfo.add(ai); prevAi = ai; - ai.breakOppAfter = ch == CharUtilities.SPACE || breakOpportunity; - sequence.addAll - (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1)); + ai.breakOppAfter = (ch == CharUtilities.SPACE) || breakOpportunity; + addElementsForASpace(sequence, alignment, ai, vecAreaInfo.size() - 1); ai = null; } if (breakAction == LineBreakStatus.EXPLICIT_BREAK) { if (lineEndBAP != 0) { - sequence.add - (new KnuthGlue(lineEndBAP, 0, 0, - getAuxiliaryPosition(), true)); + sequence.add( + new KnuthGlue(lineEndBAP, 0, 0, + getAuxiliaryPosition(), true)); } sequence.endSequence(); sequence = new InlineKnuthSequence(); @@ -690,12 +702,12 @@ public class TextLayoutManager extends LeafNodeLayoutManager { } else if (prevAi != null && !prevAi.isSpace) { char previous = textArray[prevAi.breakIndex - 1]; kern = font.getKernValue(previous, c) * font.getFontSize() / 1000; - } + } if (kern != 0) { //log.info("Kerning between " + previous + " and " + c + ": " + kern); addToLetterAdjust(i, kern); wordIPD.add(kern); - } + } } } int iLetterSpaces = wordLength - 1; @@ -709,8 +721,8 @@ public class TextLayoutManager extends LeafNodeLayoutManager { tempStart = nextStart; // create the elements - sequence.addAll(createElementsForAWordFragment(alignment, ai, - vecAreaInfo.size() - 1, letterSpaceIPD)); + addElementsForAWordFragment(sequence, alignment, ai, + vecAreaInfo.size() - 1, letterSpaceIPD); ai = null; } else if (inWhitespace) { ai = new AreaInfo(thisStart, (short) (nextStart), @@ -720,14 +732,12 @@ public class TextLayoutManager extends LeafNodeLayoutManager { vecAreaInfo.add(ai); // create the elements - sequence.addAll - (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1)); + addElementsForASpace(sequence, alignment, ai, vecAreaInfo.size() - 1); ai = null; } else if (ai != null) { vecAreaInfo.add(ai); ai.breakOppAfter = ch == CharUtilities.ZERO_WIDTH_SPACE; - sequence.addAll - (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1)); + addElementsForASpace(sequence, alignment, ai, vecAreaInfo.size() - 1); ai = null; } else if (ch == NEWLINE) { if (lineEndBAP != 0) { @@ -945,12 +955,10 @@ public class TextLayoutManager extends LeafNodeLayoutManager { AreaInfo ai = (AreaInfo) vecAreaInfo.get(returnedIndex); if (ai.wordSpaceCount == 0) { // ai refers either to a word or a word fragment - returnList.addAll - (createElementsForAWordFragment(alignment, ai, returnedIndex, letterSpaceIPD)); + addElementsForAWordFragment(returnList, alignment, ai, returnedIndex, letterSpaceIPD); } else { // ai refers to a space - returnList.addAll - (createElementsForASpace(alignment, ai, returnedIndex)); + addElementsForASpace(returnList, alignment, ai, returnedIndex); } returnedIndex++; } // end of while @@ -969,9 +977,10 @@ public class TextLayoutManager extends LeafNodeLayoutManager { } } - private LinkedList createElementsForASpace(int alignment, - AreaInfo ai, int leafValue) { - LinkedList spaceElements = new LinkedList(); + private void addElementsForASpace(List baseList, + int alignment, + AreaInfo ai, + int leafValue) { LeafPosition mainPosition = new LeafPosition(this, leafValue); if (!ai.breakOppAfter) { @@ -979,14 +988,14 @@ public class TextLayoutManager extends LeafNodeLayoutManager { if (alignment == EN_JUSTIFY) { // the space can stretch and shrink, and must be preserved // when starting a line - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(ai.areaIPD.opt, ai.areaIPD.max - ai.areaIPD.opt, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(ai.areaIPD.opt, ai.areaIPD.max - ai.areaIPD.opt, ai.areaIPD.opt - ai.areaIPD.min, mainPosition, false)); } else { // the space does not need to stretch or shrink, and must be // preserved when starting a line - spaceElements.add(new KnuthInlineBox(ai.areaIPD.opt, null, + baseList.add(new KnuthInlineBox(ai.areaIPD.opt, null, mainPosition, true)); } } else { @@ -999,17 +1008,17 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // if the second element is chosen as a line break these elements // add a constant amount of stretch at the end of a line and at the // beginning of the next one, otherwise they don't add any stretch - spaceElements.add(new KnuthGlue(lineEndBAP, + baseList.add(new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue( + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue( - (lineStartBAP + lineEndBAP), -6 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(ai.areaIPD.opt + lineStartBAP, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(ai.areaIPD.opt + lineStartBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, mainPosition, false)); break; @@ -1020,49 +1029,49 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // if the second element is chosen as a line break these elements // add a constant amount of stretch at the end of a line, otherwise // they don't add any stretch - spaceElements.add(new KnuthGlue(lineEndBAP, + baseList.add(new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue( + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue( - (lineStartBAP + lineEndBAP), -3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(ai.areaIPD.opt + lineStartBAP, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(ai.areaIPD.opt + lineStartBAP, 0, 0, mainPosition, false)); break; case EN_JUSTIFY: // justified text: // the stretch and shrink depends on the space width - spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0, + baseList.add(new KnuthGlue(lineEndBAP, 0, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue( + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue( - (lineStartBAP + lineEndBAP), ai.areaIPD.max - ai.areaIPD.opt, ai.areaIPD.opt - ai.areaIPD.min, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(lineStartBAP + ai.areaIPD.opt, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP + ai.areaIPD.opt, 0, 0, mainPosition, false)); break; default: // last line justified, the other lines unjustified: // use only the space stretch - spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0, + baseList.add(new KnuthGlue(lineEndBAP, 0, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue( + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue( - (lineStartBAP + lineEndBAP), ai.areaIPD.max - ai.areaIPD.opt, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(lineStartBAP + ai.areaIPD.opt, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP + ai.areaIPD.opt, 0, 0, mainPosition, false)); } } else { @@ -1073,17 +1082,17 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // if the second element is chosen as a line break these elements // add a constant amount of stretch at the end of a line and at the // beginning of the next one, otherwise they don't add any stretch - spaceElements.add(new KnuthGlue(lineEndBAP, + baseList.add(new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue(ai.areaIPD.opt + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue(ai.areaIPD.opt - (lineStartBAP + lineEndBAP), -6 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, mainPosition, false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(lineStartBAP, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); break; @@ -1095,24 +1104,24 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // add a constant amount of stretch at the end of a line, otherwise // they don't add any stretch if (lineStartBAP != 0 || lineEndBAP != 0) { - spaceElements.add(new KnuthGlue(lineEndBAP, + baseList.add(new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue(ai.areaIPD.opt + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue(ai.areaIPD.opt - (lineStartBAP + lineEndBAP), -3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, mainPosition, false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 0, 0, getAuxiliaryPosition(), false)); } else { - spaceElements.add(new KnuthGlue(0, + baseList.add(new KnuthGlue(0, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue(ai.areaIPD.opt, -3 + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue(ai.areaIPD.opt, -3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, mainPosition, false)); } @@ -1122,20 +1131,20 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // justified text: // the stretch and shrink depends on the space width if (lineStartBAP != 0 || lineEndBAP != 0) { - spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0, + baseList.add(new KnuthGlue(lineEndBAP, 0, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue( + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue( ai.areaIPD.opt - (lineStartBAP + lineEndBAP), ai.areaIPD.max - ai.areaIPD.opt, ai.areaIPD.opt - ai.areaIPD.min, mainPosition, false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 0, 0, getAuxiliaryPosition(), false)); } else { - spaceElements.add(new KnuthGlue(ai.areaIPD.opt, + baseList.add(new KnuthGlue(ai.areaIPD.opt, ai.areaIPD.max - ai.areaIPD.opt, ai.areaIPD.opt - ai.areaIPD.min, mainPosition, false)); @@ -1146,32 +1155,33 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // last line justified, the other lines unjustified: // use only the space stretch if (lineStartBAP != 0 || lineEndBAP != 0) { - spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0, + baseList.add(new KnuthGlue(lineEndBAP, 0, 0, getAuxiliaryPosition(), false)); - spaceElements.add(makeZeroPenalty()); - spaceElements.add(new KnuthGlue( + baseList.add(makeZeroPenalty()); + baseList.add(new KnuthGlue( ai.areaIPD.opt - (lineStartBAP + lineEndBAP), ai.areaIPD.max - ai.areaIPD.opt, 0, mainPosition, false)); - spaceElements.add(makeZeroWidthBox()); - spaceElements.add(makeInfinitePenalty()); - spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 0, 0, getAuxiliaryPosition(), false)); } else { - spaceElements.add(new KnuthGlue(ai.areaIPD.opt, + baseList.add(new KnuthGlue(ai.areaIPD.opt, ai.areaIPD.max - ai.areaIPD.opt, 0, mainPosition, false)); } } } - } - - return spaceElements; + } } - private LinkedList createElementsForAWordFragment(int alignment, - AreaInfo ai, int leafValue, MinOptMax letterSpaceWidth) { - LinkedList wordElements = new LinkedList(); + private void addElementsForAWordFragment(List baseList, + int alignment, + AreaInfo ai, + int leafValue, + MinOptMax letterSpaceWidth) { + LeafPosition mainPosition = new LeafPosition(this, leafValue); // if the last character of the word fragment is '-' or '/', @@ -1181,8 +1191,7 @@ public class TextLayoutManager extends LeafNodeLayoutManager { if (letterSpaceWidth.min == letterSpaceWidth.max) { // constant letter spacing - wordElements.add - (new KnuthInlineBox( + baseList.add(new KnuthInlineBox( suppressibleLetterSpace ? ai.areaIPD.opt - letterSpaceWidth.opt : ai.areaIPD.opt, @@ -1192,18 +1201,18 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // adjustable letter spacing int unsuppressibleLetterSpaces = suppressibleLetterSpace ? ai.letterSpaceCount - 1 : ai.letterSpaceCount; - wordElements.add + baseList.add (new KnuthInlineBox(ai.areaIPD.opt - ai.letterSpaceCount * letterSpaceWidth.opt, alignmentContext, notifyPos(mainPosition), false)); - wordElements.add(makeInfinitePenalty()); - wordElements.add + baseList.add(makeInfinitePenalty()); + baseList.add (new KnuthGlue(unsuppressibleLetterSpaces * letterSpaceWidth.opt, unsuppressibleLetterSpaces * (letterSpaceWidth.max - letterSpaceWidth.opt), unsuppressibleLetterSpaces * (letterSpaceWidth.opt - letterSpaceWidth.min), getAuxiliaryPosition(), true)); - wordElements.add(makeZeroWidthBox()); + baseList.add(makeZeroWidthBox()); } // extra-elements if the word fragment is the end of a syllable, @@ -1219,44 +1228,42 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // the word fragment ends at the end of a syllable: // if a break occurs the content width increases, // otherwise nothing happens - wordElements.addAll(createElementsForAHyphen(alignment, hyphIPD, widthIfNoBreakOccurs, ai.breakOppAfter && ai.isHyphenated)); + addElementsForAHyphen(baseList, alignment, hyphIPD, widthIfNoBreakOccurs, ai.breakOppAfter && ai.isHyphenated); } else if (suppressibleLetterSpace) { // the word fragment ends with a character that acts as a hyphen // if a break occurs the width does not increase, // otherwise there is one more letter space - wordElements.addAll(createElementsForAHyphen(alignment, 0, letterSpaceWidth, true)); + addElementsForAHyphen(baseList, alignment, 0, letterSpaceWidth, true); } - return wordElements; } // static final int SOFT_HYPHEN_PENALTY = KnuthPenalty.FLAGGED_PENALTY / 10; static final int SOFT_HYPHEN_PENALTY = 1; - private LinkedList createElementsForAHyphen(int alignment, - int widthIfBreakOccurs, MinOptMax widthIfNoBreakOccurs, boolean unflagged) { + + private void addElementsForAHyphen(List baseList, + int alignment, + int widthIfBreakOccurs, + MinOptMax widthIfNoBreakOccurs, + boolean unflagged) { if (widthIfNoBreakOccurs == null) { widthIfNoBreakOccurs = ZERO_MINOPTMAX; } - LinkedList hyphenElements = new LinkedList(); - + switch (alignment) { case EN_CENTER : // centered text: - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), true)); - hyphenElements.add - (new KnuthPenalty(hyphIPD, + baseList.add(new KnuthPenalty(hyphIPD, unflagged ? SOFT_HYPHEN_PENALTY : KnuthPenalty.FLAGGED_PENALTY, !unflagged, getAuxiliaryPosition(), false)); - hyphenElements.add - (new KnuthGlue(-(lineEndBAP + lineStartBAP), + baseList.add(new KnuthGlue(-(lineEndBAP + lineStartBAP), -6 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - hyphenElements.add(makeZeroWidthBox()); - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(lineStartBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), true)); break; @@ -1264,34 +1271,27 @@ public class TextLayoutManager extends LeafNodeLayoutManager { case EN_END : // left- or right-aligned text: if (lineStartBAP != 0 || lineEndBAP != 0) { - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineEndBAP, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - hyphenElements.add - (new KnuthPenalty(widthIfBreakOccurs, + baseList.add(new KnuthPenalty(widthIfBreakOccurs, unflagged ? SOFT_HYPHEN_PENALTY : KnuthPenalty.FLAGGED_PENALTY, !unflagged, getAuxiliaryPosition(), false)); - hyphenElements.add - (new KnuthGlue(widthIfNoBreakOccurs.opt - (lineStartBAP + lineEndBAP), + baseList.add(new KnuthGlue(widthIfNoBreakOccurs.opt - (lineStartBAP + lineEndBAP), -3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - hyphenElements.add(makeZeroWidthBox()); - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(lineStartBAP, 0, 0, + baseList.add(makeZeroWidthBox()); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 0, 0, getAuxiliaryPosition(), false)); } else { - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(0, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(0, 3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); - hyphenElements.add - (new KnuthPenalty(widthIfBreakOccurs, + baseList.add(new KnuthPenalty(widthIfBreakOccurs, unflagged ? SOFT_HYPHEN_PENALTY : KnuthPenalty.FLAGGED_PENALTY, !unflagged, getAuxiliaryPosition(), false)); - hyphenElements.add - (new KnuthGlue(widthIfNoBreakOccurs.opt, + baseList.add(new KnuthGlue(widthIfNoBreakOccurs.opt, -3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0, getAuxiliaryPosition(), false)); } @@ -1301,44 +1301,37 @@ public class TextLayoutManager extends LeafNodeLayoutManager { // justified text, or last line justified: // just a flagged penalty if (lineStartBAP != 0 || lineEndBAP != 0) { - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(lineEndBAP, 0, 0, + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineEndBAP, 0, 0, getAuxiliaryPosition(), false)); - hyphenElements.add - (new KnuthPenalty(widthIfBreakOccurs, + baseList.add(new KnuthPenalty(widthIfBreakOccurs, unflagged ? SOFT_HYPHEN_PENALTY : KnuthPenalty.FLAGGED_PENALTY, !unflagged, getAuxiliaryPosition(), false)); // extra elements representing a letter space that is suppressed // if a break occurs if (widthIfNoBreakOccurs.min != 0 || widthIfNoBreakOccurs.max != 0) { - hyphenElements.add - (new KnuthGlue(widthIfNoBreakOccurs.opt - (lineStartBAP + lineEndBAP), + baseList.add(new KnuthGlue(widthIfNoBreakOccurs.opt - (lineStartBAP + lineEndBAP), widthIfNoBreakOccurs.max - widthIfNoBreakOccurs.opt, widthIfNoBreakOccurs.opt - widthIfNoBreakOccurs.min, getAuxiliaryPosition(), false)); } else { - hyphenElements.add - (new KnuthGlue(-(lineStartBAP + lineEndBAP), 0, 0, + baseList.add(new KnuthGlue(-(lineStartBAP + lineEndBAP), 0, 0, getAuxiliaryPosition(), false)); } - hyphenElements.add(new KnuthInlineBox(0, null, notifyPos(getAuxiliaryPosition()), true)); - hyphenElements.add(makeInfinitePenalty()); - hyphenElements.add - (new KnuthGlue(lineStartBAP, 0, 0, + baseList.add(new KnuthInlineBox(0, null, notifyPos(getAuxiliaryPosition()), true)); + baseList.add(makeInfinitePenalty()); + baseList.add(new KnuthGlue(lineStartBAP, 0, 0, getAuxiliaryPosition(), false)); } else { - hyphenElements.add - (new KnuthPenalty(widthIfBreakOccurs, + baseList.add(new KnuthPenalty(widthIfBreakOccurs, unflagged ? SOFT_HYPHEN_PENALTY : KnuthPenalty.FLAGGED_PENALTY, !unflagged, getAuxiliaryPosition(), false)); // extra elements representing a letter space that is suppressed // if a break occurs if (widthIfNoBreakOccurs.min != 0 || widthIfNoBreakOccurs.max != 0) { - hyphenElements.add - (new KnuthGlue(widthIfNoBreakOccurs.opt, + baseList.add(new KnuthGlue(widthIfNoBreakOccurs.opt, widthIfNoBreakOccurs.max - widthIfNoBreakOccurs.opt, widthIfNoBreakOccurs.opt - widthIfNoBreakOccurs.min, getAuxiliaryPosition(), false)); @@ -1346,7 +1339,6 @@ public class TextLayoutManager extends LeafNodeLayoutManager { } } - return hyphenElements; } }
\ No newline at end of file |