< prev index next >
src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java
Print this page
@@ -21,12 +21,11 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-/*
- **********************************************************************
+/* ********************************************************************
**********************************************************************
**********************************************************************
*** COPYRIGHT (c) Eastman Kodak Company, 1997 ***
*** As an unpublished work pursuant to Title 17 of the United ***
*** States Code. All rights reserved. ***
@@ -34,58 +33,50 @@
**********************************************************************
**********************************************************************/
package java.awt.color;
-import sun.java2d.cmm.ColorTransform;
import sun.java2d.cmm.CMSManager;
+import sun.java2d.cmm.ColorTransform;
import sun.java2d.cmm.PCMM;
-
/**
+ * The {@code ICC_ColorSpace} class is an implementation of the abstract
+ * {@code ColorSpace} class. This representation of device independent and
+ * device dependent color spaces is based on the International Color Consortium
+ * Specification ICC.1:2001-12, File Format for Color Profiles (see
+ * <a href="http://www.color.org">http://www.color.org</a>).
+ * <p>
+ * Typically, a {@code Color} or {@code ColorModel} would be associated with an
+ * ICC Profile which is either an input, display, or output profile (see the ICC
+ * specification). There are other types of ICC Profiles, e.g. abstract
+ * profiles, device link profiles, and named color profiles, which do not
+ * contain information appropriate for representing the color space of a color,
+ * image, or device (see {@code ICC_Profile}). Attempting to create an
+ * {@code ICC_ColorSpace} object from an inappropriate ICC Profile is an error.
+ * <p>
+ * ICC Profiles represent transformations from the color space of the profile
+ * (e.g. a monitor) to a Profile Connection Space (PCS). Profiles of interest
+ * for tagging images or colors have a PCS which is one of the device
+ * independent spaces (one CIEXYZ space and two CIELab spaces) defined in the
+ * ICC Profile Format Specification. Most profiles of interest either have
+ * invertible transformations or explicitly specify transformations going both
+ * directions. Should an {@code ICC_ColorSpace} object be used in a way
+ * requiring a conversion from PCS to the profile's native space and there is
+ * inadequate data to correctly perform the conversion, the
+ * {@code ICC_ColorSpace} object will produce output in the specified type of
+ * color space (e.g. {@code TYPE_RGB}, {@code TYPE_CMYK}, etc.), but the
+ * specific color values of the output data will be undefined.
+ * <p>
+ * The details of this class are not important for simple applets, which draw in
+ * a default color space or manipulate and display imported images with a known
+ * color space. At most, such applets would need to get one of the default color
+ * spaces via {@link ColorSpace#getInstance}.
*
- * The ICC_ColorSpace class is an implementation of the abstract
- * ColorSpace class. This representation of
- * device independent and device dependent color spaces is based on the
- * International Color Consortium Specification ICC.1:2001-12, File Format for
- * Color Profiles (see <A href="http://www.color.org">http://www.color.org</A>).
- * <p>
- * Typically, a Color or ColorModel would be associated with an ICC
- * Profile which is either an input, display, or output profile (see
- * the ICC specification). There are other types of ICC Profiles, e.g.
- * abstract profiles, device link profiles, and named color profiles,
- * which do not contain information appropriate for representing the color
- * space of a color, image, or device (see ICC_Profile).
- * Attempting to create an ICC_ColorSpace object from an inappropriate ICC
- * Profile is an error.
- * <p>
- * ICC Profiles represent transformations from the color space of
- * the profile (e.g. a monitor) to a Profile Connection Space (PCS).
- * Profiles of interest for tagging images or colors have a
- * PCS which is one of the device independent
- * spaces (one CIEXYZ space and two CIELab spaces) defined in the
- * ICC Profile Format Specification. Most profiles of interest
- * either have invertible transformations or explicitly specify
- * transformations going both directions. Should an ICC_ColorSpace
- * object be used in a way requiring a conversion from PCS to
- * the profile's native space and there is inadequate data to
- * correctly perform the conversion, the ICC_ColorSpace object will
- * produce output in the specified type of color space (e.g. TYPE_RGB,
- * TYPE_CMYK, etc.), but the specific color values of the output data
- * will be undefined.
- * <p>
- * The details of this class are not important for simple applets,
- * which draw in a default color space or manipulate and display
- * imported images with a known color space. At most, such applets
- * would need to get one of the default color spaces via
- * ColorSpace.getInstance().
* @see ColorSpace
* @see ICC_Profile
*/
-
-
-
public class ICC_ColorSpace extends ColorSpace {
static final long serialVersionUID = 3455889114070431483L;
private ICC_Profile thisProfile;
@@ -99,16 +90,17 @@
private transient ColorTransform this2srgb;
private transient ColorTransform srgb2this;
private transient ColorTransform this2xyz;
private transient ColorTransform xyz2this;
-
/**
- * Constructs a new ICC_ColorSpace from an ICC_Profile object.
- * @param profile the specified ICC_Profile object
- * @exception IllegalArgumentException if profile is inappropriate for
- * representing a ColorSpace.
+ * Constructs a new {@code ICC_ColorSpace} from an {@code ICC_Profile}
+ * object.
+ *
+ * @param profile the specified {@code ICC_Profile} object
+ * @throws IllegalArgumentException if profile is inappropriate for
+ * representing a {@code ColorSpace}
*/
public ICC_ColorSpace (ICC_Profile profile) {
super (profile.getColorSpaceType(), profile.getNumComponents());
int profileClass = profile.getProfileClass();
@@ -138,37 +130,37 @@
thisProfile = ICC_Profile.getInstance(ColorSpace.CS_sRGB);
}
}
/**
- * Returns the ICC_Profile for this ICC_ColorSpace.
- * @return the ICC_Profile for this ICC_ColorSpace.
+ * Returns the {@code ICC_Profile} for this {@code ICC_ColorSpace}.
+ *
+ * @return the {@code ICC_Profile} for this {@code ICC_ColorSpace}
*/
public ICC_Profile getProfile() {
return thisProfile;
}
/**
- * Transforms a color value assumed to be in this ColorSpace
- * into a value in the default CS_sRGB color space.
+ * Transforms a color value assumed to be in this {@code ColorSpace} into a
+ * value in the default {@code CS_sRGB} color space.
* <p>
- * This method transforms color values using algorithms designed
- * to produce the best perceptual match between input and output
- * colors. In order to do colorimetric conversion of color values,
- * you should use the {@code toCIEXYZ}
- * method of this color space to first convert from the input
- * color space to the CS_CIEXYZ color space, and then use the
- * {@code fromCIEXYZ} method of the CS_sRGB color space to
- * convert from CS_CIEXYZ to the output color space.
- * See {@link #toCIEXYZ(float[]) toCIEXYZ} and
+ * This method transforms color values using algorithms designed to produce
+ * the best perceptual match between input and output colors. In order to do
+ * colorimetric conversion of color values, you should use the
+ * {@code toCIEXYZ} method of this color space to first convert from the
+ * input color space to the {@code CS_CIEXYZ} color space, and then use the
+ * {@code fromCIEXYZ} method of the {@code CS_sRGB} color space to convert
+ * from {@code CS_CIEXYZ} to the output color space. See
+ * {@link #toCIEXYZ(float[]) toCIEXYZ} and
* {@link #fromCIEXYZ(float[]) fromCIEXYZ} for further information.
*
- * @param colorvalue a float array with length of at least the number
- * of components in this ColorSpace.
- * @return a float array of length 3.
- * @throws ArrayIndexOutOfBoundsException if array length is not
- * at least the number of components in this ColorSpace.
+ * @param colorvalue a float array with length of at least the number of
+ * components in this {@code ColorSpace}
+ * @return a float array of length 3
+ * @throws ArrayIndexOutOfBoundsException if array length is not at least
+ * the number of components in this {@code ColorSpace}
*/
public float[] toRGB (float[] colorvalue) {
if (this2srgb == null) {
ColorTransform[] transformList = new ColorTransform [2];
@@ -198,29 +190,27 @@
}
return result;
}
/**
- * Transforms a color value assumed to be in the default CS_sRGB
- * color space into this ColorSpace.
+ * Transforms a color value assumed to be in the default {@code CS_sRGB}
+ * color space into this {@code ColorSpace}.
* <p>
- * This method transforms color values using algorithms designed
- * to produce the best perceptual match between input and output
- * colors. In order to do colorimetric conversion of color values,
- * you should use the {@code toCIEXYZ}
- * method of the CS_sRGB color space to first convert from the input
- * color space to the CS_CIEXYZ color space, and then use the
- * {@code fromCIEXYZ} method of this color space to
- * convert from CS_CIEXYZ to the output color space.
- * See {@link #toCIEXYZ(float[]) toCIEXYZ} and
+ * This method transforms color values using algorithms designed to produce
+ * the best perceptual match between input and output colors. In order to do
+ * colorimetric conversion of color values, you should use the
+ * {@code toCIEXYZ} method of the {@code CS_sRGB} color space to first
+ * convert from the input color space to the {@code CS_CIEXYZ} color space,
+ * and then use the {@code fromCIEXYZ} method of this color space to convert
+ * from {@code CS_CIEXYZ} to the output color space. See
+ * {@link #toCIEXYZ(float[]) toCIEXYZ} and
* {@link #fromCIEXYZ(float[]) fromCIEXYZ} for further information.
*
- * @param rgbvalue a float array with length of at least 3.
- * @return a float array with length equal to the number of
- * components in this ColorSpace.
- * @throws ArrayIndexOutOfBoundsException if array length is not
- * at least 3.
+ * @param rgbvalue a float array with length of at least 3
+ * @return a float array with length equal to the number of components in
+ * this {@code ColorSpace}
+ * @throws ArrayIndexOutOfBoundsException if array length is not at least 3
*/
public float[] fromRGB(float[] rgbvalue) {
if (srgb2this == null) {
ColorTransform[] transformList = new ColorTransform [2];
@@ -249,74 +239,70 @@
diffMinMax[i] + minVal[i];
}
return result;
}
-
/**
- * Transforms a color value assumed to be in this ColorSpace
- * into the CS_CIEXYZ conversion color space.
+ * Transforms a color value assumed to be in this {@code ColorSpace} into
+ * the {@code CS_CIEXYZ} conversion color space.
* <p>
- * This method transforms color values using relative colorimetry,
- * as defined by the ICC Specification. This
- * means that the XYZ values returned by this method are represented
- * relative to the D50 white point of the CS_CIEXYZ color space.
- * This representation is useful in a two-step color conversion
- * process in which colors are transformed from an input color
- * space to CS_CIEXYZ and then to an output color space. This
- * representation is not the same as the XYZ values that would
- * be measured from the given color value by a colorimeter.
- * A further transformation is necessary to compute the XYZ values
- * that would be measured using current CIE recommended practices.
- * The paragraphs below explain this in more detail.
+ * This method transforms color values using relative colorimetry, as
+ * defined by the ICC Specification. This means that the XYZ values returned
+ * by this method are represented relative to the D50 white point of the
+ * {@code CS_CIEXYZ} color space. This representation is useful in a
+ * two-step color conversion process in which colors are transformed from an
+ * input color space to {@code CS_CIEXYZ} and then to an output color space.
+ * This representation is not the same as the XYZ values that would be
+ * measured from the given color value by a colorimeter. A further
+ * transformation is necessary to compute the XYZ values that would be
+ * measured using current CIE recommended practices. The paragraphs below
+ * explain this in more detail.
* <p>
* The ICC standard uses a device independent color space (DICS) as the
- * mechanism for converting color from one device to another device. In
- * this architecture, colors are converted from the source device's color
- * space to the ICC DICS and then from the ICC DICS to the destination
- * device's color space. The ICC standard defines device profiles which
- * contain transforms which will convert between a device's color space
- * and the ICC DICS. The overall conversion of colors from a source
- * device to colors of a destination device is done by connecting the
- * device-to-DICS transform of the profile for the source device to the
- * DICS-to-device transform of the profile for the destination device.
- * For this reason, the ICC DICS is commonly referred to as the profile
- * connection space (PCS). The color space used in the methods
- * toCIEXYZ and fromCIEXYZ is the CIEXYZ PCS defined by the ICC
- * Specification. This is also the color space represented by
- * ColorSpace.CS_CIEXYZ.
- * <p>
- * The XYZ values of a color are often represented as relative to some
- * white point, so the actual meaning of the XYZ values cannot be known
- * without knowing the white point of those values. This is known as
- * relative colorimetry. The PCS uses a white point of D50, so the XYZ
- * values of the PCS are relative to D50. For example, white in the PCS
- * will have the XYZ values of D50, which is defined to be X=.9642,
- * Y=1.000, and Z=0.8249. This white point is commonly used for graphic
- * arts applications, but others are often used in other applications.
- * <p>
- * To quantify the color characteristics of a device such as a printer
- * or monitor, measurements of XYZ values for particular device colors
- * are typically made. For purposes of this discussion, the term
- * device XYZ values is used to mean the XYZ values that would be
- * measured from device colors using current CIE recommended practices.
- * <p>
- * Converting between device XYZ values and the PCS XYZ values returned
- * by this method corresponds to converting between the device's color
- * space, as represented by CIE colorimetric values, and the PCS. There
- * are many factors involved in this process, some of which are quite
- * subtle. The most important, however, is the adjustment made to account
- * for differences between the device's white point and the white point of
- * the PCS. There are many techniques for doing this and it is the
- * subject of much current research and controversy. Some commonly used
- * methods are XYZ scaling, the von Kries transform, and the Bradford
- * transform. The proper method to use depends upon each particular
- * application.
- * <p>
- * The simplest method is XYZ scaling. In this method each device XYZ
- * value is converted to a PCS XYZ value by multiplying it by the ratio
- * of the PCS white point (D50) to the device white point.
+ * mechanism for converting color from one device to another device. In this
+ * architecture, colors are converted from the source device's color space
+ * to the ICC DICS and then from the ICC DICS to the destination device's
+ * color space. The ICC standard defines device profiles which contain
+ * transforms which will convert between a device's color space and the ICC
+ * DICS. The overall conversion of colors from a source device to colors of
+ * a destination device is done by connecting the device-to-DICS transform
+ * of the profile for the source device to the DICS-to-device transform of
+ * the profile for the destination device. For this reason, the ICC DICS is
+ * commonly referred to as the profile connection space (PCS). The color
+ * space used in the methods {@code toCIEXYZ} and {@code fromCIEXYZ} is the
+ * CIEXYZ PCS defined by the ICC Specification. This is also the color space
+ * represented by {@code ColorSpace.CS_CIEXYZ}.
+ * <p>
+ * The XYZ values of a color are often represented as relative to some white
+ * point, so the actual meaning of the XYZ values cannot be known without
+ * knowing the white point of those values. This is known as relative
+ * colorimetry. The PCS uses a white point of D50, so the XYZ values of the
+ * PCS are relative to D50. For example, white in the PCS will have the XYZ
+ * values of D50, which is defined to be X=.9642, Y=1.000, and Z=0.8249.
+ * This white point is commonly used for graphic arts applications, but
+ * others are often used in other applications.
+ * <p>
+ * To quantify the color characteristics of a device such as a printer or
+ * monitor, measurements of XYZ values for particular device colors are
+ * typically made. For purposes of this discussion, the term device XYZ
+ * values is used to mean the XYZ values that would be measured from device
+ * colors using current CIE recommended practices.
+ * <p>
+ * Converting between device XYZ values and the PCS XYZ values returned by
+ * this method corresponds to converting between the device's color space,
+ * as represented by CIE colorimetric values, and the PCS. There are many
+ * factors involved in this process, some of which are quite subtle. The
+ * most important, however, is the adjustment made to account for
+ * differences between the device's white point and the white point of the
+ * PCS. There are many techniques for doing this and it is the subject of
+ * much current research and controversy. Some commonly used methods are XYZ
+ * scaling, the von Kries transform, and the Bradford transform. The proper
+ * method to use depends upon each particular application.
+ * <p>
+ * The simplest method is XYZ scaling. In this method each device XYZ value
+ * is converted to a PCS XYZ value by multiplying it by the ratio of the PCS
+ * white point (D50) to the device white point.
* <pre>
*
* Xd, Yd, Zd are the device XYZ values
* Xdw, Ydw, Zdw are the device XYZ white point values
* Xp, Yp, Zp are the PCS XYZ values
@@ -336,26 +322,25 @@
* Yd = Yp * (Ydw / Yd50)
* Zd = Zp * (Zdw / Zd50)
*
* </pre>
* <p>
- * Note that the media white point tag in an ICC profile is not the same
- * as the device white point. The media white point tag is expressed in
- * PCS values and is used to represent the difference between the XYZ of
- * device illuminant and the XYZ of the device media when measured under
- * that illuminant. The device white point is expressed as the device
- * XYZ values corresponding to white displayed on the device. For
- * example, displaying the RGB color (1.0, 1.0, 1.0) on an sRGB device
- * will result in a measured device XYZ value of D65. This will not
- * be the same as the media white point tag XYZ value in the ICC
- * profile for an sRGB device.
- *
- * @param colorvalue a float array with length of at least the number
- * of components in this ColorSpace.
- * @return a float array of length 3.
- * @throws ArrayIndexOutOfBoundsException if array length is not
- * at least the number of components in this ColorSpace.
+ * Note that the media white point tag in an ICC profile is not the same as
+ * the device white point. The media white point tag is expressed in PCS
+ * values and is used to represent the difference between the XYZ of device
+ * illuminant and the XYZ of the device media when measured under that
+ * illuminant. The device white point is expressed as the device XYZ values
+ * corresponding to white displayed on the device. For example, displaying
+ * the RGB color (1.0, 1.0, 1.0) on an sRGB device will result in a measured
+ * device XYZ value of D65. This will not be the same as the media white
+ * point tag XYZ value in the ICC profile for an sRGB device.
+ *
+ * @param colorvalue a float array with length of at least the number of
+ * components in this {@code ColorSpace}
+ * @return a float array of length 3
+ * @throws ArrayIndexOutOfBoundsException if array length is not at least
+ * the number of components in this {@code ColorSpace}
*/
public float[] toCIEXYZ(float[] colorvalue) {
if (this2xyz == null) {
ColorTransform[] transformList = new ColorTransform [2];
@@ -392,75 +377,71 @@
result[i] = (((float) (tmp[i] & 0xffff)) / 65535.0f) * ALMOST_TWO;
}
return result;
}
-
/**
- * Transforms a color value assumed to be in the CS_CIEXYZ conversion
- * color space into this ColorSpace.
+ * Transforms a color value assumed to be in the {@code CS_CIEXYZ}
+ * conversion color space into this ColorSpace.
* <p>
- * This method transforms color values using relative colorimetry,
- * as defined by the ICC Specification. This
- * means that the XYZ argument values taken by this method are represented
- * relative to the D50 white point of the CS_CIEXYZ color space.
- * This representation is useful in a two-step color conversion
- * process in which colors are transformed from an input color
- * space to CS_CIEXYZ and then to an output color space. The color
- * values returned by this method are not those that would produce
- * the XYZ value passed to the method when measured by a colorimeter.
- * If you have XYZ values corresponding to measurements made using
- * current CIE recommended practices, they must be converted to D50
- * relative values before being passed to this method.
- * The paragraphs below explain this in more detail.
+ * This method transforms color values using relative colorimetry, as
+ * defined by the ICC Specification. This means that the XYZ argument values
+ * taken by this method are represented relative to the D50 white point of
+ * the {@code CS_CIEXYZ} color space. This representation is useful in a
+ * two-step color conversion process in which colors are transformed from an
+ * input color space to {@code CS_CIEXYZ} and then to an output color space.
+ * The color values returned by this method are not those that would produce
+ * the XYZ value passed to the method when measured by a colorimeter. If you
+ * have XYZ values corresponding to measurements made using current CIE
+ * recommended practices, they must be converted to D50 relative values
+ * before being passed to this method. The paragraphs below explain this in
+ * more detail.
* <p>
* The ICC standard uses a device independent color space (DICS) as the
- * mechanism for converting color from one device to another device. In
- * this architecture, colors are converted from the source device's color
- * space to the ICC DICS and then from the ICC DICS to the destination
- * device's color space. The ICC standard defines device profiles which
- * contain transforms which will convert between a device's color space
- * and the ICC DICS. The overall conversion of colors from a source
- * device to colors of a destination device is done by connecting the
- * device-to-DICS transform of the profile for the source device to the
- * DICS-to-device transform of the profile for the destination device.
- * For this reason, the ICC DICS is commonly referred to as the profile
- * connection space (PCS). The color space used in the methods
- * toCIEXYZ and fromCIEXYZ is the CIEXYZ PCS defined by the ICC
- * Specification. This is also the color space represented by
- * ColorSpace.CS_CIEXYZ.
- * <p>
- * The XYZ values of a color are often represented as relative to some
- * white point, so the actual meaning of the XYZ values cannot be known
- * without knowing the white point of those values. This is known as
- * relative colorimetry. The PCS uses a white point of D50, so the XYZ
- * values of the PCS are relative to D50. For example, white in the PCS
- * will have the XYZ values of D50, which is defined to be X=.9642,
- * Y=1.000, and Z=0.8249. This white point is commonly used for graphic
- * arts applications, but others are often used in other applications.
- * <p>
- * To quantify the color characteristics of a device such as a printer
- * or monitor, measurements of XYZ values for particular device colors
- * are typically made. For purposes of this discussion, the term
- * device XYZ values is used to mean the XYZ values that would be
- * measured from device colors using current CIE recommended practices.
+ * mechanism for converting color from one device to another device. In this
+ * architecture, colors are converted from the source device's color space
+ * to the ICC DICS and then from the ICC DICS to the destination device's
+ * color space. The ICC standard defines device profiles which contain
+ * transforms which will convert between a device's color space and the ICC
+ * DICS. The overall conversion of colors from a source device to colors of
+ * a destination device is done by connecting the device-to-DICS transform
+ * of the profile for the source device to the DICS-to-device transform of
+ * the profile for the destination device. For this reason, the ICC DICS is
+ * commonly referred to as the profile connection space (PCS). The color
+ * space used in the methods {@code toCIEXYZ} and {@code fromCIEXYZ} is the
+ * CIEXYZ PCS defined by the ICC Specification. This is also the color space
+ * represented by {@code ColorSpace.CS_CIEXYZ}.
+ * <p>
+ * The XYZ values of a color are often represented as relative to some white
+ * point, so the actual meaning of the XYZ values cannot be known without
+ * knowing the white point of those values. This is known as relative
+ * colorimetry. The PCS uses a white point of D50, so the XYZ values of the
+ * PCS are relative to D50. For example, white in the PCS will have the XYZ
+ * values of D50, which is defined to be X=.9642, Y=1.000, and Z=0.8249.
+ * This white point is commonly used for graphic arts applications, but
+ * others are often used in other applications.
+ * <p>
+ * To quantify the color characteristics of a device such as a printer or
+ * monitor, measurements of XYZ values for particular device colors are
+ * typically made. For purposes of this discussion, the term device XYZ
+ * values is used to mean the XYZ values that would be measured from device
+ * colors using current CIE recommended practices.
* <p>
* Converting between device XYZ values and the PCS XYZ values taken as
* arguments by this method corresponds to converting between the device's
* color space, as represented by CIE colorimetric values, and the PCS.
* There are many factors involved in this process, some of which are quite
* subtle. The most important, however, is the adjustment made to account
* for differences between the device's white point and the white point of
- * the PCS. There are many techniques for doing this and it is the
- * subject of much current research and controversy. Some commonly used
- * methods are XYZ scaling, the von Kries transform, and the Bradford
- * transform. The proper method to use depends upon each particular
- * application.
- * <p>
- * The simplest method is XYZ scaling. In this method each device XYZ
- * value is converted to a PCS XYZ value by multiplying it by the ratio
- * of the PCS white point (D50) to the device white point.
+ * the PCS. There are many techniques for doing this and it is the subject
+ * of much current research and controversy. Some commonly used methods are
+ * XYZ scaling, the von Kries transform, and the Bradford transform. The
+ * proper method to use depends upon each particular application.
+ * <p>
+ * The simplest method is XYZ scaling. In this method each device XYZ value
+ * is converted to a PCS XYZ value by multiplying it by the ratio of the PCS
+ * white point (D50) to the device white point.
* <pre>
*
* Xd, Yd, Zd are the device XYZ values
* Xdw, Ydw, Zdw are the device XYZ white point values
* Xp, Yp, Zp are the PCS XYZ values
@@ -480,26 +461,24 @@
* Yd = Yp * (Ydw / Yd50)
* Zd = Zp * (Zdw / Zd50)
*
* </pre>
* <p>
- * Note that the media white point tag in an ICC profile is not the same
- * as the device white point. The media white point tag is expressed in
- * PCS values and is used to represent the difference between the XYZ of
- * device illuminant and the XYZ of the device media when measured under
- * that illuminant. The device white point is expressed as the device
- * XYZ values corresponding to white displayed on the device. For
- * example, displaying the RGB color (1.0, 1.0, 1.0) on an sRGB device
- * will result in a measured device XYZ value of D65. This will not
- * be the same as the media white point tag XYZ value in the ICC
- * profile for an sRGB device.
- *
- * @param colorvalue a float array with length of at least 3.
- * @return a float array with length equal to the number of
- * components in this ColorSpace.
- * @throws ArrayIndexOutOfBoundsException if array length is not
- * at least 3.
+ * Note that the media white point tag in an ICC profile is not the same as
+ * the device white point. The media white point tag is expressed in PCS
+ * values and is used to represent the difference between the XYZ of device
+ * illuminant and the XYZ of the device media when measured under that
+ * illuminant. The device white point is expressed as the device XYZ values
+ * corresponding to white displayed on the device. For example, displaying
+ * the RGB color (1.0, 1.0, 1.0) on an sRGB device will result in a measured
+ * device XYZ value of D65. This will not be the same as the media white
+ * point tag XYZ value in the ICC profile for an sRGB device.
+ *
+ * @param colorvalue a float array with length of at least 3
+ * @return a float array with length equal to the number of components in
+ * this {@code ColorSpace}
+ * @throws ArrayIndexOutOfBoundsException if array length is not at least 3
*/
public float[] fromCIEXYZ(float[] colorvalue) {
if (xyz2this == null) {
ColorTransform[] transformList = new ColorTransform [2];
@@ -538,23 +517,24 @@
}
return result;
}
/**
- * Returns the minimum normalized color component value for the
- * specified component. For TYPE_XYZ spaces, this method returns
- * minimum values of 0.0 for all components. For TYPE_Lab spaces,
- * this method returns 0.0 for L and -128.0 for a and b components.
- * This is consistent with the encoding of the XYZ and Lab Profile
- * Connection Spaces in the ICC specification. For all other types, this
- * method returns 0.0 for all components. When using an ICC_ColorSpace
- * with a profile that requires different minimum component values,
- * it is necessary to subclass this class and override this method.
- * @param component The component index.
- * @return The minimum normalized component value.
- * @throws IllegalArgumentException if component is less than 0 or
- * greater than numComponents - 1.
+ * Returns the minimum normalized color component value for the specified
+ * component. For {@code TYPE_XYZ} spaces, this method returns minimum
+ * values of 0.0 for all components. For {@code TYPE_Lab} spaces, this
+ * method returns 0.0 for L and -128.0 for a and b components. This is
+ * consistent with the encoding of the XYZ and Lab Profile Connection Spaces
+ * in the ICC specification. For all other types, this method returns 0.0
+ * for all components. When using an {@code ICC_ColorSpace} with a profile
+ * that requires different minimum component values, it is necessary to
+ * subclass this class and override this method.
+ *
+ * @param component the component index
+ * @return the minimum normalized component value
+ * @throws IllegalArgumentException if component is less than 0 or greater
+ * than {@code numComponents - 1}
* @since 1.4
*/
public float getMinValue(int component) {
if ((component < 0) || (component > this.getNumComponents() - 1)) {
throw new IllegalArgumentException(
@@ -562,24 +542,25 @@
}
return minVal[component];
}
/**
- * Returns the maximum normalized color component value for the
- * specified component. For TYPE_XYZ spaces, this method returns
- * maximum values of 1.0 + (32767.0 / 32768.0) for all components.
- * For TYPE_Lab spaces,
- * this method returns 100.0 for L and 127.0 for a and b components.
- * This is consistent with the encoding of the XYZ and Lab Profile
- * Connection Spaces in the ICC specification. For all other types, this
- * method returns 1.0 for all components. When using an ICC_ColorSpace
- * with a profile that requires different maximum component values,
- * it is necessary to subclass this class and override this method.
- * @param component The component index.
- * @return The maximum normalized component value.
- * @throws IllegalArgumentException if component is less than 0 or
- * greater than numComponents - 1.
+ * Returns the maximum normalized color component value for the specified
+ * component. For {@code TYPE_XYZ} spaces, this method returns maximum
+ * values of 1.0 + (32767.0 / 32768.0) for all components. For
+ * {@code TYPE_Lab} spaces, this method returns 100.0 for L and 127.0 for a
+ * and b components. This is consistent with the encoding of the XYZ and Lab
+ * Profile Connection Spaces in the ICC specification. For all other types,
+ * this method returns 1.0 for all components. When using an
+ * {@code ICC_ColorSpace} with a profile that requires different maximum
+ * component values, it is necessary to subclass this class and override
+ * this method.
+ *
+ * @param component the component index
+ * @return the maximum normalized component value
+ * @throws IllegalArgumentException if component is less than 0 or greater
+ * than {@code numComponents - 1}
* @since 1.4
*/
public float getMaxValue(int component) {
if ((component < 0) || (component > this.getNumComponents() - 1)) {
throw new IllegalArgumentException(
< prev index next >