157 * <p> 158 * Note that {@code DataBuffer} objects created by this constructor 159 * may be incompatible with <a href="#optimizations">performance 160 * optimizations</a> used by some implementations (such as caching 161 * an associated image in video memory). 162 * 163 * @param dataArray The unsigned-short arrays for the <CODE>DataBuffer</CODE>. 164 * @param size The size of the banks in the <CODE>DataBuffer</CODE>. 165 */ 166 public DataBufferUShort(short dataArray[][], int size) { 167 super(UNTRACKABLE, TYPE_USHORT, size, dataArray.length); 168 if (dataArray == null) { 169 throw new NullPointerException("dataArray is null"); 170 } 171 for (int i=0; i < dataArray.length; i++) { 172 if (dataArray[i] == null) { 173 throw new NullPointerException("dataArray["+i+"] is null"); 174 } 175 } 176 177 bankdata = (short[][]) dataArray.clone(); 178 data = bankdata[0]; 179 } 180 181 /** 182 * Constructs an unsigned-short based <CODE>DataBuffer</CODE> with specified arrays, 183 * size, and offsets. 184 * The number of banks is equal to <CODE>dataArray.length</CODE>. Each array must 185 * be at least as large as <CODE>size</CODE> + the corresponding offset. There must 186 * be an entry in the offset array for each <CODE>dataArray</CODE> entry. For each 187 * bank, only elements <CODE>offset</CODE> through 188 * <CODE>offset</CODE> + <CODE>size</CODE> - 1 should be 189 * used by accessors of this <CODE>DataBuffer</CODE>. 190 * <p> 191 * Note that {@code DataBuffer} objects created by this constructor 192 * may be incompatible with <a href="#optimizations">performance 193 * optimizations</a> used by some implementations (such as caching 194 * an associated image in video memory). 195 * 196 * @param dataArray The unsigned-short arrays for the <CODE>DataBuffer</CODE>. 197 * @param size The size of the banks in the <CODE>DataBuffer</CODE>. 198 * @param offsets The offsets into each array. 199 */ 200 public DataBufferUShort(short dataArray[][], int size, int offsets[]) { 201 super(UNTRACKABLE, TYPE_USHORT, size, dataArray.length, offsets); 202 if (dataArray == null) { 203 throw new NullPointerException("dataArray is null"); 204 } 205 for (int i=0; i < dataArray.length; i++) { 206 if (dataArray[i] == null) { 207 throw new NullPointerException("dataArray["+i+"] is null"); 208 } 209 if ((size+offsets[i]) > dataArray[i].length) { 210 throw new IllegalArgumentException("Length of dataArray["+i+ 211 "] is less than size+"+ 212 "offsets["+i+"]."); 213 } 214 215 } 216 bankdata = (short[][]) dataArray.clone(); 217 data = bankdata[0]; 218 } 219 220 /** 221 * Returns the default (first) unsigned-short data array. 222 * <p> 223 * Note that calling this method may cause this {@code DataBuffer} 224 * object to be incompatible with <a href="#optimizations">performance 225 * optimizations</a> used by some implementations (such as caching 226 * an associated image in video memory). 227 * 228 * @return The first unsigned-short data array. 229 */ 230 public short[] getData() { 231 theTrackable.setUntrackable(); 232 return data; 233 } 234 235 /** 236 * Returns the data array for the specified bank. 243 * @param bank The bank whose data array you want to get. 244 * @return The data array for the specified bank. 245 */ 246 public short[] getData(int bank) { 247 theTrackable.setUntrackable(); 248 return bankdata[bank]; 249 } 250 251 /** 252 * Returns the data arrays for all banks. 253 * <p> 254 * Note that calling this method may cause this {@code DataBuffer} 255 * object to be incompatible with <a href="#optimizations">performance 256 * optimizations</a> used by some implementations (such as caching 257 * an associated image in video memory). 258 * 259 * @return All of the data arrays. 260 */ 261 public short[][] getBankData() { 262 theTrackable.setUntrackable(); 263 return (short[][]) bankdata.clone(); 264 } 265 266 /** 267 * Returns the requested data array element from the first (default) bank. 268 * 269 * @param i The data array element you want to get. 270 * @return The requested data array element as an integer. 271 * @see #setElem(int, int) 272 * @see #setElem(int, int, int) 273 */ 274 public int getElem(int i) { 275 return (int)(data[i+offset]&0xffff); 276 } 277 278 /** 279 * Returns the requested data array element from the specified bank. 280 * 281 * @param bank The bank from which you want to get a data array element. 282 * @param i The data array element you want to get. 283 * @return The requested data array element as an integer. 284 * @see #setElem(int, int) 285 * @see #setElem(int, int, int) 286 */ 287 public int getElem(int bank, int i) { 288 return (int)(bankdata[bank][i+offsets[bank]]&0xffff); 289 } 290 291 /** 292 * Sets the requested data array element in the first (default) bank 293 * to the specified value. 294 * 295 * @param i The data array element you want to set. 296 * @param val The integer value to which you want to set the data array element. 297 * @see #getElem(int) 298 * @see #getElem(int, int) 299 */ 300 public void setElem(int i, int val) { 301 data[i+offset] = (short)(val&0xffff); 302 theTrackable.markDirty(); 303 } 304 305 /** 306 * Sets the requested data array element in the specified bank 307 * from the given integer. 308 * @param bank The bank in which you want to set the data array element. | 157 * <p> 158 * Note that {@code DataBuffer} objects created by this constructor 159 * may be incompatible with <a href="#optimizations">performance 160 * optimizations</a> used by some implementations (such as caching 161 * an associated image in video memory). 162 * 163 * @param dataArray The unsigned-short arrays for the <CODE>DataBuffer</CODE>. 164 * @param size The size of the banks in the <CODE>DataBuffer</CODE>. 165 */ 166 public DataBufferUShort(short dataArray[][], int size) { 167 super(UNTRACKABLE, TYPE_USHORT, size, dataArray.length); 168 if (dataArray == null) { 169 throw new NullPointerException("dataArray is null"); 170 } 171 for (int i=0; i < dataArray.length; i++) { 172 if (dataArray[i] == null) { 173 throw new NullPointerException("dataArray["+i+"] is null"); 174 } 175 } 176 177 bankdata = dataArray.clone(); 178 data = bankdata[0]; 179 } 180 181 /** 182 * Constructs an unsigned-short based <CODE>DataBuffer</CODE> with specified arrays, 183 * size, and offsets. 184 * The number of banks is equal to <CODE>dataArray.length</CODE>. Each array must 185 * be at least as large as <CODE>size</CODE> + the corresponding offset. There must 186 * be an entry in the offset array for each <CODE>dataArray</CODE> entry. For each 187 * bank, only elements <CODE>offset</CODE> through 188 * <CODE>offset</CODE> + <CODE>size</CODE> - 1 should be 189 * used by accessors of this <CODE>DataBuffer</CODE>. 190 * <p> 191 * Note that {@code DataBuffer} objects created by this constructor 192 * may be incompatible with <a href="#optimizations">performance 193 * optimizations</a> used by some implementations (such as caching 194 * an associated image in video memory). 195 * 196 * @param dataArray The unsigned-short arrays for the <CODE>DataBuffer</CODE>. 197 * @param size The size of the banks in the <CODE>DataBuffer</CODE>. 198 * @param offsets The offsets into each array. 199 */ 200 public DataBufferUShort(short dataArray[][], int size, int offsets[]) { 201 super(UNTRACKABLE, TYPE_USHORT, size, dataArray.length, offsets); 202 if (dataArray == null) { 203 throw new NullPointerException("dataArray is null"); 204 } 205 for (int i=0; i < dataArray.length; i++) { 206 if (dataArray[i] == null) { 207 throw new NullPointerException("dataArray["+i+"] is null"); 208 } 209 if ((size+offsets[i]) > dataArray[i].length) { 210 throw new IllegalArgumentException("Length of dataArray["+i+ 211 "] is less than size+"+ 212 "offsets["+i+"]."); 213 } 214 215 } 216 bankdata = dataArray.clone(); 217 data = bankdata[0]; 218 } 219 220 /** 221 * Returns the default (first) unsigned-short data array. 222 * <p> 223 * Note that calling this method may cause this {@code DataBuffer} 224 * object to be incompatible with <a href="#optimizations">performance 225 * optimizations</a> used by some implementations (such as caching 226 * an associated image in video memory). 227 * 228 * @return The first unsigned-short data array. 229 */ 230 public short[] getData() { 231 theTrackable.setUntrackable(); 232 return data; 233 } 234 235 /** 236 * Returns the data array for the specified bank. 243 * @param bank The bank whose data array you want to get. 244 * @return The data array for the specified bank. 245 */ 246 public short[] getData(int bank) { 247 theTrackable.setUntrackable(); 248 return bankdata[bank]; 249 } 250 251 /** 252 * Returns the data arrays for all banks. 253 * <p> 254 * Note that calling this method may cause this {@code DataBuffer} 255 * object to be incompatible with <a href="#optimizations">performance 256 * optimizations</a> used by some implementations (such as caching 257 * an associated image in video memory). 258 * 259 * @return All of the data arrays. 260 */ 261 public short[][] getBankData() { 262 theTrackable.setUntrackable(); 263 return bankdata.clone(); 264 } 265 266 /** 267 * Returns the requested data array element from the first (default) bank. 268 * 269 * @param i The data array element you want to get. 270 * @return The requested data array element as an integer. 271 * @see #setElem(int, int) 272 * @see #setElem(int, int, int) 273 */ 274 public int getElem(int i) { 275 return data[i+offset]&0xffff; 276 } 277 278 /** 279 * Returns the requested data array element from the specified bank. 280 * 281 * @param bank The bank from which you want to get a data array element. 282 * @param i The data array element you want to get. 283 * @return The requested data array element as an integer. 284 * @see #setElem(int, int) 285 * @see #setElem(int, int, int) 286 */ 287 public int getElem(int bank, int i) { 288 return bankdata[bank][i+offsets[bank]]&0xffff; 289 } 290 291 /** 292 * Sets the requested data array element in the first (default) bank 293 * to the specified value. 294 * 295 * @param i The data array element you want to set. 296 * @param val The integer value to which you want to set the data array element. 297 * @see #getElem(int) 298 * @see #getElem(int, int) 299 */ 300 public void setElem(int i, int val) { 301 data[i+offset] = (short)(val&0xffff); 302 theTrackable.markDirty(); 303 } 304 305 /** 306 * Sets the requested data array element in the specified bank 307 * from the given integer. 308 * @param bank The bank in which you want to set the data array element. |