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.