]> source.dussan.org Git - poi.git/commitdiff
Fix for bug 39374 - handle unicode text runs
authorNick Burch <nick@apache.org>
Fri, 21 Apr 2006 14:05:42 +0000 (14:05 +0000)
committerNick Burch <nick@apache.org>
Fri, 21 Apr 2006 14:05:42 +0000 (14:05 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@395888 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hslf/model/TextBox.java

index 5584ab1bef9b686ea01ecceca3bc7b85c67354a6..de1d81c8542ae9f7d92a88c798544c20de6fb13a 100644 (file)
@@ -25,6 +25,7 @@ import java.awt.*;
 import java.awt.font.FontRenderContext;\r
 import java.awt.font.TextLayout;\r
 import java.io.IOException;\r
+import java.util.Vector;\r
 \r
 /**\r
  * Represents a TextFrame shape in PowerPoint.\r
@@ -86,7 +87,7 @@ public class TextBox extends SimpleShape {
 \r
     /**\r
      * Create a TextBox object and initialize it from the supplied Record container.\r
-     *\r
+     * \r
      * @param escherRecord       <code>EscherSpContainer</code> container which holds information about this shape\r
      * @param parent    the parent of the shape\r
      */\r
@@ -95,18 +96,17 @@ public class TextBox extends SimpleShape {
 \r
         EscherTextboxRecord textbox = (EscherTextboxRecord)Shape.getEscherChild(_escherContainer, EscherTextboxRecord.RECORD_ID);\r
         _txtbox = new EscherTextboxWrapper(textbox);\r
-\r
-        TextHeaderAtom tha = null;\r
-        TextBytesAtom tba = null;\r
-        StyleTextPropAtom sta = null;\r
-        Record[] child = _txtbox.getChildRecords();\r
-        for (int i = 0; i < child.length; i++) {\r
-            if (child[i] instanceof TextHeaderAtom) tha = (TextHeaderAtom)child[i];\r
-            else if (child[i] instanceof TextBytesAtom) tba = (TextBytesAtom)child[i];\r
-            else if (child[i] instanceof StyleTextPropAtom) sta = (StyleTextPropAtom)child[i];\r
+        \r
+        // Find our TextRun\r
+        Vector v = new Vector();\r
+        Sheet.findTextRuns(_txtbox.getChildRecords(), v);\r
+        \r
+        // We should just have one\r
+        if(v.size() == 1) {\r
+               _txtrun = (TextRun)v.get(0);\r
+        } else {\r
+               throw new IllegalStateException("A TextBox should have one TextRun's worth of records in it, found " + v.size());\r
         }\r
-\r
-        _txtrun = new TextRun(tha,tba,sta);\r
     }\r
 \r
     /**\r
@@ -157,6 +157,7 @@ public class TextBox extends SimpleShape {
         _txtbox = new EscherTextboxWrapper();\r
 \r
         TextHeaderAtom tha = new TextHeaderAtom();\r
+        tha.setParentRecord(_txtbox); // TextHeaderAtom is parent aware\r
         _txtbox.appendChildRecord(tha);\r
 \r
         TextBytesAtom tba = new TextBytesAtom();\r