Top Description Fields Constructors Methods
sun.awt.image

public Class ByteBandedRaster

extends SunWritableRaster
Class Inheritance
Imports
java.awt.image.Raster, .WritableRaster, .RasterFormatException, .SampleModel, .BandedSampleModel, .DataBufferByte, java.awt.Rectangle, .Point

This class defines a Raster with pixels consisting of multiple 8-bit samples stored in possibly separate arrays for each band. Operations on sets of pixels are performed on a given band in the Raster before moving on to the next band. The arrays used for storage may be distinct or shared between some or all of the bands. Each band additionally has an offset that is added to determine the DataBuffer location of each pixel. There is only one scanline stride for all bands. The pixel stride is always equal to one. This type of raster can be used with a ComponentColorModel. This class requires a BandedSampleModel.

Field Summary

Modifier and TypeField and Description
pack-priv byte[][]
data

The image data array.

pack-priv int[]
dataOffsets

Data offsets for each band of image data.

private int
maxX

A cached copy of minX + width for use in bounds checks.

private int
maxY

A cached copy of minY + height for use in bounds checks.

pack-priv int
scanlineStride

Scanline stride of the image data contained in this Raster.

Constructor Summary

AccessConstructor and Description
public
ByteBandedRaster(SampleModel
The SampleModel that specifies the layout.
sampleModel
,
Point
The Point that specifies the origin.
origin
)

Constructs a ByteBandedRaster with the given sampleModel.

public
ByteBandedRaster(SampleModel
The SampleModel that specifies the layout.
sampleModel
,
DataBufferByte
The DataBufferByte that contains the image data.
dataBuffer
,
Point
The Point that specifies the origin.
origin
)

Constructs a ByteBanded Raster with the given sampleModel and DataBuffer.

public
ByteBandedRaster(SampleModel
The SampleModel that specifies the layout.
sampleModel
,
DataBufferByte
The DataBufferByte that contains the image data.
dataBuffer
,
Rectangle
The Rectangle that specifies the image area.
aRegion
,
Point
The Point that specifies the origin.
origin
,
ByteBandedRaster
The parent (if any) of this raster.
parent
)

Constructs a ByteBandedRaster with the given sampleModel, DataBuffer, and parent.

Method Summary

Modifier and TypeMethod and Description
public Raster
createChild(int
X offset.
x
,
int
Y offset.
y
,
int
Width (in pixels) of the subraster.
width
,
int
Height (in pixels) of the subraster.
height
,
int
Translated X origin of the subraster.
x0
,
int
Translated Y origin of the subraster.
y0
,
int[]
Array of band indices.
bandList
)

Overrides java.awt.image.Raster.createChild.

Creates a subraster given a region of the raster.
public WritableRaster
createCompatibleWritableRaster(int
the specified width of the new WritableRaster
w
,
int
the specified height of the new WritableRaster
h
)

Overrides java.awt.image.Raster.createCompatibleWritableRaster.

Creates a Raster with the same layout but using a different width and height, and with new zeroed data arrays.
public WritableRaster
createCompatibleWritableRaster()

Overrides java.awt.image.Raster.createCompatibleWritableRaster.

Creates a Raster with the same layout and the same width and height, and with new zeroed data arrays.
public WritableRaster
createWritableChild(int
X offset.
x
,
int
Y offset.
y
,
int
Width of the subraster.
width
,
int
Height of the subraster.
height
,
int
Translated X origin of the subraster.
x0
,
int
Translated Y origin of the subraster.
y0
,
int[]
Array of band indices.
bandList
)

Overrides java.awt.image.WritableRaster.createWritableChild.

Creates a Writable subraster given a region of the raster.
public byte[]

Returns:

Data array with data elements for all bands.
getByteData
(int
The X coordinate of the upper left pixel location.
x
,
int
The Y coordinate of the upper left pixel location.
y
,
int
Width of the pixel rectangle.
w
,
int
Height of the pixel rectangle.
h
,
int
The band to return.
band
,
byte[]
If non-null, data elements for all bands at the specified location are returned in this array.
outData
)

Returns a byte array of data elements from the specified rectangular region for the specified band.

public byte[]

Returns:

Data array with data elements for all bands.
getByteData
(int
The X coordinate of the upper left pixel location.
x
,
int
The Y coordinate of the upper left pixel location.
y
,
int
Width of the pixel rectangle.
w
,
int
Height of the pixel rectangle.
h
,
byte[]
If non-null, data elements for all bands at the specified location are returned in this array.
outData
)

Returns a byte array of data elements from the specified rectangular region.

