From: Vincent Hennebert Date: Tue, 29 Jul 2014 10:55:37 +0000 (+0000) Subject: FOP-2394: Removed non-standard layout extensions X-Git-Tag: fop-2_0~88 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=cfee3a4ddb5c292bc2404448266dfed9c42725cf;p=xmlgraphics-fop.git FOP-2394: Removed non-standard layout extensions git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1614306 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/fo/Constants.java b/src/java/org/apache/fop/fo/Constants.java index 9ad483643..84d8856b5 100644 --- a/src/java/org/apache/fop/fo/Constants.java +++ b/src/java/org/apache/fop/fo/Constants.java @@ -760,74 +760,72 @@ public interface Constants { int PR_XML_LANG = 268; /** Property constant */ int PR_Z_INDEX = 269; - /** Property constant - FOP proprietary: Custom extension for line alignment */ - int PR_X_BLOCK_PROGRESSION_UNIT = 270; /** Property constant - FOP proprietary: limit for widow content in lists and tables */ - int PR_X_WIDOW_CONTENT_LIMIT = 271; + int PR_X_WIDOW_CONTENT_LIMIT = 270; /** Property constant - FOP proprietary: limit for orphan content in lists and tables */ - int PR_X_ORPHAN_CONTENT_LIMIT = 272; + int PR_X_ORPHAN_CONTENT_LIMIT = 271; /** * Property constant - FOP proprietary: disable balancing of columns in * multi-column layouts. */ - int PR_X_DISABLE_COLUMN_BALANCING = 273; + int PR_X_DISABLE_COLUMN_BALANCING = 272; /** * Property constant - FOP proprietary: alternative text for e-g and i-f-o. * Used for accessibility. */ - int PR_X_ALT_TEXT = 274; + int PR_X_ALT_TEXT = 273; /** Property constant - FOP proprietary prototype (in XSL-FO 2.0 Requirements) */ - int PR_X_XML_BASE = 275; + int PR_X_XML_BASE = 274; /** Property constant FOP proprietary*/ - int PR_X_BORDER_BEFORE_RADIUS_START = 276; + int PR_X_BORDER_BEFORE_RADIUS_START = 275; /** Property constant FOP proprietary*/ - int PR_X_BORDER_BEFORE_RADIUS_END = 277; + int PR_X_BORDER_BEFORE_RADIUS_END = 276; /** Property constant FOP proprietary*/ - int PR_X_BORDER_AFTER_RADIUS_START = 278; + int PR_X_BORDER_AFTER_RADIUS_START = 277; /** Property constant FOP proprietary*/ - int PR_X_BORDER_AFTER_RADIUS_END = 279; + int PR_X_BORDER_AFTER_RADIUS_END = 278; /** Property constant FOP proprietary*/ - int PR_X_BORDER_START_RADIUS_BEFORE = 280; + int PR_X_BORDER_START_RADIUS_BEFORE = 279; /** Property constant FOP proprietary*/ - int PR_X_BORDER_START_RADIUS_AFTER = 281; + int PR_X_BORDER_START_RADIUS_AFTER = 280; /** Property constant FOP proprietary*/ - int PR_X_BORDER_END_RADIUS_BEFORE = 282; + int PR_X_BORDER_END_RADIUS_BEFORE = 281; /** Property constant FOP proprietary*/ - int PR_X_BORDER_END_RADIUS_AFTER = 283; + int PR_X_BORDER_END_RADIUS_AFTER = 282; /** Property constant FOP proprietary*/ - int PR_X_BORDER_RADIUS = 284; + int PR_X_BORDER_RADIUS = 283; /** Property constant FOP proprietary*/ - int PR_X_BORDER_BEFORE_START_RADIUS = 285; + int PR_X_BORDER_BEFORE_START_RADIUS = 284; /** Property constant FOP proprietary*/ - int PR_X_BORDER_BEFORE_END_RADIUS = 286; + int PR_X_BORDER_BEFORE_END_RADIUS = 285; /** Property constant FOP proprietary*/ - int PR_X_BORDER_AFTER_START_RADIUS = 287; + int PR_X_BORDER_AFTER_START_RADIUS = 286; /** Property constant FOP proprietary*/ - int PR_X_BORDER_AFTER_END_RADIUS = 288; + int PR_X_BORDER_AFTER_END_RADIUS = 287; /** * Property constant - FOP proprietary extension (see NumberConverter) used * to perform additional control over number conversion when generating page * numbers. */ - int PR_X_NUMBER_CONVERSION_FEATURES = 289; + int PR_X_NUMBER_CONVERSION_FEATURES = 288; /** Scope for table header */ - int PR_X_HEADER_COLUMN = 290; + int PR_X_HEADER_COLUMN = 289; /** For specifying PDF optional content group (layer) binding. */ - int PR_X_LAYER = 291; + int PR_X_LAYER = 290; /** Property constant */ - int PR_X_AUTO_TOGGLE = 292; + int PR_X_AUTO_TOGGLE = 291; /** Used for scaling of background images */ - int PR_X_BACKGROUND_IMAGE_WIDTH = 293; - int PR_X_BACKGROUND_IMAGE_HEIGHT = 294; + int PR_X_BACKGROUND_IMAGE_WIDTH = 292; + int PR_X_BACKGROUND_IMAGE_HEIGHT = 293; /** Number of property constants defined */ - int PROPERTY_COUNT = 294; + int PROPERTY_COUNT = 293; // compound property constants @@ -1177,98 +1175,94 @@ public interface Constants { int EN_WIDER = 160; /** Enumeration constant */ int EN_WRAP = 161; - /** Enumeration constant - non-standard for display-align */ - int EN_X_FILL = 162; - /** Enumeration constant - non-standard for display-align */ - int EN_X_DISTRIBUTE = 163; /** Enumeration constant */ - int EN_ITALIC = 164; + int EN_ITALIC = 162; /** Enumeration constant */ - int EN_OBLIQUE = 165; + int EN_OBLIQUE = 163; /** Enumeration constant */ - int EN_BACKSLANT = 166; + int EN_BACKSLANT = 164; /** Enumeration constant */ - int EN_BOLDER = 167; + int EN_BOLDER = 165; /** Enumeration constant */ - int EN_LIGHTER = 168; + int EN_LIGHTER = 166; /** Enumeration constant */ - int EN_100 = 169; + int EN_100 = 167; /** Enumeration constant */ - int EN_200 = 170; + int EN_200 = 168; /** Enumeration constant */ - int EN_300 = 171; + int EN_300 = 169; /** Enumeration constant */ - int EN_400 = 172; + int EN_400 = 170; /** Enumeration constant */ - int EN_500 = 173; + int EN_500 = 171; /** Enumeration constant */ - int EN_600 = 174; + int EN_600 = 172; /** Enumeration constant */ - int EN_700 = 175; + int EN_700 = 173; /** Enumeration constant */ - int EN_800 = 176; + int EN_800 = 174; /** Enumeration constant */ - int EN_900 = 177; + int EN_900 = 175; /** Enumeration constant -- page-break-shorthand */ - int EN_AVOID = 178; + int EN_AVOID = 176; /** Enumeration constant -- white-space shorthand */ - int EN_PRE = 179; + int EN_PRE = 177; /** Enumeration constant -- font shorthand */ - int EN_CAPTION = 180; + int EN_CAPTION = 178; /** Enumeration constant -- font shorthand */ - int EN_ICON = 181; + int EN_ICON = 179; /** Enumeration constant -- font shorthand */ - int EN_MENU = 182; + int EN_MENU = 180; /** Enumeration constant -- font shorthand */ - int EN_MESSAGE_BOX = 183; + int EN_MESSAGE_BOX = 181; /** Enumeration constant -- font shorthand */ - int EN_SMALL_CAPTION = 184; + int EN_SMALL_CAPTION = 182; /** Enumeration constant -- font shorthand */ - int EN_STATUS_BAR = 185; + int EN_STATUS_BAR = 183; /** Enumeration constant -- for page-position, XSL 1.1 */ - int EN_ONLY = 186; + int EN_ONLY = 184; /** Enumeration constant -- for instream-foreign-object and external-graphic, XSL 1.1 */ - int EN_SCALE_DOWN_TO_FIT = 187; + int EN_SCALE_DOWN_TO_FIT = 185; /** Enumeration constant -- for instream-foreign-object and external-graphic, XSL 1.1 */ - int EN_SCALE_UP_TO_FIT = 188; + int EN_SCALE_UP_TO_FIT = 186; /** Enumeration constant -- for fo:basic-link show-destination */ - int EN_REPLACE = 189; + int EN_REPLACE = 187; /** Enumeration constant -- for fo:basic-link show-destination */ - int EN_NEW = 190; + int EN_NEW = 188; /** Enumeration constant -- for fo:retrieve-table-marker */ - int EN_FIRST_STARTING = 191; + int EN_FIRST_STARTING = 189; /** Enumeration constant -- for fo:retrieve-table-marker */ - int EN_LAST_STARTING = 192; + int EN_LAST_STARTING = 190; /** Enumeration constant -- for fo:retrieve-table-marker */ - int EN_LAST_ENDING = 193; + int EN_LAST_ENDING = 191; /** Enumeration constant -- for fo:retrieve-table-marker */ - int EN_TABLE = 194; + int EN_TABLE = 192; /** Enumeration constant -- for fo:retrieve-table-marker */ - int EN_TABLE_FRAGMENT = 195; + int EN_TABLE_FRAGMENT = 193; /** Enumeration constant -- XSL 1.1 */ - int EN_MERGE = 196; + int EN_MERGE = 194; /** Enumeration constant -- XSL 1.1 */ - int EN_LEAVE_SEPARATE = 197; + int EN_LEAVE_SEPARATE = 195; /** Enumeration constant -- XSL 1.1 */ - int EN_LINK = 198; + int EN_LINK = 196; /** Enumeration constant -- XSL 1.1 */ - int EN_NO_LINK = 199; + int EN_NO_LINK = 197; /** Enumeration constant -- XSL 1.1 */ - int EN_ALTERNATE = 200; + int EN_ALTERNATE = 198; /** Enumeration constant -- for *-direction traits */ - int EN_LR = 201; // left to right + int EN_LR = 199; // left to right /** Enumeration constant -- for *-direction traits */ - int EN_RL = 202; // right to left + int EN_RL = 200; // right to left /** Enumeration constant -- for *-direction traits */ - int EN_TB = 203; // top to bottom + int EN_TB = 201; // top to bottom /** Enumeration constant -- for *-direction traits */ - int EN_BT = 204; // bottom to top + int EN_BT = 202; // bottom to top /** Enumeration constant */ - int EN_TB_LR = 205; // for top-to-bottom, left-to-right writing mode + int EN_TB_LR = 203; // for top-to-bottom, left-to-right writing mode /** Enumeration constant -- for fo:retrieve-table-marker */ - int EN_FIRST_INCLUDING_CARRYOVER = 206; + int EN_FIRST_INCLUDING_CARRYOVER = 204; /** Enumeration constant -- for auto-toggle */ - int EN_SELECT_FIRST_FITTING = 207; + int EN_SELECT_FIRST_FITTING = 205; /** Number of enumeration constants defined */ - int ENUM_COUNT = 207; + int ENUM_COUNT = 205; } diff --git a/src/java/org/apache/fop/fo/FOPropertyMapping.java b/src/java/org/apache/fop/fo/FOPropertyMapping.java index 4615b33b5..413438c16 100644 --- a/src/java/org/apache/fop/fo/FOPropertyMapping.java +++ b/src/java/org/apache/fop/fo/FOPropertyMapping.java @@ -1300,8 +1300,6 @@ public final class FOPropertyMapping implements Constants { m.addEnum("after", getEnumProperty(EN_AFTER, "AFTER")); m.addEnum("center", getEnumProperty(EN_CENTER, "CENTER")); m.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO")); -/*LF*/ m.addEnum("distribute", getEnumProperty(EN_X_DISTRIBUTE, "DISTRIBUTE")); -/*LF*/ m.addEnum("fill", getEnumProperty(EN_X_FILL, "FILL")); m.setDefault("auto"); addPropertyMaker("display-align", m); @@ -1496,12 +1494,6 @@ public final class FOPropertyMapping implements Constants { l.setPercentBase(LengthBase.CONTAINING_BLOCK_WIDTH); l.setDefault("auto"); addPropertyMaker("width", l); - - // fox:block-progression-unit (**CUSTOM EXTENSION**) - l = new LengthProperty.Maker(PR_X_BLOCK_PROGRESSION_UNIT); - l.setInherited(false); - l.setDefault("0pt"); - addPropertyMaker("fox:block-progression-unit", l); } private Property calcWritingModeDependent(int pv, int wm) { diff --git a/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java b/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java index f0d9126a8..941dc2b5d 100644 --- a/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java +++ b/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java @@ -161,18 +161,12 @@ public abstract class AbstractBreaker { if (this.size() > ignoreAtStart) { // add the elements representing the space at the end of the last line // and the forced break - if (getDisplayAlign() == Constants.EN_X_DISTRIBUTE && isSinglePartFavored()) { - this.add(new KnuthPenalty(0, -KnuthElement.INFINITE, - false, breakPosition, false)); - ignoreAtEnd = 1; - } else { - this.add(new KnuthPenalty(0, KnuthElement.INFINITE, - false, null, false)); - this.add(new KnuthGlue(0, 10000000, 0, null, false)); - this.add(new KnuthPenalty(0, -KnuthElement.INFINITE, - false, breakPosition, false)); - ignoreAtEnd = 3; - } + this.add(new KnuthPenalty(0, KnuthElement.INFINITE, + false, null, false)); + this.add(new KnuthGlue(0, 10000000, 0, null, false)); + this.add(new KnuthPenalty(0, -KnuthElement.INFINITE, + false, breakPosition, false)); + ignoreAtEnd = 3; return this; } else { this.clear(); @@ -359,20 +353,8 @@ public abstract class AbstractBreaker { public void doLayout(int flowBPD, boolean autoHeight) { LayoutContext childLC = createLayoutContext(); childLC.setStackLimitBP(MinOptMax.getInstance(flowBPD)); - - if (getCurrentDisplayAlign() == Constants.EN_X_FILL) { - //EN_X_FILL is non-standard (by LF) - alignment = Constants.EN_JUSTIFY; - } else if (getCurrentDisplayAlign() == Constants.EN_X_DISTRIBUTE) { - //EN_X_DISTRIBUTE is non-standard (by LF) - alignment = Constants.EN_JUSTIFY; - } else { - alignment = Constants.EN_START; - } + alignment = Constants.EN_START; alignmentLast = Constants.EN_START; - if (isSinglePartFavored() && alignment == Constants.EN_JUSTIFY) { - alignmentLast = Constants.EN_JUSTIFY; - } childLC.setBPAlignment(alignment); BlockSequence blockList; @@ -409,32 +391,23 @@ public abstract class AbstractBreaker { alignment, alignmentLast, footnoteSeparatorLength, isPartOverflowRecoveryActivated(), autoHeight, isSinglePartFavored()); - BlockSequence effectiveList; - if (getCurrentDisplayAlign() == Constants.EN_X_FILL) { - /* justification */ - effectiveList = justifyBoxes(blockList, alg, flowBPD); - } else { - /* no justification */ - effectiveList = blockList; - } - alg.setConstantLineWidth(flowBPD); - int optimalPageCount = alg.findBreakingPoints(effectiveList, 1, true, + int optimalPageCount = alg.findBreakingPoints(blockList, 1, true, BreakingAlgorithm.ALL_BREAKS); if (Math.abs(alg.getIPDdifference()) > 1) { - addAreas(alg, optimalPageCount, blockList, effectiveList); + addAreas(alg, optimalPageCount, blockList, blockList); // *** redo Phase 1 *** log.trace("IPD changes after page " + optimalPageCount); blockLists.clear(); nextSequenceStartsOn = getNextBlockListChangedIPD(childLC, alg, - effectiveList); + blockList); blockListIndex = -1; } else { log.debug("PLM> optimalPageCount= " + optimalPageCount + " pageBreaks.size()= " + alg.getPageBreaks().size()); //*** Phase 3: Add areas *** - doPhase3(alg, optimalPageCount, blockList, effectiveList); + doPhase3(alg, optimalPageCount, blockList, blockList); } } } @@ -580,34 +553,7 @@ public abstract class AbstractBreaker { childLC.setSpaceBefore(pbp.difference / 2); } else if (pbp.difference != 0 && displayAlign == Constants.EN_AFTER) { childLC.setSpaceBefore(pbp.difference); - } else if (pbp.difference != 0 && displayAlign == Constants.EN_X_DISTRIBUTE - && p < (partCount - 1)) { - // count the boxes whose width is not 0 - int boxCount = 0; - @SuppressWarnings("unchecked") - ListIterator effectiveListIterator = effectiveList - .listIterator(startElementIndex); - while (effectiveListIterator.nextIndex() <= endElementIndex) { - KnuthElement tempEl = effectiveListIterator.next(); - if (tempEl.isBox() && tempEl.getWidth() > 0) { - boxCount++; - } - } - // split the difference - if (boxCount >= 2) { - childLC.setSpaceAfter(pbp.difference / (boxCount - 1)); - } - } - - /* *** *** non-standard extension *** *** */ - if (displayAlign == Constants.EN_X_FILL) { - int averageLineLength = optimizeLineLength(effectiveList, - startElementIndex, endElementIndex); - if (averageLineLength != 0) { - childLC.setStackLimitBP(MinOptMax.getInstance(averageLineLength)); - } } - /* *** *** non-standard extension *** *** */ // Handle SpaceHandling(Break)Positions, see SpaceResolver! SpaceResolver.performConditionalsNotification(effectiveList, @@ -825,272 +771,4 @@ public abstract class AbstractBreaker { return nextSequenceStartsOn; } - /** - * Returns the average width of all the lines in the given range. - * @param effectiveList effective block list to work on - * @param startElementIndex index of the element starting the range - * @param endElementIndex index of the element ending the range - * @return the average line length, 0 if there's no content - */ - private int optimizeLineLength(KnuthSequence effectiveList, int startElementIndex, - int endElementIndex) { - ListIterator effectiveListIterator; - // optimize line length - int boxCount = 0; - int accumulatedLineLength = 0; - int greatestMinimumLength = 0; - effectiveListIterator = effectiveList.listIterator(startElementIndex); - while (effectiveListIterator.nextIndex() <= endElementIndex) { - KnuthElement tempEl = effectiveListIterator - .next(); - if (tempEl instanceof KnuthBlockBox) { - KnuthBlockBox blockBox = (KnuthBlockBox) tempEl; - if (blockBox.getBPD() > 0) { - log.debug("PSLM> nominal length of line = " + blockBox.getBPD()); - log.debug(" range = " - + blockBox.getIPDRange()); - boxCount++; - accumulatedLineLength += ((KnuthBlockBox) tempEl) - .getBPD(); - } - if (blockBox.getIPDRange().getMin() > greatestMinimumLength) { - greatestMinimumLength = blockBox - .getIPDRange().getMin(); - } - } - } - int averageLineLength = 0; - if (accumulatedLineLength > 0 && boxCount > 0) { - averageLineLength = accumulatedLineLength / boxCount; - log.debug("Average line length = " + averageLineLength); - if (averageLineLength < greatestMinimumLength) { - averageLineLength = greatestMinimumLength; - log.debug(" Correction to: " + averageLineLength); - } - } - return averageLineLength; - } - - /** - * Justifies the boxes and returns them as a new KnuthSequence. - * @param blockList block list to justify - * @param alg reference to the algorithm instance - * @param availableBPD the available BPD - * @return the effective list - */ - private BlockSequence justifyBoxes( - BlockSequence blockList, PageBreakingAlgorithm alg, int availableBPD) { - int optimalPageCount; - alg.setConstantLineWidth(availableBPD); - optimalPageCount = alg.findBreakingPoints(blockList, /*availableBPD,*/ - 1, true, BreakingAlgorithm.ALL_BREAKS); - log.debug("PLM> optimalPageCount= " + optimalPageCount); - - // - ListIterator sequenceIterator = blockList.listIterator(); - ListIterator breakIterator = alg.getPageBreaks().listIterator(); - KnuthElement thisElement = null; - PageBreakPosition thisBreak; - int adjustedDiff; // difference already adjusted - - while (breakIterator.hasNext()) { - thisBreak = breakIterator.next(); - if (log.isDebugEnabled()) { - log.debug("| first page: break= " - + thisBreak.getLeafPos() + " difference= " - + thisBreak.difference + " ratio= " - + thisBreak.bpdAdjust); - } - adjustedDiff = 0; - - // glue and penalty items at the beginning of the page must - // be ignored: - // the first element returned by sequenceIterator.next() - // inside the - // while loop must be a box - KnuthElement firstElement; - while (sequenceIterator.hasNext()) { - firstElement = sequenceIterator.next(); - if (!firstElement.isBox()) { - log.debug("PLM> ignoring glue or penalty element " - + "at the beginning of the sequence"); - if (firstElement.isGlue()) { - ((BlockLevelLayoutManager) firstElement - .getLayoutManager()) - .discardSpace((KnuthGlue) firstElement); - } - } else { - break; - } - } - sequenceIterator.previous(); - - // scan the sub-sequence representing a page, - // collecting information about potential adjustments - MinOptMax lineNumberMaxAdjustment = MinOptMax.ZERO; - MinOptMax spaceMaxAdjustment = MinOptMax.ZERO; - LinkedList blockSpacesList = new LinkedList(); - LinkedList unconfirmedList = new LinkedList(); - LinkedList adjustableLinesList = new LinkedList(); - boolean bBoxSeen = false; - while (sequenceIterator.hasNext() - && sequenceIterator.nextIndex() <= thisBreak.getLeafPos()) { - thisElement = sequenceIterator.next(); - if (thisElement.isGlue()) { - // glue elements are used to represent adjustable - // lines - // and adjustable spaces between blocks - KnuthGlue thisGlue = (KnuthGlue) thisElement; - Adjustment adjustment = thisGlue.getAdjustmentClass(); - if (adjustment.equals(Adjustment.SPACE_BEFORE_ADJUSTMENT) - || adjustment.equals(Adjustment.SPACE_AFTER_ADJUSTMENT)) { - // potential space adjustment - // glue items before the first box or after the - // last one - // must be ignored - unconfirmedList.add(thisGlue); - } else if (adjustment.equals(Adjustment.LINE_NUMBER_ADJUSTMENT)) { - // potential line number adjustment - lineNumberMaxAdjustment - = lineNumberMaxAdjustment.plusMax(thisElement.getStretch()); - lineNumberMaxAdjustment - = lineNumberMaxAdjustment.minusMin(thisElement.getShrink()); - adjustableLinesList.add(thisGlue); - } else if (adjustment.equals(Adjustment.LINE_HEIGHT_ADJUSTMENT)) { - // potential line height adjustment - } - } else if (thisElement.isBox()) { - if (!bBoxSeen) { - // this is the first box met in this page - bBoxSeen = true; - } else { - while (!unconfirmedList.isEmpty()) { - // glue items in unconfirmedList were not after - // the last box - // in this page; they must be added to - // blockSpaceList - KnuthGlue blockSpace = unconfirmedList.removeFirst(); - spaceMaxAdjustment - = spaceMaxAdjustment.plusMax(blockSpace.getStretch()); - spaceMaxAdjustment - = spaceMaxAdjustment.minusMin(blockSpace.getShrink()); - blockSpacesList.add(blockSpace); - } - } - } - } - log.debug("| line number adj= " - + lineNumberMaxAdjustment); - log.debug("| space adj = " - + spaceMaxAdjustment); - - if (thisElement.isPenalty() && thisElement.getWidth() > 0) { - log.debug(" mandatory variation to the number of lines!"); - ((BlockLevelLayoutManager) thisElement - .getLayoutManager()).negotiateBPDAdjustment( - thisElement.getWidth(), thisElement); - } - - if (thisBreak.bpdAdjust != 0 - && (thisBreak.difference > 0 && thisBreak.difference <= spaceMaxAdjustment - .getMax()) - || (thisBreak.difference < 0 && thisBreak.difference >= spaceMaxAdjustment - .getMin())) { - // modify only the spaces between blocks - adjustedDiff += adjustBlockSpaces( - blockSpacesList, - thisBreak.difference, - (thisBreak.difference > 0 ? spaceMaxAdjustment.getMax() - : -spaceMaxAdjustment.getMin())); - log.debug("single space: " - + (adjustedDiff == thisBreak.difference - || thisBreak.bpdAdjust == 0 ? "ok" - : "ERROR")); - } else if (thisBreak.bpdAdjust != 0) { - adjustedDiff += adjustLineNumbers( - adjustableLinesList, - thisBreak.difference, - (thisBreak.difference > 0 ? lineNumberMaxAdjustment.getMax() - : -lineNumberMaxAdjustment.getMin())); - adjustedDiff += adjustBlockSpaces( - blockSpacesList, - thisBreak.difference - adjustedDiff, - ((thisBreak.difference - adjustedDiff) > 0 ? spaceMaxAdjustment.getMax() - : -spaceMaxAdjustment.getMin())); - log.debug("lines and space: " - + (adjustedDiff == thisBreak.difference - || thisBreak.bpdAdjust == 0 ? "ok" - : "ERROR")); - - } - } - - // create a new sequence: the new elements will contain the - // Positions - // which will be used in the addAreas() phase - BlockSequence effectiveList = new BlockSequence(blockList.getStartOn(), - blockList.getDisplayAlign()); - effectiveList.addAll(getCurrentChildLM().getChangedKnuthElements( - blockList.subList(0, blockList.size() - blockList.ignoreAtEnd), - /* 0, */0)); - //effectiveList.add(new KnuthPenalty(0, -KnuthElement.INFINITE, - // false, new Position(this), false)); - effectiveList.endSequence(); - - ElementListObserver.observe(effectiveList, "breaker-effective", null); - - alg.getPageBreaks().clear(); //Why this? - return effectiveList; - } - - private int adjustBlockSpaces(LinkedList spaceList, int difference, int total) { - if (log.isDebugEnabled()) { - log.debug("AdjustBlockSpaces: difference " + difference + " / " + total - + " on " + spaceList.size() + " spaces in block"); - } - ListIterator spaceListIterator = spaceList.listIterator(); - int adjustedDiff = 0; - int partial = 0; - while (spaceListIterator.hasNext()) { - KnuthGlue blockSpace = spaceListIterator.next(); - partial += (difference > 0 ? blockSpace.getStretch() : blockSpace.getShrink()); - if (log.isDebugEnabled()) { - log.debug("available = " + partial + " / " + total); - log.debug("competenza = " - + (((int)((float) partial * difference / total)) - adjustedDiff) - + " / " + difference); - } - int newAdjust = ((BlockLevelLayoutManager) blockSpace.getLayoutManager()) - .negotiateBPDAdjustment( - ((int) ((float) partial * difference / total)) - adjustedDiff, blockSpace); - adjustedDiff += newAdjust; - } - return adjustedDiff; - } - - private int adjustLineNumbers(LinkedList lineList, int difference, int total) { - if (log.isDebugEnabled()) { - log.debug("AdjustLineNumbers: difference " - + difference - + " / " - + total - + " on " - + lineList.size() - + " elements"); - } - - ListIterator lineListIterator = lineList.listIterator(); - int adjustedDiff = 0; - int partial = 0; - while (lineListIterator.hasNext()) { - KnuthGlue line = lineListIterator.next(); - partial += (difference > 0 ? line.getStretch() : line.getShrink()); - int newAdjust = ((BlockLevelLayoutManager) line.getLayoutManager()) - .negotiateBPDAdjustment( - ((int) ((float) partial * difference / total)) - adjustedDiff, line); - adjustedDiff += newAdjust; - } - return adjustedDiff; - } - } diff --git a/test/layoutengine/standard-testcases/block-container_display-align_distribute.xml b/test/layoutengine/standard-testcases/block-container_display-align_distribute.xml deleted file mode 100644 index 7473fcc07..000000000 --- a/test/layoutengine/standard-testcases/block-container_display-align_distribute.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - -

- This test checks display-align="distribute" (The value "distribute" is a proprietary extension to XSL-FO). -

-
- - - - - - - - - - - - "distribute" 4.2in - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - - "distribute" 4.8in - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - - "distribute" 3.85in - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - - "auto" - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 - - - - - - - - - - - - - -