gmazza      2004/04/24 21:45:28

  Modified:    src/java/org/apache/fop/area/inline TextArea.java
               src/java/org/apache/fop/fo FObj.java
               src/java/org/apache/fop/layoutmgr AddLMVisitor.java
                        BlockLayoutManager.java TextLayoutManager.java
               src/java/org/apache/fop/render/pdf PDFRenderer.java
               src/java/org/apache/fop/render/xml XMLRenderer.java
  Log:
  For area.Blocks created in BlockLayoutManager.getParentArea(), I set the
  width of the Block to that of its parent block.
  
  This fixes a layout problem where
  
  <fo:table-cell><fo:block border-bottom="1pt solid black">some text</ ></ >
  
  was causing a line to draw across the entire page, because the cell width present in
  fo:table-cell's Block was not copied into the inner fo:block's Block.  (This problem 
did not
  occur if the border-bottom attribute was set in fo:table-cell.)
  
  Revision  Changes    Path
  1.4       +6 -6      xml-fop/src/java/org/apache/fop/area/inline/TextArea.java
  
  Index: TextArea.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/inline/TextArea.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TextArea.java     27 Feb 2004 17:40:58 -0000      1.3
  +++ TextArea.java     25 Apr 2004 04:45:27 -0000      1.4
  @@ -27,7 +27,7 @@
        * The text for this inline area
        */
       protected String text;
  -    private int iTSadjust = 0;
  +    private int iTextSpaceAdjust = 0;
   
       /**
        * Create a text inline area
  @@ -58,8 +58,8 @@
        *
        * @return the text space adjustment
        */
  -    public int getTSadjust() {
  -        return iTSadjust;
  +    public int getTextSpaceAdjust() {
  +        return iTextSpaceAdjust;
       }
   
       /**
  @@ -67,8 +67,8 @@
        *
        * @param iTSadjust the text space adjustment
        */
  -    public void setTSadjust(int iTSadjust) {
  -        this.iTSadjust = iTSadjust;
  +    public void setTextSpaceAdjust(int iTSadjust) {
  +        iTextSpaceAdjust = iTSadjust;
       }
   }
   
  
  
  
  1.37      +7 -4      xml-fop/src/java/org/apache/fop/fo/FObj.java
  
  Index: FObj.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FObj.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- FObj.java 27 Feb 2004 17:57:40 -0000      1.36
  +++ FObj.java 25 Apr 2004 04:45:28 -0000      1.37
  @@ -448,12 +448,15 @@
           fotv.serveFObj(this);
       }
       
  -    /**
  -     * Return a string representation of the fo element. 
  +
  +    /*
  +     * Return a string representation of the fo element.
  +     * Deactivated in order to see precise ID of each fo element created
  +     *    (helpful for debugging)
        */
  -    public String toString() {
  +/*    public String toString() {
           return getName() + " at line " + line + ":" + column;
       }
  -    
  +*/    
   }
   
  
  
  
  1.39      +2 -6      xml-fop/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java
  
  Index: AddLMVisitor.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- AddLMVisitor.java 22 Apr 2004 21:56:09 -0000      1.38
  +++ AddLMVisitor.java 25 Apr 2004 04:45:28 -0000      1.39
  @@ -282,11 +282,7 @@
        }
   
        public void serveBlock(Block node) {
  -         BlockLayoutManager blm = new BlockLayoutManager();
  -         blm.setUserAgent(node.getUserAgent());
  -         blm.setFObj(node);
  -         TextInfo ti = 
node.getPropertyManager().getTextLayoutProps(node.getFOTreeControl());
  -         blm.setBlockTextInfo(ti);
  +         BlockLayoutManager blm = new BlockLayoutManager(node);
            currentLMList.add(blm);
        }
   
  
  
  
  1.16      +24 -21    
