split option field into version and instance
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1163609 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
237b4d7448
commit
689c4f7895
@ -18,12 +18,14 @@
|
|||||||
|
|
||||||
package org.apache.poi.ddf;
|
package org.apache.poi.ddf;
|
||||||
|
|
||||||
import org.apache.poi.util.LittleEndian;
|
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.poi.util.BitField;
|
||||||
|
import org.apache.poi.util.BitFieldFactory;
|
||||||
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The base abstract record from which all escher records are defined. Subclasses will need
|
* The base abstract record from which all escher records are defined. Subclasses will need
|
||||||
* to define methods for serialization/deserialization and for determining the record size.
|
* to define methods for serialization/deserialization and for determining the record size.
|
||||||
@ -31,6 +33,9 @@ import java.util.List;
|
|||||||
* @author Glen Stampoultzis
|
* @author Glen Stampoultzis
|
||||||
*/
|
*/
|
||||||
public abstract class EscherRecord {
|
public abstract class EscherRecord {
|
||||||
|
private static BitField fInstance = BitFieldFactory.getInstance(0xfff0);
|
||||||
|
private static BitField fVersion = BitFieldFactory.getInstance(0x000f);
|
||||||
|
|
||||||
private short _options;
|
private short _options;
|
||||||
private short _recordId;
|
private short _recordId;
|
||||||
|
|
||||||
@ -85,20 +90,27 @@ public abstract class EscherRecord {
|
|||||||
* @return true is this is a container field.
|
* @return true is this is a container field.
|
||||||
*/
|
*/
|
||||||
public boolean isContainerRecord() {
|
public boolean isContainerRecord() {
|
||||||
return (_options & (short)0x000f) == (short)0x000f;
|
return getVersion() == (short)0x000f;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The options field for this record. All records have one.
|
* @return The options field for this record. All records have one.
|
||||||
|
* @deprecated Options is an internal field. Use {@link #getInstance()} and
|
||||||
|
* {@link #getVersion()} to access actual fields.
|
||||||
*/
|
*/
|
||||||
public short getOptions() {
|
@Deprecated
|
||||||
|
public short getOptions()
|
||||||
|
{
|
||||||
return _options;
|
return _options;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the options this this record. Container records should have the
|
* Set the options this this record. Container records should have the
|
||||||
* last nibble set to 0xF.
|
* last nibble set to 0xF.
|
||||||
|
* @deprecated Options is an internal field. Use {@link #getInstance()} and
|
||||||
|
* {@link #getVersion()} to access actual fields.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public void setOptions( short options ) {
|
public void setOptions( short options ) {
|
||||||
_options = options;
|
_options = options;
|
||||||
}
|
}
|
||||||
@ -227,8 +239,41 @@ public abstract class EscherRecord {
|
|||||||
*
|
*
|
||||||
* @return The instance part of the record
|
* @return The instance part of the record
|
||||||
*/
|
*/
|
||||||
public short getInstance() {
|
public short getInstance()
|
||||||
return (short) ( _options >> 4 );
|
{
|
||||||
|
return fInstance.getShortValue( _options );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the instance part of record
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* instance part value
|
||||||
|
*/
|
||||||
|
public void setInstance( short value )
|
||||||
|
{
|
||||||
|
fInstance.setShortValue( _options, value );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the version part of the option record.
|
||||||
|
*
|
||||||
|
* @return The version part of the option record
|
||||||
|
*/
|
||||||
|
public short getVersion()
|
||||||
|
{
|
||||||
|
return fVersion.getShortValue( _options );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the version part of record
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* version part value
|
||||||
|
*/
|
||||||
|
public void setVersion( short value )
|
||||||
|
{
|
||||||
|
fVersion.setShortValue( _options, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -253,6 +298,15 @@ public abstract class EscherRecord {
|
|||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte getVersion()
|
||||||
|
{
|
||||||
|
return (byte) fVersion.getShortValue( options );
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getInstance()
|
||||||
|
{
|
||||||
|
return fInstance.getShortValue( options );
|
||||||
|
}
|
||||||
|
|
||||||
public short getOptions()
|
public short getOptions()
|
||||||
{
|
{
|
||||||
@ -272,7 +326,8 @@ public abstract class EscherRecord {
|
|||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return "EscherRecordHeader{" +
|
return "EscherRecordHeader{" +
|
||||||
"options=" + options +
|
"ver=" + getVersion() +
|
||||||
|
"instance=" + getInstance() +
|
||||||
", recordId=" + recordId +
|
", recordId=" + recordId +
|
||||||
", remainingBytes=" + remainingBytes +
|
", remainingBytes=" + remainingBytes +
|
||||||
"}";
|
"}";
|
||||||
|
Loading…
Reference in New Issue
Block a user