|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.awt.image.ColorModel | +--java.awt.image.ComponentColorModel | +--javax.media.jai.FloatDoubleColorModel
A ColorModel
class that works with pixel values that
represent color and alpha information as separate samples, using
float or double elements. This class can be used with an arbitrary
ColorSpace
. The number of color samples in the pixel
values must be same as the number of color components in the
ColorSpace
. There may be a single alpha sample.
Sample values are taken as ranging from 0.0 to 1.0; that is, when converting to 8-bit RGB, a multiplication by 255 is performed and values outside of the range 0-255 are clamped at the closest endpoint.
For maximum efficiency, pixel data being interpreted by this class should be in the sRGB color space. This will result in only the trivial conversion (scaling by 255 and dividing by any premultiplied alpha) to be performed. Other color spaces require more general conversions.
For those methods that use a primitive array pixel
representation of type transferType
, the array length
is the same as the number of color and alpha samples. Color
samples are stored first in the array followed by the alpha sample,
if present. The order of the color samples is specified by the
ColorSpace
. Typically, this order reflects the name
of the color space type. For example, for TYPE_RGB
,
index 0 corresponds to red, index 1 to green, and index 2 to blue.
The transfer types supported are
DataBuffer.TYPE_FLOAT
,
DataBuffer.TYPE_DOUBLE
.
The translation from pixel values to color/alpha components for display or processing purposes is a one-to-one correspondence of samples to components.
Methods that use a single int pixel representation throw an
IllegalArgumentException
.
A FloatDoubleColorModel
can be used in
conjunction with a ComponentSampleModelJAI
.
ColorModel
,
ColorSpace
,
ComponentSampleModel
,
ComponentSampleModelJAI
Field Summary | |
protected ColorSpace |
colorSpace
The associated ColorSpace . |
protected int |
colorSpaceType
The type or family of the associated ColorSpace . |
protected boolean |
hasAlpha
Whether this ColorModel supports alpha. |
protected boolean |
isAlphaPremultiplied
Whether alpha is premultiplied. |
protected int |
numColorComponents
The number of components of the associated ColorSpace . |
protected int |
numComponents
The number of components represented by this ColorModel . |
protected int |
transparency
Specifies what alpha values can be represented by this ColorModel . |
Fields inherited from class java.awt.image.ColorModel |
pixel_bits, transferType |
Fields inherited from interface java.awt.Transparency |
BITMASK, OPAQUE, TRANSLUCENT |
Constructor Summary | |
FloatDoubleColorModel(ColorSpace colorSpace,
boolean hasAlpha,
boolean isAlphaPremultiplied,
int transparency,
int transferType)
Constructs a ComponentColorModel from the
specified parameters. |
Method Summary | |
ColorModel |
coerceData(WritableRaster raster,
boolean isAlphaPremultiplied)
Forces the raster data to match the state specified in the
isAlphaPremultiplied variable, assuming the data
is currently correctly described by this ColorModel . |
SampleModel |
createCompatibleSampleModel(int w,
int h)
Creates a SampleModel with the specified width and
height that has a data layout compatible with this
ColorModel . |
WritableRaster |
createCompatibleWritableRaster(int w,
int h)
Creates a WritableRaster with the specified width
and height, that has a data layout (SampleModel )
compatible with this ColorModel . |
int |
getAlpha(int pixel)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
int |
getAlpha(Object inData)
Returns the alpha component for the specified pixel, scaled from 0 to 255. |
int |
getBlue(int pixel)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
int |
getBlue(Object inData)
Returns the blue color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace , sRGB. |
int[] |
getComponents(int pixel,
int[] components,
int offset)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
int[] |
getComponents(Object pixel,
int[] components,
int offset)
Throws an IllegalArgumentException since
the pixel values cannot be placed into an int array. |
int |
getDataElement(int[] components,
int offset)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
Object |
getDataElements(int[] components,
int offset,
Object obj)
Returns a data element array representation of a pixel in this ColorModel , given an array of unnormalized
color/alpha components. |
Object |
getDataElements(int rgb,
Object pixel)
Returns a data element array representation of a pixel in this ColorModel , given an integer pixel representation
in the default RGB color model. |
int |
getGreen(int pixel)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
int |
getGreen(Object inData)
Returns the green color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace , sRGB. |
int |
getRed(int pixel)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
int |
getRed(Object inData)
Returns the red color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace , sRGB. |
int |
getRGB(int pixel)
Throws an IllegalArgumentException , since pixel
values for this ColorModel are not conveniently
representable as a single int . |
int |
getRGB(Object inData)
Returns the color/alpha components for the specified pixel in the default RGB color model format. |
boolean |
isCompatibleRaster(Raster raster)
Returns true if the supplied Raster 's
SampleModel is compatible with this
FloatDoubleColorModel . |
boolean |
isCompatibleSampleModel(SampleModel sm)
Checks whether or not the specified SampleModel is
compatible with this ColorModel . |
String |
toString()
Returns a String containing the values of all valid fields. |
Methods inherited from class java.awt.image.ComponentColorModel |
equals, getAlphaRaster |
Methods inherited from class java.awt.image.ColorModel |
finalize, getColorSpace, getComponentSize, getComponentSize, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, getTransparency, getUnnormalizedComponents, hasAlpha, hashCode, isAlphaPremultiplied |
Methods inherited from class java.lang.Object |
clone, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
protected ColorSpace colorSpace
ColorSpace
.protected int colorSpaceType
ColorSpace
.protected int numColorComponents
ColorSpace
.protected int numComponents
ColorModel
.
This will differ from the number of components of the associated
ColorSpace
if there is an alpha channel.protected int transparency
ColorModel
.protected boolean hasAlpha
ColorModel
supports alpha.protected boolean isAlphaPremultiplied
Constructor Detail |
public FloatDoubleColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
ComponentColorModel
from the
specified parameters. Color components will be in the specified
ColorSpace
. hasAlpha
indicates
whether alpha information is present. If hasAlpha
is true, then the boolean isAlphaPremultiplied
specifies how to interpret color and alpha samples in pixel
values. If the boolean is true
, color samples are
assumed to have been multiplied by the alpha sample. The
transparency
specifies what alpha values can be
represented by this color model. The transferType
is the type of primitive array used to represent pixel values.colorSpace
- The ColorSpace
associated with
this color model.hasAlpha
- If true, this color model supports alpha.isAlphaPremultiplied
- If true, alpha is premultiplied.transparency
- Specifies what alpha values can be represented
by this color model.transferType
- Specifies the type of primitive array used to
represent pixel values, one of
DataBuffer.TYPE_FLOAT or TYPE_DOUBLE.IllegalArgumentException
- If the transfer type is not
DataBuffer.TYPE_FLOAT or TYPE_DOUBLE.ColorSpace
,
Transparency
Method Detail |
public int getRed(int pixel)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getRed
in class ComponentColorModel
public int getGreen(int pixel)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getGreen
in class ComponentColorModel
public int getBlue(int pixel)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getBlue
in class ComponentColorModel
public int getAlpha(int pixel)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getAlpha
in class ComponentColorModel
public int getRGB(int pixel)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getRGB
in class ComponentColorModel
public int getRed(Object inData)
ColorSpace
, sRGB. A color
conversion is done if necessary. The pixel
value
is specified by an array of data elements of type
transferType
passed in as an object reference. The
returned value will be a non pre-multiplied value. If the alpha
is premultiplied, this method divides it out before returning
the value (if the alpha value is 0, the red value will be 0).getRed
in class ComponentColorModel
inData
- The pixel from which to get the red
color component, specified by an array of data elements of type
transferType
.ClassCastException
- If inData
is not a
primitive array of type transferType
.ArrayIndexOutOfBoundsException
- if inData
is not large enough to hold a pixel value for this
ColorModel
.public int getGreen(Object inData)
ColorSpace
, sRGB. A color
conversion is done if necessary. The pixel
value
is specified by an array of data elements of type
transferType
passed in as an object reference. The
returned value will be a non pre-multiplied value. If the alpha
is premultiplied, this method divides it out before returning
the value (if the alpha value is 0, the green value will be 0).getGreen
in class ComponentColorModel
inData
- The pixel from which to get the green
color component, specified by an array of data elements of type
transferType
.ClassCastException
- If inData
is not a
primitive array of type transferType
.ArrayIndexOutOfBoundsException
- if inData
is not large enough to hold a pixel value for this
ColorModel
.public int getBlue(Object inData)
ColorSpace
, sRGB. A color
conversion is done if necessary. The pixel
value
is specified by an array of data elements of type
transferType
passed in as an object reference. The
returned value will be a non pre-multiplied value. If the alpha
is premultiplied, this method divides it out before returning
the value (if the alpha value is 0, the blue value will be 0).getBlue
in class ComponentColorModel
inData
- The pixel from which to get the blue
color component, specified by an array of data elements of type
transferType
.ClassCastException
- If inData
is not a
primitive array of type transferType
.ArrayIndexOutOfBoundsException
- if inData
is not large enough to hold a pixel value for this
ColorModel
.public int getAlpha(Object inData)
transferType
passed in as an
object reference. If the ColorModel
does not have
alpha, 255 is returned.getAlpha
in class ComponentColorModel
inData
- The pixel from which to get the alpha
component, specified by an array of data elements of type
transferType
.IllegalArgumentException
- if inData
is
null
and the colorModel
has alpha.ClassCastException
- If inData
is not a
primitive array of type transferType
and the
ColorModel
has alpha.ArrayIndexOutOfBoundsException
- if inData
is not large enough to hold a pixel value for this
ColorModel
and the ColorModel
has
alpha.public int getRGB(Object inData)
transferType
passed in as an
object reference. The returned value is in a non
pre-multiplied format. If the alpha is premultiplied, this
method divides it out of the color components (if the alpha
value is 0, the color values will be 0).getRGB
in class ComponentColorModel
inData
- The pixel from which to get the
color/alpha components, specified by an array of data elements
of type transferType
.ClassCastException
- If inData
is not a
primitive array of type transferType
.ArrayIndexOutOfBoundsException
- if inData
is not large enough to hold a pixel value for this
ColorModel
.public Object getDataElements(int rgb, Object pixel)
ColorModel
, given an integer pixel representation
in the default RGB color model. This array can then be passed
to the setDataElements
method of a
WritableRaster
object. If the pixel
parameter is null, a new array is allocated.
If the colorSpaceType is of TYPE_GRAY then the rgb components
are converted to gray using appropriate weightsgetDataElements
in class ComponentColorModel
rgb
- An ARGB value packed into an int.pixel
- The float or double array representation of the pixel.ClassCastException
- If pixel
is not null and
is not a primitive array of type transferType
.ArrayIndexOutOfBoundsException
- If pixel
is
not large enough to hold a pixel value for this
ColorModel
.public int[] getComponents(int pixel, int[] components, int offset)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getComponents
in class ComponentColorModel
public int[] getComponents(Object pixel, int[] components, int offset)
IllegalArgumentException
since
the pixel values cannot be placed into an int
array.getComponents
in class ComponentColorModel
public int getDataElement(int[] components, int offset)
IllegalArgumentException
, since pixel
values for this ColorModel
are not conveniently
representable as a single int
.getDataElement
in class ComponentColorModel
public Object getDataElements(int[] components, int offset, Object obj)
ColorModel
, given an array of unnormalized
color/alpha components. This array can then be passed to the
setDataElements
method of a
WritableRaster
object.getDataElements
in class ComponentColorModel
components
- An array of unnormalized color/alpha
components.offset
- The integer offset into the
components
array.obj
- The object in which to store the data element array
representation of the pixel. If obj
variable is
null, a new array is allocated. If obj
is not
null, it must be a primitive array of type
transferType
. An
ArrayIndexOutOfBoundsException
is thrown if
obj
is not large enough to hold a pixel value for
this ColorModel
.ColorModel
.IllegalArgumentException
- If the components array
is not large enough to hold all the color and alpha components
(starting at offset).ClassCastException
- If obj
is not null and
is not a primitive array of type transferType
.ArrayIndexOutOfBoundsException
- If obj
is
not large enough to hold a pixel value for this
ColorModel
.public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
raster
data to match the state specified in the
isAlphaPremultiplied
variable, assuming the data
is currently correctly described by this ColorModel
.
It may multiply or divide the color raster
data by alpha, or
do nothing if the data is in the correct state. If the data needs
to be coerced, this method also returns an instance of
FloatDoubleColorModel
with
the isAlphaPremultiplied
flag set appropriately.coerceData
in class ComponentColorModel
IllegalArgumentException
- if transfer type of
raster
is not the same as that of this
FloatDoubleColorModel
.public boolean isCompatibleRaster(Raster raster)
true
if the supplied Raster
's
SampleModel
is compatible with this
FloatDoubleColorModel
.isCompatibleRaster
in class ComponentColorModel
raster
- a Raster
to be checked for compatibility.public WritableRaster createCompatibleWritableRaster(int w, int h)
WritableRaster
with the specified width
and height, that has a data layout (SampleModel
)
compatible with this ColorModel
. The returned
WritableRaster
's SampleModel
will be
an instance of ComponentSampleModel
.createCompatibleWritableRaster
in class ComponentColorModel
w
- The width of the WritableRaster
h
- The height of the WritableRaster
WritableRaster
that is compatible with
this ColorModel
.WritableRaster
,
SampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
SampleModel
with the specified width and
height that has a data layout compatible with this
ColorModel
. The returned SampleModel
will be an instance of ComponentSampleModel
.createCompatibleSampleModel
in class ComponentColorModel
w
- The width of the SampleModel
.h
- The height of the SampleModel
.SampleModel
that is compatible with this
ColorModel
.SampleModel
,
ComponentSampleModel
public boolean isCompatibleSampleModel(SampleModel sm)
SampleModel
is
compatible with this ColorModel
. A
SampleModel
is compatible if it is an instance of
ComponentSampleModel
, has the sample number of
bands as the total number of components (including alpha) in
the ColorSpace
used by this
ColorModel
, and has the same data type (float or
double) as this ColorModel
.isCompatibleSampleModel
in class ComponentColorModel
sm
- The SampleModel
to test for compatibility.true
if the SampleModel
is
compatible with this ColorModel
,
false
if it is not.SampleModel
,
ComponentSampleModel
public String toString()
String
containing the values of all valid fields.toString
in class ColorModel
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |