A subclass of the ICC_Profile class which represents profiles
which meet the following criteria: the color space type of the
profile is RGB and the profile includes the redColorantTag,
greenColorantTag, blueColorantTag, redTRCTag, greenTRCTag,
blueTRCTag, and mediaWhitePointTag tags. Examples of this
kind of profile are three-component matrix-based input profiles
and RGB display profiles. The getInstance methods in the
ICC_Profile class will return an ICC_ProfileRGB object
when the above conditions are met. The advantage of this class
is that it provides color transform matrices and lookup tables
that Java or native methods may be able to use directly to
optimize color conversion in some cases.
To transform from a device profile color space to the CIEXYZ Profile
Connection Space, each device color component is first linearized by
a lookup through the corresponding tone reproduction curve (TRC).
Then the resulting linear RGB components are converted via a 3x3 matrix
(constructed from the RGB colorants) to the CIEXYZ PCS.
The inverse transform is done by converting PCS XYZ components to linear
RGB components via the inverse of the above 3x3 matrix, and then converting
linear RGB to device RGB via inverses of the TRCs.
Field Summary
static int
BLUECOMPONENT
To request a gamma value or TRC for the blue component.
static int
GREENCOMPONENT
To request a gamma value or TRC for the green component.
static int
REDCOMPONENT
To request a gamma value or TRC for the red component.
Fields inherited from class java.awt.color.ICC_Profile
getGamma(int component)
Returns a gamma value representing the tone reproduction curve
(TRC) for a particular component.
float[][]
getMatrix()
Returns a 3x3 float matrix constructed from the X, Y, and Z
components of the redColorantTag, greenColorantTag, and
blueColorantTag in the ICC profile, as described above.
float[]
getMediaWhitePoint()
Returns a float array of length 3 containing the X, Y, and Z
components of the mediaWhitePointTag in the ICC profile.
short[]
getTRC(int component)
Returns the TRC for a particular component as an array of
shorts.
Methods inherited from class java.awt.color.ICC_Profile
To request a gamma value or TRC for the red component.
GREENCOMPONENT
public static final int GREENCOMPONENT
To request a gamma value or TRC for the green component.
BLUECOMPONENT
public static final int BLUECOMPONENT
To request a gamma value or TRC for the blue component.
Method Detail
getMediaWhitePoint
public float[] getMediaWhitePoint()
Returns a float array of length 3 containing the X, Y, and Z
components of the mediaWhitePointTag in the ICC profile.
getMatrix
public float[][] getMatrix()
Returns a 3x3 float matrix constructed from the X, Y, and Z
components of the redColorantTag, greenColorantTag, and
blueColorantTag in the ICC profile, as described above.
This matrix can be used for color transforms in the forward
direction of the profile, i.e. from the profile color space
to the CIEXYZ PCS.
getGamma
public float getGamma(int component)
Returns a gamma value representing the tone reproduction curve
(TRC) for a particular component. Component must be one of
REDCOMPONENT, GREENCOMPONENT, or BLUECOMPONENT. If the profile
represents the TRC for the corresponding component
as a table rather than a single gamma value, then an
exception is thrown. In this case the actual table
can be obtained via getTRC(). When using a gamma value,
the linear component (R, G, or B) is computed as follows:
gamma
linearComponent = deviceComponent
Returns:
the gamma value as a float.
Throws:
ProfileDataException - if the profile does not specify
the corresponding TRC as a single gamma value.
getTRC
public short[] getTRC(int component)
Returns the TRC for a particular component as an array of
shorts. Component must be one of REDCOMPONENT, GREENCOMPONENT, or
BLUECOMPONENT. If the profile has specified the corresponding TRC
as linear (gamma = 1.0) or as a simple gamma value, this method
throws an exception, and the getGamma() method should be used
to get the gamma value. Otherwise the short array returned here
represents a lookup table where the input component value
is conceptually in the range [0.0, 1.0]. Value 0.0 maps
to array index 0 and value 1.0 maps to array index length-1.
Interpolation may be used to generate output values for
input values which do not map exactly to an index in the
array. Output values also map linearly to the range [0.0, 1.0].
Value 0.0 is represented by an array value of 0x0000 and
value 1.0 by 0xFFFF, i.e. the values are really unsigned
short values, although they are returned in a short array.
Returns:
a short array representing the TRC.
Throws:
ProfileDataException - if the profile does not specify
the corresponding TRC as a table.
Submit a bug or feature Java, Java 2D, and JDBC are a trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries. Copyright 1993-1999 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.