From aa11ce85c1e98d4885ee8730dcf7cb1745e14054 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 15 Jul 2008 20:24:53 +0000 Subject: [PATCH] Support for removing low level font records git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@677029 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/model/Workbook.java | 11 +++++++ .../apache/poi/hssf/model/TestWorkbook.java | 33 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index d56051445..c9b4a0ee1 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -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 diff --git a/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java b/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java index 99663d203..f89297390 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/model/TestWorkbook.java @@ -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 {