JavaTM 2 Platform
Std. Ed. v1.3.1

java.awt.image
Class DataBuffer

java.lang.Object
  |
  +--java.awt.image.DataBuffer
Direct Known Subclasses:
DataBufferByte, DataBufferInt, DataBufferShort, DataBufferUShort

public abstract class DataBuffer
extends Object

This class exists to wrap one or more data arrays. Each data array in the DataBuffer is referred to as a bank. Accessor methods for getting and setting elements of the DataBuffer's banks exist with and without a bank specifier. The methods without a bank specifier use the default 0th bank. The DataBuffer can optionally take an offset per bank, so that data in an existing array can be used even if the interesting data doesn't start at array location zero. Getting or setting the 0th element of a bank, uses the (0+offset)th element of the array. The size field specifies how much of the data array is available for use. Size + offset for a given bank should never be greater than the length of the associated data array. The data type of a data buffer indicates the type of the data array(s) and may also indicate additional semantics, e.g. storing unsigned 8-bit data in elements of a byte array. The data type may be TYPE_UNDEFINED or one of the types defined below. Other types may be added in the future. Generally, an object of class DataBuffer will be cast down to one of its data type specific subclasses to access data type specific methods for improved performance. Currently, the Java 2D(tm) API image classes use only TYPE_BYTE, TYPE_USHORT, and TYPE_INT DataBuffers to store image data.

See Also:
Raster, SampleModel

Field Summary
protected  int banks
          The number of banks in this DataBuffer.
protected  int dataType
          The data type of this DataBuffer.
protected  int offset
          Offset into default (first) bank from which to get the first element.
protected  int[] offsets
          Offsets into all banks.
protected  int size
          Usable size of all banks.
static int TYPE_BYTE
          Tag for unsigned byte data.
static int TYPE_DOUBLE
          Tag for double data.
static int TYPE_FLOAT
          Tag for float data.
static int TYPE_INT
          Tag for int data.
static int TYPE_SHORT
          Tag for signed short data.
static int TYPE_UNDEFINED
          Tag for undefined data
static int TYPE_USHORT
          Tag for unsigned short data.
 
Constructor Summary
protected DataBuffer(int dataType, int size)
          Constructs a DataBuffer containing one bank of the specified data type and size.
protected DataBuffer(int dataType, int size, int numBanks)
          Constructs a DataBuffer containing the specified number of banks.
protected DataBuffer(int dataType, int size, int numBanks, int offset)
          Constructs a DataBuffer that contains the specified number of banks.
protected DataBuffer(int dataType, int size, int numBanks, int[] offsets)
          Constructs a DataBuffer which contains the specified number of banks.
 
Method Summary
 int getDataType()
          Returns the data type of this DataBuffer.
static int getDataTypeSize(int type)
          Returns the size (in bits) of the data type, given a datatype tag.
 int getElem(int i)
          Returns the requested data array element from the first (default) bank as an integer.
abstract  int getElem(int bank, int i)
          Returns the requested data array element from the specified bank as an integer.
 double getElemDouble(int i)
          Returns the requested data array element from the first (default) bank as a double.
 double getElemDouble(int bank, int i)
          Returns the requested data array element from the specified bank as a double.
 float getElemFloat(int i)
          Returns the requested data array element from the first (default) bank as a float.
 float getElemFloat(int bank, int i)
          Returns the requested data array element from the specified bank as a float.
 int getNumBanks()
          Returns the number of banks in this DataBuffer.
 int getOffset()
          Returns the offset of the default bank in array elements.
 int[] getOffsets()
          Returns the offsets (in array elements) of all the banks.
 int getSize()
          Returns the size (in array elements) of all banks.
 void setElem(int i, int val)
          Sets the requested data array element in the first (default) bank from the given integer.
abstract  void setElem(int bank, int i, int val)
          Sets the requested data array element in the specified bank from the given integer.
 void setElemDouble(int i, double val)
          Sets the requested data array element in the first (default) bank from the given double.
 void setElemDouble(int bank, int i, double val)
          Sets the requested data array element in the specified bank from the given double.
 void setElemFloat(int i, float val)
          Sets the requested data array element in the first (default) bank from the given float.
 void setElemFloat(int bank, int i, float val)
          Sets the requested data array element in the specified bank from the given float.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TYPE_BYTE

public static final int TYPE_BYTE
Tag for unsigned byte data.

TYPE_USHORT

public static final int TYPE_USHORT
Tag for unsigned short data.

TYPE_SHORT

public static final int TYPE_SHORT
Tag for signed short data. Placeholder for future use.

TYPE_INT

public static final int TYPE_INT
Tag for int data.

TYPE_FLOAT

public static final int TYPE_FLOAT
Tag for float data. Placeholder for future use.

TYPE_DOUBLE

public static final int TYPE_DOUBLE
Tag for double data. Placeholder for future use.

TYPE_UNDEFINED

public static final int TYPE_UNDEFINED
Tag for undefined data

