public class ComponentSampleModel extends SampleModel
DataBuffer.TYPE_BYTE,
DataBuffer.TYPE_USHORT, or
DataBuffer.TYPE_INT, respectively), data for which each sample is a signed integral number which can be stored in 16 bits (using
DataBuffer.TYPE_SHORT), or data for which each sample is a signed float or double quantity (using
DataBuffer.TYPE_FLOAT or
DataBuffer.TYPE_DOUBLE, respectively). All samples of a given ComponentSampleModel are stored with the same precision. All strides and offsets must be non-negative. This class supports
TYPE_BYTE,
TYPE_USHORT,
TYPE_SHORT,
TYPE_INT,
TYPE_FLOAT,
TYPE_DOUBLE,
PixelInterleavedSampleModel,
BandedSampleModel
| Modifier and Type | Field and Description |
|---|---|
protected int[] |
bandOffsets
Offsets for all bands in data array elements.
|
protected int[] |
bankIndices
Index for each bank storing a band of image data.
|
protected int |
numBands
The number of bands in this
ComponentSampleModel.
|
protected int |
numBanks
The number of banks in this
ComponentSampleModel.
|
protected int |
pixelStride
Pixel stride (in data array elements) of the region of image data described by this ComponentSampleModel.
|
protected int |
scanlineStride
Line stride (in data array elements) of the region of image data described by this ComponentSampleModel.
|
dataType, height, width| Constructor and Description |
|---|
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)
Constructs a ComponentSampleModel with the specified parameters.
|
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)
Constructs a ComponentSampleModel with the specified parameters.
|
| Modifier and Type | Method and Description |
|---|---|
SampleModel |
createCompatibleSampleModel(int w, int h)
Creates a new
ComponentSampleModel with the specified width and height.
|
DataBuffer |
createDataBuffer()
Creates a
DataBuffer that corresponds to this
ComponentSampleModel.
|
SampleModel |
createSubsetSampleModel(int[] bands)
Creates a new ComponentSampleModel with a subset of the bands of this ComponentSampleModel.
|
boolean |
equals(Object
Indicates whether some other object is "equal to" this one.
|
int[] |
getBandOffsets()
Returns the band offset for all bands.
|
int[] |
getBankIndices()
Returns the bank indices for all bands.
|
Object |
getDataElements(int x, int y, Object
Returns data for a single pixel in a primitive array of type
TransferType.
|
int |
getNumDataElements()
Returns the number of data elements needed to transfer a pixel with the
getDataElements(int, int, Object, DataBuffer) and
setDataElements(int, int, Object, DataBuffer) methods.
|
int |
getOffset(int x, int y)
Gets the offset for the first band of pixel (x,y).
|
int |
getOffset(int x, int y, int b)
Gets the offset for band b of pixel (x,y).
|
int[] |
getPixel(int x, int y, int[] iArray, DataBuffer
Returns all samples for the specified pixel in an int array, one sample per array element.
|
int[] |
getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer
Returns all samples for the specified rectangle of pixels in an int array, one sample per array element.
|
int |
getPixelStride()
Returns the pixel stride of this ComponentSampleModel.
|
int |
getSample(int x, int y, int b, DataBuffer
Returns as int the sample in a specified band for the pixel located at (x,y).
|
double |
getSampleDouble(int x, int y, int b, DataBuffer
Returns the sample in a specified band for a pixel located at (x,y) as a double.
|
float |
getSampleFloat(int x, int y, int b, DataBuffer
Returns the sample in a specified band for the pixel located at (x,y) as a float.
|
int[] |
getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer
Returns the samples in a specified band for the specified rectangle of pixels in an int array, one sample per data array element.
|
int[] |
getSampleSize()
Returns the number of bits per sample for all bands.
|
int |
getSampleSize(int band)
Returns the number of bits per sample for the specified band.
|
int |
getScanlineStride()
Returns the scanline stride of this ComponentSampleModel.
|
int |
hashCode()
Returns a hash code value for the object.
|
void |
setDataElements(int x, int y, Object
Sets the data for a single pixel in the specified
DataBuffer from a primitive array of type
TransferType.
|
void |
setPixel(int x, int y, int[] iArray, DataBuffer
Sets a pixel in the
DataBuffer using an int array of samples for input.
|
void |
setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer
Sets all samples for a rectangle of pixels from an int array containing one sample per array element.
|
void |
setSample(int x, int y, int b, double s, DataBuffer
Sets a sample in the specified band for the pixel located at (x,y) in the
DataBuffer using a double for input.
|
void |
setSample(int x, int y, int b, float s, DataBuffer
Sets a sample in the specified band for the pixel located at (x,y) in the
DataBuffer using a float for input.
|
void |
setSample(int x, int y, int b, int s, DataBuffer
Sets a sample in the specified band for the pixel located at (x,y) in the
DataBuffer using an int for input.
|
void |
setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer
Sets the samples in the specified band for the specified rectangle of pixels from an int array containing one sample per data array element.
|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamplesprotected int[] bandOffsets
protected int[] bankIndices
protected int numBands
ComponentSampleModel.
protected int numBanks
ComponentSampleModel.
protected int scanlineStride
protected int pixelStride
public ComponentSampleModel(int dataType,
int w,
int h,
int pixelStride,
int scanlineStride,
int[] bandOffsets)
dataType - the data type for storing samples
w - the width (in pixels) of the region of image data described
h - the height (in pixels) of the region of image data described
pixelStride - the pixel stride of the region of image data described
scanlineStride - the line stride of the region of image data described
bandOffsets - the offsets of all bands
IllegalArgumentException - if
w or
h is not greater than 0
IllegalArgumentException - if
pixelStride is less than 0
IllegalArgumentException - if
scanlineStride is less than 0
IllegalArgumentException - if
numBands is less than 1
IllegalArgumentException - if the product of
w and
h is greater than
Integer.MAX_VALUE
IllegalArgumentException - if
dataType is not one of the supported data types
public ComponentSampleModel(int dataType,
int w,
int h,
int pixelStride,
int scanlineStride,
int[] bankIndices,
int[] bandOffsets)
dataType - the data type for storing samples
w - the width (in pixels) of the region of image data described
h - the height (in pixels) of the region of image data described
pixelStride - the pixel stride of the region of image data described
scanlineStride - The line stride of the region of image data described
bankIndices - the bank indices of all bands
bandOffsets - the band offsets of all bands
IllegalArgumentException - if
w or
h is not greater than 0
IllegalArgumentException - if
pixelStride is less than 0
IllegalArgumentException - if
scanlineStride is less than 0
IllegalArgumentException - if the length of
bankIndices does not equal the length of
bankOffsets
IllegalArgumentException - if any of the bank indices of
bandIndices is less than 0
IllegalArgumentException - if
dataType is not one of the supported data types
public SampleModelcreateCompatibleSampleModel(int w, int h)
ComponentSampleModel with the specified width and height. The new
SampleModel will have the same number of bands, storage data type, interleaving scheme, and pixel stride as this
SampleModel.
createCompatibleSampleModel in class
SampleModel
w - the width of the resulting
SampleModel
h - the height of the resulting
SampleModel
ComponentSampleModel with the specified size
IllegalArgumentException - if
w or
h is not greater than 0
public SampleModelcreateSubsetSampleModel(int[] bands)
createSubsetSampleModel in class
SampleModel
bands - a subset of bands from this
ComponentSampleModel
ComponentSampleModel created with a subset of bands from this
ComponentSampleModel.
public DataBuffercreateDataBuffer()
DataBuffer that corresponds to this
ComponentSampleModel. The
DataBuffer object's data type, number of banks, and size are be consistent with this
ComponentSampleModel.
createDataBuffer in class
SampleModel
DataBuffer whose data type, number of banks and size are consistent with this
ComponentSampleModel.
public int getOffset(int x,
int y)
DataBuffer
data with a
ComponentSampleModel
csm as
data.getElem(csm.getOffset(x, y));
x - the X location of the pixel
y - the Y location of the pixel
public int getOffset(int x,
int y,
int b)
b can be retrieved from a
DataBuffer
data with a
ComponentSampleModel
csm as
data.getElem(csm.getOffset(x, y, b));
x - the X location of the specified pixel
y - the Y location of the specified pixel
b - the specified band
public final int[] getSampleSize()
getSampleSize in class
SampleModel
public final int getSampleSize(int band)
getSampleSize in class
SampleModel
band - the specified band
public final int[] getBankIndices()
public final int[] getBandOffsets()
public final int getScanlineStride()
ComponentSampleModel.
public final int getPixelStride()
ComponentSampleModel.
public final int getNumDataElements()
getDataElements(int, int, Object, DataBuffer) and
setDataElements(int, int, Object, DataBuffer) methods. For a
ComponentSampleModel, this is identical to the number of bands.
getNumDataElements in class
SampleModel
getDataElements and
setDataElements methods.
SampleModel.getNumDataElements() ,
SampleModel.getNumBands()
public ObjectgetDataElements(int x, int y, Object obj, DataBuffer data)
TransferType. For a
ComponentSampleModel, this is the same as the data type, and samples are returned one per array element. Generally,
obj should be passed in as
null, so that the
Object is created automatically and is the right primitive data type.
The following code illustrates transferring data for one pixel from DataBuffer db1, whose storage layout is described by ComponentSampleModel csm1, to DataBuffer db2, whose storage layout is described by ComponentSampleModel csm2. The transfer is usually more efficient than using getPixel and setPixel.
ComponentSampleModel csm1, csm2;
DataBufferInt db1, db2;
csm2.setDataElements(x, y,
csm1.getDataElements(x, y, null, db1), db2);
Using
getDataElements and
setDataElements to transfer between two
DataBuffer/SampleModel pairs is legitimate if the
SampleModel objects have the same number of bands, corresponding bands have the same number of bits per sample, and the
TransferTypes are the same.
If obj is not null, it should be a primitive array of type TransferType. Otherwise, a ClassCastException is thrown. An ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds, or if obj is not null and is not large enough to hold the pixel data.
getDataElements in class
SampleModel
x - the X coordinate of the pixel location
y - the Y coordinate of the pixel location
obj - if non-
null, a primitive array in which to return the pixel data
data - the
DataBuffer containing the image data
NullPointerException - if data is null.
ArrayIndexOutOfBoundsException - if the coordinates are not in bounds, or if obj is too small to hold the output.
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
getPixel in class
SampleModel
x - the X coordinate of the pixel location
y - the Y coordinate of the pixel location
iArray - If non-null, returns the samples in this array
data - The DataBuffer containing the image data
NullPointerException - if data is null.
ArrayIndexOutOfBoundsException - if the coordinates are not in bounds, or if iArray is too small to hold the output.
setPixel(int, int, int[], DataBuffer)
public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
getPixels in class
SampleModel
x - The X coordinate of the upper left pixel location
y - The Y coordinate of the upper left pixel location
w - The width of the pixel rectangle
h - The height of the pixel rectangle
iArray - If non-null, returns the samples in this array
data - The DataBuffer containing the image data
setPixels(int, int, int, int, int[], DataBuffer)
public int getSample(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
getSample in class
SampleModel
x - the X coordinate of the pixel location
y - the Y coordinate of the pixel location
b - the band to return
data - the
DataBuffer containing the image data
setSample(int, int, int, int, DataBuffer)
public float getSampleFloat(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
getSampleFloat in class
SampleModel
x - The X coordinate of the pixel location
y - The Y coordinate of the pixel location
b - The band to return
data - The DataBuffer containing the image data
public double getSampleDouble(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
getSampleDouble in class
SampleModel
x - The X coordinate of the pixel location
y - The Y coordinate of the pixel location
b - The band to return
data - The DataBuffer containing the image data
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
getSamples in class
SampleModel
x - The X coordinate of the upper left pixel location
y - The Y coordinate of the upper left pixel location
w - the width of the pixel rectangle
h - the height of the pixel rectangle
b - the band to return
iArray - if non-
null, returns the samples in this array
data - the
DataBuffer containing the image data
setSamples(int, int, int, int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer from a primitive array of type
TransferType. For a
ComponentSampleModel, this is the same as the data type, and samples are transferred one per array element.
The following code illustrates transferring data for one pixel from DataBuffer db1, whose storage layout is described by ComponentSampleModel csm1, to DataBuffer db2, whose storage layout is described by ComponentSampleModel csm2. The transfer is usually more efficient than using getPixel and setPixel.
ComponentSampleModel csm1, csm2;
DataBufferInt db1, db2;
csm2.setDataElements(x, y, csm1.getDataElements(x, y, null, db1),
db2);
Using
getDataElements and
setDataElements to transfer between two
DataBuffer/SampleModel pairs is legitimate if the
SampleModel objects have the same number of bands, corresponding bands have the same number of bits per sample, and the
TransferTypes are the same.
A ClassCastException is thrown if obj is not a primitive array of type TransferType. An ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds, or if obj is not large enough to hold the pixel data.
setDataElements in class
SampleModel
x - the X coordinate of the pixel location
y - the Y coordinate of the pixel location
obj - a primitive array containing pixel data
data - the DataBuffer containing the image data
getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
DataBuffer using an int array of samples for input. An
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
setPixel in class
SampleModel
x - The X coordinate of the pixel location
y - The Y coordinate of the pixel location
iArray - The input samples in an int array
data - The DataBuffer containing the image data
getPixel(int, int, int[], DataBuffer)
public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
setPixels in class
SampleModel
x - The X coordinate of the upper left pixel location
y - The Y coordinate of the upper left pixel location
w - The width of the pixel rectangle
h - The height of the pixel rectangle
iArray - The input samples in an int array
data - The DataBuffer containing the image data
getPixels(int, int, int, int, int[], DataBuffer)
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
DataBuffer using an int for input. An
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
setSample in class
SampleModel
x - The X coordinate of the pixel location
y - The Y coordinate of the pixel location
b - the band to set
s - the input sample as an int
data - the DataBuffer containing the image data
getSample(int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
float s,
DataBuffer data)
DataBuffer using a float for input. An
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
setSample in class
SampleModel
x - The X coordinate of the pixel location
y - The Y coordinate of the pixel location
b - The band to set
s - The input sample as a float
data - The DataBuffer containing the image data
getSample(int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
double s,
DataBuffer data)
DataBuffer using a double for input. An
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
setSample in class
SampleModel
x - The X coordinate of the pixel location
y - The Y coordinate of the pixel location
b - The band to set
s - The input sample as a double
data - The DataBuffer containing the image data
getSample(int, int, int, DataBuffer)
public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException might be thrown if the coordinates are not in bounds.
setSamples in class
SampleModel
x - The X coordinate of the upper left pixel location
y - The Y coordinate of the upper left pixel location
w - The width of the pixel rectangle
h - The height of the pixel rectangle
b - The band to set
iArray - The input samples in an int array
data - The DataBuffer containing the image data
getSamples(int, int, int, int, int, int[], DataBuffer)
public boolean equals(Objecto)
Object
The equals method implements an equivalence relation on non-null object references:
x, x.equals(x) should return true. x and y, x.equals(y) should return true if and only if y.equals(x) returns true. x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true. x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified. x, x.equals(null) should return false. The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).
Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
equals in class
Object
o - the reference object with which to compare.
true if this object is the same as the obj argument;
false otherwise.
Object.hashCode() ,
HashMap
public int hashCode()
Object
HashMap.
The general contract of hashCode is:
hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. Object.equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the Java™ programming language.)
hashCode in class
Object
Object.equals(java.lang.Object) ,
System.identityHashCode(java.lang.Object)