FileDocCategorySizeDatePackage
DataBuffer.javaAPI DocAndroid 1.5 API12684Wed May 06 22:41:54 BST 2009java.awt.image

DataBuffer

public abstract class DataBuffer extends Object
The Class DataBuffer is a wrapper class for a data array to be used for the situation where a suite of functionality acts on a set of data in a consistent way even though the primitive type of the data may vary from one use to the next.
since
Android 1.0

Fields Summary
public static final int
TYPE_BYTE
The Constant TYPE_BYTE.
public static final int
TYPE_USHORT
The Constant TYPE_USHORT.
public static final int
TYPE_SHORT
The Constant TYPE_SHORT.
public static final int
TYPE_INT
The Constant TYPE_INT.
public static final int
TYPE_FLOAT
The Constant TYPE_FLOAT.
public static final int
TYPE_DOUBLE
The Constant TYPE_DOUBLE.
public static final int
TYPE_UNDEFINED
The Constant TYPE_UNDEFINED.
protected int
dataType
The data type indicates the primitive type of the data in this DataBuffer.
protected int
banks
The number of data arrays in this DataBuffer.
protected int
offset
The starting index for reading the data from the first (or only) internal data array.
protected int
size
The length (number of elements) of the data arrays.
protected int[]
offsets
The starting indices for reading the data from the internal data arrays.
boolean
dataChanged
The data changed.
boolean
dataTaken
The data taken.
org.apache.harmony.awt.gl.image.DataBufferListener
listener
The listener.
Constructors Summary
protected DataBuffer(int dataType, int size, int numBanks, int[] offsets)
Instantiates a new data buffer.

param
dataType the data type.
param
size the length (number of elements) of the data arrays.
param
numBanks the number of data arrays to create.
param
offsets the starting indices for reading the data from the internal data arrays.


     
        AwtImageBackdoorAccessorImpl.init();
    
        this.dataType = dataType;
        this.size = size;
        this.banks = numBanks;
        this.offsets = offsets.clone();
        this.offset = offsets[0];
    
protected DataBuffer(int dataType, int size, int numBanks, int offset)
Instantiates a new data buffer with all of the data arrays starting at the same index.

param
dataType the data type.
param
size the length (number of elements) of the data arrays.
param
numBanks the number of data arrays to create.
param
offset the offset to use for all of the data arrays.

        this.dataType = dataType;
        this.size = size;
        this.banks = numBanks;
        this.offset = offset;
        this.offsets = new int[numBanks];
        int i = 0;
        while (i < numBanks) {
            offsets[i++] = offset;
        }
    
protected DataBuffer(int dataType, int size, int numBanks)
Instantiates a new data buffer with all of the data arrays read from the beginning (at offset zero).

param
dataType the data type.
param
size the length (number of elements) of the data arrays.
param
numBanks the number of data arrays to create.

        this.dataType = dataType;
        this.size = size;
        this.banks = numBanks;
        this.offset = 0;
        this.offsets = new int[numBanks];
    
protected DataBuffer(int dataType, int size)
Instantiates a new data buffer with one internal data array read from the beginning (at offset zero).

param
dataType the data type.
param
size the length (number of elements) of the data arrays.

        this.dataType = dataType;
        this.size = size;
        this.banks = 1;
        this.offset = 0;
        this.offsets = new int[1];
    
Methods Summary
voidaddDataBufferListener(org.apache.harmony.awt.gl.image.DataBufferListener listener)
Adds the data buffer listener.

param
listener the listener.

        this.listener = listener;
    
public intgetDataType()
Gets the primitive type of this buffer's data.

return
the data type.

        return this.dataType;
    
public static intgetDataTypeSize(int type)
Gets the size in bits of the primitive data type.