dataType

protected int dataType
The data type of this DataBuffer.

banks

protected int banks
The number of banks in this DataBuffer.

offset

protected int offset
Offset into default (first) bank from which to get the first element.

size

protected int size
Usable size of all banks.

offsets

protected int[] offsets
Offsets into all banks.
Constructor Detail

DataBuffer

protected DataBuffer(int dataType,
                     int size)
Constructs a DataBuffer containing one bank of the specified data type and size.
Parameters:
dataType - the data type of this DataBuffer
size - the size of the banks

DataBuffer

protected DataBuffer(int dataType,
                     int size,
                     int numBanks)
Constructs a DataBuffer containing the specified number of banks. Each bank has the specified size and an offset of 0.
Parameters:
dataType - the data type of this DataBuffer
size - the size of the banks
numBanks - the number of banks in this DataBuffer

DataBuffer

protected DataBuffer(int dataType,
                     int size,
                     int numBanks,
                     int offset)
Constructs a DataBuffer that contains the specified number of banks. Each bank has the specified datatype, size and offset.
Parameters:
dataType - the data type of this DataBuffer
size - the size of the banks
numBanks - the number of banks in this DataBuffer
offset - the offset for each bank

DataBuffer

protected DataBuffer(int dataType,
                     int size,
                     int numBanks,
                     int[] offsets)
Constructs a DataBuffer which contains the specified number of banks. Each bank has the specified datatype and size. The offset for each bank is specified by its respective entry in the offsets array.
Parameters:
dataType - the data type of this DataBuffer
size - the size of the banks
numBanks - the number of banks in this DataBuffer
offsets - an array containing an offset for each bank.
Throws:
ArrayIndexOutOfBoundsException - if numBanks does not equal the length of offsets
Method Detail

getDataTypeSize

public static int getDataTypeSize(int type)
Returns the size (in bits) of the data type, given a datatype tag.
Parameters:
type - the value of one of the defined datatype tags
Returns:
the size of the data type
Throws:
IllegalArgumentException - if type is less than zero or greater than TYPE_DOUBLE

getDataType

public int getDataType()
Returns the data type of this DataBuffer.

getSize

public int getSize()
Returns the size (in array elements) of all banks.

getOffset

public int getOffset()
Returns the offset of the default bank in array elements.

getOffsets

public int[] getOffsets()
Returns the offsets (in array elements) of all the banks.

getNumBanks

public int getNumBanks()
Returns the number of banks in this DataBuffer.

getElem

public int getElem(int i)
Returns the requested data array element from the first (default) bank as an integer.

getElem

public abstract int getElem(int bank,
                            int i)
Returns the requested data array element from the specified bank as an integer.

setElem

public void setElem(int i,
                    int val)
Sets the requested data array element in the first (default) bank from the given integer.

setElem

public abstract void setElem(int bank,
                             int i,
                             int val)
Sets the requested data array element in the specified bank from the given integer.

getElemFloat

public float getElemFloat(int i)
Returns the requested data array element from the first (default) bank as a float. The implementation in this class is to cast getElem(i) to a float. Subclasses may override this method if another implementation is needed.

getElemFloat

public float getElemFloat(int bank,
                          int i)
Returns the requested data array element from the specified bank as a float. The implementation in this class is to cast getElem(bank, i) to a float. Subclasses may override this method if another implementation is needed.

setElemFloat

public void setElemFloat(int i,
                         float val)
Sets the requested data array element in the first (default) bank from the given float. The implementation in this class is to cast val to an int and call setElem. Subclasses may override this method if another implementation is needed.

setElemFloat

public void setElemFloat(int bank,
                         int i,
                         float val)
Sets the requested data array element in the specified bank from the given float. The implementation in this class is to cast * val to an int and call setElem. Subclasses may override this method if another implementation is needed.

getElemDouble

public double getElemDouble(int i)
Returns the requested data array element from the first (default) bank as a double. The implementation in this class is to cast getElem(i) to a double. Subclasses may override this method if another implementation is needed.

getElemDouble

public double getElemDouble(int bank,
                            int i)
Returns the requested data array element from the specified bank as a double. The implementation in this class is to cast getElem(bank, i) to a double. Subclasses may override this method if another implementation is needed.

setElemDouble

public void setElemDouble(int i,
                          double val)
Sets the requested data array element in the first (default) bank from the given double. The implementation in this class is to cast val to an int and call setElem. Subclasses may override this method if another implementation is needed.

setElemDouble

public void setElemDouble(int bank,
                          int i,
                          double val)
Sets the requested data array element in the specified bank from the given double. The implementation in this class is to cast val to an int and call setElem. Subclasses may override this method if another implementation is needed.

JavaTM 2 Platform
Std. Ed. v1.3.1

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Java, Java 2D, and JDBC are trademarks or registered trademarks of Oracle and/or its affiliates, in the US and other countries.
Copyright © 1995, 2010 Oracle and/or its affiliates. All rights reserved.