bckfnn 2004/10/19 06:30:53 Modified: src/java/org/apache/fop/fo FOText.java FObjMixed.java Log: Second phase of performance improvement. - Pass in a PropertyList to addCharacters() PR: 31699 Revision Changes Path 1.31 +13 -15 xml-fop/src/java/org/apache/fop/fo/FOText.java Index: FOText.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOText.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- FOText.java 19 Oct 2004 08:53:49 -0000 1.30 +++ FOText.java 19 Oct 2004 13:30:53 -0000 1.31 @@ -83,11 +83,6 @@ // 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. * TODO: As soon as the control hierarchy is straightened out, this static @@ -114,6 +109,7 @@ */ 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 @@ * 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 @@ 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 @@ * @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 @@ * 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 @@ * @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 @@ return Character.toLowerCase(ca[i]); } default: - getLogger().warn("Invalid text-tranform value: " - + textInfo.textTransform); + getLogger().warn("Invalid text-tranform value: " + textTransform); return ca[i]; } } 1.42 +4 -11 xml-fop/src/java/org/apache/fop/fo/FObjMixed.java Index: FObjMixed.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FObjMixed.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- FObjMixed.java 13 Oct 2004 00:31:46 -0000 1.41 +++ FObjMixed.java 19 Oct 2004 13:30:53 -0000 1.42 @@ -28,9 +28,6 @@ * (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 @@ * @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);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]