diff options
Diffstat (limited to 'libjava/java/awt/image/DataBufferByte.java')
-rw-r--r-- | libjava/java/awt/image/DataBufferByte.java | 115 |
1 files changed, 113 insertions, 2 deletions
diff --git a/libjava/java/awt/image/DataBufferByte.java b/libjava/java/awt/image/DataBufferByte.java index 84df5510607..c56be6b31dd 100644 --- a/libjava/java/awt/image/DataBufferByte.java +++ b/libjava/java/awt/image/DataBufferByte.java @@ -54,12 +54,27 @@ public final class DataBufferByte extends DataBuffer private byte[] data; private byte[][] bankData; + /** + * Creates a new data buffer with a single data bank containing the + * specified number of <code>byte</code> elements. + * + * @param size the number of elements in the data bank. + */ public DataBufferByte(int size) { - super(TYPE_BYTE, size); + super(TYPE_BYTE, size, 1, 0); + bankData = new byte[1][]; data = new byte[size]; + bankData[0] = data; } + /** + * Creates a new data buffer with the specified number of data banks, + * each containing the specified number of <code>byte</code> elements. + * + * @param size the number of elements in the data bank. + * @param numBanks the number of data banks. + */ public DataBufferByte(int size, int numBanks) { super(TYPE_BYTE, size, numBanks); @@ -67,18 +82,53 @@ public final class DataBufferByte extends DataBuffer data = bankData[0]; } + /** + * Creates a new data buffer backed by the specified data bank. + * <p> + * Note: there is no exception when <code>dataArray</code> is + * <code>null</code>, but in that case an exception will be thrown + * later if you attempt to access the data buffer. + * + * @param dataArray the data bank. + * @param size the number of elements in the data bank. + */ public DataBufferByte(byte[] dataArray, int size) { - super(TYPE_BYTE, size); + super(TYPE_BYTE, size, 1, 0); + bankData = new byte[1][]; data = dataArray; + bankData[0] = data; } + /** + * Creates a new data buffer backed by the specified data bank, with + * the specified offset to the first element. + * <p> + * Note: there is no exception when <code>dataArray</code> is + * <code>null</code>, but in that case an exception will be thrown + * later if you attempt to access the data buffer. + * + * @param dataArray the data bank. + * @param size the number of elements in the data bank. + * @param offset the offset to the first element in the array. + */ public DataBufferByte(byte[] dataArray, int size, int offset) { super(TYPE_BYTE, size, 1, offset); + bankData = new byte[1][]; data = dataArray; + bankData[0] = data; } + /** + * Creates a new data buffer backed by the specified data banks. + * + * @param dataArray the data banks. + * @param size the number of elements in the data bank. + * + * @throws NullPointerException if <code>dataArray</code> is + * <code>null</code>. + */ public DataBufferByte(byte[][] dataArray, int size) { super(TYPE_BYTE, size, dataArray.length); @@ -86,6 +136,17 @@ public final class DataBufferByte extends DataBuffer data = bankData[0]; } + /** + * Creates a new data buffer backed by the specified data banks, with + * the specified offsets to the first element in each bank. + * + * @param dataArray the data banks. + * @param size the number of elements in the data bank. + * @param offsets the offsets to the first element in each data bank. + * + * @throws NullPointerException if <code>dataArray</code> is + * <code>null</code>. + */ public DataBufferByte(byte[][] dataArray, int size, int[] offsets) { super(TYPE_BYTE, size, dataArray.length, offsets); @@ -93,37 +154,87 @@ public final class DataBufferByte extends DataBuffer data = bankData[0]; } + /** + * Returns the first data bank. + * + * @return The first data bank. + */ public byte[] getData() { return data; } + /** + * Returns a data bank. + * + * @param bank the bank index. + * @return A data bank. + */ public byte[] getData(int bank) { return bankData[bank]; } + /** + * Returns the array underlying this <code>DataBuffer</code>. + * + * @return The data banks. + */ public byte[][] getBankData() { return bankData; } + /** + * Returns an element from the first data bank. The offset (specified in + * the constructor) is added to <code>i</code> before accessing the + * underlying data array. + * + * @param i the element index. + * @return The element. + */ public int getElem(int i) { return data[i+offset] & 0xff; // get unsigned byte as int } + /** + * Returns an element from a particular data bank. The offset (specified in + * the constructor) is added to <code>i</code> before accessing the + * underlying data array. + * + * @param bank the bank index. + * @param i the element index. + * @return The element. + */ public int getElem(int bank, int i) { // get unsigned byte as int return bankData[bank][i+offsets[bank]] & 0xff; } + /** + * Sets an element in the first data bank. The offset (specified in the + * constructor) is added to <code>i</code> before updating the underlying + * data array. + * + * @param i the element index. + * @param val the new element value. + */ public void setElem(int i, int val) { data[i+offset] = (byte) val; } + /** + * Sets an element in a particular data bank. The offset (specified in the + * constructor) is added to <code>i</code> before updating the underlying + * data array. + * + * @param bank the data bank index. + * @param i the element index. + * @param val the new element value. + */ public void setElem(int bank, int i, int val) { bankData[bank][i+offsets[bank]] = (byte) val; |