]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Blocklevel attributes did not work for last fo:block element under fo:table-cell...
authorPeter Herweg <pherweg@apache.org>
Mon, 5 Jun 2006 11:32:59 +0000 (11:32 +0000)
committerPeter Herweg <pherweg@apache.org>
Mon, 5 Jun 2006 11:32:59 +0000 (11:32 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@411750 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/render/rtf/TextAttributesConverter.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableCell.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTextrun.java

index c0e58c73e0456383ca659c7d42463747af56ec51..94707ac07816fafd975023a27a0b415a1dd5e751 100644 (file)
@@ -178,6 +178,8 @@ final class TextAttributesConverter {
     private static void attrTextDecoration(CommonTextDecoration textDecoration, 
                 RtfAttributes rtfAttr) {
         if (textDecoration == null) {
+            rtfAttr.set(RtfText.ATTR_UNDERLINE, 0);
+            rtfAttr.set(RtfText.ATTR_STRIKETHROUGH, 0);
             return;
         }
                 
index 7443a038b50f7720d50d69e49ae565c8c860221a..ceaaf24ad6d05c966ad8224df4f263e7c4e988b1 100644 (file)
@@ -327,7 +327,20 @@ public class RtfTableCell
             } else if (setRight) {
                 writeControlWord("qr");
             } else {
-                writeControlWord("ql");
+                RtfElement lastChild = null;
+                
+                if (getChildren().size() > 0) {
+                    lastChild = (RtfElement) getChildren().get(getChildren().size() - 1);
+                }
+                    
+                
+                if (lastChild != null
+                        && lastChild instanceof RtfTextrun) {
+                    //Don't write \ql in order to allow for example a right aligned paragraph 
+                    //in a not right aligned table-cell to write its \qr.
+                } else {
+                    writeControlWord("ql");
+                }                
             }
 
             if (!containsText()) {
index a919c555e19b6d6abd8d1a8878047e4527d3cc5b..55d4ffd403a3a9fb6f7ed7c4ea61fe0f3d3cb1ca 100644 (file)
 
 /* $Id$ */
 
-
-
-/*
- * This file is part of the RTF library of the FOP project.
- */
-
-
 package org.apache.fop.render.rtf.rtflib.rtfdoc;
 
 // Java
@@ -132,7 +125,7 @@ public class RtfTextrun extends RtfContainer {
      * @param attrs  attributes to add
      * @throws IOException for I/O problems
      */
-    public void addOpenGroupMark(RtfAttributes attrs) throws IOException {
+    private void addOpenGroupMark(RtfAttributes attrs) throws IOException {
         RtfOpenGroupMark r = new RtfOpenGroupMark(this, writer, attrs);
     }
 
@@ -141,7 +134,7 @@ public class RtfTextrun extends RtfContainer {
      * 
      * @throws IOException for I/O problems
      */
-    public void addCloseGroupMark() throws IOException {
+    private void addCloseGroupMark() throws IOException {
         RtfCloseGroupMark r = new RtfCloseGroupMark(this, writer);
     }
     
@@ -209,6 +202,12 @@ public class RtfTextrun extends RtfContainer {
         rtfSpaceManager.popRtfSpaceSplitter();
     }
     
+    /**
+     * Inserts a footnote.
+     * 
+     * @return inserted footnote
+     * @throws IOException for I/O problems
+     */
     public RtfFootnote addFootnote() throws IOException {
         return new RtfFootnote(this, writer);
     }
@@ -242,21 +241,42 @@ public class RtfTextrun extends RtfContainer {
         }
     }
     
+    /**
+     * Inserts a page number.
+     * @param attr Attributes for the page number to insert.
+     * @throws IOException for I/O problems
+     */
     public void addPageNumber(RtfAttributes attr) throws IOException {
         RtfPageNumber r = new RtfPageNumber(this, writer, attr);
     }
     
+    /**
+     * Inserts a hyperlink.
+     * @param attr Attributes for the hyperlink to insert.
+     * @return inserted hyperlink
+     * @throws IOException for I/O problems
+     */
     public RtfHyperLink addHyperlink(RtfAttributes attr) throws IOException {
         return new RtfHyperLink(this, writer, attr);
     }
     
+    /**
+     * Inserts a bookmark.
+     * @param id Id for the inserted bookmark
+     * @throws IOException for I/O problems
+     */
     public void addBookmark(String id) throws IOException {
        if (id != "") {
             // if id is not empty, add boormark
            new RtfBookmark(this, writer, id);
        }
     }
-    
+
+    /**
+     * Inserts an image.
+     * @return inserted image
+     * @throws IOException for I/O problems
+     */
     public RtfExternalGraphic newImage() throws IOException {
         return new RtfExternalGraphic(this, writer);
     }
@@ -266,11 +286,12 @@ public class RtfTextrun extends RtfContainer {
      * @param container RtfContainer, which is the parent of the returned RtfTextrun
      * @param writer Writer of the given RtfContainer
      * @param attrs RtfAttributes which are to write at the beginning of the RtfTextrun
+     * @return new or existing RtfTextrun object.
      * @throws IOException for I/O problems
      */
     public static RtfTextrun getTextrun(RtfContainer container, Writer writer, RtfAttributes attrs)
             throws IOException {
-        Object obj;
+
         List list = container.getChildren();
                 
         if (list.size() == 0) {
@@ -279,9 +300,13 @@ public class RtfTextrun extends RtfContainer {
             list.add(textrun);
 
             return textrun;
-        } else if ((obj = list.get(list.size() - 1)) instanceof RtfTextrun ) {
+        }
+        
+        Object obj = list.get(list.size() - 1);
+
+        if (obj instanceof RtfTextrun) {
             //if the last child is a RtfTextrun, return it
-            return (RtfTextrun)obj;
+            return (RtfTextrun) obj;
         }
 
         //add a new RtfTextrun as the last child
@@ -310,6 +335,10 @@ public class RtfTextrun extends RtfContainer {
          * 2. To write the children
          * Maybe this can be done more efficient.
          */
+        
+        boolean bHasTableCellParent =
+            this.getParentOfClass(RtfTableCell.class) != null;
+        RtfAttributes attrBlockLevel = new RtfAttributes();
 
         //determine, if this RtfTextrun is the last child of its parent
         boolean bLast = false;
@@ -351,6 +380,11 @@ public class RtfTextrun extends RtfContainer {
             final RtfElement e = (RtfElement)it.next();
             final boolean bRtfParagraphBreak = (e instanceof RtfParagraphBreak);
 
+            if (bHasTableCellParent) {
+                attrBlockLevel.set(e.getRtfAttributes());
+            }
+            
+            
             /**
              * -Write RtfParagraphBreak only, if the previous visible child
              * was't also a RtfParagraphBreak.
@@ -386,13 +420,29 @@ public class RtfTextrun extends RtfContainer {
                 bPrevPar = bPrevPar && e.isEmpty();
                 bFirst = bFirst && e.isEmpty();
             }
+        } //for (Iterator it = ...)
+        
+        //
+        if (bHasTableCellParent) {
+            writeAttributes(attrBlockLevel, null);
         }
+        
     }
     
+    /**
+     * Set the parent list-item of the textrun.
+     * 
+     * @param listItem parent list-item of the textrun
+     */
     public void setRtfListItem(RtfListItem listItem) {
         rtfListItem = listItem;
     }
     
+    /**
+     * Gets the parent list-item of the textrun. 
+     * 
+     * @return parent list-item of the textrun
+     */
     public RtfListItem getRtfListItem() {
         return rtfListItem;
     }