public Object

Returns:

An object reference to an array of type defined by getTransferType() with the request pixel data.
getDataElements
(int
The X coordinate of the pixel location.
x
,
int
The Y coordinate of the pixel location.
y
,
Object
An object reference to an array of type defined by getTransferType() and length getNumDataElements(). If null an array of appropriate type and size will be allocated.
obj
)

Overrides java.awt.image.Raster.getDataElements.

Returns the data elements for all bands at the specified location.
public Object

Returns:

An object reference to an array of type defined by getTransferType() with the request pixel data.
getDataElements
(int
The X coordinate of the upper left pixel location.
x
,
int
The Y coordinate of the upper left pixel location.
y
,
int
Width of the pixel rectangle.
w
,
int
Height of the pixel rectangle.
h
,
Object
An object reference to an array of type defined by getTransferType() and length w*h*getNumDataElements(). If null an array of appropriate type and size will be allocated.
obj
)

Overrides java.awt.image.Raster.getDataElements.

Returns an array of data elements from the specified rectangular region.
public int
getDataOffset(int
The band whose offset is returned.
band
)

Returns data offset for the specified band.

public int[]
getDataOffsets()

Returns a copy of the data offsets array.

public byte[][]
getDataStorage()

Returns a reference to the entire data array.

public byte[]
getDataStorage(int band)

Returns a reference to the specific band data array.

public int
getPixelStride()

Returns the pixel stride, which is always equal to one for a Raster with a BandedSampleModel.

public int
getScanlineStride()

Returns the scanline stride -- the number of data array elements between a given sample and the sample in the same column of the next row in the same band.

public void
putByteData(int
The X coordinate of the upper left pixel location.
x
,
int
The Y coordinate of the upper left pixel location.
y
,
int
Width of the pixel rectangle.
w
,
int
Height of the pixel rectangle.
h
,
int
The band to set.
band
,
byte[]
The data elements to be stored.
inData
)

Stores a byte array of data elements into the specified rectangular region.

public void
putByteData(int
The X coordinate of the upper left pixel location.
x
,
int
The Y coordinate of the upper left pixel location.
y
,
int
Width of the pixel rectangle.
w
,
int
Height of the pixel rectangle.
h
,
byte[]
The data elements to be stored.
inData
)

Stores a byte array of data elements into the specified rectangular region.

public void
setDataElements(int
The X coordinate of the pixel location.
x
,
int
The Y coordinate of the pixel location.
y
,
Object
An object reference to an array of type defined by getTransferType() and length getNumDataElements() containing the pixel data to place at x,y.
obj
)

Overrides java.awt.image.WritableRaster.setDataElements.

Stores the data elements for all bands at the specified location.
public void
setDataElements(int
The X coordinate of the pixel location.
x
,
int
The Y coordinate of the pixel location.
y
,
Raster
Raster of data to place at x,y location.
inRaster
)

Overrides java.awt.image.WritableRaster.setDataElements.

Stores the Raster data at the specified location.
private void
setDataElements(int
The absolute X coordinate of the destination pixel that will receive a copy of the upper-left pixel of the inRaster
dstX
,
int
The absolute Y coordinate of the destination pixel that will receive a copy of the upper-left pixel of the inRaster
dstY
,
int
The number of pixels to store horizontally
width
,
int
The number of pixels to store vertically
height
,
Raster
Raster of data to place at x,y location.
inRaster
)

Stores the Raster data at the specified location.

public void
setDataElements(int
The X coordinate of the upper left pixel location.
x
,
int
The Y coordinate of the upper left pixel location.
y
,
int
Width of the pixel rectangle.
w
,
int
Height of the pixel rectangle.
h
,
Object
An object reference to an array of type defined by getTransferType() and length w*h*getNumDataElements() containing the pixel data to place between x,y and x+h, y+h.
obj
)

Overrides java.awt.image.WritableRaster.setDataElements.

Stores an array of data elements into the specified rectangular region.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
private void
verify()

Verify that the layout parameters are consistent with the data.

Inherited from sun.awt.image.SunWritableRaster:
makeTrackablemarkDirtymarkDirtymarkDirtymarkDirtysetDataStealersetTrackablestealDatastealDatastealDatastealTrackable

Field Detail

databack to summary
pack-priv byte[][] data

The image data array.

dataOffsetsback to summary
pack-priv int[] dataOffsets

Data offsets for each band of image data.

maxXback to summary
private int maxX

A cached copy of minX + width for use in bounds checks.

maxYback to summary
private int maxY

