--- old/src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java 2018-10-24 21:12:10.000000000 -0700 +++ new/src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java 2018-10-24 21:12:10.000000000 -0700 @@ -23,8 +23,7 @@ * questions. */ -/* - ********************************************************************** +/* ******************************************************************** ********************************************************************** ********************************************************************** *** COPYRIGHT (c) Eastman Kodak Company, 1997 *** @@ -36,54 +35,46 @@ 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 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 http://www.color.org). + * 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 + * http://www.color.org). *

- * 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. + * 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. *

- * 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. + * 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. *

- * 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(). + * 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}. + * * @see ColorSpace * @see ICC_Profile */ - - - public class ICC_ColorSpace extends ColorSpace { static final long serialVersionUID = 3455889114070431483L; @@ -101,13 +92,14 @@ 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()); @@ -140,33 +132,33 @@ } /** - * 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. *

- * 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) { @@ -200,25 +192,23 @@ } /** - * 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}. *

- * 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) { @@ -251,70 +241,66 @@ 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. *

- * 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. *

* 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. - *

- * 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. - *

- * 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. - *

- * 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. - *

- * 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}. + *

+ * 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. + *

+ * 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. + *

+ * 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. + *

+ * 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. *

      *
      * Xd, Yd, Zd are the device XYZ values
@@ -338,22 +324,21 @@
      *
      * 
*

- * 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) { @@ -394,71 +379,67 @@ 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. *

- * 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. *

* 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. - *

- * 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. - *

- * 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}. + *

+ * 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. + *

+ * 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. *

* 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 + * 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. - *

- * 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. + *

+ * 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. *

      *
      * Xd, Yd, Zd are the device XYZ values
@@ -482,22 +463,20 @@
      *
      * 
*

- * 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) { @@ -540,19 +519,20 @@ } /** - * 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) { @@ -564,20 +544,21 @@ } /** - * 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) {