You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by ni...@apache.org on 2006/06/14 12:00:48 UTC
svn commit: r414168 - in /jakarta/poi/branches/REL_2_BRANCH/src:
java/org/apache/poi/ddf/EscherBlipRecord.java
java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java
testcases/org/apache/poi/ddf/TestEscherBlipRecord.java
Author: nick
Date: Wed Jun 14 03:00:48 2006
New Revision: 414168
URL: http://svn.apache.org/viewvc?rev=414168&view=rev
Log:
Avoid pesky GUMP build errors on REL_2_BRANCH by copying over the missing couple of definitions from Trunk, so that it compiles properly
Removed:
jakarta/poi/branches/REL_2_BRANCH/src/testcases/org/apache/poi/ddf/TestEscherBlipRecord.java
Modified:
jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/ddf/EscherBlipRecord.java
jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java
Modified: jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/ddf/EscherBlipRecord.java
URL: http://svn.apache.org/viewvc/jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/ddf/EscherBlipRecord.java?rev=414168&r1=414167&r2=414168&view=diff
==============================================================================
--- jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/ddf/EscherBlipRecord.java (original)
+++ jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/ddf/EscherBlipRecord.java Wed Jun 14 03:00:48 2006
@@ -1,5 +1,6 @@
+
/* ====================================================================
- Copyright 2004 Apache Software Foundation
+ Copyright 2002-2004 Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,26 +14,17 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
+
package org.apache.poi.ddf;
-import org.apache.poi.hssf.record.RecordFormatException;
-import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.HexDump;
-import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.zip.InflaterInputStream;
-import java.util.zip.DeflaterOutputStream;
/**
- * The blip record is used to hold details about large binary objects that occur in escher such
- * as JPEG, GIF, PICT and WMF files. The contents of the stream is usually compressed. Inflate
- * can be used to decompress the data.
- *
* @author Glen Stampoultzis
- * @see java.util.zip.Inflater
+ * @version $Id$
*/
public class EscherBlipRecord
extends EscherRecord
@@ -40,21 +32,14 @@
public static final short RECORD_ID_START = (short) 0xF018;
public static final short RECORD_ID_END = (short) 0xF117;
public static final String RECORD_DESCRIPTION = "msofbtBlip";
+
private static final int HEADER_SIZE = 8;
- private byte[] field_1_secondaryUID;
- private int field_2_cacheOfSize;
- private int field_3_boundaryTop;
- private int field_4_boundaryLeft;
- private int field_5_boundaryWidth;
- private int field_6_boundaryHeight;
- private int field_7_width;
- private int field_8_height;
- private int field_9_cacheOfSavedSize;
- private byte field_10_compressionFlag;
- private byte field_11_filter;
- private byte[] field_12_data;
+ protected byte[] field_pictureData;
+ public EscherBlipRecord()
+ {
+ }
/**
* This method deserializes the record from a byte array.
@@ -64,44 +49,27 @@
* @param recordFactory May be null since this is not a container record.
* @return The number of bytes read from the byte array.
*/
- public int fillFields( byte[] data, int offset,
- EscherRecordFactory recordFactory
- )
+ public int fillFields( byte[] data, int offset, EscherRecordFactory recordFactory )
{
int bytesAfterHeader = readHeader( data, offset );
int pos = offset + HEADER_SIZE;
- int size = 0;
- field_1_secondaryUID = new byte[16];
- System.arraycopy( data, pos + size, field_1_secondaryUID, 0, 16 ); size += 16;
- field_2_cacheOfSize = LittleEndian.getInt( data, pos + size );size+=4;
- field_3_boundaryTop = LittleEndian.getInt( data, pos + size );size+=4;
- field_4_boundaryLeft = LittleEndian.getInt( data, pos + size );size+=4;
- field_5_boundaryWidth = LittleEndian.getInt( data, pos + size );size+=4;
- field_6_boundaryHeight = LittleEndian.getInt( data, pos + size );size+=4;
- field_7_width = LittleEndian.getInt( data, pos + size );size+=4;
- field_8_height = LittleEndian.getInt( data, pos + size );size+=4;
- field_9_cacheOfSavedSize = LittleEndian.getInt( data, pos + size );size+=4;
- field_10_compressionFlag = data[pos + size]; size++;
- field_11_filter = data[pos + size]; size++;
-
- int bytesRemaining = bytesAfterHeader - size;
- field_12_data = new byte[bytesRemaining];
- System.arraycopy(data, pos + size, field_12_data, 0, bytesRemaining);
+ field_pictureData = new byte[bytesAfterHeader];
+ System.arraycopy(data, pos, field_pictureData, 0, bytesAfterHeader);
- return bytesRemaining + HEADER_SIZE + bytesAfterHeader;
+ return bytesAfterHeader + 8;
}
-
/**
- * This method serializes this escher record into a byte array.
- *
- * @param offset The offset into <code>data</code> to start writing the record data to.
- * @param data The byte array to serialize to.
- * @param listener A listener to retrieve start and end callbacks. Use a <code>NullEscherSerailizationListener</code> to ignore these events.
- * @return The number of bytes written.
+ * Serializes the record to an existing byte array.
*
- * @see NullEscherSerializationListener
+ * @param offset the offset within the byte array
+ * @param data the data array to serialize to
+ * @param listener a listener for begin and end serialization events. This
+ * is useful because the serialization is
+ * hierarchical/recursive and sometimes you need to be able
+ * break into that.
+ * @return the number of bytes written.
*/
public int serialize( int offset, byte[] data, EscherSerializationListener listener )
{
@@ -109,25 +77,11 @@
LittleEndian.putShort( data, offset, getOptions() );
LittleEndian.putShort( data, offset + 2, getRecordId() );
- int remainingBytes = field_12_data.length + 36;
- LittleEndian.putInt( data, offset + 4, remainingBytes );
- int pos = offset + HEADER_SIZE;
- System.arraycopy(field_1_secondaryUID, 0, data, pos, 16 ); pos += 16;
- LittleEndian.putInt( data, pos, field_2_cacheOfSize); pos += 4;
- LittleEndian.putInt( data, pos, field_3_boundaryTop); pos += 4;
- LittleEndian.putInt( data, pos, field_4_boundaryLeft); pos += 4;
- LittleEndian.putInt( data, pos, field_5_boundaryWidth); pos += 4;
- LittleEndian.putInt( data, pos, field_6_boundaryHeight); pos += 4;
- LittleEndian.putInt( data, pos, field_7_width); pos += 4;
- LittleEndian.putInt( data, pos, field_8_height); pos += 4;
- LittleEndian.putInt( data, pos, field_9_cacheOfSavedSize); pos += 4;
- data[pos++] = field_10_compressionFlag;
- data[pos++] = field_11_filter;
- System.arraycopy(field_12_data, 0, data, pos, field_12_data.length); pos += field_12_data.length;
+ System.arraycopy( field_pictureData, 0, data, offset + 4, field_pictureData.length );
- listener.afterRecordSerialize(pos, getRecordId(), pos - offset, this);
- return pos - offset;
+ listener.afterRecordSerialize(offset + 4 + field_pictureData.length, getRecordId(), field_pictureData.length + 4, this);
+ return field_pictureData.length + 4;
}
/**
@@ -137,7 +91,7 @@
*/
public int getRecordSize()
{
- return 58 + field_12_data.length;
+ return field_pictureData.length + 4;
}
/**
@@ -148,203 +102,6 @@
return "Blip";
}
- /**
- * Retrieve the secondary UID
- */
- public byte[] getSecondaryUID()
- {
- return field_1_secondaryUID;
- }
-
- /**
- * Set the secondary UID
- */
- public void setSecondaryUID( byte[] field_1_secondaryUID )
- {
- this.field_1_secondaryUID = field_1_secondaryUID;
- }
-
- /**
- * Retrieve the cache of the metafile size
- */
- public int getCacheOfSize()
- {
- return field_2_cacheOfSize;
- }
-
- /**
- * Set the cache of the metafile size
- */
- public void setCacheOfSize( int field_2_cacheOfSize )
- {
- this.field_2_cacheOfSize = field_2_cacheOfSize;
- }
-
- /**
- * Retrieve the top boundary of the metafile drawing commands
- */
- public int getBoundaryTop()
- {
- return field_3_boundaryTop;
- }
-
- /**
- * Set the top boundary of the metafile drawing commands
- */
- public void setBoundaryTop( int field_3_boundaryTop )
- {
- this.field_3_boundaryTop = field_3_boundaryTop;
- }
-
- /**
- * Retrieve the left boundary of the metafile drawing commands
- */
- public int getBoundaryLeft()
- {
- return field_4_boundaryLeft;
- }
-
- /**
- * Set the left boundary of the metafile drawing commands
- */
- public void setBoundaryLeft( int field_4_boundaryLeft )
- {
- this.field_4_boundaryLeft = field_4_boundaryLeft;
- }
-
- /**
- * Retrieve the boundary width of the metafile drawing commands
- */
- public int getBoundaryWidth()
- {
- return field_5_boundaryWidth;
- }
-
- /**
- * Set the boundary width of the metafile drawing commands
- */
- public void setBoundaryWidth( int field_5_boundaryWidth )
- {
- this.field_5_boundaryWidth = field_5_boundaryWidth;
- }
-
- /**
- * Retrieve the boundary height of the metafile drawing commands
- */
- public int getBoundaryHeight()
- {
- return field_6_boundaryHeight;
- }
-
- /**
- * Set the boundary height of the metafile drawing commands
- */
- public void setBoundaryHeight( int field_6_boundaryHeight )
- {
- this.field_6_boundaryHeight = field_6_boundaryHeight;
- }
-
- /**
- * Retrieve the width of the metafile in EMU's (English Metric Units).
- */
- public int getWidth()
- {
- return field_7_width;
- }
-
- /**
- * Set the width of the metafile in EMU's (English Metric Units).
- */
- public void setWidth( int width )
- {
- this.field_7_width = width;
- }
-
- /**
- * Retrieve the height of the metafile in EMU's (English Metric Units).
- */
- public int getHeight()
- {
- return field_8_height;
- }
-
- /**
- * Set the height of the metafile in EMU's (English Metric Units).
- */
- public void setHeight( int height )
- {
- this.field_8_height = height;
- }
-
- /**
- * Retrieve the cache of the saved size
- */
- public int getCacheOfSavedSize()
- {
- return field_9_cacheOfSavedSize;
- }
-
- /**
- * Set the cache of the saved size
- */
- public void setCacheOfSavedSize( int field_9_cacheOfSavedSize )
- {
- this.field_9_cacheOfSavedSize = field_9_cacheOfSavedSize;
- }
-
- /**
- * Is the contents of the blip compressed?
- */
- public byte getCompressionFlag()
- {
- return field_10_compressionFlag;
- }
-
- /**
- * Set whether the contents of the blip is compressed
- */
- public void setCompressionFlag( byte field_10_compressionFlag )
- {
- this.field_10_compressionFlag = field_10_compressionFlag;
- }
-
- /**
- * Filter should always be 0
- */
- public byte getFilter()
- {
- return field_11_filter;
- }
-
- /**
- * Filter should always be 0
- */
- public void setFilter( byte field_11_filter )
- {
- this.field_11_filter = field_11_filter;
- }
-
- /**
- * The BLIP data
- */
- public byte[] getData()
- {
- return field_12_data;
- }
-
- /**
- * The BLIP data
- */
- public void setData( byte[] field_12_data )
- {
- this.field_12_data = field_12_data;
- }
-
- /**
- * The string representation of this record.
- *
- * @return A string
- */
public String toString()
{
String nl = System.getProperty( "line.separator" );
@@ -353,7 +110,7 @@
ByteArrayOutputStream b = new ByteArrayOutputStream();
try
{
- HexDump.dump( this.field_12_data, 0, b, 0 );
+ HexDump.dump( this.field_pictureData, 0, b, 0 );
extraData = b.toString();
}
catch ( Exception e )
@@ -363,70 +120,7 @@
return getClass().getName() + ":" + nl +
" RecordId: 0x" + HexDump.toHex( getRecordId() ) + nl +
" Options: 0x" + HexDump.toHex( getOptions() ) + nl +
- " Secondary UID: " + HexDump.toHex( field_1_secondaryUID ) + nl +
- " CacheOfSize: " + field_2_cacheOfSize + nl +
- " BoundaryTop: " + field_3_boundaryTop + nl +
- " BoundaryLeft: " + field_4_boundaryLeft + nl +
- " BoundaryWidth: " + field_5_boundaryWidth + nl +
- " BoundaryHeight: " + field_6_boundaryHeight + nl +
- " X: " + field_7_width + nl +
- " Y: " + field_8_height + nl +
- " CacheOfSavedSize: " + field_9_cacheOfSavedSize + nl +
- " CompressionFlag: " + field_10_compressionFlag + nl +
- " Filter: " + field_11_filter + nl +
- " Data:" + nl + extraData;
- }
-
- /**
- * Compress the contents of the provided array
- *
- * @param data An uncompressed byte array
- * @see DeflaterOutputStream#write(int b)
- */
- public static byte[] compress( byte[] data )
- {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream( out );
- try
- {
- for ( int i = 0; i < data.length; i++ )
- deflaterOutputStream.write( data[i] );
- }
- catch ( IOException e )
- {
- throw new RecordFormatException( e.toString() );
- }
+ " Extra Data:" + nl + extraData;
- return out.toByteArray();
}
-
- /**
- * Decompresses a byte array.
- *
- * @param data The compressed byte array
- * @param pos The starting position into the byte array
- * @param length The number of compressed bytes to decompress
- * @return An uncompressed byte array
- * @see InflaterInputStream#read
- */
- public static byte[] decompress( byte[] data, int pos, int length )
- {
- byte[] compressedData = new byte[length];
- System.arraycopy( data, pos + 50, compressedData, 0, length );
- InputStream compressedInputStream = new ByteArrayInputStream( compressedData );
- InflaterInputStream inflaterInputStream = new InflaterInputStream( compressedInputStream );
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- int c;
- try
- {
- while ( ( c = inflaterInputStream.read() ) != -1 )
- out.write( c );
- }
- catch ( IOException e )
- {
- throw new RecordFormatException( e.toString() );
- }
- return out.toByteArray();
- }
-
}
Modified: jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java
URL: http://svn.apache.org/viewvc/jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java?rev=414168&r1=414167&r2=414168&view=diff
==============================================================================
--- jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java (original)
+++ jakarta/poi/branches/REL_2_BRANCH/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java Wed Jun 14 03:00:48 2006
@@ -34,7 +34,7 @@
// public final static short OBJECT_TYPE_CHART = 5;
// public final static short OBJECT_TYPE_TEXT = 6;
// public final static short OBJECT_TYPE_BUTTON = 7;
-// public final static short OBJECT_TYPE_PICTURE = 8;
+ public final static short OBJECT_TYPE_PICTURE = 8;
// public final static short OBJECT_TYPE_POLYGON = 9;
// public final static short OBJECT_TYPE_CHECKBOX = 11;
// public final static short OBJECT_TYPE_OPTION_BUTTON = 12;
@@ -63,6 +63,7 @@
* @see #OBJECT_TYPE_LINE
* @see #OBJECT_TYPE_OVAL
* @see #OBJECT_TYPE_RECTANGLE
+ * @see #OBJECT_TYPE_PICTURE
*/
public int getShapeType() { return shapeType; }
@@ -74,6 +75,7 @@
* @see #OBJECT_TYPE_LINE
* @see #OBJECT_TYPE_OVAL
* @see #OBJECT_TYPE_RECTANGLE
+ * @see #OBJECT_TYPE_PICTURE
*/
public void setShapeType( int shapeType ){ this.shapeType = shapeType; }
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/