public abstract class

DataBuffer

extends Object
java.lang.Object
   ↳ java.awt.image.DataBuffer
Known Direct Subclasses

Class Overview

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 TYPE_BYTE, TYPE_USHORT, TYPE_INT, TYPE_SHORT, TYPE_FLOAT, and TYPE_DOUBLE DataBuffers to store image data.

Summary

Constants
int TYPE_BYTE Tag for unsigned byte data.
int TYPE_DOUBLE Tag for double data.
int TYPE_FLOAT Tag for float data.
int TYPE_INT Tag for int data.
int TYPE_SHORT Tag for signed short data.
int TYPE_UNDEFINED Tag for undefined data.
int TYPE_USHORT Tag for unsigned short data.
Fields
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.
Protected Constructors
DataBuffer(int dataType, int size)
Constructs a DataBuffer containing one bank of the specified data type and size.
DataBuffer(int dataType, int size, int numBanks)
Constructs a DataBuffer containing the specified number of banks.
DataBuffer(int dataType, int size, int numBanks, int offset)
Constructs a DataBuffer that contains the specified number of banks.
DataBuffer(int dataType, int size, int numBanks, int[] offsets)
Constructs a DataBuffer which contains the specified number of banks.
Public Methods
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.
abstract int getElem(int bank, int i)
Returns the requested data array element from the specified bank as an integer.
int getElem(int i)
Returns the requested data array element from the first (default) bank as an integer.
double getElemDouble(int bank, int i)
Returns the requested data array element from the specified bank as a double.
double getElemDouble(int i)
Returns the requested data array element from the first (default) 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.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final int TYPE_BYTE

Tag for unsigned byte data.

Constant Value: 0 (0x00000000)

public static final int TYPE_DOUBLE

Tag for double data. Placeholder for future use.

Constant Value: 5 (0x00000005)

public static final int TYPE_FLOAT

Tag for float data. Placeholder for future use.

Constant Value: 4 (0x00000004)

public static final int TYPE_INT

Tag for int data.

Constant Value: 3 (0x00000003)

public static final int TYPE_SHORT

Tag for signed short data. Placeholder for future use.

Constant Value: 2 (0x00000002)

public static final int TYPE_UNDEFINED

Tag for undefined data.

Constant Value: 32 (0x00000020)

public static final int TYPE_USHORT

Tag for unsigned short data.

Constant Value: 1 (0x00000001)

Fields

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.

Protected Constructors

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

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

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

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

Public Methods

public int getDataType ()

Returns the data type of this DataBuffer.

Returns
  • the data type of this DataBuffer.

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

public abstract int getElem (int bank, int i)

Returns the requested data array element from the specified bank as an integer.

Parameters
bank the specified bank
i the index of the requested data array element
Returns
  • the data array element at the specified index from the specified bank at the specified index.

public int getElem (int i)

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

Parameters
i the index of the requested data array element
Returns
  • the data array element at the specified index.

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.

Parameters
bank the specified bank
i the specified index
Returns
  • a double value representing the element from the specified bank at the specified index in the data array.

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(int) to a double. Subclasses can override this method if another implementation is needed.

Parameters
i the specified index
Returns
  • a double value representing the element at the specified index in the data array.

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.

Parameters
i the index of the requested data array element
Returns
  • a float value representing the data array element at the specified index.

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(int, int) to a float. Subclasses can override this method if another implementation is needed.

Parameters
bank the specified bank
i the index of the requested data array element
Returns
  • a float value representing the data array element from the specified bank at the specified index.

public int getNumBanks ()

Returns the number of banks in this DataBuffer.

Returns
  • the number of banks.

public int getOffset ()

Returns the offset of the default bank in array elements.

Returns
  • the offset of the default bank.

public int[] getOffsets ()

Returns the offsets (in array elements) of all the banks.

Returns
  • the offsets of all banks.

public int getSize ()

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

Returns
  • the size of all banks.

public void setElem (int i, int val)

Sets the requested data array element in the first (default) bank from the given integer.

Parameters
i the specified index into the data array
val the data to set the element at the specified index in the data array

public abstract void setElem (int bank, int i, int val)

Sets the requested data array element in the specified bank from the given integer.

Parameters
bank the specified bank
i the specified index into the data array
val the data to set the element in the specified bank at the specified index in the data array

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(int, int). Subclasses can override this method if another implementation is needed.

Parameters
i the specified index
val the value to set the element at the specified index in the data array

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(int, int). Subclasses can override this method if another implementation is needed.

Parameters
bank the specified bank
i the specified index
val the value to set the element in the specified bank at the specified index of the data array

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(int, int). Subclasses can override this method if another implementation is needed.

Parameters
i the specified index
val the value to set the element at the specified index in the data array

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(int, int). Subclasses can override this method if another implementation is needed.

Parameters
bank the specified bank
i the specified index
val the value to set the element in the specified bank at the specified index in the data array