]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Third phase of performance improvement.
authorFinn Bock <bckfnn@apache.org>
Tue, 19 Oct 2004 20:13:23 +0000 (20:13 +0000)
committerFinn Bock <bckfnn@apache.org>
Tue, 19 Oct 2004 20:13:23 +0000 (20:13 +0000)
- Added factory methods to create letter and word SpaceVal.

PR: 31699

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198067 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/traits/SpaceVal.java

index a9c869d673c895b3b2d594ebe8ee7bb8ffe026fb..3b1557d42603f56984042de2d501bf5f97a3f98c 100644 (file)
@@ -21,6 +21,7 @@ package org.apache.fop.traits;
 import org.apache.fop.fo.Constants;
 import org.apache.fop.fo.properties.Property;
 import org.apache.fop.fo.properties.SpaceProperty;
+import org.apache.fop.fonts.Font;
 
 /**
  * Store a single Space property value in simplified form, with all
@@ -68,6 +69,30 @@ public class SpaceVal {
         this.iPrecedence = iPrecedence;
     }
 
+    static public SpaceVal makeWordSpacing(Property wordSpacing, SpaceVal letterSpacing, Font fs) {
+        if (wordSpacing.getEnum() == Constants.NORMAL) {
+            // give word spaces the possibility to shrink by a third,
+            // and stretch by a half;
+            int spaceCharIPD = fs.getCharWidth(' ');
+            MinOptMax space = new MinOptMax(-spaceCharIPD / 3, 0, spaceCharIPD / 2);
+            return new SpaceVal(
+                    MinOptMax.add
+                     (space, MinOptMax.multiply(letterSpacing.getSpace(), 2)),
+                     true, true, 0);
+        } else {
+            return new SpaceVal(wordSpacing.getSpace());
+        }        
+    }
+
+    static public SpaceVal makeLetterSpacing(Property letterSpacing) {
+        if (letterSpacing.getEnum() == Constants.NORMAL) {
+            // letter spaces are set to zero (or use different values?)
+            return new SpaceVal(new MinOptMax(0), true, true, 0);
+        } else {
+            return new SpaceVal(letterSpacing.getSpace());
+        }
+    }
+
     /**
      * Returns the Conditionality value.
      * @return the Conditionality value