From 6ee427ddf9ceb5462f287f15a2d787301dfb5573 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Sun, 30 May 2010 06:56:32 +0000 Subject: [PATCH] fixed construction of the DIB picture header, see Bugzilla 43161 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@949483 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 3 ++- .../src/org/apache/poi/hslf/blip/DIB.java | 25 ++++++++++++------ .../poi/hslf/usermodel/TestPictures.java | 2 +- test-data/slideshow/clock.dib | Bin 0 -> 101430 bytes 4 files changed, 20 insertions(+), 10 deletions(-) create mode 100755 test-data/slideshow/clock.dib diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 1cf13a4b3..2b68341b3 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,8 @@ + 43161 - fixed construction of the DIB picture header + 49311 - initial support for reading AES-encrypted/write-protected OOXML files 48718 - Make the creation of multiple, un-modified fonts in a row in XSSF match the old HSSF behaviour 44916 - Allow access to the HSSFPatriarch from HSSFSheet once created 48779 - Allow you to get straight from a CellStyle to a Color, irrespective of if the Color is indexed or inline-defined @@ -93,7 +95,6 @@ 48339 - fixed ExternalNameRecord to properly distinguish DDE data from OLE data items 47920 - allow editing workbooks embedded into PowerPoint files 48343 - added implementation of SUBTOTAL function - 49311 - initial support for reading AES-encrypted/write-protected OOXML files 48332 - fixed XSSFSheet autoSizeColumn() to tolerate empty RichTextString diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/DIB.java b/src/scratchpad/src/org/apache/poi/hslf/blip/DIB.java index 7e97446e4..21ea072ff 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/DIB.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/DIB.java @@ -49,23 +49,32 @@ public final class DIB extends Bitmap { public int getSignature(){ return 0x7A80; } - + public byte[] getData(){ - byte[] data = super.getData(); + return addBMPHeader ( super.getData() ); + } + public static byte[] addBMPHeader(byte[] data){ // bitmap file-header, corresponds to a // Windows BITMAPFILEHEADER structure // (For more information, consult the Windows API Programmer's reference ) byte[] header = new byte[HEADER_SIZE]; //Specifies the file type. It must be set to the signature word BM (0x4D42) to indicate bitmap. LittleEndian.putInt(header, 0, 0x4D42); - //Specifies the size, in bytes, of the bitmap file. - LittleEndian.putInt(header, 2, data.length); //DIB length including the header - //Reserved; set to zero - LittleEndian.putInt(header, 6, 0); - //the offset, in bytes, from the header to the bitmap bits (looks like it is always 2) - LittleEndian.putInt(header, 10, 2); + // read the size of the image and calculate the overall file size + // and the offset where the bitmap starts + int imageSize = LittleEndian.getInt(data, 0x22 - HEADER_SIZE); + int fileSize = data.length + HEADER_SIZE; + int offset = fileSize - imageSize; + + // specifies the size, in bytes, of the bitmap file - must add the length of the header + LittleEndian.putInt(header, 2, fileSize); + // Reserved; set to zero + LittleEndian.putInt(header, 6, 0); + // the offset, i.e. starting address, of the byte where the bitmap data can be found + LittleEndian.putInt(header, 10, offset); + //DIB data is the header + dib bytes byte[] dib = new byte[header.length + data.length]; System.arraycopy(header, 0, dib, 0, header.length); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestPictures.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestPictures.java index df7265be8..9d0f92be8 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestPictures.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestPictures.java @@ -252,7 +252,7 @@ public final class TestPictures extends TestCase{ SlideShow ppt = new SlideShow(); Slide slide = ppt.createSlide(); - byte[] src_bytes = slTests.readFile("sci_cec.dib"); + byte[] src_bytes = slTests.readFile("clock.dib"); int idx = ppt.addPicture(src_bytes, Picture.DIB); Picture pict = new Picture(idx); assertEquals(idx, pict.getPictureIndex()); diff --git a/test-data/slideshow/clock.dib b/test-data/slideshow/clock.dib new file mode 100755 index 0000000000000000000000000000000000000000..e9c6e72233dab31c28d5106dbe00c8d678e74461 GIT binary patch literal 101430 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 literal 0 HcmV?d00001