FileDocCategorySizeDatePackage
EscherBitmapBlip.javaAPI DocApache Poi 3.0.15236Sun Mar 11 12:59:10 GMT 2007org.apache.poi.ddf

EscherBitmapBlip

public class EscherBitmapBlip extends EscherBlipRecord
author
Glen Stampoultzis
version
$Id: EscherBitmapBlip.java 496526 2007-01-15 22:46:35Z markt $

Fields Summary
public static final short
RECORD_ID_JPEG
public static final short
RECORD_ID_PNG
public static final short
RECORD_ID_DIB
private static final int
HEADER_SIZE
private byte[]
field_1_UID
private byte
field_2_marker
Constructors Summary
Methods Summary
public intfillFields(byte[] data, int offset, org.apache.poi.ddf.EscherRecordFactory recordFactory)
This method deserializes the record from a byte array.

param
data The byte array containing the escher record information
param
offset The starting offset into data.
param
recordFactory May be null since this is not a container record.
return
The number of bytes read from the byte array.



                                                                         
             
    
        int bytesAfterHeader = readHeader( data, offset );
        int pos = offset + HEADER_SIZE;

        field_1_UID = new byte[16];
        System.arraycopy( data, pos, field_1_UID, 0, 16 ); pos += 16;
        field_2_marker = data[pos]; pos++;

        field_pictureData = new byte[bytesAfterHeader - 17];
        System.arraycopy( data, pos, field_pictureData, 0, field_pictureData.length );

        return bytesAfterHeader + HEADER_SIZE;
    
public bytegetMarker()

        return field_2_marker;
    
public byte[]getPicturedata()

        return field_pictureData;
    
public intgetRecordSize()
Returns the number of bytes that are required to serialize this record.

return
Number of bytes

         return 8 + 16 + 1 + field_pictureData.length;
     
public byte[]getUID()

        return field_1_UID;
    
public intserialize(int offset, byte[] data, org.apache.poi.ddf.EscherSerializationListener listener)
Serializes the record to an existing byte array.

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.

         listener.beforeRecordSerialize(offset, getRecordId(), this);

         LittleEndian.putShort( data, offset, getOptions() );
         LittleEndian.putShort( data, offset + 2, getRecordId() );
         LittleEndian.putInt( data, offset + 4, getRecordSize() - HEADER_SIZE );
         int pos = offset + HEADER_SIZE;

         System.arraycopy( field_1_UID, 0, data, pos, 16 );
         data[pos + 16] = field_2_marker;
         System.arraycopy( field_pictureData, 0, data, pos + 17, field_pictureData.length );

         listener.afterRecordSerialize(offset + getRecordSize(), getRecordId(), getRecordSize(), this);
         return HEADER_SIZE + 16 + 1 + field_pictureData.length;
     
public voidsetMarker(byte field_2_marker)

        this.field_2_marker = field_2_marker;
    
public voidsetPictureData(byte[] pictureData)

        field_pictureData = pictureData;
    
public voidsetUID(byte[] field_1_UID)

        this.field_1_UID = field_1_UID;
    
public java.lang.StringtoString()

        String nl = System.getProperty( "line.separator" );

        String extraData;
        ByteArrayOutputStream b = new ByteArrayOutputStream();
        try
        {
            HexDump.dump( this.field_pictureData, 0, b, 0 );
            extraData = b.toString();
        }
        catch ( Exception e )
        {
            extraData = e.toString();
        }
        return getClass().getName() + ":" + nl +
                "  RecordId: 0x" + HexDump.toHex( getRecordId() ) + nl +
                "  Options: 0x" + HexDump.toHex( getOptions() ) + nl +
                "  UID: 0x" + HexDump.toHex( field_1_UID ) + nl +
                "  Marker: 0x" + HexDump.toHex( field_2_marker ) + nl +
                "  Extra Data:" + nl + extraData;