param
type the primitive type.
return
the size in bits of the primitive data type.

        switch (type) {

            case TYPE_BYTE:
                return 8;

            case TYPE_USHORT:
            case TYPE_SHORT:
                return 16;

            case TYPE_INT:
            case TYPE_FLOAT:
                return 32;

            case TYPE_DOUBLE:
                return 64;

            default:
                // awt.22C=Unknown data type {0}
                throw new IllegalArgumentException(Messages.getString("awt.22C", type)); //$NON-NLS-1$
        }
    
public intgetElem(int i)
Gets the data value from the first data array at the specified index and returns it as an integer.

param
i the index within the array where the data should be read.
return
the data element.

        return getElem(0, i);
    
public abstract intgetElem(int bank, int i)
Gets the data value from the specified data array at the specified index.

param
bank the data array to read from.
param
i the index within the array where the data should be read.
return
the data element.

public doublegetElemDouble(int bank, int i)
Gets the double-type data value from the specified data array at the specified index.

param
bank the data array to read from.
param
i the index within the array where the data should be read.
return
the data element.

        return getElem(bank, i);
    
public doublegetElemDouble(int i)
Gets the data value from the first data array at the specified index and returns it as a double.

param
i the index within the array where the data should be read.
return
the data element.

        return getElem(i);
    
public floatgetElemFloat(int bank, int i)
Gets the float-type data value from the specified data array at the specified index.

param
bank the data array to read from.
param
i the index within the array where the data should be read.
return
the data element.

        return getElem(bank, i);
    
public floatgetElemFloat(int i)
Gets the data value from the first data array at the specified index and returns it as a float.

param
i the index within the array where the data should be read.
return
the data element.

        return getElem(0, i);
    
public intgetNumBanks()
Gets the number of data arrays in this DataBuffer.

return
the number of data arrays.

        return banks;
    
public intgetOffset()
Gets the offset corresponding to the first internal data array.

return
the offset.

        return offset;
    
public int[]getOffsets()
Gets the array giving the offsets corresponding to the internal data arrays.

return
the array of offsets.

        return offsets;
    
public intgetSize()
Gets the size in bits of the primitive data type.

return
the size in bits of the primitive data type.

        return size;
    
voidnotifyChanged()
Notifies the listener that the data has changed.

        if (listener != null && !dataChanged) {
            dataChanged = true;
            listener.dataChanged();
        }
    
voidnotifyTaken()
Notifies the listener that the data has been released.

        if (listener != null && !dataTaken) {
            dataTaken = true;
            listener.dataTaken();
        }
    
voidreleaseData()
Release the data.

        if (listener != null && dataTaken) {
            dataTaken = false;
            listener.dataReleased();
        }
    
voidremoveDataBufferListener()
Removes the data buffer listener.

        listener = null;
    
public abstract voidsetElem(int bank, int i, int val)
Sets the data value in the specified array at the specified index.

param
bank the internal array to the data to.
param
i the index within the array where the data should be written.
param
val the value to write into the array.

public voidsetElem(int i, int val)
Sets the data value in the first array at the specified index.

param
i the index within the array where the data should be written.
param
val the value to write into the array.

        setElem(0, i, val);
    
public voidsetElemDouble(int i, double val)
Sets the double data value in the first array at the specified index.

param
i the index within the array where the data should be written.
param
val the value to write into the array.

        setElemDouble(0, i, val);
    
public voidsetElemDouble(int bank, int i, double val)
Sets the double data value in the specified array at the specified index.

param
bank the internal array to the data to.
param
i the index within the array where the data should be written.
param
val the value to write into the array.

        setElem(bank, i, (int)val);
    
public voidsetElemFloat(int i, float val)
Sets the float data value in the first array at the specified index.

param
i the index within the array where the data should be written.
param
val the value to write into the array.

        setElemFloat(0, i, val);
    
public voidsetElemFloat(int bank, int i, float val)
Sets the float data value in the specified array at the specified index.

param
bank the internal array to the data to.
param
i the index within the array where the data should be written.
param
val the value to write into the array.

        setElem(bank, i, (int)val);
    
voidvalidate()
Validate.

        dataChanged = false;