A cached copy of minY + height for use in bounds checks.

scanlineStrideback to summary
pack-priv int scanlineStride

Scanline stride of the image data contained in this Raster.

Constructor Detail

ByteBandedRasterback to summary
public ByteBandedRaster(SampleModel sampleModel, Point origin)

Constructs a ByteBandedRaster with the given sampleModel. The Raster's upper left corner is origin and it is the same size as the SampleModel. A dataBuffer large enough to describe the Raster is automatically created. SampleModel must be of type BandedSampleModel.

Parameters
sampleModel:SampleModel

The SampleModel that specifies the layout.

origin:Point

The Point that specifies the origin.

ByteBandedRasterback to summary
public ByteBandedRaster(SampleModel sampleModel, DataBufferByte dataBuffer, Point origin)

Constructs a ByteBanded Raster with the given sampleModel and DataBuffer. The Raster's upper left corner is origin and it is the same size as the SampleModel. The DataBuffer is not initialized and must be a DataBufferShort compatible with SampleModel. SampleModel must be of type BandedSampleModel.

Parameters
sampleModel:SampleModel

The SampleModel that specifies the layout.

dataBuffer:DataBufferByte

The DataBufferByte that contains the image data.

origin:Point

The Point that specifies the origin.

ByteBandedRasterback to summary
public ByteBandedRaster(SampleModel sampleModel, DataBufferByte dataBuffer, Rectangle aRegion, Point origin, ByteBandedRaster parent)

