]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
adds text-decoration support for blocks
authorKeiron Liddle <keiron@apache.org>
Thu, 13 Dec 2001 09:25:22 +0000 (09:25 +0000)
committerKeiron Liddle <keiron@apache.org>
Thu, 13 Dec 2001 09:25:22 +0000 (09:25 +0000)
Submitted by: Christian Geisert <Christian.Geisert@isu-gmbh.de>

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-0_20_2-maintain@194603 13f79535-47bb-0310-9956-ffa450edef68

docs/examples/fo/textdeko.fo
src/org/apache/fop/fo/FObjMixed.java
src/org/apache/fop/fo/PropertyManager.java
src/org/apache/fop/fo/flow/Block.java
src/org/apache/fop/fo/flow/Inline.java

index af9f0dfb072cac30a53deb6d5bbf4192f5ce7544..3e8fba45b817a55a1d4cf87b065359b5e14a1126 100644 (file)
@@ -77,7 +77,7 @@
                 line-height="15pt"
                 space-after.optimum="10pt"
                 text-align="start">
-        This is simple test of the text-decoration<fo:inline text-decoration="underline">underline</fo:inline>.
+        This is simple test of the text-decoration <fo:inline text-decoration="underline">'underline'</fo:inline>.
       </fo:block>
       <fo:block font-size="22pt" 
                 font-family="sans-serif" 
@@ -96,7 +96,7 @@
       </fo:block>
 
       <fo:block font-size="12pt" font-family="sans-serif" line-height="15pt" text-align="justify" space-after.optimum="3pt">
-      The following text decorations are defined in the CR:
+      The following text decorations are defined in the REC:
       </fo:block>
 
       <fo:list-block space-after.optimum="13pt">
       </fo:block>
 
 
+      <fo:block space-after.optimum="13pt" font-size="14pt" text-decoration="underline">
+      A whole block should work now.
+      And again some more Text to get at least two lines.
+      </fo:block>
+
+
     </fo:flow>
   </fo:page-sequence>
 </fo:root>
index ddab909cc1eab7d8ce00f3e475a921d6aa139ae6..ef0b4e691334242b4d228826f6d86b8380e1aac1 100644 (file)
@@ -8,6 +8,7 @@
 package org.apache.fop.fo;
 
 import org.apache.fop.layout.Area;
+import org.apache.fop.layout.TextState;
 import org.apache.fop.apps.FOPException;
 
 /**
@@ -16,6 +17,9 @@ import org.apache.fop.apps.FOPException;
  */
 public class FObjMixed extends FObj {
 
+    // Textdecoration
+    protected TextState ts;
+
     public static class Maker extends FObj.Maker {
         public FObj make(FObj parent,
                          PropertyList propertyList) throws FOPException {
@@ -33,7 +37,14 @@ public class FObjMixed extends FObj {
     }
 
     protected void addCharacters(char data[], int start, int length) {
-        addChild(new FOText(data, start, length, this));
+        // addChild(new FOText(data, start, length, this));
+        FOText ft = new FOText(data, start, length, this);
+        ft.setLogger(log);
+        ft.setUnderlined(ts.getUnderlined());
+        ft.setOverlined(ts.getOverlined());
+        ft.setLineThrough(ts.getLineThrough());
+        addChild(ft);
+
     }
 
     public Status layout(Area area) throws FOPException {
index dfbabd383ce769643f6116694def42ee45f18238..300f10546d29f26c1aea43e55670d287f0f4edc2 100644 (file)
@@ -26,6 +26,8 @@ import java.text.MessageFormat;
 import java.text.FieldPosition;
 import org.apache.fop.layout.Area;
 import org.apache.fop.layout.ColumnArea;
+import org.apache.fop.layout.TextState;
+import org.apache.fop.fo.properties.TextDecoration;
 
 public class PropertyManager {
 
@@ -247,4 +249,29 @@ public class PropertyManager {
         AbsolutePositionProps props = new AbsolutePositionProps();
         return props;
     }
+
+    public TextState getTextDecoration() throws FOPException {
+        TextState ts = new TextState();
+
+        int textDecoration = this.properties.get("text-decoration").getEnum();
+
+        switch (textDecoration) {
+        case TextDecoration.UNDERLINE:
+            ts.setUnderlined(true);
+            break;
+        case TextDecoration.OVERLINE:
+            ts.setOverlined(true);
+            break;
+        case TextDecoration.LINE_THROUGH:
+            ts.setLineThrough(true);
+            break;
+        case TextDecoration.NONE:
+            ts.setUnderlined(false);
+            ts.setOverlined(false);
+            ts.setLineThrough(false);
+        }
+
+        return ts;
+    }
+
 }
index ca439587b90dae82c861e8fe5e7a163a9f908c91..1edbed35155620a4e457e0456e28a73761100613 100644 (file)
@@ -66,10 +66,13 @@ public class Block extends FObjMixed {
     // this may be helpful on other FOs too
     boolean anythingLaidOut = false;
 
-    public Block(FObj parent, PropertyList propertyList) {
+    public Block(FObj parent, PropertyList propertyList)
+        throws FOPException {
+
         super(parent, propertyList);
         this.name = "fo:block";
         this.span = this.properties.get("span").getEnum();
+        ts = propMgr.getTextDecoration();
     }
 
     public Status layout(Area area) throws FOPException {
index 69987b4e79d5ff07bbea0c35a15977c47e17a140..cfa1f1c797aa851bf4e4c63097176c3bf2db2dc8 100644 (file)
@@ -30,12 +30,6 @@ public class Inline extends FObjMixed {
         return new Inline.Maker();
     }
 
-    // Textdecoration
-    protected boolean underlined = false;
-    protected boolean overlined = false;
-    protected boolean lineThrough = false;
-
-
     public Inline(FObj parent,
                   PropertyList propertyList) throws FOPException {
         super(parent, propertyList);
@@ -79,27 +73,17 @@ public class Inline extends FObjMixed {
         // this.properties.get("visibility");
         // this.properties.get("z-index");
 
-        int textDecoration = this.properties.get("text-decoration").getEnum();
-
-        if (textDecoration == TextDecoration.UNDERLINE) {
-            this.underlined = true;
-        }
+        // Text Decoration Properties
+        ts = propMgr.getTextDecoration();
 
-        if (textDecoration == TextDecoration.OVERLINE) {
-            this.overlined = true;
-        }
-
-        if (textDecoration == TextDecoration.LINE_THROUGH) {
-            this.lineThrough = true;
-        }
     }
 
     protected void addCharacters(char data[], int start, int length) {
         FOText ft = new FOText(data, start, length, this);
         ft.setLogger(log);
-        ft.setUnderlined(underlined);
-        ft.setOverlined(overlined);
-        ft.setLineThrough(lineThrough);
+        ft.setUnderlined(ts.getUnderlined());
+        ft.setOverlined(ts.getOverlined());
+        ft.setLineThrough(ts.getLineThrough());
         children.addElement(ft);
     }