public void setDataElements(int x, int y, Object obj, DataBuffer data)
public void setDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
  public void setDataElements(int x, int y, Object obj, DataBuffer data)  {    int offset = pixelStride*x + scanlineStride*y;		int[] totalBandDataOffsets = new int[numBands];		int[] bankOffsets = data.getOffsets();    for (int b=0; b<numBands; b++)      totalBandDataOffsets[b] =	bandOffsets[b]+bankOffsets[bankIndices[b]] + offset;    switch (getTransferType())      {      case DataBuffer.TYPE_BYTE:				{					DataBufferByte out = (DataBufferByte) data;					byte[] in = (byte[]) obj;	  for (int b=0; b<numBands; b++)						out.getData(bankIndices[b])[totalBandDataOffsets[b]] = in[b];					return;				}      case DataBuffer.TYPE_USHORT:				{					DataBufferUShort out = (DataBufferUShort) data;					short[] in = (short[]) obj;	  for (int b=0; b<numBands; b++)						out.getData(bankIndices[b])[totalBandDataOffsets[b]] = in[b];					return;				}      case DataBuffer.TYPE_SHORT:	{	  DataBufferShort out = (DataBufferShort) data;	  short[] in = (short[]) obj;	  	  for (int b=0; b<numBands; b++)	    out.getData(bankIndices[b])[totalBandDataOffsets[b]] = in[b];	  	  return;	}      case DataBuffer.TYPE_INT:				{					DataBufferInt out = (DataBufferInt) data;					int[] in = (int[]) obj;	  for (int b=0; b<numBands; b++)						out.getData(bankIndices[b])[totalBandDataOffsets[b]] = in[b];					return;				}      case DataBuffer.TYPE_FLOAT:	{	  DataBufferFloat out = (DataBufferFloat) data;	  float[] in = (float[]) obj;	  	  for (int b=0; b<numBands; b++)	    out.getData(bankIndices[b])[totalBandDataOffsets[b]] = in[b];	  	  return;	}      case DataBuffer.TYPE_DOUBLE:	{	  DataBufferDouble out = (DataBufferDouble) data;	  double[] in = (double[]) obj;	  	  for (int b=0; b<numBands; b++)	    out.getData(bankIndices[b])[totalBandDataOffsets[b]] = in[b];	  	  return;	}      default:	throw new UnsupportedOperationException("transfer type not " +						"implemented");		}	}