]> source.dussan.org Git - poi.git/commitdiff
Fix bug #45784 - Support long chart titles in SeriesTextRecords
authorNick Burch <nick@apache.org>
Sun, 21 Sep 2008 17:49:20 +0000 (17:49 +0000)
committerNick Burch <nick@apache.org>
Sun, 21 Sep 2008 17:49:20 +0000 (17:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@697562 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/record/SeriesTextRecord.java
src/testcases/org/apache/poi/hssf/data/45784.xls [new file with mode: 0644]
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java

index eb5ae733f39fea1a7f50b865519ebb0561e942f0..815bbb095257731857ae8009ab4532f8aba10f45 100644 (file)
@@ -37,6 +37,7 @@
 
                <!-- Don't forget to update status.xml too! -->
         <release version="3.2-alpha1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">45784 - Support long chart titles in SeriesTextRecords</action>
            <action dev="POI-DEVELOPERS" type="fix">45777 - Throw an exception if HSSF Footer or Header is attemped to be set too long, rather than having it break during writing out</action>
            <action dev="POI-DEVELOPERS" type="add">45844 - Addtional diagnostics for HSLF SlideShowRecordDumper</action>
            <action dev="POI-DEVELOPERS" type="fix">45829 - HSSFPicture.getImageDimension() failed when DPI of image is zero</action>
index 1718ff841168205caf2e36a68862be55c2b99f66..3388499148c594f6970e093eefe6aab1597c01ae 100644 (file)
@@ -34,6 +34,7 @@
        <!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.2-alpha1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">45784 - Support long chart titles in SeriesTextRecords</action>
            <action dev="POI-DEVELOPERS" type="fix">45777 - Throw an exception if HSSF Footer or Header is attemped to be set too long, rather than having it break during writing out</action>
            <action dev="POI-DEVELOPERS" type="add">45844 - Addtional diagnostics for HSLF SlideShowRecordDumper</action>
            <action dev="POI-DEVELOPERS" type="fix">45829 - HSSFPicture.getImageDimension() failed when DPI of image is zero</action>
index 1271ef8764a0227d86c3200c0371dbe7ab457c67..66c26b32148285cb15bb3e6ae958263fdac12ad1 100644 (file)
@@ -75,7 +75,8 @@ public class SeriesTextRecord
         field_1_id                     = in.readShort();
         field_2_textLength             = in.readByte();
         field_3_undocumented           = in.readByte();
-        field_4_text                   = in.readUnicodeLEString(field_2_textLength);
+        field_4_text                   = in.readUnicodeLEString(
+                       LittleEndian.ubyteToInt(field_2_textLength));
     }
 
     public String toString()
@@ -163,18 +164,34 @@ public class SeriesTextRecord
     /**
      * Get the text length field for the SeriesText record.
      */
-    public byte getTextLength()
+    public int getTextLength()
     {
-        return field_2_textLength;
+        return LittleEndian.ubyteToInt(field_2_textLength);
     }
 
     /**
      * Set the text length field for the SeriesText record.
+     * Needs to be wrapped.
      */
     public void setTextLength(byte field_2_textLength)
     {
         this.field_2_textLength = field_2_textLength;
     }
+    /**
+     * Set the text length field for the SeriesText record.
+     */
+    public void setTextLength(int field_2_textLength)
+    {
+       if(field_2_textLength > 255) {
+               throw new IllegalArgumentException("Length must be 0-255");
+       }
+       if(field_2_textLength > 127) {
+               this.field_2_textLength = (byte)
+                       (field_2_textLength-256);
+       } else {
+               this.field_2_textLength = (byte)field_2_textLength;
+       }
+    }
 
     /**
      * Get the undocumented field for the SeriesText record.
diff --git a/src/testcases/org/apache/poi/hssf/data/45784.xls b/src/testcases/org/apache/poi/hssf/data/45784.xls
new file mode 100644 (file)
index 0000000..f0d25fd
Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45784.xls differ
index 4a43006997ae888ff61464d1952717706e406c3e..cc3bf573d2d24a2bfdea266d9851a313996a11c4 100644 (file)
@@ -1474,4 +1474,14 @@ public final class TestBugs extends TestCase {
                fail();
        } catch(IllegalArgumentException e) {}
     }
+    
+    /**
+     * Charts with long titles
+     */
+    public void test45784() {
+       // This used to break
+        HSSFWorkbook wb = openSample("45784.xls");
+        assertEquals(1, wb.getNumberOfSheets());
+       
+    }
 }