java.awt.image

Class MultiPixelPackedSampleModel

public class MultiPixelPackedSampleModel extends SampleModel

MultiPixelPackedSampleModel provides a single band model that supports multiple pixels in a single unit. Pixels have 2^n bits and 2^k pixels fit per data element.
Constructor Summary
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
Creates a new MultiPixelPackedSampleModel with the specified data type, which should be one of:
  • {@link DataBuffer#TYPE_BYTE};
  • {@link DataBuffer#TYPE_USHORT};
  • {@link DataBuffer#TYPE_INT};
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
Creates a new MultiPixelPackedSampleModel with the specified data type, which should be one of:
  • {@link DataBuffer#TYPE_BYTE};
  • {@link DataBuffer#TYPE_USHORT};
  • {@link DataBuffer#TYPE_INT};
Method Summary
SampleModelcreateCompatibleSampleModel(int w, int h)
Creates a new MultiPixelPackedSample model with the same data type and bits per pixel as this model, but with the specified dimensions.
DataBuffercreateDataBuffer()
Creates a DataBuffer for holding pixel data in the format and layout described by this SampleModel.
SampleModelcreateSubsetSampleModel(int[] bands)
Normally this method returns a sample model for accessing a subset of bands of image data, but since MultiPixelPackedSampleModel only supports a single band, this overridden implementation just returns a new instance of MultiPixelPackedSampleModel, with the same attributes as this instance.
booleanequals(Object obj)
Tests this sample model for equality with an arbitrary object.
intgetBitOffset(int x)
The bit offset (within an element in the data buffer) of the pixels with the specified x-coordinate.
intgetDataBitOffset()
Returns the offset to the first data bit.
ObjectgetDataElements(int x, int y, Object obj, DataBuffer data)
Extract one pixel and return in an array of transfer type.
intgetNumDataElements()
Returns the number of data elements required to transfer a pixel in the get/setDataElements() methods.
intgetOffset(int x, int y)
Returns the index in the data buffer that stores the pixel at (x, y).
int[]getPixel(int x, int y, int[] iArray, DataBuffer data)
Returns an array (of length 1) containing the sample for the pixel at (x, y) in the specified data buffer.
intgetPixelBitStride()
Returns the number of bits per pixel.
intgetSample(int x, int y, int b, DataBuffer data)
Returns the sample value for the pixel at (x, y) in the specified data buffer.
int[]getSampleSize()
Returns an array containing the size (in bits) of the samples in each band.
intgetSampleSize(int band)
Returns the size of the samples in the specified band.
intgetScanlineStride()
Returns the number of data elements from a pixel in one row to the corresponding pixel in the next row.
intgetTransferType()
Returns the transfer type, which is one of the following (depending on the number of bits per sample for this model):
  • {@link DataBuffer#TYPE_BYTE};
  • {@link DataBuffer#TYPE_USHORT};
  • {@link DataBuffer#TYPE_INT};
inthashCode()
Returns a hash code for this MultiPixelPackedSampleModel.
voidsetDataElements(int x, int y, Object obj, DataBuffer data)
Set the pixel at x, y to the value in the first element of the primitive array obj.
voidsetPixel(int x, int y, int[] iArray, DataBuffer data)
Sets the sample value for the pixel at (x, y) in the specified data buffer to the specified value.
voidsetSample(int x, int y, int b, int s, DataBuffer data)
Sets the sample value for a band for the pixel at (x, y) in the specified data buffer.
StringtoString()
Creates a String with some information about this SampleModel.

Constructor Detail

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
Creates a new MultiPixelPackedSampleModel with the specified data type, which should be one of:

Parameters: dataType the data type. w the width (in pixels). h the height (in pixels). numberOfBits the number of bits per pixel (must be a power of 2).

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
Creates a new MultiPixelPackedSampleModel with the specified data type, which should be one of:

Parameters: dataType the data type. w the width (in pixels). h the height (in pixels). numberOfBits the number of bits per pixel (must be a power of 2). scanlineStride the number of data elements from a pixel on one row to the corresponding pixel in the next row. dataBitOffset the offset to the first data bit.

Method Detail

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w, int h)
Creates a new MultiPixelPackedSample model with the same data type and bits per pixel as this model, but with the specified dimensions.

Parameters: w the width (in pixels). h the height (in pixels).

Returns: The new sample model.

createDataBuffer

public DataBuffer createDataBuffer()
Creates a DataBuffer for holding pixel data in the format and layout described by this SampleModel. The returned buffer will consist of one single bank.

Returns: A new data buffer.

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
Normally this method returns a sample model for accessing a subset of bands of image data, but since MultiPixelPackedSampleModel only supports a single band, this overridden implementation just returns a new instance of MultiPixelPackedSampleModel, with the same attributes as this instance.

Parameters: bands the bands to include in the subset (this is ignored, except that if it is non-null a check is made to ensure that the array length is equal to 1).

Throws: RasterFormatException if bands is not null and bands.length != 1.

equals

public boolean equals(Object obj)
Tests this sample model for equality with an arbitrary object. This method returns true if and only if:

Parameters: obj the object (null permitted)

Returns: true if this model is equal to obj, and false otherwise.

getBitOffset

public int getBitOffset(int x)
The bit offset (within an element in the data buffer) of the pixels with the specified x-coordinate.

Parameters: x the x-coordinate.

Returns: The bit offset.

getDataBitOffset

public int getDataBitOffset()
Returns the offset to the first data bit.

Returns: The offset to the first data bit.

getDataElements

public Object getDataElements(int x, int y, Object obj, DataBuffer data)
Extract one pixel and return in an array of transfer type. Extracts the pixel at x, y from data and stores into the 0th index of the array obj, since there is only one band. If obj is null, a new array of getTransferType() is created.

Parameters: x The x-coordinate of the pixel rectangle to store in obj. y The y-coordinate of the pixel rectangle to store in obj. obj The primitive array to store the pixels into or null to force creation. data The DataBuffer that is the source of the pixel data.

Returns: The primitive array containing the pixel data.

See Also: SampleModel

getNumDataElements

public int getNumDataElements()
Returns the number of data elements required to transfer a pixel in the get/setDataElements() methods.

Returns: 1.

getOffset

public int getOffset(int x, int y)
Returns the index in the data buffer that stores the pixel at (x, y).

Parameters: x the x-coordinate. y the y-coordinate.

Returns: The index in the data buffer that stores the pixel at (x, y).

See Also: MultiPixelPackedSampleModel

getPixel

public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
Returns an array (of length 1) containing the sample for the pixel at (x, y) in the specified data buffer. If iArray is not null, it will be populated with the sample value and returned as the result of this function (this avoids allocating a new array instance).

Parameters: x the x-coordinate of the pixel. y the y-coordinate of the pixel. iArray an array to populate with the sample values and return as the result (if null, a new array will be allocated). data the data buffer (null not permitted).

Returns: An array containing the pixel sample value.

Throws: NullPointerException if data is null.

getPixelBitStride

public int getPixelBitStride()
Returns the number of bits per pixel.

Returns: The number of bits per pixel.

getSample

public int getSample(int x, int y, int b, DataBuffer data)
Returns the sample value for the pixel at (x, y) in the specified data buffer.

Parameters: x the x-coordinate of the pixel. y the y-coordinate of the pixel. b the band (in the range 0 to getNumBands() - 1). data the data buffer (null not permitted).

Returns: The sample value.

Throws: NullPointerException if data is null.

getSampleSize

public int[] getSampleSize()
Returns an array containing the size (in bits) of the samples in each band. The MultiPixelPackedSampleModel class supports only one band, so this method returns an array with length 1.

Returns: An array containing the size (in bits) of the samples in band zero.

See Also: MultiPixelPackedSampleModel

getSampleSize

public int getSampleSize(int band)
Returns the size of the samples in the specified band. Note that the MultiPixelPackedSampleModel supports only one band -- this method ignored the band argument, and always returns the size of band zero.

Parameters: band the band (this parameter is ignored).

Returns: The size of the samples in band zero.

See Also: getSampleSize

getScanlineStride

public int getScanlineStride()
Returns the number of data elements from a pixel in one row to the corresponding pixel in the next row.

Returns: The scanline stride.

getTransferType

public int getTransferType()
Returns the transfer type, which is one of the following (depending on the number of bits per sample for this model):

Returns: The transfer type.

hashCode

public int hashCode()
Returns a hash code for this MultiPixelPackedSampleModel.

Returns: A hash code.

setDataElements

public void setDataElements(int x, int y, Object obj, DataBuffer data)
Set the pixel at x, y to the value in the first element of the primitive array obj.

Parameters: x The x-coordinate of the data elements in obj. y The y-coordinate of the data elements in obj. obj The primitive array containing the data elements to set. data The DataBuffer to store the data elements into.

setPixel

public void setPixel(int x, int y, int[] iArray, DataBuffer data)
Sets the sample value for the pixel at (x, y) in the specified data buffer to the specified value.

Parameters: x the x-coordinate of the pixel. y the y-coordinate of the pixel. iArray the sample value (null not permitted). data the data buffer (null not permitted).

Throws: NullPointerException if either iArray or data is null.

See Also: MultiPixelPackedSampleModel

setSample

public void setSample(int x, int y, int b, int s, DataBuffer data)
Sets the sample value for a band for the pixel at (x, y) in the specified data buffer.

Parameters: x the x-coordinate of the pixel. y the y-coordinate of the pixel. b the band (in the range 0 to getNumBands() - 1). s the sample value. data the data buffer (null not permitted).

Throws: NullPointerException if data is null.

toString

public String toString()
Creates a String with some information about this SampleModel.

Returns: A String describing this SampleModel.

See Also: toString