From 4769ade087e58d049a1e3bcf1a0d4987dcb378a2 Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Thu, 18 Sep 2008 22:40:03 +0000 Subject: [PATCH] Merged revisions 696622-696623,696627 via svnmerge from https://svn.apache.org/repos/asf/poi/trunk ........ r696622 | yegor | 2008-09-18 03:28:24 -0700 (Thu, 18 Sep 2008) | 1 line fixed bug #45829: HSSFPicture.getImageDimension() fails when DPI of image is zero ........ r696623 | yegor | 2008-09-18 03:45:00 -0700 (Thu, 18 Sep 2008) | 1 line fixed bug 45815: bit mask values inStyleTextPropAtom are not preserved across read-write ........ r696627 | yegor | 2008-09-18 03:58:39 -0700 (Thu, 18 Sep 2008) | 1 line patch from bug #45814: Specify RecordType for slide show Handout ........ git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@696839 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/usermodel/HSSFPicture.java | 6 ++++ .../apache/poi/hslf/record/RecordTypes.java | 2 +- .../poi/hslf/record/StyleTextPropAtom.java | 6 ++++ .../hslf/record/TestStyleTextPropAtom.java | 31 ++++++++++++++++++ .../org/apache/poi/hssf/data/45829.png | Bin 0 -> 259 bytes .../poi/hssf/usermodel/TestHSSFPicture.java | 14 ++++++++ 6 files changed, 58 insertions(+), 1 deletion(-) create mode 100755 src/testcases/org/apache/poi/hssf/data/45829.png diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java index 1afb30f5a6..8d2dd79641 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java @@ -235,6 +235,12 @@ public class HSSFPicture BufferedImage img = r.read(0); int[] dpi = getResolution(r); + + //if DPI is zero then assume standard 96 DPI + //since cannot divide by zero + if (dpi[0] == 0) dpi[0] = 96; + if (dpi[1] == 0) dpi[1] = 96; + size.width = img.getWidth()*96/dpi[0]; size.height = img.getHeight()*96/dpi[1]; diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java b/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java index 758d21bdac..7fb46e4fd1 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java @@ -101,7 +101,7 @@ public class RecordTypes { public static final Type MetaFile = new Type(4033,null); public static final Type ExOleObjAtom = new Type(4035,ExOleObjAtom.class); public static final Type SrKinsoku = new Type(4040,null); - public static final Type HandOut = new Type(4041,null); + public static final Type HandOut = new Type(4041,DummyPositionSensitiveRecordWithChildren.class); public static final Type ExEmbed = new Type(4044,ExEmbed.class); public static final Type ExEmbedAtom = new Type(4045,ExEmbedAtom.class); public static final Type ExLink = new Type(4046,null); diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java index 1207c68b3b..0eebbfc56f 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java @@ -157,6 +157,12 @@ public class StyleTextPropAtom extends RecordAtom new TextProp(0, 0x80, "kumi"), new TextProp(0, 0x100, "unused3"), new TextProp(0, 0x200, "emboss"), + new TextProp(0, 0x400, "nibble1"), + new TextProp(0, 0x800, "nibble2"), + new TextProp(0, 0x1000, "nibble3"), + new TextProp(0, 0x2000, "nibble4"), + new TextProp(0, 0x4000, "unused4"), + new TextProp(0, 0x8000, "unused5"), new CharFlagsTextProp(), new TextProp(2, 0x10000, "font.index"), new TextProp(0, 0x100000, "pp10ext"), diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java index 17f9010eb2..a31ddeb3ff 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java @@ -738,4 +738,35 @@ public class TestStyleTextPropAtom extends TestCase { doReadWrite(data, length); } + + /** + * Bug 45815: bit mask values are not preserved on read-write + * + * From the test file attached to the bug: + * + * + * 14 00 00 00 00 00 41 00 0A 00 06 00 50 00 07 00 01 00 00 00 00 00 00 00 02 + * 00 00 00 01 04 00 00 01 04 01 00 00 00 01 08 00 00 01 08 0C 00 00 00 01 0C + * 00 00 01 0C 01 00 00 00 01 10 00 00 01 10 01 00 00 00 01 14 00 00 01 14 01 + * 00 00 00 01 18 00 00 01 18 01 00 00 00 01 1C 00 00 01 1C + * + */ + public void test45815() throws Exception { + int length = 19; + byte[] data = { + 0x00, 0x00, (byte)0xA1, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x0A, 0x00, 0x06, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, + 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, + 0x01, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, + 0x01, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, + 0x01, 0x10, 0x01, 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, + 0x01, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, + 0x01, 0x18, 0x01, 0x00, 0x00, 0x00, 0x01, 0x1C, 0x00, 0x00, + 0x01, 0x1C + }; + doReadWrite(data, length); + } + } diff --git a/src/testcases/org/apache/poi/hssf/data/45829.png b/src/testcases/org/apache/poi/hssf/data/45829.png new file mode 100755 index 0000000000000000000000000000000000000000..eccaf30b266f739dd18eceb5e045fa9d47e37d70 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#XuSi7+lce zSn}G}QBB2uewU{d%N^g?t#>+T^EIgkowJqm&MeGWI@>|EE$El`i$y(ohqmS3m6YI3 z*s<>Q^`dts41!J^ihGtYb`%+$l~_FG6<723d9kv`1B<;n_j+B6&VG4pO3)d>SSg1d z!($P1_BmuO3v{=+5OUgbd%eN22eC`1JlXgD$8x)QRuLZpFN-LHyyEHV=d#Wzp$P!+ CA82C$ literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java index 87578ae01b..d1a6719e32 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java @@ -47,4 +47,18 @@ public final class TestHSSFPicture extends TestCase{ assertEquals(848, anchor1.getDx2()); assertEquals(240, anchor1.getDy2()); } + + /** + * Bug # 45829 reported ArithmeticException (/ by zero) when resizing png with zero DPI. + */ + public void test45829() { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sh1 = wb.createSheet(); + HSSFPatriarch p1 = sh1.createDrawingPatriarch(); + + byte[] pictureData = HSSFTestDataSamples.getTestDataFileContent("45829.png"); + int idx1 = wb.addPicture( pictureData, HSSFWorkbook.PICTURE_TYPE_PNG ); + HSSFPicture pic = p1.createPicture(new HSSFClientAnchor(), idx1); + pic.resize(); + } } -- 2.39.5