Browse Source

Code fixups

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1067684 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-1_1rc1old
Andreas L. Delmelle 13 years ago
parent
commit
4d65912a7f
1 changed files with 34 additions and 3 deletions
  1. 34
    3
      src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java

+ 34
- 3
src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java View File

@@ -24,10 +24,16 @@ import org.apache.fop.area.Block;
import org.apache.fop.fo.flow.Wrapper;
import org.apache.fop.layoutmgr.BlockLayoutManager;
import org.apache.fop.layoutmgr.BlockStackingLayoutManager;
import org.apache.fop.layoutmgr.KnuthBox;
import org.apache.fop.layoutmgr.KnuthSequence;
import org.apache.fop.layoutmgr.LayoutContext;
import org.apache.fop.layoutmgr.ListElement;
import org.apache.fop.layoutmgr.PositionIterator;
import org.apache.fop.layoutmgr.TraitSetter;

import java.util.LinkedList;
import java.util.List;

/**
* This is the layout manager for the fo:wrapper formatting object.
*/
@@ -42,6 +48,7 @@ public class WrapperLayoutManager extends LeafNodeLayoutManager {
}

/** {@inheritDoc} */
@Override
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
@@ -54,14 +61,38 @@ public class WrapperLayoutManager extends LeafNodeLayoutManager {
return area;
}

/**
* Overridden to generate a proper {@link ListElement}, if the parent
* requires it (i.e. is a block-container, list-item-body...)
* If the parent is a block, the line LM will take care of properly
* wrapping the sequence in a line box.
* {@inheritDoc}
*/
@Override
public List getNextKnuthElements(LayoutContext context, int alignment) {
List returnList = super.getNextKnuthElements(context, alignment);
KnuthSequence seq = (KnuthSequence) returnList.get(0);
ListElement tempElement = (ListElement) seq.get(0);
if (parentLayoutManager instanceof BlockStackingLayoutManager
&& !(parentLayoutManager instanceof BlockLayoutManager)) {
// replace inline box with a block box
returnList = new LinkedList();
KnuthBox auxiliaryBox = new KnuthBox(0, tempElement.getPosition(), true);
returnList.add(auxiliaryBox);
} else {
// make sure the inline box is an auxiliary one
seq.set(0, new KnuthInlineBox(0, null, tempElement.getPosition(), true));
}
return returnList;
}

/**
* Add the area for this layout manager.
* This adds the dummy area to the parent, *if* it has an id
* - otherwise it serves no purpose.
*
* @param posIter the position iterator
* @param context the layout context for adding the area
* {@inheritDoc}
*/
@Override
public void addAreas(PositionIterator posIter, LayoutContext context) {
if (fobj.hasId()) {
addId();

Loading…
Cancel
Save