You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2005/01/17 14:55:58 UTC

cvs commit: xml-fop/src/java/org/apache/fop/layoutmgr BlockContainerLayoutManager.java

jeremias    2005/01/17 05:55:58

  Modified:    src/java/org/apache/fop/layoutmgr
                        BlockContainerLayoutManager.java
  Log:
  Fix for auto height on absolutely positioned block-containers.
  
  Revision  Changes    Path
  1.30      +14 -39    xml-fop/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
  
  Index: BlockContainerLayoutManager.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- BlockContainerLayoutManager.java	17 Jan 2005 10:38:02 -0000	1.29
  +++ BlockContainerLayoutManager.java	17 Jan 2005 13:55:58 -0000	1.30
  @@ -36,7 +36,7 @@
   import org.apache.fop.traits.MinOptMax;
   
   /**
  - * LayoutManager for a block FO.
  + * LayoutManager for a block-container FO.
    */
   public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
       private BlockContainer fobj;
  @@ -142,6 +142,7 @@
               return getAbsoluteBreakPoss(context);
           }
   
  +        autoHeight = false;
           boolean rotated = (fobj.getReferenceOrientation() % 180 != 0); //vals[0] == 0.0;
           referenceIPD = context.getRefIPD();
           int maxbpd = context.getStackLimit().opt;
  @@ -151,6 +152,7 @@
               allocBPD += getBPIndents();
           } else {
               allocBPD = maxbpd;
  +            autoHeight = true;
           }
           if (width.getEnum() != EN_AUTO) {
               allocIPD = width.getValue(); //this is the content-width
  @@ -298,6 +300,7 @@
           LayoutManager curLM ; // currently active LM
   
           MinOptMax stackSize = new MinOptMax();
  +        autoHeight = false;
   
           Point offset = getAbsOffset();
           int allocBPD, allocIPD;
  @@ -316,6 +319,8 @@
                   if (abProps.bottom.getEnum() != EN_AUTO) {
                       allocBPD -= abProps.bottom.getValue();
                   }
  +            } else {
  +                autoHeight = true;
               }
           }
           if (width.getEnum() != EN_AUTO) {
  @@ -353,8 +358,6 @@
                   fobj.getReferenceOrientation(),
                   fobj.getWritingMode(), 
                   rect, relDims);
  -        //referenceIPD = relDims.ipd + getIPIndents();
  -
           
           while ((curLM = getChildLM()) != null) {
               // Make break positions and return blocks!
  @@ -379,7 +382,8 @@
           // to the normal stacking
           breakPoss.setStackingSize(new MinOptMax(0));
   
  -        if (stackSize.opt > relDims.bpd) {
  +        //TODO Maybe check for page overflow when autoHeight=true
  +        if (!autoHeight & (stackSize.opt > relDims.bpd)) {
               log.warn("Contents overflow block-container viewport: clipping");
               if (fobj.getOverflow() == EN_HIDDEN) {
                   clip = true;
  @@ -441,7 +445,11 @@
               
               viewportBlockArea.setCTM(absoluteCTM);
               viewportBlockArea.setIPD(vpContentIPD);
  -            viewportBlockArea.setBPD(vpContentBPD);
  +            if (autoHeight) {
  +                viewportBlockArea.setBPD(0);
  +            } else {
  +                viewportBlockArea.setBPD(vpContentBPD);
  +            }
               viewportBlockArea.setClip(clip);
               viewportBlockArea.addTrait(Trait.SPACE_BEFORE, new Integer(getSpaceBefore()));
   
  @@ -450,41 +458,8 @@
                   Point offset = getAbsOffset();
                   viewportBlockArea.setXOffset(offset.x);
                   viewportBlockArea.setYOffset(offset.y);
  -                autoHeight = false;
               } else {
  -                //double[] vals = absoluteCTM.toArray();
  -                boolean rotated = (fobj.getReferenceOrientation() % 180 != 0); //vals[0] == 0.0;
  -                if (rotated) {
  -                    autoHeight = false;
  -                } else {
  -                    autoHeight = (height.getEnum() == EN_AUTO);
  -                    if (autoHeight) {
  -                        viewportBlockArea.setBPD(0);
  -                    }
  -                }
  -                /*
  -                boolean rotated = vals[0] == 0.0;
  -                if (rotated) {
  -                    viewportBlockArea.setIPD(vpContentIPD);
  -                    viewportBlockArea.setBPD(vpContentBPD);
  -                    viewportBlockArea.setClip(clip);
  -                    autoHeight = false;
  -                } else if (vals[0] == -1.0) {
  -                    // need to set bpd to actual size for rotation
  -                    // and stacking
  -                    viewportBlockArea.setIPD(relDims.ipd);
  -                    if (height.getEnum() != EN_AUTO) {
  -                        viewportBlockArea.setBPD(relDims.bpd);
  -                        autoHeight = false;
  -                    }
  -                    viewportBlockArea.setClip(clip);
  -                } else {
  -                    viewportBlockArea.setIPD(relDims.ipd);
  -                    if (height.getEnum() != EN_AUTO) {
  -                        viewportBlockArea.setBPD(relDims.bpd);
  -                        autoHeight = false;
  -                    }
  -                }*/
  +                //nop
               }
   
               curBlockArea = new Block();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org