jxl.biff.drawing.EscherRecord Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxl Show documentation
Show all versions of jxl Show documentation
JExcelApi is a java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.
The newest version!
/*********************************************************************
*
* Copyright (C) 2003 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
package jxl.biff.drawing;
import jxl.common.Logger;
/**
* The base class for all escher records. This class contains
* the jxl.common.header data and is basically a wrapper for the EscherRecordData
* object
*/
abstract class EscherRecord
{
/**
* The logger
*/
private static Logger logger = Logger.getLogger(EscherRecord.class);
/**
* The escher data
*/
private EscherRecordData data;
//protected EscherRecordData data;
/**
* The length of the escher header on all records
*/
protected static final int HEADER_LENGTH = 8;
/**
* Constructor
*
* @param erd the data
*/
protected EscherRecord(EscherRecordData erd)
{
data = erd;
}
/**
* Constructor
*
* @param type the type
*/
protected EscherRecord(EscherRecordType type)
{
data = new EscherRecordData(type);
}
/**
* Identifies whether this item is a container
*
* @param cont TRUE if this is a container, FALSE otherwise
*/
protected void setContainer(boolean cont)
{
data.setContainer(cont);
}
/**
* Gets the entire length of the record, including the header
*
* @return the length of the record, including the header data
*/
public int getLength()
{
return data.getLength() + HEADER_LENGTH;
}
/**
* Accessor for the escher stream
*
* @return the escher stream
*/
protected final EscherStream getEscherStream()
{
return data.getEscherStream();
}
/**
* The position of this escher record in the stream
*
* @return the position
*/
protected final int getPos()
{
return data.getPos();
}
/**
* Accessor for the instance
*
* @return the instance
*/
protected final int getInstance()
{
return data.getInstance();
}
/**
* Sets the instance number when writing out the escher data
*
* @param i the instance
*/
protected final void setInstance(int i)
{
data.setInstance(i);
}
/**
* Sets the version when writing out the escher data
*
* @param v the version
*/
protected final void setVersion (int v)
{
data.setVersion(v);
}
/**
* Accessor for the escher type
*
* @return the type
*/
public EscherRecordType getType()
{
return data.getType();
}
/**
* Abstract method used to retrieve the generated escher data when writing
* out image information
*
* @return the escher data
*/
abstract byte[] getData();
/**
* Prepends the standard header data to the first eight bytes of the array
* and returns it
*
* @param d the data
* @return the binary data
*/
final byte[] setHeaderData(byte[] d)
{
return data.setHeaderData(d);
}
/**
* Gets the data that was read in, excluding the header data
*
* @return the bytes read in, excluding the header data
*/
byte[] getBytes()
{
return data.getBytes();
}
/**
* Accessor for the stream length
*
* @return the stream length
*/
protected int getStreamLength()
{
return data.getStreamLength();
}
/**
* Used by the EscherDisplay class to retrieve the data
*
* @return the data
*/
protected EscherRecordData getEscherData()
{
return data;
}
}