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.
To request a gamma value or TRC for the red component.
public static final int GREENCOMPONENT
To request a gamma value or TRC for the green component.
public static final int BLUECOMPONENT
To request a gamma value or TRC for the blue component.
public float getMediaWhitePoint()
Returns a float array of length 3 containing the X, Y, and Z
components of the mediaWhitePointTag in the ICC profile.
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.
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:
linearComponent = deviceComponent
the gamma value as a float.
ProfileDataException - if the profile does not specify
the corresponding TRC as a single gamma value.
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.
Java, Java 2D, and JDBC are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries. Copyright 1993-2001 Sun Microsystems, Inc. 901 San Antonio Road Palo Alto, California, 94303, U.S.A. All Rights Reserved.