]> source.dussan.org Git - poi.git/commitdiff
Support for removing low level font records
authorNick Burch <nick@apache.org>
Tue, 15 Jul 2008 20:24:53 +0000 (20:24 +0000)
committerNick Burch <nick@apache.org>
Tue, 15 Jul 2008 20:24:53 +0000 (20:24 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@677029 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/model/Workbook.java
src/testcases/org/apache/poi/hssf/model/TestWorkbook.java

index d56051445b2c35bb6309e6af9e8b47404a292730..c9b4a0ee1af6dd092849fb8e7da159db8ece92e8 100644 (file)
@@ -443,6 +443,17 @@ public class Workbook implements Model
         numfonts++;
         return rec;
     }
+    
+    /**
+     * Removes the given font record from the
+     *  file's list. This will make all 
+     *  subsequent font indicies drop by one,
+     *  so you'll need to update those yourself!
+     */
+    public void removeFontRecord(FontRecord rec) {
+       records.remove(rec); // this updates FontPos for us
+        numfonts--;
+    }
 
     /**
      * gets the number of font records
index 99663d2038cdc7997a2787112e759d02cfea3ebb..f89297390cd36c36c00c40b3adefa5cd679c8432 100644 (file)
@@ -32,6 +32,7 @@ public final class TestWorkbook extends TestCase {
                Workbook wb = (new HW()).getWorkbook();
                
                assertEquals(4, wb.getNumberOfFontRecords());
+               assertEquals(68, wb.getRecords().size());
                
                FontRecord f1 = wb.getFontRecordAt(0);
                FontRecord f4 = wb.getFontRecordAt(3);
@@ -45,9 +46,41 @@ public final class TestWorkbook extends TestCase {
                // There is no 4! new ones go in at 5
                
                FontRecord n = wb.createNewFont();
+               assertEquals(69, wb.getRecords().size());
                assertEquals(5, wb.getNumberOfFontRecords());
                assertEquals(5, wb.getFontIndex(n));
                assertEquals(n, wb.getFontRecordAt(5));
+               
+               // And another
+               FontRecord n6 = wb.createNewFont();
+               assertEquals(70, wb.getRecords().size());
+               assertEquals(6, wb.getNumberOfFontRecords());
+               assertEquals(6, wb.getFontIndex(n6));
+               assertEquals(n6, wb.getFontRecordAt(6));
+               
+               
+               // Now remove the one formerly at 5
+               assertEquals(70, wb.getRecords().size());
+               wb.removeFontRecord(n);
+
+               // Check that 6 has gone to 5
+               assertEquals(69, wb.getRecords().size());
+               assertEquals(5, wb.getNumberOfFontRecords());
+               assertEquals(5, wb.getFontIndex(n6));
+               assertEquals(n6, wb.getFontRecordAt(5));
+               
+               // Check that the earlier ones are unchanged
+               assertEquals(0, wb.getFontIndex(f1));
+               assertEquals(3, wb.getFontIndex(f4));
+               assertEquals(f1, wb.getFontRecordAt(0));
+               assertEquals(f4, wb.getFontRecordAt(3));
+               
+               // Finally, add another one
+               FontRecord n7 = wb.createNewFont();
+               assertEquals(70, wb.getRecords().size());
+               assertEquals(6, wb.getNumberOfFontRecords());
+               assertEquals(6, wb.getFontIndex(n7));
+               assertEquals(n7, wb.getFontRecordAt(6));
        }
        
        private class HW extends HSSFWorkbook {