Methods Summary |
---|
public void | addEscherRecord(int index, org.apache.poi.ddf.EscherRecord element)
escherRecords.add( index, element );
|
public boolean | addEscherRecord(org.apache.poi.ddf.EscherRecord element)
return escherRecords.add( element );
|
public void | clearEscherRecords()
escherRecords.clear();
|
public java.lang.Object | clone()
throw new IllegalStateException("Not implemented yet.");
|
private void | convertToEscherRecords(int offset, int size, byte[] data)
EscherRecordFactory recordFactory = new DefaultEscherRecordFactory();
int pos = offset;
while ( pos < offset + size )
{
EscherRecord r = recordFactory.createRecord(data, pos);
int bytesRead = r.fillFields(data, pos, recordFactory );
escherRecords.add(r);
pos += bytesRead;
}
|
public void | decode()Convert raw data to escher records.
convertToEscherRecords(0, rawData.length, rawData );
|
protected void | fillFields(org.apache.poi.hssf.record.RecordInputStream in)
escherRecords = new ArrayList();
if (! DESERIALISE )
{
rawData = in.readRemainder();
}
else
{
byte[] data = in.readAllContinuedRemainder();
convertToEscherRecords( 0, data.length, data );
}
|
public org.apache.poi.ddf.EscherRecord | getEscherRecord(int index)
return (EscherRecord) escherRecords.get(index);
|
public java.util.List | getEscherRecords()
return escherRecords;
|
public byte[] | getRawData()
return rawData;
|
protected abstract java.lang.String | getRecordName()
|
public int | getRecordSize()Size of record (including 4 byte header)
if (escherRecords.size() == 0 && rawData != null)
{
return rawData.length + 4;
}
else
{
int size = 4;
for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
size += r.getRecordSize();
}
return size;
}
|
public abstract short | getSid()
|
public void | join(org.apache.poi.hssf.record.AbstractEscherHolderRecord record)Big drawing group records are split but it's easier to deal with them
as a whole group so we need to join them together.
int length = this.rawData.length + record.getRawData().length;
byte[] data = new byte[length];
System.arraycopy( rawData, 0, data, 0, rawData.length );
System.arraycopy( record.getRawData(), 0, data, rawData.length, record.getRawData().length );
rawData = data;
|
public void | processContinueRecord(byte[] record)
int length = this.rawData.length + record.length;
byte[] data = new byte[length];
System.arraycopy( rawData, 0, data, 0, rawData.length );
System.arraycopy( record, 0, data, rawData.length, record.length );
rawData = data;
|
public int | serialize(int offset, byte[] data)
LittleEndian.putShort( data, 0 + offset, getSid() );
LittleEndian.putShort( data, 2 + offset, (short) ( getRecordSize() - 4 ) );
if ( escherRecords.size() == 0 && rawData != null )
{
LittleEndian.putShort(data, 0 + offset, getSid());
LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
System.arraycopy( rawData, 0, data, 4 + offset, rawData.length);
return rawData.length + 4;
}
else
{
LittleEndian.putShort(data, 0 + offset, getSid());
LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
int pos = offset + 4;
for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
pos += r.serialize( pos, data, new NullEscherSerializationListener() );
}
}
return getRecordSize();
|
public void | setRawData(byte[] rawData)
this.rawData = rawData;
|
public java.lang.String | toString()
StringBuffer buffer = new StringBuffer();
final String nl = System.getProperty("line.separator");
buffer.append('[" + getRecordName() + ']" + nl);
if (escherRecords.size() == 0)
buffer.append("No Escher Records Decoded" + nl);
for ( Iterator iterator = escherRecords.iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
buffer.append(r.toString());
}
buffer.append("[/" + getRecordName() + ']" + nl);
return buffer.toString();
|
protected void | validateSid(short id)Checks the sid matches the expected side for this record
if (id != getSid())
{
throw new RecordFormatException("Not an escher record");
}
|