]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Second phase of performance improvement.
authorFinn Bock <bckfnn@apache.org>
Tue, 19 Oct 2004 13:30:53 +0000 (13:30 +0000)
committerFinn Bock <bckfnn@apache.org>
Tue, 19 Oct 2004 13:30:53 +0000 (13:30 +0000)
- Pass in a PropertyList to addCharacters()

PR: 31699

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

src/java/org/apache/fop/fo/FOText.java
src/java/org/apache/fop/fo/FObjMixed.java

index f634c6443ac455eb5266b3e0da76c087c1213ed3..7417f7a53151f4d4f4019699d0792997c6467f06 100644 (file)
@@ -82,11 +82,6 @@ public class FOText extends FONode {
     private int wrapOption;
     // End of property values
 
-    /**
-     * The TextInfo object attached to the text
-     */
-    public TextInfo textInfo;
-
     /**
      * Keeps track of the last FOText object created within the current
      * block. This is used to create pointers between such objects.
@@ -114,6 +109,7 @@ public class FOText extends FONode {
      */
     private Block ancestorBlock = null;
 
+    public TextInfo textInfo;
     private static final int IS_WORD_CHAR_FALSE = 0;
     private static final int IS_WORD_CHAR_TRUE = 1;
     private static final int IS_WORD_CHAR_MAYBE = 2;
@@ -124,18 +120,16 @@ public class FOText extends FONode {
      * be a superset of the text in this object)
      * @param start starting index into char[] for the text in this object
      * @param end ending index into char[] for the text in this object
-     * @param ti TextInfo object for the text in this object
      * @param parent FONode that is the parent of this object
      */
-    public FOText(char[] chars, int start, int end, TextInfo ti, FONode parent) {
+    public FOText(char[] chars, int start, int end, FObj parent) {
         super(parent);
         endIndex = end - start;
         this.ca = new char[endIndex];
         System.arraycopy(chars, start, ca, 0, endIndex);
 //      System.out.println("->" + new String(ca) + "<-");
-        textInfo = ti;
-        createBlockPointers();
-        textTransform();
+        textInfo = parent.propMgr.getTextLayoutProps(parent.getFOEventHandler().getFontInfo());
+
     }
 
     /**
@@ -154,6 +148,11 @@ public class FOText extends FONode {
         wrapOption = pList.get(Constants.PR_WRAP_OPTION).getEnum();
     }
 
+    protected void startOfNode() {
+        createBlockPointers();
+        textTransform();
+    }
+
     /**
      * Check if this text node will create an area.
      * This means either there is non-whitespace or it is
@@ -164,7 +163,7 @@ public class FOText extends FONode {
      * @return true if this will create an area in the output
      */
     public boolean willCreateArea() {
-        if (textInfo.whiteSpaceCollapse == Constants.WhiteSpaceCollapse.FALSE
+        if (whiteSpaceCollapse == Constants.WhiteSpaceCollapse.FALSE
                 && endIndex - startIndex > 0) {
             return true;
         }
@@ -227,7 +226,7 @@ public class FOText extends FONode {
      * text-transform property.
      */
     private void textTransform() {
-        if (textInfo.textTransform == Constants.TextTransform.NONE) {
+        if (textTransform == Constants.TextTransform.NONE) {
             return;
         }
         for (int i = 0; i < endIndex; i++) {
@@ -354,7 +353,7 @@ public class FOText extends FONode {
      * @return char with transformed value
      */
     private char charTransform(int i) {
-        switch (textInfo.textTransform) {
+        switch (textTransform) {
         /* put NONE first, as this is probably the common case */
         case Constants.TextTransform.NONE:
             return ca[i];
@@ -375,8 +374,7 @@ public class FOText extends FONode {
                 return Character.toLowerCase(ca[i]);
             }
         default:
-            getLogger().warn("Invalid text-tranform value: "
-                    + textInfo.textTransform);
+            getLogger().warn("Invalid text-tranform value: " + textTransform);
             return ca[i];
         }
     }
index bd3c7e2e95a2be0960b442c75d365bcedd93f7aa..d7eac8dd3d3b3c705221f9586c737c179ad9dca3 100644 (file)
@@ -28,9 +28,6 @@ import org.apache.fop.layoutmgr.InlineStackingLayoutManager;
  * (i.e., those that can contain both child FO's and text nodes/PCDATA)
  */
 public class FObjMixed extends FObj {
-    /** TextInfo for this object */
-    protected TextInfo textInfo = null;
-
     /**
      * @param parent FONode that is the parent of this object
      */
@@ -45,16 +42,12 @@ public class FObjMixed extends FObj {
      * @param locator location in fo source file. 
      */
     protected void addCharacters(char data[], int start, int length,
+                                 PropertyList pList,
                                  Locator locator) throws SAXParseException {
-        if (textInfo == null) {
-            // Really only need one of these, but need to get fontInfo
-            // stored in propMgr for later use.
-            propMgr.setFontInfo(getFOEventHandler().getFontInfo());
-            textInfo = propMgr.getTextLayoutProps(getFOEventHandler().getFontInfo());
-        }
-
-        FOText ft = new FOText(data, start, length, textInfo, this);
+        FOText ft = new FOText(data, start, length, this);
         ft.setLocator(locator);
+        ft.bind(pList);
+        ft.startOfNode();
         
         getFOEventHandler().characters(ft.ca, ft.startIndex, ft.endIndex);
         addChildNode(ft);