An implementation of
ShortChannelImage
that stores image channels as
short[]
arrays in memory.
An image can have an arbitrary number of channels.
This class is abstract because it is merely a data container.
It takes a subclass like
MemoryGray16Image
to give meaning to the values.
checkPositionAndNumber
protected void checkPositionAndNumber(int channel,
int x,
int y,
int w,
int h)
Throws an exception if the arguments do not form a valid horizontal
sequence of samples.
To be valid, all of the following requirements must be met:
clear
public void clear(int newValue)
Sets all samples in the first channel to the argument value.
Equal to clear(0, newValue);
:
- clear in interface IntegerImage
clear
public void clear(int channelIndex,
int newValue)
Sets all samples of the channelIndex
'th channel to newValue
.
- clear in interface IntegerImage
createCompatibleImage
public abstract PixelImage createCompatibleImage(int width,
int height)
Creates an instance of the same class as this one, with width and height
given by the arguments.
- createCompatibleImage in interface PixelImage
width
- the horizontal resolution of the new imageheight
- the vertical resolution of the new image
createCopy
public PixelImage createCopy()
Creates an new image object that will be of the same type as this one,
with the same image data, using entirely new resources.
- createCopy in interface PixelImage
getAllocatedMemory
public long getAllocatedMemory()
Returns the number of bytes that were dynamically allocated for
this image object.
- getAllocatedMemory in interface PixelImage
- allocated memory in bytes
getBitsPerPixel
public int getBitsPerPixel()
Returns the number of bits per pixel of this image.
That is the number of bits per sample for all channels of this image.
Does not include any transparency channels.
- getBitsPerPixel in interface PixelImage
getHeight
public final int getHeight()
Returns the vertical resolution of the image in pixels.
Must be one or larger.
- getHeight in interface PixelImage
getMaxSample
public int getMaxSample(int channel)
Returns the maximum value for one of the image's channels.
The minimum value is always 0
.
- getMaxSample in interface IntegerImage
channel
- zero-based index of the channel, from 0
to getNumChannels()
- 1
- maximum allowed sample value
getNumChannels
public int getNumChannels()
Returns the number of channels in this image.
Must be one or larger.
- getNumChannels in interface PixelImage
getSample
public final int getSample(int x,
int y)
Returns one sample of the first channel (index 0).
A call to this method must have the same result as the call getSample(0, x, y);
.
- getSample in interface IntegerImage
x
- the horizontal position of the sample, from 0
to IntegerImage
- 1
y
- the vertical position of the sample, from 0
to IntegerImage
- 1
getSample
public final int getSample(int channel,
int x,
int y)
Returns one sample, specified by its channel index and location.
- getSample in interface IntegerImage
channel
- the number of the channel, from 0
to IntegerImage
- 1
x
- the horizontal position of the sample, from 0
to IntegerImage
- 1
y
- the vertical position of the sample, from 0
to IntegerImage
- 1
getSamples
public void getSamples(int channel,
int x,
int y,
int w,
int h,
int[] dest,
int destOffs)
Copies a number of samples from this image to an int[]
object.
A rectangular part of one channel is copied.
The channel index is given by - the upper left corner of
that rectangle is given by the point x / y.
Width and height of that rectangle are given by w and h.
Each sample will be stored as one int
value dest,
starting at index destOffs.
- getSamples in interface IntegerImage
x
- horizontal position of upper left corner of the rectangle to be copiedy
- vertical position of upper left corner of the rectangle to be copiedw
- width of rectangle to be copiedh
- height of rectangle to be copieddest
- int array to which the samples will be copieddestOffs
- int index into the dest array for the position to which the samples will be copied
getWidth
public final int getWidth()
Returns the horizontal resolution of the image in pixels.
Must be one or larger.
- getWidth in interface PixelImage
putSample
public final void putSample(int x,
int y,
int newValue)
This method sets one sample of the first channel (index 0) to a new value.
This call must have the same result as the call putSample(0, x, y)
.
The sample location is given by the spatial coordinates, x and y.
- putSample in interface IntegerImage
x
- the horizontal position of the sample, from 0
to IntegerImage
- 1
y
- the vertical position of the sample, from 0
to IntegerImage
- 1
newValue
- the new value of the sample
putSample
public final void putSample(int channel,
int x,
int y,
int newValue)
This method sets one sample to a new value.
The sample location is given by the channel index and the spatial coordinates, x and y.
- putSample in interface IntegerImage
channel
- the number of the channel, from 0
to IntegerImage
- 1
x
- the horizontal position of the sample, from 0
to IntegerImage
- 1
y
- the vertical position of the sample, from 0
to IntegerImage
- 1
newValue
- the new value of the sample
putSamples
public void putSamples(int channel,
int x,
int y,
int w,
int h,
int[] src,
int srcOffs)
Copies a number of samples from an int[]
array to this image.
A rectangular part of one channel is copied - the upper left corner of
that rectangle is given by the point x / y.
Width and height of that rectangle are given by w and h.
Each sample will be stored as one int
value src,
starting at index srcOffset.
- putSamples in interface IntegerImage
channel
- int (from 0 to getNumChannels() - 1) to indicate the channel to which data is copiedx
- horizontal position of upper left corner of the rectangle to be copiedy
- vertical position of upper left corner of the rectangle to be copiedw
- width of rectangle to be copiedh
- height of rectangle to be copiedsrc
- int array from which the samples will be copied