From 7bf1e40ebb2a705544492cc1ca21b4444f4168af Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Mon, 18 Jul 2005 15:03:47 +0000 Subject: [PATCH] Moved inline-level LMs and support classes to "inline" subpackage. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@219509 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/fop/fo/flow/BasicLink.java | 10 +- .../org/apache/fop/fo/flow/BidiOverride.java | 9 +- .../apache/fop/fo/flow/InlineContainer.java | 11 +- .../org/apache/fop/fo/flow/InlineLevel.java | 15 +- .../fop/fo/flow/InstreamForeignObject.java | 32 +- src/java/org/apache/fop/fo/flow/Leader.java | 24 +- .../fop/layoutmgr/BlockLayoutManager.java | 2 + .../layoutmgr/BlockStackingLayoutManager.java | 1 + .../fop/layoutmgr/BreakingAlgorithm.java | 2 +- .../fop/layoutmgr/FlowLayoutManager.java | 1 + .../apache/fop/layoutmgr/KnuthParagraph.java | 748 ------------------ .../apache/fop/layoutmgr/LayoutContext.java | 1 + .../fop/layoutmgr/LayoutManagerMapping.java | 14 + .../layoutmgr/PageSequenceLayoutManager.java | 1 + .../layoutmgr/StaticContentLayoutManager.java | 1 + .../{ => inline}/BasicLinkLayoutManager.java | 3 +- .../{ => inline}/BidiLayoutManager.java | 2 +- .../{ => inline}/CharacterLayoutManager.java | 10 +- .../{ => inline}/ContentLayoutManager.java | 10 +- .../ExternalGraphicLayoutManager.java | 3 +- .../{ => inline}/FootnoteLayoutManager.java | 7 +- .../layoutmgr/{ => inline}/HyphContext.java | 2 +- .../{ => inline}/ICLayoutManager.java | 2 +- .../{ => inline}/InlineLayoutManager.java | 7 +- .../InlineLevelLayoutManager.java | 5 +- .../InlineStackingLayoutManager.java | 10 +- .../{ => inline}/InstreamForeignObjectLM.java | 5 +- .../{ => inline}/KnuthInlineBox.java | 6 +- .../{ => inline}/LeaderLayoutManager.java | 10 +- .../{ => inline}/LeafNodeLayoutManager.java | 7 +- .../{ => inline}/LineLayoutManager.java | 19 +- .../{ => inline}/LineLayoutPossibilities.java | 3 +- .../PageNumberCitationLayoutManager.java | 8 +- .../{ => inline}/PageNumberLayoutManager.java | 6 +- .../{ => inline}/TextLayoutManager.java | 11 +- .../{ => inline}/WrapperLayoutManager.java | 7 +- 36 files changed, 181 insertions(+), 834 deletions(-) delete mode 100644 src/java/org/apache/fop/layoutmgr/KnuthParagraph.java rename src/java/org/apache/fop/layoutmgr/{ => inline}/BasicLinkLayoutManager.java (95%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/BidiLayoutManager.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/CharacterLayoutManager.java (95%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/ContentLayoutManager.java (95%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/ExternalGraphicLayoutManager.java (98%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/FootnoteLayoutManager.java (93%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/HyphContext.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/ICLayoutManager.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/InlineLayoutManager.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/InlineLevelLayoutManager.java (93%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/InlineStackingLayoutManager.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/InstreamForeignObjectLM.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/KnuthInlineBox.java (93%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/LeaderLayoutManager.java (96%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/LeafNodeLayoutManager.java (97%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/LineLayoutManager.java (98%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/LineLayoutPossibilities.java (99%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/PageNumberCitationLayoutManager.java (92%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/PageNumberLayoutManager.java (93%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/TextLayoutManager.java (98%) rename src/java/org/apache/fop/layoutmgr/{ => inline}/WrapperLayoutManager.java (83%) diff --git a/src/java/org/apache/fop/fo/flow/BasicLink.java b/src/java/org/apache/fop/fo/flow/BasicLink.java index 6832335fc..e205fbe48 100644 --- a/src/java/org/apache/fop/fo/flow/BasicLink.java +++ b/src/java/org/apache/fop/fo/flow/BasicLink.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2004 The Apache Software Foundation. + * Copyright 1999-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,16 +18,12 @@ package org.apache.fop.fo.flow; -// Java -import java.util.List; - import org.xml.sax.Locator; import org.apache.fop.apps.FOPException; import org.apache.fop.fo.FONode; import org.apache.fop.fo.PropertyList; import org.apache.fop.fo.ValidationException; -import org.apache.fop.layoutmgr.BasicLinkLayoutManager; /** * The fo:basic-link formatting object. @@ -118,14 +114,14 @@ public class BasicLink extends Inline { } /** - * Return the "internal-destination" property. + * @return the "internal-destination" property. */ public String getInternalDestination() { return internalDestination; } /** - * Return the "external-destination" property. + * @return the "external-destination" property. */ public String getExternalDestination() { return externalDestination; diff --git a/src/java/org/apache/fop/fo/flow/BidiOverride.java b/src/java/org/apache/fop/fo/flow/BidiOverride.java index d184e83a5..f8c28d4e0 100644 --- a/src/java/org/apache/fop/fo/flow/BidiOverride.java +++ b/src/java/org/apache/fop/fo/flow/BidiOverride.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2004 The Apache Software Foundation. + * Copyright 1999-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,6 @@ package org.apache.fop.fo.flow; -// Java -import java.util.ArrayList; -import java.util.List; - import org.xml.sax.Locator; import org.apache.fop.apps.FOPException; @@ -35,9 +31,6 @@ import org.apache.fop.fo.properties.CommonAural; import org.apache.fop.fo.properties.CommonFont; import org.apache.fop.fo.properties.CommonRelativePosition; import org.apache.fop.fo.properties.SpaceProperty; -import org.apache.fop.layoutmgr.BidiLayoutManager; -import org.apache.fop.layoutmgr.InlineLayoutManager; -import org.apache.fop.layoutmgr.LayoutManager; /** * fo:bidi-override element. diff --git a/src/java/org/apache/fop/fo/flow/InlineContainer.java b/src/java/org/apache/fop/fo/flow/InlineContainer.java index 7f53f00c0..380ff8b7d 100644 --- a/src/java/org/apache/fop/fo/flow/InlineContainer.java +++ b/src/java/org/apache/fop/fo/flow/InlineContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2004 The Apache Software Foundation. + * Copyright 1999-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,6 @@ package org.apache.fop.fo.flow; -// Java -import java.util.ArrayList; -import java.util.List; - import org.xml.sax.Locator; import org.apache.fop.apps.FOPException; @@ -36,13 +32,12 @@ import org.apache.fop.fo.properties.CommonMarginInline; import org.apache.fop.fo.properties.CommonRelativePosition; import org.apache.fop.fo.properties.KeepProperty; import org.apache.fop.fo.properties.LengthRangeProperty; -import org.apache.fop.layoutmgr.ICLayoutManager; -import org.apache.fop.layoutmgr.LayoutManager; /** * Class modelling the fo:inline-container object. */ public class InlineContainer extends FObj { + // The value of properties relevant for fo:inline-container. private CommonBorderPaddingBackground commonBorderPaddingBackground; private CommonMarginInline commonMarginInline; @@ -138,7 +133,7 @@ public class InlineContainer extends FObj { } /** - * Return the "id" property. + * @return the "id" property. */ public String getId() { return id; diff --git a/src/java/org/apache/fop/fo/flow/InlineLevel.java b/src/java/org/apache/fop/fo/flow/InlineLevel.java index 6cdb92b40..096eac768 100644 --- a/src/java/org/apache/fop/fo/flow/InlineLevel.java +++ b/src/java/org/apache/fop/fo/flow/InlineLevel.java @@ -1,5 +1,5 @@ /* - * Copyright 2004 The Apache Software Foundation. + * Copyright 2004-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,8 +18,6 @@ package org.apache.fop.fo.flow; -import java.util.List; - import org.apache.fop.apps.FOPException; import org.apache.fop.datatypes.ColorType; import org.apache.fop.datatypes.Length; @@ -31,13 +29,14 @@ import org.apache.fop.fo.properties.CommonAural; import org.apache.fop.fo.properties.CommonBorderPaddingBackground; import org.apache.fop.fo.properties.CommonFont; import org.apache.fop.fo.properties.CommonMarginInline; -import org.apache.fop.layoutmgr.InlineLayoutManager; /** * Class modelling the commonalities of several inline-level * formatting objects. */ public abstract class InlineLevel extends FObjMixed { + + // The value of properties relevant for inline-level FOs. protected CommonBorderPaddingBackground commonBorderPaddingBackground; protected CommonAccessibility commonAccessibility; protected CommonMarginInline commonMarginInline; @@ -70,28 +69,28 @@ public abstract class InlineLevel extends FObjMixed { } /** - * Return the Common Margin Properties-Inline. + * @return the Common Margin Properties-Inline. */ public CommonMarginInline getCommonMarginInline() { return commonMarginInline; } /** - * Return the Common Border, Padding, and Background Properties. + * @return the Common Border, Padding, and Background Properties. */ public CommonBorderPaddingBackground getCommonBorderPaddingBackground() { return commonBorderPaddingBackground; } /** - * Return the Common Font Properties. + * @return the Common Font Properties. */ public CommonFont getCommonFont() { return commonFont; } /** - * Return the "color" property. + * @return the "color" property. */ public ColorType getColor() { return color; diff --git a/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java b/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java index fc6baea50..563de2f14 100644 --- a/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java +++ b/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java @@ -188,84 +188,84 @@ public class InstreamForeignObject extends FObj { } /** - * Return the "id" property. + * @return the "id" property. */ public String getId() { return id; } /** - * Return the Common Border, Padding, and Background Properties. + * @return the Common Border, Padding, and Background Properties. */ public CommonBorderPaddingBackground getCommonBorderPaddingBackground() { return commonBorderPaddingBackground; } /** - * Return the "line-height" property. + * @return the "line-height" property. */ public Length getLineHeight() { return lineHeight; } /** - * Return the "inline-progression-dimension" property. + * @return the "inline-progression-dimension" property. */ public LengthRangeProperty getInlineProgressionDimension() { return inlineProgressionDimension; } /** - * Return the "block-progression-dimension" property. + * @return the "block-progression-dimension" property. */ public LengthRangeProperty getBlockProgressionDimension() { return blockProgressionDimension; } /** - * Return the "height" property. + * @return the "height" property. */ public Length getHeight() { return height; } /** - * Return the "width" property. + * @return the "width" property. */ public Length getWidth() { return width; } /** - * Return the "content-height" property. + * @return the "content-height" property. */ public Length getContentHeight() { return contentHeight; } /** - * Return the "content-width" property. + * @return the "content-width" property. */ public Length getContentWidth() { return contentWidth; } /** - * Return the "scaling" property. + * @return the "scaling" property. */ public int getScaling() { return scaling; } /** - * Return the "vertical-align" property. + * @return the "vertical-align" property. */ public int getVerticalAlign() { return verticalAlign; } /** - * Return the "overflow" property. + * @return the "overflow" property. */ public int getOverflow() { return overflow; @@ -285,9 +285,7 @@ public class InstreamForeignObject extends FObj { return FO_INSTREAM_FOREIGN_OBJECT; } - /** - * @see org.apache.fop.fo.FObj#getLayoutDimension(org.apache.fop.datatypes.PercentBase.DimensionType) - */ + /** @see org.apache.fop.fo.FObj */ public Number getLayoutDimension(PercentBase.LayoutDimension key) { if (key == PercentBase.IMAGE_INTRINSIC_WIDTH) { return new Integer(getIntrinsicWidth()); @@ -337,4 +335,8 @@ public class InstreamForeignObject extends FObj { } } + /** @see org.apache.fop.fo.FONode#addChildNode(org.apache.fop.fo.FONode) */ + protected void addChildNode(FONode child) throws FOPException { + super.addChildNode(child); + } } diff --git a/src/java/org/apache/fop/fo/flow/Leader.java b/src/java/org/apache/fop/fo/flow/Leader.java index 16387d6a3..f8e67130f 100644 --- a/src/java/org/apache/fop/fo/flow/Leader.java +++ b/src/java/org/apache/fop/fo/flow/Leader.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2004 The Apache Software Foundation. + * Copyright 1999-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,9 +18,6 @@ package org.apache.fop.fo.flow; -// Java -import java.util.List; - import org.apache.fop.apps.FOPException; import org.apache.fop.datatypes.Length; import org.apache.fop.fo.FONode; @@ -29,7 +26,6 @@ import org.apache.fop.fo.properties.CommonRelativePosition; import org.apache.fop.fo.properties.KeepProperty; import org.apache.fop.fo.properties.LengthRangeProperty; import org.apache.fop.fo.properties.SpaceProperty; -import org.apache.fop.layoutmgr.LeaderLayoutManager; /** * Class modelling fo:leader object. @@ -105,6 +101,8 @@ public class Leader extends InlineLevel { // use inline layout manager to create inline areas // add the inline parent multiple times until leader full break; + default: + throw new RuntimeException("Invalid leader pattern: " + leaderPattern); } // letterSpacing = pList.get(PR_LETTER_SPACING); // textShadow = pList.get(PR_TEXT_SHADOW); @@ -120,56 +118,56 @@ public class Leader extends InlineLevel { /** - * Return the "id" property. + * @return the "id" property. */ public String getId() { return id; } /** - * Return the "rule-style" property. + * @return the "rule-style" property. */ public int getRuleStyle() { return ruleStyle; } /** - * Return the "rule-thickness" property. + * @return the "rule-thickness" property. */ public Length getRuleThickness() { return ruleThickness; } /** - * Return the "leader-alignment" property. + * @return the "leader-alignment" property. */ public int getLeaderAlignment() { return leaderAlignment; } /** - * Return the "leader-length" property. + * @return the "leader-length" property. */ public LengthRangeProperty getLeaderLength() { return leaderLength; } /** - * Return the "leader-pattern" property. + * @return the "leader-pattern" property. */ public int getLeaderPattern() { return leaderPattern; } /** - * Return the "leader-pattern-width" property. + * @return the "leader-pattern-width" property. */ public Length getLeaderPatternWidth() { return leaderPatternWidth; } /** - * Return the "vertical-align" property. + * @return the "vertical-align" property. */ public int getVerticalAlign() { return verticalAlign; diff --git a/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java index 9f48f20b6..46dbf1407 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java @@ -23,6 +23,8 @@ import java.util.ListIterator; import java.util.List; import org.apache.fop.fonts.Font; +import org.apache.fop.layoutmgr.inline.InlineLevelLayoutManager; +import org.apache.fop.layoutmgr.inline.LineLayoutManager; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.area.LineArea; diff --git a/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java index fa65dfda9..c86281c42 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java @@ -30,6 +30,7 @@ import org.apache.fop.datatypes.PercentBase; import org.apache.fop.fo.FObj; import org.apache.fop.fo.properties.CommonBorderPaddingBackground; import org.apache.fop.fo.properties.SpaceProperty; +import org.apache.fop.layoutmgr.inline.LineLayoutManager; import org.apache.fop.traits.MinOptMax; /** diff --git a/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java b/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java index 98ba692b3..f71a9fd7d 100644 --- a/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java +++ b/src/java/org/apache/fop/layoutmgr/BreakingAlgorithm.java @@ -135,7 +135,7 @@ public abstract class BreakingAlgorithm { // this class represent a feasible breaking point - protected class KnuthNode { + public class KnuthNode { /** index of the breakpoint represented by this node */ public int position; diff --git a/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java b/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java index 89015813d..a400078c2 100644 --- a/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java @@ -20,6 +20,7 @@ package org.apache.fop.layoutmgr; import org.apache.fop.datatypes.PercentBase; import org.apache.fop.fo.pagination.Flow; +import org.apache.fop.layoutmgr.inline.InlineLevelLayoutManager; import org.apache.fop.area.Area; import org.apache.fop.area.BlockParent; diff --git a/src/java/org/apache/fop/layoutmgr/KnuthParagraph.java b/src/java/org/apache/fop/layoutmgr/KnuthParagraph.java deleted file mode 100644 index cf08b6315..000000000 --- a/src/java/org/apache/fop/layoutmgr/KnuthParagraph.java +++ /dev/null @@ -1,748 +0,0 @@ -/* - * Copyright 2004-2005 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.layoutmgr; - -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.apache.fop.traits.MinOptMax; - -/** - * A knuth paragraph - * - * The set is sorted into lines indexed into activeLines. - * The nodes in each line is linked together in a single linked list by the - * KnuthNode.next field. The activeLines array contains a link to the head of - * the linked list in index 'line*2' and a link to the tail at index 'line*2+1'. - *

- * The set of active nodes can be traversed by - *

- * for (int line = startLine; line < endLine; line++) {
- *     for (KnuthNode node = getNode(line); node != null; node = node.next) {
- *         // Do something with 'node'
- *     }
- * }
- * 
- */ -public class KnuthParagraph { - // parameters of Knuth's algorithm: - // penalty value for flagged penalties - private int flaggedPenalty = 50; - // demerit for consecutive lines ending at flagged penalties - private int repeatedFlaggedDemerit = 50; - // demerit for consecutive lines belonging to incompatible fitness classes - private int incompatibleFitnessDemerit = 50; - // suggested modification to the "optimum" number of lines - private int looseness = 0; - - /** - * The threshold for considering breaks to be acceptable. - */ - private double threshold; - - /** - * The paragraph of KnuthElements. - */ - private List par; - - /** - * The width of a line. - */ - private int lineWidth = 0; - private boolean force = false; - - private KnuthNode lastTooLong; - private KnuthNode lastTooShort; - private KnuthNode lastDeactivated; - - /** - * The set of active nodes. - */ - private KnuthNode[] activeLines; - - /** - * The number of active nodes. - */ - private int activeNodeCount; - - /** - * The lowest available line in the set of active nodes. - */ - private int startLine = 0; - - /** - * The highest + 1 available line in the set of active nodes. - */ - private int endLine = 0; - - /** - * The total width of all elements handled so far. - */ - private int totalWidth; - - /** - * The total stretch of all elements handled so far. - */ - private int totalStretch = 0; - - /** - * The total shrink of all elements handled so far. - */ - private int totalShrink = 0; - - private BestRecords best; - private KnuthNode[] positions; - - private static final int INFINITE_RATIO = 1000; - - protected static Log log = LogFactory.getLog(KnuthParagraph.class); - - public KnuthParagraph(List par) { - this.best = new BestRecords(); - this.par = par; - } - - - // this class represent a feasible breaking point - private class KnuthNode { - // index of the breakpoint represented by this node - public int position; - - // number of the line ending at this breakpoint - public int line; - - // fitness class of the line ending at his breakpoint - public int fitness; - - // accumulated width of the KnuthElements - public int totalWidth; - - public int totalStretch; - - public int totalShrink; - - // adjustment ratio if the line ends at this breakpoint - public double adjustRatio; - - // difference between target and actual line width - public int difference; - - // minimum total demerits up to this breakpoint - public double totalDemerits; - - // best node for the preceding breakpoint - public KnuthNode previous; - - // Next possible node in the same line - public KnuthNode next; - - - public KnuthNode(int position, int line, int fitness, - int totalWidth, int totalStretch, int totalShrink, - double adjustRatio, int difference, - double totalDemerits, KnuthNode previous) { - this.position = position; - this.line = line; - this.fitness = fitness; - this.totalWidth = totalWidth; - this.totalStretch = totalStretch; - this.totalShrink = totalShrink; - this.adjustRatio = adjustRatio; - this.difference = difference; - this.totalDemerits = totalDemerits; - this.previous = previous; - } - - public String toString() { - return ""; - } - } - - // this class stores information about how the nodes - // which could start a line - // ending at the current element - private class BestRecords { - private static final double INFINITE_DEMERITS = Double.POSITIVE_INFINITY; - - private double bestDemerits[] = new double[4]; - private KnuthNode bestNode[] = new KnuthNode[4]; - private double bestAdjust[] = new double[4]; - private int bestDifference[] = new int[4]; - private int bestIndex = -1; - - public BestRecords() { - reset(); - } - - public void addRecord(double demerits, KnuthNode node, double adjust, - int difference, int fitness) { - if (demerits > bestDemerits[fitness]) { - log.error("New demerits value greter than the old one"); - } - bestDemerits[fitness] = demerits; - bestNode[fitness] = node; - bestAdjust[fitness] = adjust; - bestDifference[fitness] = difference; - if (bestIndex == -1 || demerits < bestDemerits[bestIndex]) { - bestIndex = fitness; - } - } - - public boolean hasRecords() { - return (bestIndex != -1); - } - - public boolean notInfiniteDemerits(int fitness) { - return (bestDemerits[fitness] != INFINITE_DEMERITS); - } - - public double getDemerits(int fitness) { - return bestDemerits[fitness]; - } - - public KnuthNode getNode(int fitness) { - return bestNode[fitness]; - } - - public double getAdjust(int fitness) { - return bestAdjust[fitness]; - } - - public int getDifference(int fitness) { - return bestDifference[fitness]; - } - - public double getMinDemerits() { - if (bestIndex != -1) { - return getDemerits(bestIndex); - } else { - // anyway, this should never happen - return INFINITE_DEMERITS; - } - } - - public void reset() { - bestDemerits[0] = INFINITE_DEMERITS; - bestDemerits[1] = INFINITE_DEMERITS; - bestDemerits[2] = INFINITE_DEMERITS; - bestDemerits[3] = INFINITE_DEMERITS; - bestIndex = -1; - } - } - - public int findBreakPoints(int lineWidth, double threshold, boolean force) { - this.lineWidth = lineWidth; - this.totalWidth = 0; - this.totalStretch = 0; - this.totalShrink = 0; - this.threshold = threshold; - this.force = force; - - activeLines = new KnuthNode[20]; - addNode(0, new KnuthNode(0, 0, 1, 0, 0, 0, 0, 0, 0, null)); - - boolean bForced = false; - - // previous element in the paragraph is a KnuthBox - boolean previousIsBox = false; - - if (log.isTraceEnabled()) { - log.trace("Looping over " + par.size() + " box objects"); - } - - KnuthNode lastForced = getNode(0); - - // main loop - for (int i = 0; i < par.size(); i++) { - KnuthElement element = getElement(i); - if (element.isBox()) { - // a KnuthBox object is not a legal line break - totalWidth += element.getW(); - previousIsBox = true; - } else if (element.isGlue()) { - // a KnuthGlue object is a legal line break - // only if the previous object is a KnuthBox - if (previousIsBox) { - considerLegalBreak(element, i); - } - totalWidth += element.getW(); - totalStretch += element.getY(); - totalShrink += element.getZ(); - previousIsBox = false; - } else { - // a KnuthPenalty is a legal line break - // only if its penalty is not infinite - if (element.getP() < KnuthElement.INFINITE) { - considerLegalBreak(element, i); - } - previousIsBox = false; - } - if (activeNodeCount == 0) { - if (!force) { - log.debug("Could not find a set of breaking points " + threshold); - return 0; - } - /* - if (lastForced != null && lastForced.position == lastDeactivated.position) { - lastForced = lastTooShort != null ? lastTooShort : lastTooLong; - } else { - lastForced = lastDeactivated; - } - */ - if (lastTooShort == null || lastForced.position == lastTooShort.position) { - lastForced = lastTooLong; - } else { - lastForced = lastTooShort; - } - - log.debug("Restarting at node " + lastForced); - lastForced.totalDemerits = 0; - addNode(lastForced.line, lastForced); - i = lastForced.position; - startLine = lastForced.line; - endLine = startLine + 1; - totalWidth = lastForced.totalWidth; - totalStretch = lastForced.totalStretch; - totalShrink = lastForced.totalShrink; - lastTooShort = lastTooLong = null; - } - } - if (log.isTraceEnabled()) { - log.trace("Main loop completed " + activeNodeCount); - log.trace("Active nodes=" + toString("")); - } - - // there is at least one set of breaking points - // choose the active node with fewest total demerits - KnuthNode bestActiveNode = findBestNode(); - int line = bestActiveNode.line; -/* - if (looseness != 0) { - // choose the appropriate active node - int s = 0; - double bestDemerits = 0; - for (int i = 0; i < activeList.size(); i++) { - KnuthNode node = getNode(i); - int delta = node.line - line; - if (looseness <= delta && delta < s - || s < delta && delta <= looseness) { - s = delta; - bestActiveNode = node; - bestDemerits = node.totalDemerits; - } else if (delta == s - && node.totalDemerits < bestDemerits) { - bestActiveNode = node; - bestDemerits = node.totalDemerits; - } - } - line = bestActiveNode.line; - } -*/ - // Reverse the list of nodes from bestActiveNode. - positions = new KnuthNode[line]; - // use the chosen node to determine the optimum breakpoints - for (int i = line - 1; i >= 0; i--) { - positions[i] = bestActiveNode; - bestActiveNode = bestActiveNode.previous; - } - activeLines = null; - return positions.length; - } - - private void considerLegalBreak(KnuthElement element, int elementIdx) { - - if (log.isTraceEnabled()) { - log.trace("Feasible breakpoint at " + par.indexOf(element) + " " + totalWidth + "+" + totalStretch + "-" + totalShrink); - log.trace("\tCurrent active node list: " + activeNodeCount + " " + this.toString("\t")); - } - - lastDeactivated = null; - lastTooLong = null; - for (int line = startLine; line < endLine; line++) { - for (KnuthNode node = getNode(line); node != null; node = node.next) { - if (node.position == elementIdx) { - continue; - } - int difference = computeDifference(node, element); - double r = computeAdjustmentRatio(node, difference); - if (log.isTraceEnabled()) { - log.trace("\tr=" + r); - log.trace("\tline=" + line); - } - - // The line would be too long. - if (r < -1 || element.isForcedBreak()) { - // Deactivate node. - if (log.isTraceEnabled()) { - log.trace("Removing " + node); - } - removeNode(line, node); - lastDeactivated = compareNodes(lastDeactivated, node); - } - - // The line is within the available shrink and the threshold. - if (r >= -1 && r <= threshold) { - int fitnessClass = computeFitness(r); - double demerits = computeDemerits(node, element, fitnessClass, r); - - if (log.isTraceEnabled()) { - log.trace("\tDemerits=" + demerits); - log.trace("\tFitness class=" + fitnessClass); - } - - if (demerits < best.getDemerits(fitnessClass)) { - // updates best demerits data - best.addRecord(demerits, node, r, difference, fitnessClass); - } - } - - // The line is way too short, but we are in forcing mode, so a node is - // calculated and stored in lastValidNode. - if (force && (r <= -1 || r > threshold)) { - int fitnessClass = computeFitness(r); - double demerits = computeDemerits(node, element, fitnessClass, r); - if (r <= -1) { - if (lastTooLong == null || demerits < lastTooLong.totalDemerits) { - lastTooLong = new KnuthNode(elementIdx, line + 1, fitnessClass, - totalWidth, totalStretch, totalShrink, - r, difference, demerits, node); - if (log.isTraceEnabled()) { - log.trace("Picking tooLong " + lastTooLong); - } - } - } else { - if (lastTooShort == null || demerits <= lastTooShort.totalDemerits) { - lastTooShort = new KnuthNode(elementIdx, line + 1, fitnessClass, - totalWidth, totalStretch, totalShrink, - r, difference, demerits, node); - if (log.isTraceEnabled()) { - log.trace("Picking tooShort " + lastTooShort); - } - } - } - } - } - addBreaks(line, elementIdx); - } - } - - - private void addBreaks(int line, int elementIdx) { - if (!best.hasRecords()) { - return; - } - - int newWidth = totalWidth; - int newStretch = totalStretch; - int newShrink = totalShrink; - - for (int i = elementIdx; i < par.size(); i++) { - KnuthElement tempElement = getElement(i); - if (tempElement.isBox()) { - break; - } else if (tempElement.isGlue()) { - newWidth += tempElement.getW(); - newStretch += tempElement.getY(); - newShrink += tempElement.getZ(); - } else if (tempElement.isForcedBreak() && i != elementIdx) { - break; - } - } - - // add nodes to the active nodes list - double minimumDemerits = best.getMinDemerits() + incompatibleFitnessDemerit; - for (int i = 0; i <= 3; i++) { - if (best.notInfiniteDemerits(i) && best.getDemerits(i) <= minimumDemerits) { - // the nodes in activeList must be ordered - // by line number and position; - if (log.isTraceEnabled()) { - log.trace("\tInsert new break in list of " + activeNodeCount); - } - KnuthNode newNode = new KnuthNode(elementIdx, line + 1, i, - newWidth, newStretch, newShrink, - best.getAdjust(i), - best.getDifference(i), - best.getDemerits(i), - best.getNode(i)); - addNode(line + 1, newNode); - } - } - best.reset(); - } - - /** - * Return the difference between the line width and the width of the break that - * ends in 'element'. - * @param activeNode - * @param element - * @return The difference in width. Positive numbers mean extra space in the line, - * negative number that the line overflows. - */ - private int computeDifference(KnuthNode activeNode, KnuthElement element) { - // compute the adjustment ratio - int actualWidth = totalWidth - activeNode.totalWidth; - if (element.isPenalty()) { - actualWidth += element.getW(); - } - return lineWidth - actualWidth; - } - - /** - * Return the adjust ration needed to make up for the difference. A ration of - * - * @param activeNode - * @param difference - * @return The ration. - */ - private double computeAdjustmentRatio(KnuthNode activeNode, int difference) { - // compute the adjustment ratio - if (difference > 0) { - int maxAdjustment = totalStretch - activeNode.totalStretch; - if (maxAdjustment > 0) { - return (double) difference / maxAdjustment; - } else { - return INFINITE_RATIO; - } - } else if (difference < 0) { - int maxAdjustment = totalShrink - activeNode.totalShrink; - if (maxAdjustment > 0) { - return (double) difference / maxAdjustment; - } else { - return -INFINITE_RATIO; - } - } else { - return 0; - } - } - - /** - * Figure out the fitness class of this line (tight, loose, - * very tight or very loose). - * @param r - * @return - */ - private int computeFitness(double r) { - int newFitnessClass; - if (r < -0.5) { - return 0; - } else if (r <= 0.5) { - return 1; - } else if (r <= 1) { - return 2; - } else { - return 3; - } - } - - /** - * Find and return the KnuthNode in the active set of nodes with the - * lowest demerit. - */ - private KnuthNode findBestNode() { - // choose the active node with fewest total demerits - KnuthNode bestActiveNode = null; - for (int i = startLine; i < endLine; i++) { - for (KnuthNode node = getNode(i); node != null; node = node.next) { - bestActiveNode = compareNodes(bestActiveNode, node); - } - } - if (log.isTraceEnabled()) { - log.trace("Best demerits " + bestActiveNode.totalDemerits + " for paragraph size " + par.size()); - } - return bestActiveNode; - } - - /** - * Compare two KnuthNodes and return the node with the least demerit. - * @param node1 The first knuth node. - * @param node2 The other knuth node. - * @return - */ - private KnuthNode compareNodes(KnuthNode node1, KnuthNode node2) { - if (node1 == null || node2.position > node1.position) { - return node2; - } - if (node2.position == node1.position) { - if (node2.totalDemerits < node1.totalDemerits) { - return node2; - } - } - return node1; - } - - private double computeDemerits(KnuthNode activeNode, KnuthElement element, - int fitnessClass, double r) { - double demerits = 0; - // compute demerits - double f = Math.abs(r); - f = 1 + 100 * f * f * f; - if (element.isPenalty() && element.getP() >= 0) { - f += element.getP(); - demerits = f * f; - } else if (element.isPenalty() && !element.isForcedBreak()) { - double penalty = element.getP(); - demerits = f * f - penalty * penalty; - } else { - demerits = f * f; - } - - if (element.isPenalty() && ((KnuthPenalty) element).isFlagged() - && getElement(activeNode.position).isPenalty() - && ((KnuthPenalty) getElement(activeNode.position)).isFlagged()) { - // add demerit for consecutive breaks at flagged penalties - demerits += repeatedFlaggedDemerit; - } - if (Math.abs(fitnessClass - activeNode.fitness) > 1) { - // add demerit for consecutive breaks - // with very different fitness classes - demerits += incompatibleFitnessDemerit; - } - demerits += activeNode.totalDemerits; - return demerits; - } - - /** - * Return the element at index idx in the paragraph. - * @param idx index of the element. - * @return - */ - private KnuthElement getElement(int idx) { - return (KnuthElement) par.get(idx); - } - - /** - * Add a KnuthNode at the end of line 'line'. - * If this is the first node in the line, adjust endLine accordingly. - * @param line - * @param node - */ - private void addNode(int line, KnuthNode node) { - int headIdx = line * 2; - if (headIdx >= activeLines.length) { - KnuthNode[] oldList = activeLines; - activeLines = new KnuthNode[headIdx + headIdx]; - System.arraycopy(oldList, 0, activeLines, 0, oldList.length); - } - node.next = null; - if (activeLines[headIdx + 1] != null) { - activeLines[headIdx + 1].next = node; - } else { - activeLines[headIdx] = node; - endLine = line+1; - } - activeLines[headIdx + 1] = node; - activeNodeCount++; - } - - /** - * Remove the first node in line 'line'. If the line then becomes empty, adjust the - * startLine accordingly. - * @param line - * @param node - */ - private void removeNode(int line, KnuthNode node) { - KnuthNode n = getNode(line); - if (n != node) { - log.error("Should be first"); - } else { - activeLines[line*2] = node.next; - if (node.next == null) { - activeLines[line*2+1] = null; - } - while (startLine < endLine && getNode(startLine) == null) { - startLine++; - } - } - activeNodeCount--; - } - - private KnuthNode getNode(int line) { - return activeLines[line * 2]; - } - - /** - * Return true if the position 'idx' is a legal breakpoint. - * @param idx - * @return - */ - private boolean isLegalBreakpoint(int idx) { - KnuthElement elm = getElement(idx); - if (elm.isPenalty() && elm.getP() != KnuthElement.INFINITE) { - return true; - } else if (idx > 0 && elm.isGlue() && getElement(idx-1).isBox()) { - return true; - } else { - return false; - } - } - - public int getDifference(int line) { - return positions[line].difference; - } - - public double getAdjustRatio(int line) { - return positions[line].adjustRatio; - } - - public int getStart(int line) { - KnuthNode previous = positions[line].previous; - return line == 0 ? 0 : previous.position + 1; - } - - public int getEnd(int line) { - return positions[line].position; - } - - /** - * Return a string representation of a MinOptMax in the form of a - * "width+stretch-shrink". Useful only for debugging. - * @param mom - * @return - */ - private static String width(MinOptMax mom) { - return mom.opt + "+" + (mom.max - mom.opt) + "-" + (mom.opt - mom.min); - - } - - public String toString(String prepend) { - StringBuffer sb = new StringBuffer(); - sb.append("[\n"); - for (int i = startLine; i < endLine; i++) { - for (KnuthNode node = getNode(i); node != null; node = node.next) { - sb.append(prepend + "\t" + node + ",\n"); - } - } - sb.append(prepend + "]"); - return sb.toString(); - } -} \ No newline at end of file diff --git a/src/java/org/apache/fop/layoutmgr/LayoutContext.java b/src/java/org/apache/fop/layoutmgr/LayoutContext.java index 3703502b0..2d3323625 100644 --- a/src/java/org/apache/fop/layoutmgr/LayoutContext.java +++ b/src/java/org/apache/fop/layoutmgr/LayoutContext.java @@ -19,6 +19,7 @@ package org.apache.fop.layoutmgr; import org.apache.fop.fo.Constants; +import org.apache.fop.layoutmgr.inline.HyphContext; import org.apache.fop.traits.MinOptMax; diff --git a/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java b/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java index 8395e339a..84663dd84 100644 --- a/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java +++ b/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java @@ -61,6 +61,20 @@ import org.apache.fop.fo.pagination.StaticContent; import org.apache.fop.fo.pagination.Title; import org.apache.fop.area.AreaTreeHandler; +import org.apache.fop.layoutmgr.inline.BasicLinkLayoutManager; +import org.apache.fop.layoutmgr.inline.BidiLayoutManager; +import org.apache.fop.layoutmgr.inline.CharacterLayoutManager; +import org.apache.fop.layoutmgr.inline.ExternalGraphicLayoutManager; +import org.apache.fop.layoutmgr.inline.FootnoteLayoutManager; +import org.apache.fop.layoutmgr.inline.ICLayoutManager; +import org.apache.fop.layoutmgr.inline.InlineLayoutManager; +import org.apache.fop.layoutmgr.inline.InlineLevelLayoutManager; +import org.apache.fop.layoutmgr.inline.InstreamForeignObjectLM; +import org.apache.fop.layoutmgr.inline.LeaderLayoutManager; +import org.apache.fop.layoutmgr.inline.PageNumberCitationLayoutManager; +import org.apache.fop.layoutmgr.inline.PageNumberLayoutManager; +import org.apache.fop.layoutmgr.inline.TextLayoutManager; +import org.apache.fop.layoutmgr.inline.WrapperLayoutManager; import org.apache.fop.layoutmgr.list.ListBlockLayoutManager; import org.apache.fop.layoutmgr.list.ListItemLayoutManager; import org.apache.fop.layoutmgr.table.TableLayoutManager; diff --git a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java index d8014787d..493cac7d8 100644 --- a/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java @@ -40,6 +40,7 @@ import org.apache.fop.fo.pagination.Region; import org.apache.fop.fo.pagination.SideRegion; import org.apache.fop.fo.pagination.SimplePageMaster; import org.apache.fop.fo.pagination.StaticContent; +import org.apache.fop.layoutmgr.inline.ContentLayoutManager; import org.apache.fop.traits.MinOptMax; diff --git a/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java b/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java index 841634ef4..5412d80fc 100644 --- a/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java @@ -27,6 +27,7 @@ import org.apache.fop.area.Block; import org.apache.fop.datatypes.PercentBase; import org.apache.fop.fo.pagination.SideRegion; import org.apache.fop.fo.pagination.StaticContent; +import org.apache.fop.layoutmgr.inline.InlineLevelLayoutManager; import org.apache.fop.traits.MinOptMax; /** diff --git a/src/java/org/apache/fop/layoutmgr/BasicLinkLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/BasicLinkLayoutManager.java similarity index 95% rename from src/java/org/apache/fop/layoutmgr/BasicLinkLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/BasicLinkLayoutManager.java index 38a4b2957..9dd0abbcb 100644 --- a/src/java/org/apache/fop/layoutmgr/BasicLinkLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/BasicLinkLayoutManager.java @@ -16,9 +16,10 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.fo.flow.BasicLink; +import org.apache.fop.layoutmgr.LayoutManager; import org.apache.fop.area.inline.InlineParent; import org.apache.fop.area.Trait; import org.apache.fop.area.LinkResolver; diff --git a/src/java/org/apache/fop/layoutmgr/BidiLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/BidiLayoutManager.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/BidiLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/BidiLayoutManager.java index bffc4c758..6a60f4205 100644 --- a/src/java/org/apache/fop/layoutmgr/BidiLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/BidiLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.ArrayList; import java.util.List; diff --git a/src/java/org/apache/fop/layoutmgr/CharacterLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java similarity index 95% rename from src/java/org/apache/fop/layoutmgr/CharacterLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java index 3352dc5c6..6d5a26f36 100644 --- a/src/java/org/apache/fop/layoutmgr/CharacterLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/CharacterLayoutManager.java @@ -16,10 +16,18 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.fo.flow.Character; import org.apache.fop.fonts.Font; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.KnuthGlue; +import org.apache.fop.layoutmgr.KnuthPenalty; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LeafPosition; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.TraitSetter; +import org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager.AreaInfo; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.Trait; import org.apache.fop.traits.MinOptMax; diff --git a/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/ContentLayoutManager.java similarity index 95% rename from src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/ContentLayoutManager.java index 945cdf525..d55208a20 100644 --- a/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/ContentLayoutManager.java @@ -16,11 +16,19 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.fo.Constants; import org.apache.fop.fo.pagination.Title; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.KnuthPossPosIter; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LayoutManager; +import org.apache.fop.layoutmgr.PageSequenceLayoutManager; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.PositionIterator; +import org.apache.fop.layoutmgr.SpaceSpecifier; import org.apache.fop.area.Area; import org.apache.fop.area.LineArea; import org.apache.fop.area.inline.InlineArea; diff --git a/src/java/org/apache/fop/layoutmgr/ExternalGraphicLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/ExternalGraphicLayoutManager.java similarity index 98% rename from src/java/org/apache/fop/layoutmgr/ExternalGraphicLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/ExternalGraphicLayoutManager.java index 18c3640eb..a0196f8d4 100644 --- a/src/java/org/apache/fop/layoutmgr/ExternalGraphicLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/ExternalGraphicLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; // Java import java.awt.geom.Rectangle2D; @@ -27,6 +27,7 @@ import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.inline.Viewport; import org.apache.fop.datatypes.Length; import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.layoutmgr.TraitSetter; /** * LayoutManager for the fo:external-graphic formatting object diff --git a/src/java/org/apache/fop/layoutmgr/FootnoteLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/FootnoteLayoutManager.java similarity index 93% rename from src/java/org/apache/fop/layoutmgr/FootnoteLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/FootnoteLayoutManager.java index f66f2611a..e39292f62 100644 --- a/src/java/org/apache/fop/layoutmgr/FootnoteLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/FootnoteLayoutManager.java @@ -16,13 +16,18 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.layoutmgr.AbstractLayoutManager; +import org.apache.fop.layoutmgr.FootnoteBodyLayoutManager; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.Position; public class FootnoteLayoutManager extends AbstractLayoutManager implements InlineLevelLayoutManager { diff --git a/src/java/org/apache/fop/layoutmgr/HyphContext.java b/src/java/org/apache/fop/layoutmgr/inline/HyphContext.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/HyphContext.java rename to src/java/org/apache/fop/layoutmgr/inline/HyphContext.java index 8e8e18e91..86e8ba48a 100644 --- a/src/java/org/apache/fop/layoutmgr/HyphContext.java +++ b/src/java/org/apache/fop/layoutmgr/inline/HyphContext.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; /** * This class is used to pass information to the getNextBreakPoss() diff --git a/src/java/org/apache/fop/layoutmgr/ICLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/ICLayoutManager.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/ICLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/ICLayoutManager.java index e03947d2e..87ce904f4 100644 --- a/src/java/org/apache/fop/layoutmgr/ICLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/ICLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; // Java import java.util.List; diff --git a/src/java/org/apache/fop/layoutmgr/InlineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/InlineLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java index 4e2893341..76222cf11 100755 --- a/src/java/org/apache/fop/layoutmgr/InlineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.ListIterator; import java.util.LinkedList; @@ -25,6 +25,11 @@ import org.apache.fop.fo.flow.InlineLevel; import org.apache.fop.fo.properties.CommonBorderPaddingBackground; import org.apache.fop.fo.properties.CommonMarginInline; import org.apache.fop.fo.properties.SpaceProperty; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.NonLeafPosition; +import org.apache.fop.layoutmgr.SpaceSpecifier; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.traits.MinOptMax; import org.apache.fop.traits.SpaceVal; diff --git a/src/java/org/apache/fop/layoutmgr/InlineLevelLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/InlineLevelLayoutManager.java similarity index 93% rename from src/java/org/apache/fop/layoutmgr/InlineLevelLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/InlineLevelLayoutManager.java index 98d7c35e5..71c6adcaf 100644 --- a/src/java/org/apache/fop/layoutmgr/InlineLevelLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/InlineLevelLayoutManager.java @@ -16,10 +16,13 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.List; +import org.apache.fop.layoutmgr.LayoutManager; +import org.apache.fop.layoutmgr.Position; + /** * The interface for LayoutManagers which generate inline areas */ diff --git a/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/InlineStackingLayoutManager.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/InlineStackingLayoutManager.java index 2272d58bb..28be05277 100644 --- a/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/InlineStackingLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.LinkedList; import java.util.Iterator; @@ -26,6 +26,14 @@ import java.util.HashMap; import org.apache.fop.fo.FObj; import org.apache.fop.fo.properties.SpaceProperty; +import org.apache.fop.layoutmgr.AbstractLayoutManager; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LayoutManager; +import org.apache.fop.layoutmgr.NonLeafPosition; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.PositionIterator; +import org.apache.fop.layoutmgr.SpaceSpecifier; import org.apache.fop.traits.SpaceVal; import org.apache.fop.area.Area; import org.apache.fop.area.inline.InlineArea; diff --git a/src/java/org/apache/fop/layoutmgr/InstreamForeignObjectLM.java b/src/java/org/apache/fop/layoutmgr/inline/InstreamForeignObjectLM.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/InstreamForeignObjectLM.java rename to src/java/org/apache/fop/layoutmgr/inline/InstreamForeignObjectLM.java index d19602ae4..3b88ac0b1 100644 --- a/src/java/org/apache/fop/layoutmgr/InstreamForeignObjectLM.java +++ b/src/java/org/apache/fop/layoutmgr/inline/InstreamForeignObjectLM.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; // Java import java.awt.geom.Rectangle2D; @@ -25,6 +25,7 @@ import java.awt.geom.Rectangle2D; import org.apache.fop.datatypes.Length; import org.apache.fop.fo.XMLObj; import org.apache.fop.fo.flow.InstreamForeignObject; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.inline.ForeignObject; import org.apache.fop.area.inline.Viewport; @@ -190,7 +191,7 @@ public class InstreamForeignObjectLM extends LeafNodeLayoutManager { } /** - * @see org.apache.fop.layoutmgr.LeafNodeLayoutManager#addId() + * @see org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager#addId() */ protected void addId() { getPSLM().addIDToPage(fobj.getId()); diff --git a/src/java/org/apache/fop/layoutmgr/KnuthInlineBox.java b/src/java/org/apache/fop/layoutmgr/inline/KnuthInlineBox.java similarity index 93% rename from src/java/org/apache/fop/layoutmgr/KnuthInlineBox.java rename to src/java/org/apache/fop/layoutmgr/inline/KnuthInlineBox.java index 79d178c39..63568bd8d 100644 --- a/src/java/org/apache/fop/layoutmgr/KnuthInlineBox.java +++ b/src/java/org/apache/fop/layoutmgr/inline/KnuthInlineBox.java @@ -16,7 +16,11 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; + +import org.apache.fop.layoutmgr.FootnoteBodyLayoutManager; +import org.apache.fop.layoutmgr.KnuthBox; +import org.apache.fop.layoutmgr.Position; public class KnuthInlineBox extends KnuthBox { diff --git a/src/java/org/apache/fop/layoutmgr/LeaderLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java similarity index 96% rename from src/java/org/apache/fop/layoutmgr/LeaderLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java index fc25ea57f..0bfa38810 100644 --- a/src/java/org/apache/fop/layoutmgr/LeaderLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.area.Trait; import org.apache.fop.area.inline.FilledArea; @@ -26,6 +26,14 @@ import org.apache.fop.area.inline.TextArea; import org.apache.fop.datatypes.PercentBase; import org.apache.fop.fo.flow.Leader; import org.apache.fop.fonts.Font; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.KnuthGlue; +import org.apache.fop.layoutmgr.KnuthPenalty; +import org.apache.fop.layoutmgr.KnuthPossPosIter; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LeafPosition; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.traits.MinOptMax; import java.util.List; diff --git a/src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LeafNodeLayoutManager.java similarity index 97% rename from src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/LeafNodeLayoutManager.java index e0fc04dcc..7fe310fe2 100644 --- a/src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LeafNodeLayoutManager.java @@ -16,11 +16,16 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.area.Area; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.AbstractLayoutManager; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LeafPosition; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.traits.MinOptMax; import java.util.List; diff --git a/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java similarity index 98% rename from src/java/org/apache/fop/layoutmgr/LineLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java index 3f54fb451..01955ee67 100644 --- a/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java @@ -16,7 +16,7 @@ /* $Id: LineLayoutManager.java,v 1.17 2004/04/02 10:38:29 cbowditch Exp $ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.datatypes.Length; import org.apache.fop.fo.Constants; @@ -24,6 +24,23 @@ import org.apache.fop.fo.flow.Block; import org.apache.fop.fo.properties.CommonHyphenation; import org.apache.fop.hyphenation.Hyphenation; import org.apache.fop.hyphenation.Hyphenator; +import org.apache.fop.layoutmgr.BlockLevelLayoutManager; +import org.apache.fop.layoutmgr.BreakingAlgorithm; +import org.apache.fop.layoutmgr.ElementListObserver; +import org.apache.fop.layoutmgr.KnuthBlockBox; +import org.apache.fop.layoutmgr.KnuthBox; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.KnuthGlue; +import org.apache.fop.layoutmgr.KnuthPenalty; +import org.apache.fop.layoutmgr.KnuthPossPosIter; +import org.apache.fop.layoutmgr.KnuthSequence; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LayoutManager; +import org.apache.fop.layoutmgr.LeafPosition; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.PositionIterator; +import org.apache.fop.layoutmgr.SpaceSpecifier; +import org.apache.fop.layoutmgr.BreakingAlgorithm.KnuthNode; import org.apache.fop.area.LineArea; import java.util.ListIterator; diff --git a/src/java/org/apache/fop/layoutmgr/LineLayoutPossibilities.java b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutPossibilities.java similarity index 99% rename from src/java/org/apache/fop/layoutmgr/LineLayoutPossibilities.java rename to src/java/org/apache/fop/layoutmgr/inline/LineLayoutPossibilities.java index 865121f7d..d7f41efb9 100644 --- a/src/java/org/apache/fop/layoutmgr/LineLayoutPossibilities.java +++ b/src/java/org/apache/fop/layoutmgr/inline/LineLayoutPossibilities.java @@ -16,12 +16,13 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.fop.layoutmgr.Position; public class LineLayoutPossibilities { diff --git a/src/java/org/apache/fop/layoutmgr/PageNumberCitationLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/PageNumberCitationLayoutManager.java similarity index 92% rename from src/java/org/apache/fop/layoutmgr/PageNumberCitationLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/PageNumberCitationLayoutManager.java index f8530b8b2..3fe902bdf 100644 --- a/src/java/org/apache/fop/layoutmgr/PageNumberCitationLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/PageNumberCitationLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.fo.flow.PageNumberCitation; import org.apache.fop.area.PageViewport; @@ -26,6 +26,10 @@ import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.inline.UnresolvedPageNumber; import org.apache.fop.area.inline.TextArea; import org.apache.fop.fonts.Font; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LayoutManager; +import org.apache.fop.layoutmgr.PositionIterator; +import org.apache.fop.layoutmgr.TraitSetter; /** * LayoutManager for the fo:page-number-citation formatting object @@ -62,7 +66,7 @@ public class PageNumberCitationLayoutManager extends LeafNodeLayoutManager { } } - /** @see org.apache.fop.layoutmgr.LeafNodeLayoutManager#getLead() */ + /** @see org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager#getLead() */ public int getLead() { return font.getAscender(); } diff --git a/src/java/org/apache/fop/layoutmgr/PageNumberLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/PageNumberLayoutManager.java similarity index 93% rename from src/java/org/apache/fop/layoutmgr/PageNumberLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/PageNumberLayoutManager.java index bbe8b4f1e..409efa35a 100644 --- a/src/java/org/apache/fop/layoutmgr/PageNumberLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/PageNumberLayoutManager.java @@ -16,13 +16,15 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.fo.flow.PageNumber; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.inline.TextArea; import org.apache.fop.area.Trait; import org.apache.fop.fonts.Font; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.TraitSetter; /** * LayoutManager for the fo:page-number formatting object @@ -66,7 +68,7 @@ public class PageNumberLayoutManager extends LeafNodeLayoutManager { } - /** @see org.apache.fop.layoutmgr.LeafNodeLayoutManager#getLead() */ + /** @see org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager#getLead() */ public int getLead() { return font.getAscender(); } diff --git a/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java similarity index 98% rename from src/java/org/apache/fop/layoutmgr/TextLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java index d545f3036..1a33d196c 100644 --- a/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java @@ -16,7 +16,7 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import java.util.ArrayList; import java.util.List; @@ -26,6 +26,15 @@ import java.util.ListIterator; import org.apache.fop.fo.FOText; import org.apache.fop.fo.flow.Inline; import org.apache.fop.fonts.Font; +import org.apache.fop.layoutmgr.KnuthBox; +import org.apache.fop.layoutmgr.KnuthElement; +import org.apache.fop.layoutmgr.KnuthGlue; +import org.apache.fop.layoutmgr.KnuthPenalty; +import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.LeafPosition; +import org.apache.fop.layoutmgr.Position; +import org.apache.fop.layoutmgr.PositionIterator; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.traits.SpaceVal; import org.apache.fop.area.Trait; import org.apache.fop.area.inline.InlineArea; diff --git a/src/java/org/apache/fop/layoutmgr/WrapperLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java similarity index 83% rename from src/java/org/apache/fop/layoutmgr/WrapperLayoutManager.java rename to src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java index e7341b817..fedc04f2e 100644 --- a/src/java/org/apache/fop/layoutmgr/WrapperLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java @@ -16,10 +16,11 @@ /* $Id$ */ -package org.apache.fop.layoutmgr; +package org.apache.fop.layoutmgr.inline; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.fo.flow.Wrapper; +import org.apache.fop.layoutmgr.LayoutContext; /** * This is the layout manager for the fo:wrapper formatting object. @@ -37,7 +38,7 @@ public class WrapperLayoutManager extends LeafNodeLayoutManager { fobj = node; } - /** @see org.apache.fop.layoutmgr.LeafNodeLayoutManager */ + /** @see org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager */ public InlineArea get(LayoutContext context) { //Create a zero-width, zero-height dummy area so this node can //participate in the ID handling. Otherwise, addId() wouldn't @@ -46,7 +47,7 @@ public class WrapperLayoutManager extends LeafNodeLayoutManager { return area; } - /** @see org.apache.fop.layoutmgr.LeafNodeLayoutManager#addId() */ + /** @see org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager#addId() */ protected void addId() { getPSLM().addIDToPage(fobj.getId()); } -- 2.39.5