xml-fop/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
  
  Index: BlockLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- BlockLayoutManager.java   21 Mar 2004 12:03:07 -0000      1.15
  +++ BlockLayoutManager.java   25 Apr 2004 04:45:28 -0000      1.16
  @@ -28,6 +28,7 @@
   import org.apache.fop.fo.PropertyManager;
   import org.apache.fop.area.Area;
   import org.apache.fop.area.Block;
  +import org.apache.fop.area.BlockParent;
   import org.apache.fop.area.LineArea;
   import org.apache.fop.traits.LayoutProps;
   import org.apache.fop.fo.properties.CommonBorderAndPadding;
  @@ -68,6 +69,20 @@
   
       protected List childBreaks = new java.util.ArrayList();
   
  +    public BlockLayoutManager(org.apache.fop.fo.flow.Block inBlock) {
  +        super.setFObj(inBlock);
  +        childLMiter = new BlockLMiter(this, childLMiter);
  +        userAgent = inBlock.getUserAgent();
  +        setBlockTextInfo(inBlock.getPropertyManager().getTextLayoutProps(
  +            inBlock.getFOTreeControl()));
  +    }
  +
  +    private void setBlockTextInfo(TextInfo ti) {
  +        lead = ti.fs.getAscender();
  +        follow = -ti.fs.getDescender();
  +        lineHeight = ti.lineHeight;
  +    }
  +
       /**
        * Iterator for Block layout.
        * This iterator combines consecutive inline areas and
  @@ -126,25 +141,6 @@
           }
       }
   
  -    public BlockLayoutManager() {
  -    }
  -
  -    /**
  -     * Set the FO object for this layout manager
  -     *
  -     * @param fo the fo for this layout manager
  -     */
  -    public void setFObj(FObj fo) {
  -        super.setFObj(fo);
  -        childLMiter = new BlockLMiter(this, childLMiter);
  -    }
  -
  -    public void setBlockTextInfo(TextInfo ti) {
  -        lead = ti.fs.getAscender();
  -        follow = -ti.fs.getDescender();
  -        lineHeight = ti.lineHeight;
  -    }
  -
       /**
        * This method provides a hook for a LayoutManager to intialize traits
        * for the areas it will create, based on Properties set on its FO.
  @@ -325,10 +321,17 @@
               // Set up dimensions
               // Must get dimensions from parent area
               Area parentArea = parentLM.getParentArea(curBlockArea);
  +
  +            // Get reference IPD from parentArea
               int referenceIPD = parentArea.getIPD();
               curBlockArea.setIPD(referenceIPD);
  -            curBlockArea.setWidth(referenceIPD);
  -            // Get reference IPD from parentArea
  +            
  +            // Set the width of the block based on the parent block
  +            if (parentArea instanceof BlockParent) {
  +                curBlockArea.setWidth(((BlockParent) parentArea).getWidth());
  +            } else {
  +                curBlockArea.setWidth(referenceIPD);
  +            }
               setCurrentArea(curBlockArea); // ??? for generic operations
           }
           return curBlockArea;
  
  
  
  1.15      +1 -1      xml-fop/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java
  
  Index: TextLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TextLayoutManager.java    4 Apr 2004 06:29:44 -0000       1.14
  +++ TextLayoutManager.java    25 Apr 2004 04:45:28 -0000      1.15
  @@ -499,7 +499,7 @@
               if (iWScount > 0) {
                   //getLogger().error("Adjustment per word-space= " +
                   //                   iAdjust / iWScount);
  -                t.setTSadjust(iAdjust / iWScount);
  +                t.setTextSpaceAdjust(iAdjust / iWScount);
                   //System.err.println("TextLayoutManager> word spaces= " + iWScount 
+ " adjustment per word space= " + (iAdjust/iWScount));
               }
               word = t;
  
  
  
  1.42      +7 -6      xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java
  
  Index: PDFRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- PDFRenderer.java  24 Apr 2004 05:15:35 -0000      1.41
  +++ PDFRenderer.java  25 Apr 2004 04:45:28 -0000      1.42
  @@ -939,11 +939,12 @@
           //  where previous line area failed to take up entire allocated space
           int rx = currentBlockIPPosition + ipMarginOffset;
           int bl = currentBPPosition + bpMarginOffset + text.getOffset();
  -/*
  -        System.out.println("\nBlockIP Position: " + currentBlockIPPosition +
  +
  +/*        System.out.println("Text = " + text.getTextArea() +
  +                     "; text width: " + text.getWidth() +
  +             "; BlockIP Position: " + currentBlockIPPosition +
               "; currentBPPosition: " + currentBPPosition +
  -            "; offset: " + text.getOffset() +
  -            "; Text = " + text.getTextArea());
  +            "; offset: " + text.getOffset());
   */
           // Set letterSpacing
           //float ls = fs.getLetterSpacing() / this.currentFontSize;
  @@ -953,14 +954,14 @@
               closeText();
   
               pdf.append("1 0 0 -1 " + (rx / 1000f) + " " + (bl / 1000f) + " Tm "
  -                       + (text.getTSadjust()/1000f) + " Tw [" + startText);
  +                       + (text.getTextSpaceAdjust()/1000f) + " Tw [" + startText);
               prevWordY = bl;
               textOpen = true;
           } else {
                   closeText();
   
                   pdf.append("1 0 0 -1 " + (rx / 1000f) + " " + (bl / 1000f) + " Tm "
  -                           + (text.getTSadjust()/1000f) + " Tw [" + startText);
  +                           + (text.getTextSpaceAdjust()/1000f) + " Tw [" + 
startText);
                   textOpen = true;
           }
           prevWordWidth = text.getWidth();
  
  
  
  1.20      +1 -1      xml-fop/src/java/org/apache/fop/render/xml/XMLRenderer.java
  
  Index: XMLRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/xml/XMLRenderer.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XMLRenderer.java  22 Apr 2004 21:38:41 -0000      1.19
  +++ XMLRenderer.java  25 Apr 2004 04:45:28 -0000      1.20
  @@ -426,7 +426,7 @@
           if (map != null) {
               prop = " props=\"" + getPropString(map) + "\"";
           }
  -        writeElement("<text tsadjust=\"" + text.getTSadjust() + "\""
  +        writeElement("<text tsadjust=\"" + text.getTextSpaceAdjust() + "\""
                + prop + ">" + text.getTextArea() + "</text>");
           super.renderText(text);
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to