Constructs a ByteBandedRaster with the given sampleModel, DataBuffer, and parent. DataBuffer must be a DataBufferShort and SampleModel must be of type BandedSampleModel. When translated into the base Raster's coordinate system, aRegion must be contained by the base Raster. Origin is the coordinate in the new Raster's coordinate system of the origin of the base Raster. (The base Raster is the Raster's ancestor which has no parent.) Note that this constructor should generally be called by other constructors or create methods, it should not be used directly.

Parameters
sampleModel:SampleModel

The SampleModel that specifies the layout.

dataBuffer:DataBufferByte

The DataBufferByte that contains the image data.

aRegion:Rectangle

The Rectangle that specifies the image area.

origin:Point

The Point that specifies the origin.

parent:ByteBandedRaster

The parent (if any) of this raster.

Method Detail

createChildback to summary
public Raster createChild(int x, int y, int width, int height, int x0, int y0, int[] bandList)

Overrides java.awt.image.Raster.createChild.

Creates a subraster given a region of the raster. The x and y coordinates specify the horizontal and vertical offsets from the upper-left corner of this raster to the upper-left corner of the subraster. A subset of the bands of the parent Raster may be specified. If this is null, then all the bands are present in the subRaster. A translation to the subRaster may also be specified. Note that the subraster will reference the same DataBuffers as the parent raster, but using different offsets.

Parameters
x:int

X offset.

y:int

Y offset.

width:int

Width (in pixels) of the subraster.

height:int

Height (in pixels) of the subraster.

x0:int

Translated X origin of the subraster.

y0:int

Translated Y origin of the subraster.

bandList:int[]

Array of band indices.

Returns:Raster

Doc from java.awt.image.Raster.createChild.

a new Raster.

Exceptions
RasterFormatException:
if the specified bounding box is outside of the parent raster.
createCompatibleWritableRasterback to summary
public WritableRaster createCompatibleWritableRaster(int w, int h)

Overrides java.awt.image.Raster.createCompatibleWritableRaster.

Creates a Raster with the same layout but using a different width and height, and with new zeroed data arrays.

Parameters
w:int

Doc from java.awt.image.Raster.createCompatibleWritableRaster.

the specified width of the new WritableRaster

h:int

Doc from java.awt.image.Raster.createCompatibleWritableRaster.

the specified height of the new WritableRaster

Returns:WritableRaster

Doc from java.awt.image.Raster.createCompatibleWritableRaster.

a compatible WritableRaster with the specified size and a new sample model and data buffer.

createCompatibleWritableRasterback to summary
public WritableRaster createCompatibleWritableRaster()

Overrides java.awt.image.Raster.createCompatibleWritableRaster.

Creates a Raster with the same layout and the same width and height, and with new zeroed data arrays. If the Raster is a subRaster, this will call createCompatibleRaster(width, height).

Returns:WritableRaster

Doc from java.awt.image.Raster.createCompatibleWritableRaster.

a compatible WritableRaster with the same sample model and a new data buffer.

createWritableChildback to summary
public WritableRaster createWritableChild(int x, int y, int width, int height, int x0, int y0, int[] bandList)

Overrides java.awt.image.WritableRaster.createWritableChild.

Creates a Writable subraster given a region of the raster. The x and y coordinates specify the horizontal and vertical offsets from the upper-left corner of this raster to the upper-left corner of the subraster. A subset of the bands of the parent Raster may be specified. If this is null, then all the bands are present in the subRaster. A translation to the subRaster may also be specified. Note that the subraster will reference the same DataBuffers as the parent raster, but using different offsets.

Parameters
x:int

X offset.

y:int

Y offset.

width:int

Width of the subraster.

height:int

Height of the subraster.

x0:int

Translated X origin of the subraster.

y0:int

Translated Y origin of the subraster.

bandList:int[]

Array of band indices.

Returns:WritableRaster

Doc from java.awt.image.WritableRaster.createWritableChild.

a WritableRaster sharing all or part of the DataBuffer of this WritableRaster.

Exceptions
RasterFormatException:
if the specified bounding box is outside of the parent raster.
getByteDataback to summary
public byte[] getByteData(int x, int y, int w, int h, int band, byte[] outData)

Returns a byte array of data elements from the specified rectangular region for the specified band. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinates are out of bounds.

      byte[] bandData = raster.getByteData(x, y, w, h, null);
      // To find the data element at location (x2, y2)
      byte bandElement = bandData[((y2-y)*w + (x2-x))];
Parameters
x:int

The X coordinate of the upper left pixel location.

y:int

The Y coordinate of the upper left pixel location.

w:int

Width of the pixel rectangle.

h:int

Height of the pixel rectangle.

band:int

The band to return.

outData:byte[]

If non-null, data elements for all bands at the specified location are returned in this array.

Returns:byte[]

Data array with data elements for all bands.

getByteDataback to summary
public byte[] getByteData(int x, int y, int w, int h, byte[] outData)

Returns a byte array of data elements from the specified rectangular region. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinates are out of bounds.

      byte[] bandData = raster.getByteData(x, y, w, h, null);
      int numDataElements = raster.getNumDataElements();
      byte[] pixel = new byte[numDataElements];
      // To find a data element at location (x2, y2)
      System.arraycopy(bandData, ((y2-y)*w + (x2-x))*numDataElements,
                       pixel, 0, numDataElements);
Parameters
x:int

The X coordinate of the upper left pixel location.

y:int

The Y coordinate of the upper left pixel location.

w:int

Width of the pixel rectangle.

h:int

Height of the pixel rectangle.

outData:byte[]

If non-null, data elements for all bands at the specified location are returned in this array.

Returns:byte[]

Data array with data elements for all bands.

getDataElementsback to summary
public Object getDataElements(int x, int y, Object obj)

Overrides java.awt.image.Raster.getDataElements.

Returns the data elements for all bands at the specified location. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinate is out of bounds. A ClassCastException will be thrown if the input object is non null and references anything other than an array of transferType.

Parameters
x:int

The X coordinate of the pixel location.

y:int

The Y coordinate of the pixel location.

obj:Object

An object reference to an array of type defined by getTransferType() and length getNumDataElements(). If null an array of appropriate type and size will be allocated.

Returns:Object

An object reference to an array of type defined by getTransferType() with the request pixel data.

getDataElementsback to summary
public Object getDataElements(int x, int y, int w, int h, Object obj)

Overrides java.awt.image.Raster.getDataElements.

Returns an array of data elements from the specified rectangular region. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinates are out of bounds. A ClassCastException will be thrown if the input object is non null and references anything other than an array of transferType.

      byte[] bandData = (byte[])raster.getDataElement(x, y, w, h, null);
      int numDataElements = raster.getNumDataElements();
      byte[] pixel = new byte[numDataElements];
      // To find a data element at location (x2, y2)
      System.arraycopy(bandData, ((y2-y)*w + (x2-x))*numDataElements,
                       pixel, 0, numDataElements);
Parameters
x:int

The X coordinate of the upper left pixel location.

y:int

The Y coordinate of the upper left pixel location.

w:int

Width of the pixel rectangle.

h:int

Height of the pixel rectangle.

obj:Object

An object reference to an array of type defined by getTransferType() and length w*h*getNumDataElements(). If null an array of appropriate type and size will be allocated.

Returns:Object

An object reference to an array of type defined by getTransferType() with the request pixel data.

getDataOffsetback to summary
public int getDataOffset(int band)

Returns data offset for the specified band. The data offset is the index into the band's data array in which the first sample of the first scanline is stored.

Parameters
band:int

The band whose offset is returned.

getDataOffsetsback to summary
public int[] getDataOffsets()

Returns a copy of the data offsets array. For each band the data offset is the index into the band's data array, of the first sample of the band.

getDataStorageback to summary
public byte[][] getDataStorage()

Returns a reference to the entire data array.

getDataStorageback to summary
public byte[] getDataStorage(int band)

Returns a reference to the specific band data array.

getPixelStrideback to summary
public int getPixelStride()

Returns the pixel stride, which is always equal to one for a Raster with a BandedSampleModel.

getScanlineStrideback to summary
public int getScanlineStride()

Returns the scanline stride -- the number of data array elements between a given sample and the sample in the same column of the next row in the same band.

putByteDataback to summary
public void putByteData(int x, int y, int w, int h, int band, byte[] inData)

Stores a byte array of data elements into the specified rectangular region. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinates are out of bounds. The data elements in the data array are assumed to be packed. That is, a data element for the nth band at location (x2, y2) would be found at:

     inData[((y2-y)*w + (x2-x))*numDataElements + n]
Parameters
x:int

The X coordinate of the upper left pixel location.

y:int

The Y coordinate of the upper left pixel location.

w:int

Width of the pixel rectangle.

h:int

Height of the pixel rectangle.

band:int

The band to set.

inData:byte[]

The data elements to be stored.

putByteDataback to summary
public void putByteData(int x, int y, int w, int h, byte[] inData)

Stores a byte array of data elements into the specified rectangular region. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinates are out of bounds. The data elements in the data array are assumed to be packed. That is, a data element for the nth band at location (x2, y2) would be found at:

     inData[((y2-y)*w + (x2-x))*numDataElements + n]
Parameters
x:int

The X coordinate of the upper left pixel location.

y:int

The Y coordinate of the upper left pixel location.

w:int

Width of the pixel rectangle.

h:int

Height of the pixel rectangle.

inData:byte[]

The data elements to be stored.

setDataElementsback to summary
public void setDataElements(int x, int y, Object obj)

Overrides java.awt.image.WritableRaster.setDataElements.

Stores the data elements for all bands at the specified location. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinate is out of bounds. A ClassCastException will be thrown if the input object is non null and references anything other than an array of transferType.

Parameters
x:int

The X coordinate of the pixel location.

y:int

The Y coordinate of the pixel location.

obj:Object

An object reference to an array of type defined by getTransferType() and length getNumDataElements() containing the pixel data to place at x,y.

setDataElementsback to summary
public void setDataElements(int x, int y, Raster inRaster)

Overrides java.awt.image.WritableRaster.setDataElements.

Stores the Raster data at the specified location. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinate is out of bounds.

Parameters
x:int

The X coordinate of the pixel location.

y:int

The Y coordinate of the pixel location.

inRaster:Raster

Raster of data to place at x,y location.

setDataElementsback to summary
private void setDataElements(int dstX, int dstY, int width, int height, Raster inRaster)

Stores the Raster data at the specified location.

Parameters
dstX:int

The absolute X coordinate of the destination pixel that will receive a copy of the upper-left pixel of the inRaster

dstY:int

The absolute Y coordinate of the destination pixel that will receive a copy of the upper-left pixel of the inRaster

width:int

The number of pixels to store horizontally

height:int

The number of pixels to store vertically

inRaster:Raster

Raster of data to place at x,y location.

setDataElementsback to summary
public void setDataElements(int x, int y, int w, int h, Object obj)

Overrides java.awt.image.WritableRaster.setDataElements.

Stores an array of data elements into the specified rectangular region. An ArrayIndexOutOfBounds exception will be thrown at runtime if the pixel coordinates are out of bounds. A ClassCastException will be thrown if the input object is non null and references anything other than an array of transferType. The data elements in the data array are assumed to be packed. That is, a data element for the nth band at location (x2, y2) would be found at:

     inData[((y2-y)*w + (x2-x))*numDataElements + n]
Parameters
x:int

The X coordinate of the upper left pixel location.

y:int

The Y coordinate of the upper left pixel location.

w:int

Width of the pixel rectangle.

h:int

Height of the pixel rectangle.

obj:Object

An object reference to an array of type defined by getTransferType() and length w*h*getNumDataElements() containing the pixel data to place between x,y and x+h, y+h.

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object

verifyback to summary
private void verify()

Verify that the layout parameters are consistent with the data. Verifies whether the data buffer has enough data for the raster, taking into account offsets, after ensuring all offsets are >=0.

Exceptions
RasterFormatException:
if a problem is detected.