diff options
Diffstat (limited to 'awt/java/awt/image/SampleModel.java')
-rw-r--r-- | awt/java/awt/image/SampleModel.java | 1166 |
1 files changed, 0 insertions, 1166 deletions
diff --git a/awt/java/awt/image/SampleModel.java b/awt/java/awt/image/SampleModel.java deleted file mode 100644 index c967fa6..0000000 --- a/awt/java/awt/image/SampleModel.java +++ /dev/null @@ -1,1166 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Igor V. Stolyarov - * @version $Revision$ - */ - -package java.awt.image; - -import org.apache.harmony.awt.internal.nls.Messages; - -/** - * The SampleModel class is abstract class for retrieving pixel's samples in the - * data of an image. Each pixel contains several samples. A sample is the set of - * values of the bands for single pixel. For example, each pixel in the RGB - * model contains three samples and there are three corresponding bands in the - * image data of such pixels representing red, green and blue components. - * <p> - * The image data is represented as a Raster with a DataBuffer and a - * SampleModel. The SampleModel allows access to the samples in the DataBuffer. - * - * @since Android 1.0 - */ -public abstract class SampleModel { - - /** - * The width of the image data which this SampleModel describes. - */ - protected int width; - - /** - * The height of the image data which this SampleModel describes. - */ - protected int height; - - /** - * The number of bands of image data which this SampleModel describes. - */ - protected int numBands; - - /** - * The data type of the image data which this SampleModel describes. - */ - protected int dataType; - - /** - * Instantiates a new SampleModel with the specified data type, width, - * height and number of bands. - * - * @param dataType - * the data type of the image data. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param numBands - * the number of bands of the image data. - */ - public SampleModel(int dataType, int w, int h, int numBands) { - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new IllegalArgumentException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - double squre = ((double)w) * ((double)h); - if (squre >= Integer.MAX_VALUE) { - // awt.22F=The product of w and h is greater than Integer.MAX_VALUE - throw new IllegalArgumentException(Messages.getString("awt.22F")); //$NON-NLS-1$ - } - - if (dataType < DataBuffer.TYPE_BYTE || dataType > DataBuffer.TYPE_DOUBLE - && dataType != DataBuffer.TYPE_UNDEFINED) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - if (numBands < 1) { - // awt.231=Number of bands must be more then 0 - throw new IllegalArgumentException(Messages.getString("awt.231")); //$NON-NLS-1$ - } - - this.dataType = dataType; - this.width = w; - this.height = h; - this.numBands = numBands; - - } - - /** - * Gets the data array for the specified pixel of the specified DataBuffer - * with one of the following types: DataBuffer.TYPE_BYTE, - * DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, - * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param obj - * the Object is a data where the result will be stored. - * @param data - * the image data. - * @return the data array for the specified pixel of the specified - * DataBuffer. - */ - public abstract Object getDataElements(int x, int y, Object obj, DataBuffer data); - - /** - * Gets the array of pixel data for the specified rectangular area of pixels - * of the specified DataBuffer with one of the following types: - * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, - * DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. - * - * @param x - * the X coordinate of the rectangular pixel area. - * @param y - * the Y coordinate of the rectangular pixel area. - * @param w - * the width of the rectangular pixel area. - * @param h - * the height of the rectangular pixel area. - * @param obj - * the Object is an array with the primitive type, where the - * result array will be stored. - * @param data - * the image data. - * @return the array of pixel data for the specified rectangular area of - * pixels of the specified DataBuffer object. - */ - public Object getDataElements(int x, int y, int w, int h, Object obj, DataBuffer data) { - int numDataElements = getNumDataElements(); - int idx = 0; - - switch (getTransferType()) { - case DataBuffer.TYPE_BYTE: - byte bdata[]; - byte bbuf[] = null; - - if (obj == null) { - bdata = new byte[numDataElements * w * h]; - } else { - bdata = (byte[])obj; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - bbuf = (byte[])getDataElements(j, i, bbuf, data); - for (int n = 0; n < numDataElements; n++) { - bdata[idx++] = bbuf[n]; - } - } - } - obj = bdata; - break; - - case DataBuffer.TYPE_SHORT: - case DataBuffer.TYPE_USHORT: - short sdata[]; - short sbuf[] = null; - - if (obj == null) { - sdata = new short[numDataElements * w * h]; - } else { - sdata = (short[])obj; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - sbuf = (short[])getDataElements(j, i, sbuf, data); - for (int n = 0; n < numDataElements; n++) { - sdata[idx++] = sbuf[n]; - } - } - } - obj = sdata; - break; - - case DataBuffer.TYPE_INT: - int idata[]; - int ibuf[] = null; - - if (obj == null) { - idata = new int[numDataElements * w * h]; - } else { - idata = (int[])obj; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - ibuf = (int[])getDataElements(j, i, ibuf, data); - for (int n = 0; n < numDataElements; n++) { - idata[idx++] = ibuf[n]; - } - } - } - obj = idata; - break; - - case DataBuffer.TYPE_FLOAT: - float fdata[]; - float fbuf[] = null; - - if (obj == null) { - fdata = new float[numDataElements * w * h]; - } else { - fdata = (float[])obj; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - fbuf = (float[])getDataElements(j, i, fbuf, data); - for (int n = 0; n < numDataElements; n++) { - fdata[idx++] = fbuf[n]; - } - } - } - obj = fdata; - break; - - case DataBuffer.TYPE_DOUBLE: - double ddata[]; - double dbuf[] = null; - - if (obj == null) { - ddata = new double[numDataElements * w * h]; - } else { - ddata = (double[])obj; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - dbuf = (double[])getDataElements(j, i, dbuf, data); - for (int n = 0; n < numDataElements; n++) { - ddata[idx++] = dbuf[n]; - } - } - } - obj = ddata; - break; - - } - - return obj; - } - - /** - * Sets the data for a single pixel in the specified DataBuffer from a - * primitive array with one of the following types: DataBuffer.TYPE_BYTE, - * DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, - * DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param obj - * the Object - the array of primitive pixel data to be set. - * @param data - * the image data. - */ - public abstract void setDataElements(int x, int y, Object obj, DataBuffer data); - - /** - * Sets the data elements for a rectangular area of pixels in the specified - * DataBuffer from a primitive array with one of the following types: - * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, - * DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. - * - * @param x - * the X coordinate of the specified rectangular area. - * @param y - * the Y coordinate of the specified rectangular area. - * @param w - * the width of rectangle. - * @param h - * the height of rectangle. - * @param obj - * the Object - the array of primitive pixel data to be set. - * @param data - * the image data. - */ - public void setDataElements(int x, int y, int w, int h, Object obj, DataBuffer data) { - int numDataElements = getNumDataElements(); - int idx = 0; - - switch (getTransferType()) { - case DataBuffer.TYPE_BYTE: - byte bbuf[] = new byte[numDataElements]; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numDataElements; n++) { - bbuf[n] = ((byte[])obj)[idx++]; - } - setDataElements(j, i, bbuf, data); - } - } - - break; - - case DataBuffer.TYPE_SHORT: - case DataBuffer.TYPE_USHORT: - short sbuf[] = new short[numDataElements]; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numDataElements; n++) { - sbuf[n] = ((short[])obj)[idx++]; - } - setDataElements(j, i, sbuf, data); - } - } - break; - - case DataBuffer.TYPE_INT: - int ibuf[] = new int[numDataElements]; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numDataElements; n++) { - ibuf[n] = ((int[])obj)[idx++]; - } - setDataElements(j, i, ibuf, data); - } - } - break; - - case DataBuffer.TYPE_FLOAT: - float fbuf[] = new float[numDataElements]; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numDataElements; n++) { - fbuf[n] = ((float[])obj)[idx++]; - } - setDataElements(j, i, fbuf, data); - } - } - break; - - case DataBuffer.TYPE_DOUBLE: - double dbuf[] = new double[numDataElements]; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numDataElements; n++) { - dbuf[n] = ((double[])obj)[idx++]; - } - setDataElements(j, i, dbuf, data); - } - } - break; - - } - } - - /** - * Creates a new SampleModel with the specified bands of this SampleModel. - * - * @param bands - * the array of bands from this SampleModel. - * @return the SampleModel with the specified bands of this SampleModel. - */ - public abstract SampleModel createSubsetSampleModel(int bands[]); - - /** - * Creates the SampleModel which has the same data as in this SampleModel - * with a different width and height. - * - * @param a0 - * the width of the image data. - * @param a1 - * the height of the image data. - * @return the SampleModel which has the same data as in this SampleModel - * with a different width and height. - */ - public abstract SampleModel createCompatibleSampleModel(int a0, int a1); - - /** - * Gets the samples of the specified pixel as an integer array. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param iArray - * the integer array where result will be stored. - * @param data - * the image data. - * @return the integer array with the samples of the specified pixel. - */ - public int[] getPixel(int x, int y, int iArray[], DataBuffer data) { - if (x < 0 || y < 0 || x >= this.width || y >= this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - int pixel[]; - - if (iArray == null) { - pixel = new int[numBands]; - } else { - pixel = iArray; - } - - for (int i = 0; i < numBands; i++) { - pixel[i] = getSample(x, y, i, data); - } - - return pixel; - } - - /** - * Sets a pixel of the DataBuffer from a integer array of samples. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param iArray - * the integer array. - * @param data - * the image data. - */ - public void setPixel(int x, int y, int iArray[], DataBuffer data) { - if (x < 0 || y < 0 || x >= this.width || y >= this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - for (int i = 0; i < numBands; i++) { - setSample(x, y, i, iArray[i], data); - } - } - - /** - * Gets the samples of the specified pixel as a float array. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param fArray - * the float array where result will be stored. - * @param data - * the image data. - * @return the float array with the samples of the specified pixel. - */ - public float[] getPixel(int x, int y, float fArray[], DataBuffer data) { - if (x < 0 || y < 0 || x >= this.width || y >= this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - float pixel[]; - - if (fArray == null) { - pixel = new float[numBands]; - } else { - pixel = fArray; - } - - for (int i = 0; i < numBands; i++) { - pixel[i] = getSampleFloat(x, y, i, data); - } - - return pixel; - } - - /** - * Sets a pixel of the DataBuffer from a float array of samples. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param fArray - * the float array. - * @param data - * the image data. - */ - public void setPixel(int x, int y, float fArray[], DataBuffer data) { - if (x < 0 || y < 0 || x >= this.width || y >= this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - for (int i = 0; i < numBands; i++) { - setSample(x, y, i, fArray[i], data); - } - } - - /** - * Gets the samples of the specified pixel as a double array. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param dArray - * the double array where result will be stored. - * @param data - * the image data. - * @return the double array with the samples of the specified pixel. - */ - public double[] getPixel(int x, int y, double dArray[], DataBuffer data) { - if (x < 0 || y < 0 || x >= this.width || y >= this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - double pixel[]; - - if (dArray == null) { - pixel = new double[numBands]; - } else { - pixel = dArray; - } - - for (int i = 0; i < numBands; i++) { - pixel[i] = getSampleDouble(x, y, i, data); - } - - return pixel; - } - - /** - * Sets a pixel of the DataBuffer from a double array of samples. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param dArray - * the double array. - * @param data - * the image data. - */ - public void setPixel(int x, int y, double dArray[], DataBuffer data) { - if (x < 0 || y < 0 || x >= this.width || y >= this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - for (int i = 0; i < numBands; i++) { - setSample(x, y, i, dArray[i], data); - } - } - - /** - * Gets the sample of a specified band for the specified pixel as an - * integer. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param b - * the specified band. - * @param data - * the image data. - * @return the sample of a specified band for the specified pixel. - */ - public abstract int getSample(int x, int y, int b, DataBuffer data); - - /** - * Gets the sample of a specified band for the specified pixel as a float. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param b - * the specified band. - * @param data - * the image data. - * @return the sample of a specified band for the specified pixel. - */ - public float getSampleFloat(int x, int y, int b, DataBuffer data) { - return getSample(x, y, b, data); - } - - /** - * Gets the sample of a specified band for the specified pixel as a double. - * - * @param x - * the X coordinate of pixel. - * @param y - * the Y coordinate of pixel. - * @param b - * the specified band. - * @param data - * the image data. - * @return the sample of a specified band for the specified pixel. - */ - public double getSampleDouble(int x, int y, int b, DataBuffer data) { - return getSample(x, y, b, data); - } - - /** - * Gets the samples of the specified rectangular area of pixels as an - * integer array. - * - * @param x - * the X coordinate of the rectangle of pixels. - * @param y - * the Y coordinate of the rectangle of pixels. - * @param w - * the width of the rectangle of pixels. - * @param h - * the height of the rectangle of pixels. - * @param iArray - * the integer array where result will be stored. - * @param data - * the image data. - * @return the integer array with the samples of the specified rectangular - * area of pixels. - */ - public int[] getPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) { - if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - int pixels[]; - int idx = 0; - - if (iArray == null) { - pixels = new int[w * h * numBands]; - } else { - pixels = iArray; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numBands; n++) { - pixels[idx++] = getSample(j, i, n, data); - } - } - } - return pixels; - } - - /** - * Sets all of the samples for a rectangular area of pixels of the - * DataBuffer from an integer array. - * - * @param x - * the X coordinate of the rectangle of pixels. - * @param y - * the Y coordinate of the rectangle of pixels. - * @param w - * the width of the rectangle of pixels. - * @param h - * the height of the rectangle of pixels. - * @param iArray - * the integer array. - * @param data - * the image data. - */ - public void setPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) { - if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - int idx = 0; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numBands; n++) { - setSample(j, i, n, iArray[idx++], data); - } - } - } - } - - /** - * Gets the samples of the specified rectangular area of pixels as a float - * array. - * - * @param x - * the X coordinate of the rectangle of pixels. - * @param y - * the Y coordinate of the rectangle of pixels. - * @param w - * the width of the rectangle of pixels. - * @param h - * the height of the rectangle of pixels. - * @param fArray - * the float array where result will be stored. - * @param data - * the image data. - * @return the float array with the samples of the specified rectangular - * area of pixels. - */ - public float[] getPixels(int x, int y, int w, int h, float fArray[], DataBuffer data) { - if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - float pixels[]; - int idx = 0; - - if (fArray == null) { - pixels = new float[w * h * numBands]; - } else { - pixels = fArray; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numBands; n++) { - pixels[idx++] = getSampleFloat(j, i, n, data); - } - } - } - return pixels; - } - - /** - * Sets all of the samples for a rectangular area of pixels of the - * DataBuffer from a float array. - * - * @param x - * the X coordinate of the rectangle of pixels. - * @param y - * the Y coordinate of the rectangle of pixels. - * @param w - * the width of the rectangle of pixels. - * @param h - * the height of the rectangle of pixels. - * @param fArray - * the float array. - * @param data - * the image data. - */ - public void setPixels(int x, int y, int w, int h, float fArray[], DataBuffer data) { - if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - int idx = 0; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numBands; n++) { - setSample(j, i, n, fArray[idx++], data); - } - } - } - } - - /** - * Gets the samples of the specified rectangular area of pixels as a double - * array. - * - * @param x - * the X coordinate of the rectangle of pixels. - * @param y - * the Y coordinate of the rectangle of pixels. - * @param w - * the width of the rectangle of pixels. - * @param h - * the height of the rectangle of pixels. - * @param dArray - * the double array where result will be stored. - * @param data - * the image data. - * @return the double array with the samples of the specified rectangular - * area of pixels. - */ - public double[] getPixels(int x, int y, int w, int h, double dArray[], DataBuffer data) { - if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - double pixels[]; - int idx = 0; - - if (dArray == null) { - pixels = new double[w * h * numBands]; - } else { - pixels = dArray; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numBands; n++) { - pixels[idx++] = getSampleDouble(j, i, n, data); - } - } - } - return pixels; - } - - /** - * Sets all of the samples for a rectangular area of pixels of the - * DataBuffer from a double array. - * - * @param x - * the X coordinate of the rectangle of pixels. - * @param y - * the Y coordinate of the rectangle of pixels. - * @param w - * the width of the rectangle of pixels. - * @param h - * the height of the rectangle of pixels. - * @param dArray - * the double array. - * @param data - * the image data. - */ - public void setPixels(int x, int y, int w, int h, double dArray[], DataBuffer data) { - if (x < 0 || y < 0 || x + w > this.width || y + h > this.height) { - // awt.63=Coordinates are not in bounds - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.63")); //$NON-NLS-1$ - } - int idx = 0; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - for (int n = 0; n < numBands; n++) { - setSample(j, i, n, dArray[idx++], data); - } - } - } - } - - /** - * Sets a sample of the specified band for the specified pixel in the - * DataBuffer as integer value. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param b - * the specified band. - * @param s - * the sample as an integer value. - * @param data - * the image data. - */ - public abstract void setSample(int x, int y, int b, int s, DataBuffer data); - - /** - * Gets the samples of a specified band for a specified rectangular area of - * pixels as a integer array. - * - * @param x - * the X coordinate of the rectangle. - * @param y - * the Y coordinate of the rectangle. - * @param w - * the width of the rectangle. - * @param h - * the height of the rectangle. - * @param b - * the specified band. - * @param iArray - * the integer array where result will be stored. - * @param data - * the image data. - * @return the samples of a specified band for a specified rectangular area - * of pixels. - */ - public int[] getSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) { - int samples[]; - int idx = 0; - - if (iArray == null) { - samples = new int[w * h]; - } else { - samples = iArray; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - samples[idx++] = getSample(j, i, b, data); - } - } - - return samples; - } - - /** - * Sets the samples from an integer array in the specified band for the - * specified rectangle of pixels. - * - * @param x - * the X coordinate of the rectangle. - * @param y - * the Y coordinate of the rectangle. - * @param w - * the width of the rectangle. - * @param h - * the height of the rectangle. - * @param b - * the specified band. - * @param iArray - * the integer array. - * @param data - * the image data. - */ - public void setSamples(int x, int y, int w, int h, int b, int iArray[], DataBuffer data) { - int idx = 0; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - setSample(j, i, b, iArray[idx++], data); - } - } - } - - /** - * Gets the samples of a specified band for a specified rectangular area of - * pixels as a float array. - * - * @param x - * the X coordinate of the rectangle. - * @param y - * the Y coordinate of the rectangle. - * @param w - * the width of the rectangle. - * @param h - * the height of the rectangle. - * @param b - * the specified band. - * @param fArray - * the float array where result will be stored. - * @param data - * the image data. - * @return the samples of a specified band for a specified rectangular area - * of pixels. - */ - public float[] getSamples(int x, int y, int w, int h, int b, float fArray[], DataBuffer data) { - float samples[]; - int idx = 0; - - if (fArray == null) { - samples = new float[w * h]; - } else { - samples = fArray; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - samples[idx++] = getSampleFloat(j, i, b, data); - } - } - - return samples; - } - - /** - * Sets the samples from an float array in the specified band for the - * specified rectangle of pixels. - * - * @param x - * the X coordinate of the rectangle. - * @param y - * the Y coordinate of the rectangle. - * @param w - * the width of the rectangle. - * @param h - * the height of the rectangle. - * @param b - * the specified band. - * @param fArray - * the float array. - * @param data - * the image data. - */ - public void setSamples(int x, int y, int w, int h, int b, float fArray[], DataBuffer data) { - int idx = 0; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - setSample(j, i, b, fArray[idx++], data); - } - } - } - - /** - * Gets the samples of a specified band for a specified rectangular area of - * pixels as a double array. - * - * @param x - * the X coordinate of the rectangle. - * @param y - * the Y coordinate of the rectangle. - * @param w - * the width of the rectangle. - * @param h - * the height of the rectangle. - * @param b - * the specified band. - * @param dArray - * the double array where result will be stored. - * @param data - * the image data. - * @return the samples of a specified band for a specified rectangular area - * of pixels. - */ - public double[] getSamples(int x, int y, int w, int h, int b, double dArray[], DataBuffer data) { - double samples[]; - int idx = 0; - - if (dArray == null) { - samples = new double[w * h]; - } else { - samples = dArray; - } - - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - samples[idx++] = getSampleDouble(j, i, b, data); - } - } - - return samples; - } - - /** - * Sets the samples from an double array in the specified band for the - * specified rectangle of pixels. - * - * @param x - * the X coordinate of the rectangle. - * @param y - * the Y coordinate of the rectangle. - * @param w - * the width of the rectangle. - * @param h - * the height of the rectangle. - * @param b - * the specified band. - * @param dArray - * the double array. - * @param data - * the image data. - */ - public void setSamples(int x, int y, int w, int h, int b, double dArray[], DataBuffer data) { - int idx = 0; - for (int i = y; i < y + h; i++) { - for (int j = x; j < x + w; j++) { - setSample(j, i, b, dArray[idx++], data); - } - } - } - - /** - * Sets a sample of the specified band for the specified pixel in the - * DataBuffer as float value. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param b - * the specified band. - * @param s - * the sample as float value. - * @param data - * the image data. - */ - public void setSample(int x, int y, int b, float s, DataBuffer data) { - setSample(x, y, b, (int)s, data); - } - - /** - * Sets a sample of the specified band for the specified pixel in the - * DataBuffer as double value. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param b - * the specified band. - * @param s - * the sample as double value. - * @param data - * the image data. - */ - public void setSample(int x, int y, int b, double s, DataBuffer data) { - setSample(x, y, b, (int)s, data); - } - - /** - * Creates a DataBuffer object which corresponds to the SampleModel. - * - * @return the DataBuffer object which corresponds to the SampleModel. - */ - public abstract DataBuffer createDataBuffer(); - - /** - * Gets the sample size in bits for the specified band. - * - * @param band - * the specified band. - * @return the sample size in bits for the specified band. - */ - public abstract int getSampleSize(int band); - - /** - * Gets an array of the sample size in bits for all bands. - * - * @return an array of the sample size in bits for all bands. - */ - public abstract int[] getSampleSize(); - - /** - * Gets the width of the image data of this SampleModel object. - * - * @return the width of the image data of this SampleModel object. - */ - public final int getWidth() { - return width; - } - - /** - * Gets the transfer type used to transfer pixels via the getDataElements - * and setDataElements methods. Transfer type value can be one of the - * predefined type from DataBuffer class or not. - * - * @return the transfer type. - */ - public int getTransferType() { - return dataType; - } - - /** - * Returns the number of data elements for pixel transferring via the - * getDataElements and setDataElements methods. - * - * @return the number of data elements for pixel transferring via the - * getDataElements and setDataElements methods. - */ - public abstract int getNumDataElements(); - - /** - * Gets the number of bands in the image data of this SampleModel object. - * - * @return the number of bands in the image data of this SampleModel object. - */ - public final int getNumBands() { - return numBands; - } - - /** - * Gets the height of the image data of this SampleModel object. - * - * @return the height of the image data of this SampleModel object. - */ - public final int getHeight() { - return height; - } - - /** - * Gets the data type of image data of this SampleModel object. - * - * @return the data type of image data of this SampleModel object. - */ - public final int getDataType() { - return dataType; - } - -} |