changeset 53492:add2ef6e79c4

8212790: Javadoc cleanup of java.awt.color package Reviewed-by: prr, kaddepalli
author serb
date Mon, 29 Oct 2018 17:34:05 -0700
parents 56585eb10314
children 191411a26c71
files src/java.desktop/share/classes/java/awt/color/CMMException.java src/java.desktop/share/classes/java/awt/color/ColorSpace.java src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java src/java.desktop/share/classes/java/awt/color/ICC_Profile.java src/java.desktop/share/classes/java/awt/color/ICC_ProfileGray.java src/java.desktop/share/classes/java/awt/color/ICC_ProfileRGB.java src/java.desktop/share/classes/java/awt/color/ProfileDataException.java
diffstat 7 files changed, 844 insertions(+), 935 deletions(-) [+]
line wrap: on
line diff
--- a/src/java.desktop/share/classes/java/awt/color/CMMException.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/CMMException.java	Mon Oct 29 17:34:05 2018 -0700
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,13 +23,7 @@
  * questions.
  */
 
-/*
-    Created by gbp, October 25, 1997
-
- *
- */
-/*
- **********************************************************************
+/* ********************************************************************
  **********************************************************************
  **********************************************************************
  *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
@@ -38,22 +33,24 @@
  **********************************************************************
  **********************************************************************/
 
-
 package java.awt.color;
 
-
 /**
  * This exception is thrown if the native CMM returns an error.
  */
+public class CMMException extends java.lang.RuntimeException {
 
-public class CMMException extends java.lang.RuntimeException {
+    /**
+     * Use serialVersionUID from JDK 1.2 for interoperability.
+     */
     private static final long serialVersionUID = 5775558044142994965L;
 
     /**
-     *  Constructs a CMMException with the specified detail message.
-     *  @param s the specified detail message
+     * Constructs a {@code CMMException} with the specified detail message.
+     *
+     * @param  s the specified detail message
      */
-    public CMMException (String s) {
-        super (s);
+    public CMMException(String s) {
+        super(s);
     }
 }
--- a/src/java.desktop/share/classes/java/awt/color/ColorSpace.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/ColorSpace.java	Mon Oct 29 17:34:05 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,7 @@
  * questions.
  */
 
-/*
- **********************************************************************
+/* ********************************************************************
  **********************************************************************
  **********************************************************************
  *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
@@ -38,63 +37,60 @@
 
 import java.lang.annotation.Native;
 
-import sun.java2d.cmm.PCMM;
 import sun.java2d.cmm.CMSManager;
 
-
 /**
  * This abstract class is used to serve as a color space tag to identify the
- * specific color space of a Color object or, via a ColorModel object,
- * of an Image, a BufferedImage, or a GraphicsDevice.  It contains
- * methods that transform colors in a specific color space to/from sRGB
- * and to/from a well-defined CIEXYZ color space.
+ * specific color space of a {@code Color} object or, via a {@code ColorModel}
+ * object, of an {@code Image}, a {@code BufferedImage}, or a
+ * {@code GraphicsDevice}. It contains methods that transform colors in a
+ * specific color space to/from sRGB and to/from a well-defined CIEXYZ color
+ * space.
  * <p>
- * For purposes of the methods in this class, colors are represented as
- * arrays of color components represented as floats in a normalized range
- * defined by each ColorSpace.  For many ColorSpaces (e.g. sRGB), this
- * range is 0.0 to 1.0.  However, some ColorSpaces have components whose
- * values have a different range.  Methods are provided to inquire per
- * component minimum and maximum normalized values.
+ * For purposes of the methods in this class, colors are represented as arrays
+ * of color components represented as floats in a normalized range defined by
+ * each {@code ColorSpace}. For many {@code ColorSpaces} (e.g. sRGB), this range
+ * is 0.0 to 1.0. However, some {@code ColorSpaces} have components whose values
+ * have a different range. Methods are provided to inquire per component minimum
+ * and maximum normalized values.
  * <p>
- * Several variables are defined for purposes of referring to color
- * space types (e.g. TYPE_RGB, TYPE_XYZ, etc.) and to refer to specific
- * color spaces (e.g. CS_sRGB and CS_CIEXYZ).
- * sRGB is a proposed standard RGB color space.  For more information,
- * see <A href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
- * http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html
- * </A>.
+ * Several variables are defined for purposes of referring to color space types
+ * (e.g. {@code TYPE_RGB}, {@code TYPE_XYZ}, etc.) and to refer to specific
+ * color spaces (e.g. {@code CS_sRGB} and {@code CS_CIEXYZ}). sRGB is a proposed
+ * standard RGB color space. For more information, see
+ * <a href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
+ * http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html</a>.
  * <p>
- * The purpose of the methods to transform to/from the well-defined
- * CIEXYZ color space is to support conversions between any two color
- * spaces at a reasonably high degree of accuracy.  It is expected that
- * particular implementations of subclasses of ColorSpace (e.g.
- * ICC_ColorSpace) will support high performance conversion based on
- * underlying platform color management systems.
+ * The purpose of the methods to transform to/from the well-defined CIEXYZ color
+ * space is to support conversions between any two color spaces at a reasonably
+ * high degree of accuracy. It is expected that particular implementations of
+ * subclasses of {@code ColorSpace} (e.g. {@code ICC_ColorSpace}) will support
+ * high performance conversion based on underlying platform color management
+ * systems.
  * <p>
- * The CS_CIEXYZ space used by the toCIEXYZ/fromCIEXYZ methods can be
- * described as follows:
-<pre>
-
-&nbsp;     CIEXYZ
-&nbsp;     viewing illuminance: 200 lux
-&nbsp;     viewing white point: CIE D50
-&nbsp;     media white point: "that of a perfectly reflecting diffuser" -- D50
-&nbsp;     media black point: 0 lux or 0 Reflectance
-&nbsp;     flare: 1 percent
-&nbsp;     surround: 20percent of the media white point
-&nbsp;     media description: reflection print (i.e., RLAB, Hunt viewing media)
-&nbsp;     note: For developers creating an ICC profile for this conversion
-&nbsp;           space, the following is applicable.  Use a simple Von Kries
-&nbsp;           white point adaptation folded into the 3X3 matrix parameters
-&nbsp;           and fold the flare and surround effects into the three
-&nbsp;           one-dimensional lookup tables (assuming one uses the minimal
-&nbsp;           model for monitors).
-
-</pre>
+ * The {@code CS_CIEXYZ} space used by the {@code toCIEXYZ/fromCIEXYZ} methods
+ * can be described as follows:
+ * <pre>
+ *
+ * &nbsp;   CIEXYZ
+ * &nbsp;   viewing illuminance: 200 lux
+ * &nbsp;   viewing white point: CIE D50
+ * &nbsp;   media white point: "that of a perfectly reflecting diffuser" -- D50
+ * &nbsp;   media black point: 0 lux or 0 Reflectance
+ * &nbsp;   flare: 1 percent
+ * &nbsp;   surround: 20percent of the media white point
+ * &nbsp;   media description: reflection print (i.e., RLAB, Hunt viewing media)
+ * &nbsp;   note: For developers creating an ICC profile for this conversion
+ * &nbsp;         space, the following is applicable. Use a simple Von Kries
+ * &nbsp;         white point adaptation folded into the 3X3 matrix parameters
+ * &nbsp;         and fold the flare and surround effects into the three
+ * &nbsp;         one-dimensional lookup tables (assuming one uses the minimal
+ * &nbsp;         model for monitors).
+ *
+ * </pre>
  *
  * @see ICC_ColorSpace
  */
-
 public abstract class ColorSpace implements java.io.Serializable {
 
     static final long serialVersionUID = -409452704308689724L;
@@ -237,15 +233,14 @@
 
     /**
      * The sRGB color space defined at
-     * <A href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
-     * http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html
-     * </A>.
+     * <a href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
+     * http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html</a>.
      */
     @Native public static final int CS_sRGB = 1000;
 
     /**
-     * A built-in linear RGB color space.  This space is based on the
-     * same RGB primaries as CS_sRGB, but has a linear tone reproduction curve.
+     * A built-in linear RGB color space. This space is based on the same RGB
+     * primaries as {@code CS_sRGB}, but has a linear tone reproduction curve.
      */
     @Native public static final int CS_LINEAR_RGB = 1004;
 
@@ -264,25 +259,26 @@
      */
     @Native public static final int CS_GRAY = 1003;
 
-
     /**
-     * Constructs a ColorSpace object given a color space type
-     * and the number of components.
-     * @param type one of the {@code ColorSpace} type constants
-     * @param numcomponents the number of components in the color space
+     * Constructs a {@code ColorSpace} object given a color space type and the
+     * number of components.
+     *
+     * @param  type one of the {@code ColorSpace} type constants
+     * @param  numcomponents the number of components in the color space
      */
-    protected ColorSpace (int type, int numcomponents) {
+    protected ColorSpace(int type, int numcomponents) {
         this.type = type;
         this.numComponents = numcomponents;
     }
 
-
     /**
-     * Returns a ColorSpace representing one of the specific
-     * predefined color spaces.
-     * @param colorspace a specific color space identified by one of
-     *        the predefined class constants (e.g. CS_sRGB, CS_LINEAR_RGB,
-     *        CS_CIEXYZ, CS_GRAY, or CS_PYCC)
+     * Returns a {@code ColorSpace} representing one of the specific predefined
+     * color spaces.
+     *
+     * @param  colorspace a specific color space identified by one of the
+     *         predefined class constants (e.g. {@code CS_sRGB},
+     *         {@code CS_LINEAR_RGB}, {@code CS_CIEXYZ}, {@code CS_GRAY}, or
+     *         {@code CS_PYCC})
      * @return the requested {@code ColorSpace} object
      */
     // NOTE: This method may be called by privileged threads.
@@ -363,11 +359,11 @@
         return theColorSpace;
     }
 
-
     /**
-     * Returns true if the ColorSpace is CS_sRGB.
-     * @return {@code true} if this is a {@code CS_sRGB} color
-     *         space, {@code false} if it is not
+     * Returns true if the {@code ColorSpace} is {@code CS_sRGB}.
+     *
+     * @return {@code true} if this is a {@code CS_sRGB} color space,
+     *         {@code false} if it is not
      */
     public boolean isCS_sRGB () {
         /* REMIND - make sure we know sRGBspace exists already */
@@ -375,115 +371,105 @@
     }
 
     /**
-     * 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 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
+     * @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 ColorSpace
+     * @throws ArrayIndexOutOfBoundsException if array length is not at least
+     *         the number of components in this {@code ColorSpace}
      */
     public abstract float[] toRGB(float[] colorvalue);
 
-
     /**
-     * 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 abstract float[] fromRGB(float[] rgbvalue);
 
-
     /**
-     * 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 International Color Consortium standard.  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.
-     * See the {@link ICC_ColorSpace#toCIEXYZ(float[]) toCIEXYZ} method of
+     * This method transforms color values using relative colorimetry, as
+     * defined by the International Color Consortium standard. 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. See the
+     * {@link ICC_ColorSpace#toCIEXYZ(float[]) toCIEXYZ} method of
      * {@code ICC_ColorSpace} for further information.
      *
-     * @param colorvalue a float array with length of 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 ColorSpace.
+     * @throws ArrayIndexOutOfBoundsException if array length is not at least
+     *         the number of components in this {@code ColorSpace}.
      */
     public abstract float[] toCIEXYZ(float[] colorvalue);
 
-
     /**
-     * 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 {@code ColorSpace}.
      * <p>
-     * This method transforms color values using relative colorimetry,
-     * as defined by the International Color Consortium standard.  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.
-     * See the {@link ICC_ColorSpace#fromCIEXYZ(float[]) fromCIEXYZ} method of
+     * This method transforms color values using relative colorimetry, as
+     * defined by the International Color Consortium standard. 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. See
+     * the {@link ICC_ColorSpace#fromCIEXYZ(float[]) fromCIEXYZ} method of
      * {@code ICC_ColorSpace} for further information.
      *
-     * @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
+     * @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 abstract float[] fromCIEXYZ(float[] colorvalue);
 
     /**
-     * Returns the color space type of this ColorSpace (for example
-     * TYPE_RGB, TYPE_XYZ, ...).  The type defines the
-     * number of components of the color space and the interpretation,
-     * e.g. TYPE_RGB identifies a color space with three components - red,
-     * green, and blue.  It does not define the particular color
-     * characteristics of the space, e.g. the chromaticities of the
-     * primaries.
+     * Returns the color space type of this {@code ColorSpace} (for example
+     * {@code TYPE_RGB}, {@code TYPE_XYZ}, ...). The type defines the number of
+     * components of the color space and the interpretation, e.g.
+     * {@code TYPE_RGB} identifies a color space with three components - red,
+     * green, and blue. It does not define the particular color characteristics
+     * of the space, e.g. the chromaticities of the primaries.
      *
      * @return the type constant that represents the type of this
      *         {@code ColorSpace}
@@ -494,7 +480,8 @@
 
     /**
      * Returns the number of components of this ColorSpace.
-     * @return The number of components in this {@code ColorSpace}.
+     *
+     * @return the number of components in this {@code ColorSpace}
      */
     public int getNumComponents() {
         return numComponents;
@@ -503,10 +490,10 @@
     /**
      * Returns the name of the component given the component index.
      *
-     * @param idx the component index
+     * @param  idx the component index
      * @return the name of the component at the specified index
-     * @throws IllegalArgumentException if {@code idx} is
-     *         less than 0 or greater than numComponents - 1
+     * @throws IllegalArgumentException if {@code idx} is less than 0 or greater
+     *         than {@code numComponents - 1}
      */
     public String getName (int idx) {
         /* REMIND - handle common cases here */
@@ -564,15 +551,14 @@
     }
 
     /**
-     * Returns the minimum normalized color component value for the
-     * specified component.  The default implementation in this abstract
-     * class returns 0.0 for all components.  Subclasses should override
-     * this method if necessary.
+     * Returns the minimum normalized color component value for the specified
+     * component. The default implementation in this abstract class returns 0.0
+     * for all components. Subclasses should override this method if necessary.
      *
-     * @param component the component index
+     * @param  component the component index
      * @return the minimum normalized component value
-     * @throws IllegalArgumentException if component is less than 0 or
-     *         greater than numComponents - 1
+     * @throws IllegalArgumentException if component is less than 0 or greater
+     *         than {@code numComponents - 1}
      * @since 1.4
      */
     public float getMinValue(int component) {
@@ -584,15 +570,14 @@
     }
 
     /**
-     * Returns the maximum normalized color component value for the
-     * specified component.  The default implementation in this abstract
-     * class returns 1.0 for all components.  Subclasses should override
-     * this method if necessary.
+     * Returns the maximum normalized color component value for the specified
+     * component. The default implementation in this abstract class returns 1.0
+     * for all components. Subclasses should override this method if necessary.
      *
-     * @param component the component index
+     * @param  component the component index
      * @return the maximum normalized component value
-     * @throws IllegalArgumentException if component is less than 0 or
-     *         greater than numComponents - 1
+     * @throws IllegalArgumentException if component is less than 0 or greater
+     *         than {@code numComponents - 1}
      * @since 1.4
      */
     public float getMaxValue(int component) {
@@ -603,7 +588,8 @@
         return 1.0f;
     }
 
-    /* Returns true if cspace is the XYZspace.
+    /*
+     * Returns {@code true} if {@code cspace} is the XYZspace.
      */
     static boolean isCS_CIEXYZ(ColorSpace cspace) {
         return (cspace == XYZspace);
--- a/src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java	Mon Oct 29 17:34:05 2018 -0700
@@ -23,8 +23,7 @@
  * questions.
  */
 
-/*
- **********************************************************************
+/* ********************************************************************
  **********************************************************************
  **********************************************************************
  *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
@@ -36,54 +35,46 @@
 
 package java.awt.color;
 
+import sun.java2d.cmm.CMSManager;
 import sun.java2d.cmm.ColorTransform;
-import sun.java2d.cmm.CMSManager;
 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;
@@ -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.
      * <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) {
 
@@ -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}.
      * <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) {
 
@@ -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.
      * <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.
+     * 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.
+     * 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.
+     * 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.
+     * 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.
+     * 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
@@ -338,22 +324,21 @@
      *
      * </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.
+     * 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.
+     * @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.
      * <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.
+     * 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.
+     * 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.
+     * 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
+     * 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 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 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
@@ -482,22 +463,20 @@
      *
      * </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.
+     * 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.
+     * @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) {
--- a/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java	Mon Oct 29 17:34:05 2018 -0700
@@ -23,8 +23,7 @@
  * questions.
  */
 
-/*
- **********************************************************************
+/* ********************************************************************
  **********************************************************************
  **********************************************************************
  *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
@@ -36,17 +35,8 @@
 
 package java.awt.color;
 
-import sun.java2d.cmm.PCMM;
-import sun.java2d.cmm.CMSManager;
-import sun.java2d.cmm.Profile;
-import sun.java2d.cmm.ProfileDataVerifier;
-import sun.java2d.cmm.ProfileDeferralMgr;
-import sun.java2d.cmm.ProfileDeferralInfo;
-import sun.java2d.cmm.ProfileActivator;
-
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FilePermission;
 import java.io.IOException;
@@ -56,42 +46,43 @@
 import java.io.ObjectStreamException;
 import java.io.OutputStream;
 import java.io.Serializable;
-
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.StringTokenizer;
 
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
+import sun.java2d.cmm.CMSManager;
+import sun.java2d.cmm.PCMM;
+import sun.java2d.cmm.Profile;
+import sun.java2d.cmm.ProfileActivator;
+import sun.java2d.cmm.ProfileDataVerifier;
+import sun.java2d.cmm.ProfileDeferralInfo;
+import sun.java2d.cmm.ProfileDeferralMgr;
 
 /**
- * A representation of color profile data for device independent and
- * device dependent color spaces 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>).
+ * A representation of color profile data for device independent and device
+ * dependent color spaces 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>
- * An ICC_ColorSpace object can be constructed from an appropriate
- * ICC_Profile.
- * Typically, an ICC_ColorSpace would be associated with an ICC
- * Profile which is either an input, display, or output profile (see
- * the ICC specification).  There are also device link, abstract,
- * color space conversion, and named color profiles.  These are less
- * useful for tagging a color or image, but are useful for other
- * purposes (in particular device link profiles can provide improved
- * performance for converting from one device's color space to
- * another's).
+ * An {@code ICC_ColorSpace} object can be constructed from an appropriate
+ * {@code ICC_Profile}. Typically, an {@code ICC_ColorSpace} would be associated
+ * with an ICC Profile which is either an input, display, or output profile (see
+ * the ICC specification). There are also device link, abstract, color space
+ * conversion, and named color profiles. These are less useful for tagging a
+ * color or image, but are useful for other purposes (in particular device link
+ * profiles can provide improved performance for converting from one device's
+ * color space to another's).
  * <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 two specific device independent
- * spaces (one CIEXYZ space and one CIELab space) defined in the
- * ICC Profile Format Specification.  Most profiles of interest
- * either have invertible transformations or explicitly specify
- * transformations going both directions.
+ * 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 two specific
+ * device independent spaces (one CIEXYZ space and one CIELab space) defined in
+ * the ICC Profile Format Specification. Most profiles of interest either have
+ * invertible transformations or explicitly specify transformations going both
+ * directions.
+ *
  * @see ICC_ColorSpace
  */
-
-
 public class ICC_Profile implements Serializable {
 
     private static final long serialVersionUID = -3938515861990936766L;
@@ -110,7 +101,6 @@
     private static ICC_Profile GRAYprofile;
     private static ICC_Profile LINEAR_RGBprofile;
 
-
     /**
      * Profile class is input.
      */
@@ -146,7 +136,6 @@
      */
     public static final int CLASS_NAMEDCOLOR = 6;
 
-
     /**
      * ICC Profile Color Space Type Signature: 'XYZ '.
      */
@@ -321,6 +310,7 @@
 
     /**
      * ICC Profile Rendering Intent: Media-RelativeColorimetric.
+     *
      * @since 1.5
      */
     public static final int icMediaRelativeColorimetric = 1;
@@ -337,6 +327,7 @@
 
     /**
      * ICC Profile Rendering Intent: ICC-AbsoluteColorimetric.
+     *
      * @since 1.5
      */
     public static final int icICCAbsoluteColorimetric = 3;
@@ -369,6 +360,7 @@
 
     /**
      * ICC Profile Tag Signature: 'bXYZ'.
+     *
      * @since 1.5
      */
     public static final int icSigBlueMatrixColumnTag = 0x6258595A; /* 'bXYZ' */
@@ -446,6 +438,7 @@
 
     /**
      * ICC Profile Tag Signature: 'gXYZ'.
+     *
      * @since 1.5
      */
     public static final int icSigGreenMatrixColumnTag = 0x6758595A;/* 'gXYZ' */
@@ -550,6 +543,7 @@
 
     /**
      * ICC Profile Tag Signature: 'rXYZ'.
+     *
      * @since 1.5
      */
     public static final int icSigRedMatrixColumnTag = 0x7258595A;  /* 'rXYZ' */
@@ -596,18 +590,21 @@
 
     /**
      * ICC Profile Tag Signature: 'chad'.
+     *
      * @since 1.5
      */
     public static final int icSigChromaticAdaptationTag = 0x63686164;/* 'chad' */
 
     /**
      * ICC Profile Tag Signature: 'clro'.
+     *
      * @since 1.5
      */
     public static final int icSigColorantOrderTag = 0x636C726F;    /* 'clro' */
 
     /**
      * ICC Profile Tag Signature: 'clrt'.
+     *
      * @since 1.5
      */
     public static final int icSigColorantTableTag = 0x636C7274;    /* 'clrt' */
@@ -695,6 +692,7 @@
 
     /**
      * ICC Profile Header Location: profile's ID.
+     *
      * @since 1.5
      */
     public static final int icHdrProfileID = 84; /* Profile's ID */
@@ -727,15 +725,14 @@
 
 
     /**
-     * Constructs an ICC_Profile object with a given ID.
+     * Constructs an {@code ICC_Profile} object with a given ID.
      */
     ICC_Profile(Profile p) {
         this.cmmProfile = p;
     }
 
-
     /**
-     * Constructs an ICC_Profile object whose loading will be deferred.
+     * Constructs an {@code ICC_Profile} object whose loading will be deferred.
      * The ID will be 0 until the profile is loaded.
      */
     ICC_Profile(ProfileDeferralInfo pdi) {
@@ -748,18 +745,18 @@
         ProfileDeferralMgr.registerDeferral(this.profileActivator);
     }
 
-
     /**
-     * Frees the resources associated with an ICC_Profile object.
+     * Frees the resources associated with an {@code ICC_Profile} object.
      *
-     * @deprecated The {@code finalize} method has been deprecated.
-     *     Subclasses that override {@code finalize} in order to perform cleanup
-     *     should be modified to use alternative cleanup mechanisms and
-     *     to remove the overriding {@code finalize} method.
-     *     When overriding the {@code finalize} method, its implementation must explicitly
-     *     ensure that {@code super.finalize()} is invoked as described in {@link Object#finalize}.
-     *     See the specification for {@link Object#finalize()} for further
-     *     information about migration options.
+     * @deprecated The {@code finalize} method has been deprecated. Subclasses
+     *         that override {@code finalize} in order to perform cleanup should
+     *         be modified to use alternative cleanup mechanisms and to remove
+     *         the overriding {@code finalize} method. When overriding the
+     *         {@code finalize} method, its implementation must explicitly
+     *         ensure that {@code super.finalize()} is invoked as described in
+     *         {@link Object#finalize}. See the specification for {@link
+     *         Object#finalize()} for further information about migration
+     *         options.
      */
     @Deprecated(since="9")
     protected void finalize () {
@@ -770,14 +767,14 @@
         }
     }
 
-
     /**
-     * Constructs an ICC_Profile object corresponding to the data in
-     * a byte array.  Throws an IllegalArgumentException if the data
-     * does not correspond to a valid ICC Profile.
-     * @param data the specified ICC Profile data
-     * @return an {@code ICC_Profile} object corresponding to
-     *          the data in the specified {@code data} array.
+     * Constructs an {@code ICC_Profile} object corresponding to the data in a
+     * byte array. Throws an {@code IllegalArgumentException} if the data does
+     * not correspond to a valid ICC Profile.
+     *
+     * @param  data the specified ICC Profile data
+     * @return an {@code ICC_Profile} object corresponding to the data in the
+     *         specified {@code data} array
      */
     public static ICC_Profile getInstance(byte[] data) {
     ICC_Profile thisProfile;
@@ -821,22 +818,19 @@
         return thisProfile;
     }
 
-
-
     /**
-     * Constructs an ICC_Profile corresponding to one of the specific color
-     * spaces defined by the ColorSpace class (for example CS_sRGB).
-     * Throws an IllegalArgumentException if cspace is not one of the
-     * defined color spaces.
+     * Constructs an {@code ICC_Profile} corresponding to one of the specific
+     * color spaces defined by the {@code ColorSpace} class (for example
+     * {@code CS_sRGB}). Throws an {@code IllegalArgumentException} if cspace is
+     * not one of the defined color spaces.
      *
-     * @param cspace the type of color space to create a profile for.
-     * The specified type is one of the color
-     * space constants defined in the  {@code ColorSpace} class.
-     *
-     * @return an {@code ICC_Profile} object corresponding to
-     *          the specified {@code ColorSpace} type.
-     * @exception IllegalArgumentException If {@code cspace} is not
-     * one of the predefined color space types.
+     * @param  cspace the type of color space to create a profile for. The
+     *         specified type is one of the color space constants defined in the
+     *         {@code ColorSpace} class.
+     * @return an {@code ICC_Profile} object corresponding to the specified
+     *         {@code ColorSpace} type
+     * @throws IllegalArgumentException If {@code cspace} is not one of the
+     *         predefined color space types
      */
     public static ICC_Profile getInstance (int cspace) {
         ICC_Profile thisProfile = null;
@@ -931,51 +925,49 @@
         return thisProfile;
     }
 
-    /* This asserts system privileges, so is used only for the
-     * standard profiles.
+    /**
+     * This method asserts system privileges, so is used only for the standard
+     * profiles.
      */
     private static ICC_Profile getStandardProfile(final String name) {
-
         return AccessController.doPrivileged(
-            new PrivilegedAction<ICC_Profile>() {
-                 public ICC_Profile run() {
-                     ICC_Profile p = null;
-                     try {
-                         p = getInstance (name);
-                     } catch (IOException ex) {
-                         throw new IllegalArgumentException(
-                               "Can't load standard profile: " + name);
-                     }
-                     return p;
-                 }
-             });
+                new PrivilegedAction<ICC_Profile>() {
+                    public ICC_Profile run() {
+                        ICC_Profile p = null;
+                        try {
+                            p = getInstance(name);
+                        } catch (IOException ex) {
+                            throw new IllegalArgumentException(
+                                    "Can't load standard profile: " + name);
+                        }
+                        return p;
+                    }
+                });
     }
 
     /**
-     * Constructs an ICC_Profile corresponding to the data in a file.
-     * fileName may be an absolute or a relative file specification.
-     * Relative file names are looked for in several places: first, relative
-     * to any directories specified by the java.iccprofile.path property;
-     * second, relative to any directories specified by the java.class.path
-     * property; finally, in a directory used to store profiles always
-     * available, such as the profile for sRGB.  Built-in profiles use .pf as
-     * the file name extension for profiles, e.g. sRGB.pf.
-     * This method throws an IOException if the specified file cannot be
-     * opened or if an I/O error occurs while reading the file.  It throws
-     * an IllegalArgumentException if the file does not contain valid ICC
-     * Profile data.
-     * @param fileName The file that contains the data for the profile.
+     * Constructs an {@code ICC_Profile} corresponding to the data in a file.
+     * {@code fileName} may be an absolute or a relative file specification.
+     * Relative file names are looked for in several places: first, relative to
+     * any directories specified by the {@code java.iccprofile.path} property;
+     * second, relative to any directories specified by the
+     * {@code java.class.path} property; finally, in a directory used to store
+     * profiles always available, such as the profile for sRGB. Built-in
+     * profiles use {@code .pf} as the file name extension for profiles, e.g.
+     * {@code sRGB.pf}. This method throws an {@code IOException} if the
+     * specified file cannot be opened or if an I/O error occurs while reading
+     * the file. It throws an {@code IllegalArgumentException} if the file does
+     * not contain valid ICC Profile data.
      *
-     * @return an {@code ICC_Profile} object corresponding to
-     *          the data in the specified file.
-     * @exception IOException If the specified file cannot be opened or
-     * an I/O error occurs while reading the file.
-     *
-     * @exception IllegalArgumentException If the file does not
-     * contain valid ICC Profile data.
-     *
-     * @exception SecurityException If a security manager is installed
-     * and it does not permit read access to the given file.
+     * @param  fileName the file that contains the data for the profile
+     * @return an {@code ICC_Profile} object corresponding to the data in the
+     *         specified file
+     * @throws IOException If the specified file cannot be opened or an I/O
+     *         error occurs while reading the file
+     * @throws IllegalArgumentException If the file does not contain valid ICC
+     *         Profile data
+     * @throws SecurityException If a security manager is installed and it does
+     *         not permit read access to the given file
      */
     public static ICC_Profile getInstance(String fileName) throws IOException {
         ICC_Profile thisProfile;
@@ -999,21 +991,19 @@
         return thisProfile;
     }
 
-
     /**
-     * Constructs an ICC_Profile corresponding to the data in an InputStream.
-     * This method throws an IllegalArgumentException if the stream does not
-     * contain valid ICC Profile data.  It throws an IOException if an I/O
-     * error occurs while reading the stream.
-     * @param s The input stream from which to read the profile data.
+     * Constructs an {@code ICC_Profile} corresponding to the data in an
+     * {@code InputStream}. This method throws an
+     * {@code IllegalArgumentException} if the stream does not contain valid ICC
+     * Profile data. It throws an {@code IOException} if an I/O error occurs
+     * while reading the stream.
      *
-     * @return an {@code ICC_Profile} object corresponding to the
-     *     data in the specified {@code InputStream}.
-     *
-     * @exception IOException If an I/O error occurs while reading the stream.
-     *
-     * @exception IllegalArgumentException If the stream does not
-     * contain valid ICC Profile data.
+     * @param  s the input stream from which to read the profile data
+     * @return an {@code ICC_Profile} object corresponding to the data in the
+     *         specified {@code InputStream}
+     * @throws IOException If an I/O error occurs while reading the stream
+     * @throws IllegalArgumentException If the stream does not contain valid ICC
+     *         Profile data
      */
     public static ICC_Profile getInstance(InputStream s) throws IOException {
     byte[] profileData;
@@ -1070,17 +1060,15 @@
         return profileData;
     }
 
-
     /**
-     * Constructs an ICC_Profile for which the actual loading of the
-     * profile data from a file and the initialization of the CMM should
-     * be deferred as long as possible.
-     * Deferral is only used for standard profiles.
-     * If deferring is disabled, then getStandardProfile() ensures
-     * that all of the appropriate access privileges are granted
-     * when loading this profile.
-     * If deferring is enabled, then the deferred activation
-     * code will take care of access privileges.
+     * Constructs an {@code ICC_Profile} for which the actual loading of the
+     * profile data from a file and the initialization of the CMM should be
+     * deferred as long as possible. Deferral is only used for standard
+     * profiles. If deferring is disabled, then getStandardProfile() ensures
+     * that all of the appropriate access privileges are granted when loading
+     * this profile. If deferring is enabled, then the deferred activation code
+     * will take care of access privileges.
+     *
      * @see #activateDeferredProfile()
      */
     static ICC_Profile getDeferredInstance(ProfileDeferralInfo pdi) {
@@ -1131,10 +1119,10 @@
         }
     }
 
-
     /**
      * Returns profile major version.
-     * @return  The major version of the profile.
+     *
+     * @return the major version of the profile
      */
     public int getMajorVersion() {
     byte[] theHeader;
@@ -1147,7 +1135,8 @@
 
     /**
      * Returns profile minor version.
-     * @return The minor version of the profile.
+     *
+     * @return the minor version of the profile
      */
     public int getMinorVersion() {
     byte[] theHeader;
@@ -1160,7 +1149,8 @@
 
     /**
      * Returns the profile class.
-     * @return One of the predefined profile class constants.
+     *
+     * @return one of the predefined profile class constants
      */
     public int getProfileClass() {
     byte[] theHeader;
@@ -1214,16 +1204,16 @@
     }
 
     /**
-     * Returns the color space type.  Returns one of the color space type
-     * constants defined by the ColorSpace class.  This is the
-     * "input" color space of the profile.  The type defines the
-     * number of components of the color space and the interpretation,
-     * e.g. TYPE_RGB identifies a color space with three components - red,
-     * green, and blue.  It does not define the particular color
-     * characteristics of the space, e.g. the chromaticities of the
-     * primaries.
-     * @return One of the color space type constants defined in the
-     * {@code ColorSpace} class.
+     * Returns the color space type. Returns one of the color space type
+     * constants defined by the {@code ColorSpace} class. This is the "input"
+     * color space of the profile. The type defines the number of components of
+     * the color space and the interpretation, e.g. {@code TYPE_RGB} identifies
+     * a color space with three components - red, green, and blue. It does not
+     * define the particular color characteristics of the space, e.g. the
+     * chromaticities of the primaries.
+     *
+     * @return one of the color space type constants defined in the
+     *         {@code ColorSpace} class
      */
     public int getColorSpaceType() {
         if (deferralInfo != null) {
@@ -1247,15 +1237,16 @@
 
     /**
      * Returns the color space type of the Profile Connection Space (PCS).
-     * Returns one of the color space type constants defined by the
-     * ColorSpace class.  This is the "output" color space of the
-     * profile.  For an input, display, or output profile useful
-     * for tagging colors or images, this will be either TYPE_XYZ or
-     * TYPE_Lab and should be interpreted as the corresponding specific
-     * color space defined in the ICC specification.  For a device
-     * link profile, this could be any of the color space type constants.
-     * @return One of the color space type constants defined in the
-     * {@code ColorSpace} class.
+     * Returns one of the color space type constants defined by the ColorSpace
+     * class. This is the "output" color space of the profile. For an input,
+     * display, or output profile useful for tagging colors or images, this will
+     * be either {@code TYPE_XYZ} or {@code TYPE_Lab} and should be interpreted
+     * as the corresponding specific color space defined in the ICC
+     * specification. For a device link profile, this could be any of the color
+     * space type constants.
+     *
+     * @return one of the color space type constants defined in the
+     *         {@code ColorSpace} class
      */
     public int getPCSType() {
         if (ProfileDeferralMgr.deferring) {
@@ -1275,14 +1266,12 @@
         return thePCS;
     }
 
-
     /**
-     * Write this ICC_Profile to a file.
+     * Write this {@code ICC_Profile} to a file.
      *
-     * @param fileName The file to write the profile data to.
-     *
-     * @exception IOException If the file cannot be opened for writing
-     * or an I/O error occurs while writing to the file.
+     * @param  fileName the file to write the profile data to
+     * @throws IOException If the file cannot be opened for writing or an I/O
+     *         error occurs while writing to the file
      */
     public void write(String fileName) throws IOException {
     FileOutputStream outputFile;
@@ -1295,14 +1284,11 @@
         outputFile.close ();
     }
 
-
     /**
-     * Write this ICC_Profile to an OutputStream.
+     * Write this {@code ICC_Profile} to an {@code OutputStream}.
      *
-     * @param s The stream to write the profile data to.
-     *
-     * @exception IOException If an I/O error occurs while writing to the
-     * stream.
+     * @param  s the stream to write the profile data to
+     * @throws IOException If an I/O error occurs while writing to the stream
      */
     public void write(OutputStream s) throws IOException {
     byte[] profileData;
@@ -1312,10 +1298,11 @@
         s.write(profileData);
     }
 
-
     /**
-     * Returns a byte array corresponding to the data of this ICC_Profile.
-     * @return A byte array that contains the profile data.
+     * Returns a byte array corresponding to the data of this
+     * {@code ICC_Profile}.
+     *
+     * @return a byte array that contains the profile data
      * @see #setData(int, byte[])
      */
     public byte[] getData() {
@@ -1339,20 +1326,17 @@
         return profileData;
     }
 
-
     /**
-     * Returns a particular tagged data element from the profile as
-     * a byte array.  Elements are identified by signatures
-     * as defined in the ICC specification.  The signature
-     * icSigHead can be used to get the header.  This method is useful
-     * for advanced applets or applications which need to access
-     * profile data directly.
+     * Returns a particular tagged data element from the profile as a byte
+     * array. Elements are identified by signatures as defined in the ICC
+     * specification. The signature icSigHead can be used to get the header.
+     * This method is useful for advanced applets or applications which need to
+     * access profile data directly.
      *
-     * @param tagSignature The ICC tag signature for the data element you
-     * want to get.
-     *
-     * @return A byte array that contains the tagged data element. Returns
-     * {@code null} if the specified tag doesn't exist.
+     * @param  tagSignature the ICC tag signature for the data element you want
+     *         to get
+     * @return a byte array that contains the tagged data element. Returns
+     *         {@code null} if the specified tag doesn't exist.
      * @see #setData(int, byte[])
      */
     public byte[] getData(int tagSignature) {
@@ -1387,20 +1371,20 @@
     }
 
     /**
-     * Sets a particular tagged data element in the profile from
-     * a byte array. The array should contain data in a format, corresponded
-     * to the {@code tagSignature} as defined in the ICC specification, section 10.
+     * Sets a particular tagged data element in the profile from a byte array.
+     * The array should contain data in a format, corresponded to the
+     * {@code tagSignature} as defined in the ICC specification, section 10.
      * This method is useful for advanced applets or applications which need to
      * access profile data directly.
      *
-     * @param tagSignature The ICC tag signature for the data element
-     * you want to set.
-     * @param tagData the data to set for the specified tag signature
-     * @throws IllegalArgumentException if {@code tagSignature} is not a signature
-     *         as defined in the ICC specification.
+     * @param  tagSignature the ICC tag signature for the data element you want
+     *         to set
+     * @param  tagData the data to set for the specified tag signature
+     * @throws IllegalArgumentException if {@code tagSignature} is not a
+     *         signature as defined in the ICC specification.
      * @throws IllegalArgumentException if a content of the {@code tagData}
-     *         array can not be interpreted as valid tag data, corresponding
-     *         to the {@code tagSignature}.
+     *         array can not be interpreted as valid tag data, corresponding to
+     *         the {@code tagSignature}
      * @see #getData
      */
     public void setData(int tagSignature, byte[] tagData) {
@@ -1413,9 +1397,8 @@
     }
 
     /**
-     * Sets the rendering intent of the profile.
-     * This is used to select the proper transform from a profile that
-     * has multiple transforms.
+     * Sets the rendering intent of the profile. This is used to select the
+     * proper transform from a profile that has multiple transforms.
      */
     void setRenderingIntent(int renderingIntent) {
         byte[] theHeader = getData(icSigHead);/* getData will activate deferred
@@ -1425,12 +1408,11 @@
         setData (icSigHead, theHeader);
     }
 
-
     /**
-     * Returns the rendering intent of the profile.
-     * This is used to select the proper transform from a profile that
-     * has multiple transforms.  It is typically set in a source profile
-     * to select a transform from an output profile.
+     * Returns the rendering intent of the profile. This is used to select the
+     * proper transform from a profile that has multiple transforms. It is
+     * typically set in a source profile to select a transform from an output
+     * profile.
      */
     int getRenderingIntent() {
         byte[] theHeader = getData(icSigHead);/* getData will activate deferred
@@ -1449,17 +1431,13 @@
         return (0xffff & renderingIntent);
     }
 
-
     /**
-     * Returns the number of color components in the "input" color
-     * space of this profile.  For example if the color space type
-     * of this profile is TYPE_RGB, then this method will return 3.
+     * Returns the number of color components in the "input" color space of this
+     * profile. For example if the color space type of this profile is
+     * {@code TYPE_RGB}, then this method will return 3.
      *
-     * @return The number of color components in the profile's input
-     * color space.
-     *
-     * @throws ProfileDataException if color space is in the profile
-     *         is invalid
+     * @return the number of color components in the profile's input color space
+     * @throws ProfileDataException if color space is in the profile is invalid
      */
     public int getNumComponents() {
     byte[]    theHeader;
@@ -1553,20 +1531,18 @@
         return theNumComponents;
     }
 
-
     /**
-     * Returns a float array of length 3 containing the X, Y, and Z
-     * components of the mediaWhitePointTag in the ICC profile.
+     * Returns a float array of length 3 containing the X, Y, and Z components
+     * of the mediaWhitePointTag in the ICC profile.
      */
     float[] getMediaWhitePoint() {
         return getXYZTag(icSigMediaWhitePointTag);
                                            /* get the media white point tag */
     }
 
-
     /**
-     * Returns a float array of length 3 containing the X, Y, and Z
-     * components encoded in an XYZType tag.
+     * Returns a float array of length 3 containing the X, Y, and Z components
+     * encoded in an XYZType tag.
      */
     float[] getXYZTag(int theTagSignature) {
     byte[] theData;
@@ -1587,17 +1563,17 @@
         return theXYZNumber;
     }
 
-
     /**
-     * Returns a gamma value representing a tone reproduction
-     * curve (TRC).  If the profile represents the TRC 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().
-     * theTagSignature should be one of icSigGrayTRCTag, icSigRedTRCTag,
-     * icSigGreenTRCTag, or icSigBlueTRCTag.
-     * @return the gamma value as a float.
-     * @exception ProfileDataException if the profile does not specify
-     *            the TRC as a single gamma value.
+     * Returns a gamma value representing a tone reproduction curve (TRC). If
+     * the profile represents the TRC as a table rather than a single gamma
+     * value, then an exception is thrown. In this case the actual table can be
+     * obtained via {@link #getTRC}. {@code theTagSignature} should be one of
+     * {@code icSigGrayTRCTag}, {@code icSigRedTRCTag},
+     * {@code icSigGreenTRCTag}, or {@code icSigBlueTRCTag}.
+     *
+     * @return the gamma value as a float
+     * @throws ProfileDataException if the profile does not specify the TRC as a
+     *         single gamma value
      */
     float getGamma(int theTagSignature) {
     byte[] theTRCData;
@@ -1620,26 +1596,25 @@
         return theGamma;
     }
 
-
     /**
-     * Returns the TRC as an array of shorts.  If the profile has
-     * specified the 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 Gray 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.
-     * theTagSignature should be one of icSigGrayTRCTag, icSigRedTRCTag,
-     * icSigGreenTRCTag, or icSigBlueTRCTag.
-     * @return a short array representing the TRC.
-     * @exception ProfileDataException if the profile does not specify
-     *            the TRC as a table.
+     * Returns the TRC as an array of shorts. If the profile has specified the
+     * TRC as linear (gamma = 1.0) or as a simple gamma value, this method
+     * throws an exception, and the {@link #getGamma} method should be used to
+     * get the gamma value. Otherwise the short array returned here represents a
+     * lookup table where the input Gray 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. {@code theTagSignature} should be one of
+     * {@code icSigGrayTRCTag}, {@code icSigRedTRCTag},
+     * {@code icSigGreenTRCTag}, or {@code icSigBlueTRCTag}.
+     *
+     * @return a short array representing the TRC
+     * @throws ProfileDataException if the profile does not specify the TRC as a
+     *         table
      */
     short[] getTRC(int theTagSignature) {
     byte[] theTRCData;
@@ -1666,8 +1641,9 @@
         return theTRC;
     }
 
-
-    /* convert an ICC color space signature into a Java color space type */
+    /**
+     * Convert an ICC color space signature into a Java color space type.
+     */
     static int iccCStoJCS(int theColorSpaceSig) {
     int theColorSpace;
 
@@ -1775,7 +1751,6 @@
         default:
             throw new IllegalArgumentException ("Unknown color space");
         }
-
         return theColorSpace;
     }
 
@@ -1807,17 +1782,16 @@
             array[index+1] = (byte) (value);
     }
 
-
-    /*
-     * fileName may be an absolute or a relative file specification.
-     * Relative file names are looked for in several places: first, relative
-     * to any directories specified by the java.iccprofile.path property;
-     * second, relative to any directories specified by the java.class.path.
-     * The built-in profile files are now loaded as resources, since they
-     * may not be individual disk files, and so this method will not find
-     * these and on a null return, the caller needs to try as resources.
-     * Built-in profiles use .pf as the file name extension for profiles,
-     * e.g. sRGB.pf.
+    /**
+     * {@code fileName} may be an absolute or a relative file specification.
+     * Relative file names are looked for in several places: first, relative to
+     * any directories specified by the {@code java.iccprofile.path} property;
+     * second, relative to any directories specified by the
+     * {@code java.class.path}. The built-in profile files are now loaded as
+     * resources, since they may not be individual disk files, and so this
+     * method will not find these and on a {@code null} return, the caller needs
+     * to try as resources. Built-in profiles use {@code .pf} as the file name
+     * extension for profiles, e.g. {@code sRGB.pf}.
      */
     private static File getProfileFile(String fileName) {
         String path, dir, fullPath;
@@ -1862,10 +1836,9 @@
     }
 
     /**
-     * Returns a stream corresponding to a built-in profile
-     * specified by fileName.
-     * If there is no built-in profile with such name, then the method
-     * returns null.
+     * Returns a stream corresponding to a built-in profile specified by
+     * fileName. If there is no built-in profile with such name, then the method
+     * returns {@code null}.
      */
     private static InputStream getStandardProfileInputStream(String fileName) {
         return AccessController.doPrivileged(
@@ -1909,68 +1882,58 @@
             });
     }
 
-
     /*
      * Serialization support.
      *
-     * Directly deserialized profiles are useless since they are not
-     * registered with CMM.  We don't allow constructor to be called
-     * directly and instead have clients to call one of getInstance
-     * factory methods that will register the profile with CMM.  For
-     * deserialization we implement readResolve method that will
-     * resolve the bogus deserialized profile object with one obtained
-     * with getInstance as well.
+     * Directly deserialized profiles are useless since they are not registered
+     * with CMM. We don't allow constructor to be called directly and instead
+     * have clients to call one of getInstance factory methods that will
+     * register the profile with CMM. For deserialization we implement
+     * readResolve method that will resolve the bogus deserialized profile
+     * object with one obtained with getInstance as well.
      *
-     * There are two primary factory methods for construction of ICC
-     * profiles: getInstance(int cspace) and getInstance(byte[] data).
-     * This implementation of ICC_Profile uses the former to return a
-     * cached singleton profile object, other implementations will
-     * likely use this technique too.  To preserve the singleton
-     * pattern across serialization we serialize cached singleton
-     * profiles in such a way that deserializing VM could call
-     * getInstance(int cspace) method that will resolve deserialized
-     * object into the corresponding singleton as well.
+     * There are two primary factory methods for construction of ICC profiles:
+     * getInstance(int cspace) and getInstance(byte[] data). This implementation
+     * of ICC_Profile uses the former to return a cached singleton profile
+     * object, other implementations will likely use this technique too. To
+     * preserve the singleton pattern across serialization we serialize cached
+     * singleton profiles in such a way that deserializing VM could call
+     * getInstance(int cspace) method that will resolve deserialized object into
+     * the corresponding singleton as well.
      *
-     * Since the singletons are private to ICC_Profile the readResolve
-     * method have to be `protected' instead of `private' so that
-     * singletons that are instances of subclasses of ICC_Profile
-     * could be correctly deserialized.
+     * Since the singletons are private to ICC_Profile the readResolve method
+     * have to be `protected' instead of `private' so that singletons that are
+     * instances of subclasses of ICC_Profile could be correctly deserialized.
      */
 
-
     /**
-     * Version of the format of additional serialized data in the
-     * stream.  Version&nbsp;{@code 1} corresponds to Java&nbsp;2
-     * Platform,&nbsp;v1.3.
+     * Version of the format of additional serialized data in the stream.
+     * Version&nbsp;{@code 1} corresponds to Java&nbsp;2 Platform,&nbsp;v1.3.
+     *
+     * @serial
      * @since 1.3
-     * @serial
      */
     private int iccProfileSerializedDataVersion = 1;
 
-
     /**
-     * Writes default serializable fields to the stream.  Writes a
-     * string and an array of bytes to the stream as additional data.
+     * Writes default serializable fields to the stream. Writes a string and an
+     * array of bytes to the stream as additional data.
      *
-     * @param s stream used for serialization.
-     * @throws IOException
-     *     thrown by {@code ObjectInputStream}.
-     * @serialData
-     *     The {@code String} is the name of one of
-     *     <code>CS_<var>*</var></code> constants defined in the
-     *     {@link ColorSpace} class if the profile object is a profile
-     *     for a predefined color space (for example
-     *     {@code "CS_sRGB"}).  The string is {@code null}
-     *     otherwise.
-     *     <p>
-     *     The {@code byte[]} array is the profile data for the
-     *     profile.  For predefined color spaces {@code null} is
-     *     written instead of the profile data.  If in the future
-     *     versions of Java API new predefined color spaces will be
-     *     added, future versions of this class may choose to write
-     *     for new predefined color spaces not only the color space
-     *     name, but the profile data as well so that older versions
-     *     could still deserialize the object.
+     * @param  s stream used for serialization
+     * @throws IOException thrown by {@code ObjectInputStream}
+     * @serialData the {@code String} is the name of one of
+     *         <code>CS_<var>*</var></code> constants defined in the
+     *         {@link ColorSpace} class if the profile object is a profile for a
+     *         predefined color space (for example {@code "CS_sRGB"}). The
+     *         string is {@code null} otherwise.
+     *         <p>
+     *         The {@code byte[]} array is the profile data for the profile. For
+     *         predefined color spaces {@code null} is written instead of the
+     *         profile data. If in the future versions of Java API new
+     *         predefined color spaces will be added, future versions of this
+     *         class may choose to write for new predefined color spaces not
+     *         only the color space name, but the profile data as well so that
+     *         older versions could still deserialize the object.
      */
     private void writeObject(ObjectOutputStream s)
       throws IOException
@@ -2009,33 +1972,30 @@
     private transient ICC_Profile resolvedDeserializedProfile;
 
     /**
-     * Reads default serializable fields from the stream.  Reads from
-     * the stream a string and an array of bytes as additional data.
+     * Reads default serializable fields from the stream. Reads from the stream
+     * a string and an array of bytes as additional data.
      *
-     * @param s stream used for deserialization.
-     * @throws IOException
-     *     thrown by {@code ObjectInputStream}.
-     * @throws ClassNotFoundException
-     *     thrown by {@code ObjectInputStream}.
-     * @serialData
-     *     The {@code String} is the name of one of
-     *     <code>CS_<var>*</var></code> constants defined in the
-     *     {@link ColorSpace} class if the profile object is a profile
-     *     for a predefined color space (for example
-     *     {@code "CS_sRGB"}).  The string is {@code null}
-     *     otherwise.
-     *     <p>
-     *     The {@code byte[]} array is the profile data for the
-     *     profile.  It will usually be {@code null} for the
-     *     predefined profiles.
-     *     <p>
-     *     If the string is recognized as a constant name for
-     *     predefined color space the object will be resolved into
-     *     profile obtained with
-     *     <code>getInstance(int&nbsp;cspace)</code> and the profile
-     *     data are ignored.  Otherwise the object will be resolved
-     *     into profile obtained with
-     *     <code>getInstance(byte[]&nbsp;data)</code>.
+     * @param  s stream used for deserialization
+     * @throws IOException thrown by {@code ObjectInputStream}
+     * @throws ClassNotFoundException thrown by {@code
+     *         ObjectInputStream}
+     * @serialData the {@code String} is the name of one of
+     *         <code>CS_<var>*</var></code> constants defined in the
+     *         {@link ColorSpace} class if the profile object is a profile for a
+     *         predefined color space (for example {@code "CS_sRGB"}). The
+     *         string is {@code null} otherwise.
+     *         <p>
+     *         The {@code byte[]} array is the profile data for the profile. It
+     *         will usually be {@code null} for the predefined profiles.
+     *         <p>
+     *         If the string is recognized as a constant name for predefined
+     *         color space the object will be resolved into profile obtained
+     *         with
+     *         <code>getInstance(int&nbsp;cspace)</code> and the profile data
+     *         are
+     *         ignored. Otherwise the object will be resolved into profile
+     *         obtained with
+     *         <code>getInstance(byte[]&nbsp;data)</code>.
      * @see #readResolve()
      * @see #getInstance(int)
      * @see #getInstance(byte[])
@@ -2075,11 +2035,11 @@
     }
 
     /**
-     * Resolves instances being deserialized into instances registered
-     * with CMM.
-     * @return ICC_Profile object for profile registered with CMM.
-     * @throws ObjectStreamException
-     *     never thrown, but mandated by the serialization spec.
+     * Resolves instances being deserialized into instances registered with CMM.
+     *
+     * @return ICC_Profile object for profile registered with CMM
+     * @throws ObjectStreamException never thrown, but mandated by the
+     *         serialization spec
      * @since 1.3
      */
     protected Object readResolve() throws ObjectStreamException {
--- a/src/java.desktop/share/classes/java/awt/color/ICC_ProfileGray.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/ICC_ProfileGray.java	Mon Oct 29 17:34:05 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,7 @@
  * questions.
  */
 
-/*
- **********************************************************************
+/* ********************************************************************
  **********************************************************************
  **********************************************************************
  *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
@@ -40,80 +39,81 @@
 import sun.java2d.cmm.ProfileDeferralInfo;
 
 /**
- *
- * A subclass of the ICC_Profile class which represents profiles
- * which meet the following criteria: the color space type of the
- * profile is TYPE_GRAY and the profile includes the grayTRCTag and
- * mediaWhitePointTag tags.  Examples of this kind of profile are
- * monochrome input profiles, monochrome display profiles, and
- * monochrome output profiles.  The getInstance methods in the
- * ICC_Profile class will
- * return an ICC_ProfileGray object when the above conditions are
- * met.  The advantage of this class is that it provides a lookup
- * table that Java or native methods may be able to use directly to
- * optimize color conversion in some cases.
+ * The {@code ICC_ProfileGray} class is a subclass of the {@code ICC_Profile}
+ * class that represents profiles which meet the following criteria: the color
+ * space type of the profile is {@code TYPE_GRAY} and the profile includes the
+ * {@code grayTRCTag} and {@code mediaWhitePointTag} tags. The
+ * {@code getInstance} methods in the {@code ICC_Profile} class will return an
+ * {@code ICC_ProfileGray} object when the above conditions are met. Examples of
+ * this kind of profile are monochrome input profiles, monochrome display
+ * profiles, and monochrome output profiles.
+ * <p>
+ * The advantage of this class is that it provides a lookup table that Java
+ * or native methods can use directly to optimize color conversion in some
+ * cases.
  * <p>
  * To transform from a GRAY device profile color space to the CIEXYZ Profile
- * Connection Space, the device gray component is transformed by
- * a lookup through the tone reproduction curve (TRC).  The result is
- * treated as the achromatic component of the PCS.
-<pre>
-
-&nbsp;               PCSY = grayTRC[deviceGray]
-
-</pre>
- * The inverse transform is done by converting the PCS Y components to
- * device Gray via the inverse of the grayTRC.
+ * Connection Space, the device gray component is transformed by a lookup
+ * through the tone reproduction curve (TRC). The result is treated as the
+ * achromatic component of the PCS.
+ * <pre>
+ *
+ * &nbsp;               PCSY = grayTRC[deviceGray]
+ *
+ * </pre>
+ * The inverse transform is done by converting the PCS Y components to device
+ * Gray via the inverse of the grayTRC.
  */
-
-
-
 public class ICC_ProfileGray
 extends ICC_Profile {
 
+    /**
+     * Use serialVersionUID from JDK 1.2 for interoperability.
+     */
     static final long serialVersionUID = -1124721290732002649L;
 
     /**
-     * Constructs a new ICC_ProfileGray from a CMM ID.
+     * Constructs a new {@code ICC_ProfileGray} from a CMM ID.
      */
     ICC_ProfileGray(Profile p) {
         super(p);
     }
 
     /**
-     * Constructs a new ICC_ProfileGray from a ProfileDeferralInfo object.
+     * Constructs a new {@code ICC_ProfileGray} from a
+     * {@code ProfileDeferralInfo} object.
      */
     ICC_ProfileGray(ProfileDeferralInfo pdi) {
         super(pdi);
     }
 
-
     /**
-     * Returns a float array of length 3 containing the X, Y, and Z
-     * components of the mediaWhitePointTag in the ICC profile.
-     * @return an array containing the components of the
-     * mediaWhitePointTag in the ICC profile.
+     * Returns a float array of length 3 containing the X, Y, and Z components
+     * of the mediaWhitePointTag in the ICC profile.
+     *
+     * @return an array containing the components of the mediaWhitePointTag in
+     *         the ICC profile
      */
     public float[] getMediaWhitePoint() {
         return super.getMediaWhitePoint();
     }
 
-
     /**
-     * Returns a gamma value representing the tone reproduction
-     * curve (TRC).  If the profile represents the TRC 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 PCS Y component is computed as follows:
-<pre>
-
-&nbsp;                         gamma
-&nbsp;        PCSY = deviceGray
-
-</pre>
-     * @return the gamma value as a float.
-     * @exception ProfileDataException if the profile does not specify
-     *            the TRC as a single gamma value.
+     * Returns a gamma value representing the tone reproduction curve (TRC). If
+     * the profile represents the TRC as a table rather than a single gamma
+     * value, then an exception is thrown. In this case the actual table can be
+     * obtained via {@code getTRC()}. When using a gamma value, the PCS Y
+     * component is computed as follows:
+     * <pre>
+     *
+     * &nbsp;                         gamma
+     * &nbsp;        PCSY = deviceGray
+     *
+     * </pre>
+     *
+     * @return the gamma value as a float
+     * @throws ProfileDataException if the profile does not specify the TRC as a
+     *         single gamma value
      */
     public float getGamma() {
     float theGamma;
@@ -123,22 +123,22 @@
     }
 
     /**
-     * Returns the TRC as an array of shorts.  If the profile has
-     * specified the 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 Gray 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.
-     * @return a short array representing the TRC.
-     * @exception ProfileDataException if the profile does not specify
-     *            the TRC as a table.
+     * Returns the TRC as an array of shorts. If the profile has specified the
+     * TRC as linear (gamma = 1.0) or as a simple gamma value, this method
+     * throws an exception, and the {@code getGamma()} method should be used to
+     * get the gamma value. Otherwise the short array returned here represents a
+     * lookup table where the input Gray 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 {@code 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.
+     *
+     * @return a short array representing the TRC
+     * @throws ProfileDataException if the profile does not specify the TRC as a
+     *         table
      */
     public short[] getTRC() {
     short[]    theTRC;
--- a/src/java.desktop/share/classes/java/awt/color/ICC_ProfileRGB.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/ICC_ProfileRGB.java	Mon Oct 29 17:34:05 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,7 @@
  * questions.
  */
 
-/*
- **********************************************************************
+/* ********************************************************************
  **********************************************************************
  **********************************************************************
  *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
@@ -40,30 +39,25 @@
 import sun.java2d.cmm.ProfileDeferralInfo;
 
 /**
- *
- * The ICC_ProfileRGB class is a subclass of the ICC_Profile class
- * that represents profiles which meet the following criteria:
- * <ul>
- * <li>The profile's color space type is RGB.</li>
- * <li>The profile includes the {@code redColorantTag},
- * {@code greenColorantTag}, {@code blueColorantTag},
- * {@code redTRCTag}, {@code greenTRCTag},
- * {@code blueTRCTag}, and {@code mediaWhitePointTag} tags.</li>
- * </ul>
- * The {@code ICC_Profile getInstance} method will
- * return an {@code ICC_ProfileRGB} object when these conditions are met.
- * Three-component, matrix-based input profiles and RGB display profiles are
- * examples of this type of profile.
+ * The {@code ICC_ProfileRGB} class is a subclass of the {@code ICC_Profile}
+ * class that represents profiles which meet the following criteria: the
+ * profile's color space type is RGB, and the profile includes the
+ * {@code redColorantTag}, {@code greenColorantTag}, {@code blueColorantTag},
+ * {@code redTRCTag}, {@code greenTRCTag}, {@code blueTRCTag},
+ * {@code mediaWhitePointTag} tags. The {@code getInstance} methods in the
+ * {@code ICC_Profile} class will return an {@code ICC_ProfileRGB} object when
+ * the above conditions are met. Three-component, matrix-based input profiles
+ * and RGB display profiles are examples of this type of profile.
  * <p>
- * This profile class provides color transform matrices and lookup tables
- * that Java or native methods can use directly to
- * optimize color conversion in some cases.
+ * The advantage of this class is that it provides color transform matrices and
+ * lookup tables that Java or native methods can use directly to optimize color
+ * conversion in some cases.
  * <p>
  * 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).
- * The resulting linear RGB components are converted to the CIEXYZ PCS
- * using a a 3x3 matrix constructed from the RGB colorants.
+ * Connection Space, each device color component is first linearized by a lookup
+ * through the corresponding tone reproduction curve (TRC). The resulting linear
+ * RGB components are converted to the CIEXYZ PCS using a a 3x3 matrix
+ * constructed from the RGB colorants.
  * <pre>
  *
  * &nbsp;               linearR = redTRC[deviceR]
@@ -81,12 +75,9 @@
  *
  * </pre>
  * The inverse transform is performed by converting PCS XYZ components to linear
- * RGB components through the inverse of the above 3x3 matrix, and then converting
- * linear RGB to device RGB through inverses of the TRCs.
+ * RGB components through the inverse of the above 3x3 matrix, and then
+ * converting linear RGB to device RGB through inverses of the TRCs.
  */
-
-
-
 public class ICC_ProfileRGB
 extends ICC_Profile {
 
@@ -107,12 +98,10 @@
      */
     public static final int BLUECOMPONENT = 2;
 
-
     /**
      * Constructs an new {@code ICC_ProfileRGB} from a CMM ID.
      *
-     * @param p The CMM ID for the profile.
-     *
+     * @param p the CMM ID for the profile.
      */
     ICC_ProfileRGB(Profile p) {
         super(p);
@@ -120,7 +109,7 @@
 
     /**
      * Constructs a new {@code ICC_ProfileRGB} from a
-     * ProfileDeferralInfo object.
+     * {@code ProfileDeferralInfo} object.
      *
      * @param pdi
      */
@@ -128,31 +117,28 @@
         super(pdi);
     }
 
-
     /**
      * Returns an array that contains the components of the profile's
      * {@code mediaWhitePointTag}.
      *
-     * @return A 3-element {@code float} array containing the x, y,
-     * and z components of the profile's {@code mediaWhitePointTag}.
+     * @return a 3-element {@code float} array containing the x, y, and z
+     *         components of the profile's {@code mediaWhitePointTag}
      */
     public float[] getMediaWhitePoint() {
         return super.getMediaWhitePoint();
     }
 
-
     /**
-     * Returns a 3x3 {@code float} matrix constructed from the
-     * X, Y, and Z components of the profile's {@code redColorantTag},
+     * Returns a 3x3 {@code float} matrix constructed from the X, Y, and Z
+     * components of the profile's {@code redColorantTag},
      * {@code greenColorantTag}, and {@code blueColorantTag}.
      * <p>
-     * This matrix can be used for color transforms in the forward
-     * direction of the profile--from the profile color space
-     * to the CIEXYZ PCS.
+     * This matrix can be used for color transforms in the forward direction of
+     * the profile--from the profile color space to the CIEXYZ PCS.
      *
-     * @return A 3x3 {@code float} array that contains the x, y, and z
-     * components of the profile's {@code redColorantTag},
-     * {@code greenColorantTag}, and {@code blueColorantTag}.
+     * @return a 3x3 {@code float} array that contains the x, y, and z
+     *         components of the profile's {@code redColorantTag},
+     *         {@code greenColorantTag}, and {@code blueColorantTag}
      */
     public float[][] getMatrix() {
         float[][] theMatrix = new float[3][3];
@@ -174,28 +160,27 @@
     }
 
     /**
-     * Returns a gamma value representing the tone reproduction curve
-     * (TRC) for a particular component.  The component parameter
-     * must be one of REDCOMPONENT, GREENCOMPONENT, or BLUECOMPONENT.
+     * Returns a gamma value representing the tone reproduction curve (TRC) for
+     * a particular component. The component parameter must be one of
+     * {@code REDCOMPONENT}, {@code GREENCOMPONENT}, or {@code BLUECOMPONENT}.
      * <p>
-     * If the profile
-     * represents the TRC for the corresponding component
-     * as a table rather than a single gamma value, an
-     * exception is thrown.  In this case the actual table
-     * can be obtained through the {@link #getTRC(int)} method.
-     * When using a gamma value,
-     * the linear component (R, G, or B) is computed as follows:
+     * If the profile represents the TRC for the corresponding component as a
+     * table rather than a single gamma value, an exception is thrown. In this
+     * case the actual table can be obtained through the {@link #getTRC(int)}
+     * method. When using a gamma value, the linear component (R, G, or B) is
+     * computed as follows:
      * <pre>
      *
      * &nbsp;                                         gamma
      * &nbsp;        linearComponent = deviceComponent
      *
-     *</pre>
-     * @param component The {@code ICC_ProfileRGB} constant that
-     * represents the component whose TRC you want to retrieve
-     * @return the gamma value as a float.
-     * @exception ProfileDataException if the profile does not specify
-     *            the corresponding TRC as a single gamma value.
+     * </pre>
+     *
+     * @param  component the {@code ICC_ProfileRGB} constant that represents the
+     *         component whose TRC you want to retrieve
+     * @return the gamma value as a float
+     * @throws ProfileDataException if the profile does not specify the
+     *         corresponding TRC as a single gamma value
      */
     public float getGamma(int component) {
     float theGamma;
@@ -224,34 +209,29 @@
     }
 
     /**
-     * Returns the TRC for a particular component as an array.
-     * Component must be {@code REDCOMPONENT},
-     * {@code GREENCOMPONENT}, or {@code BLUECOMPONENT}.
-     * Otherwise the returned array
-     * 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 might be used to generate output values for
-     * input values that 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.  In other words, the values are really unsigned
-     * {@code short} values even though they are returned in a
+     * Returns the TRC for a particular component as an array. Component must be
+     * {@code REDCOMPONENT}, {@code GREENCOMPONENT}, or {@code BLUECOMPONENT}.
+     * Otherwise the returned array 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 {@code length-1}.
+     * Interpolation might be used to generate output values for input values
+     * that 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. In other words, the values are
+     * really unsigned {@code short} values even though they are returned in a
      * {@code short} array.
+     * <p>
+     * If the profile has specified the corresponding TRC as linear (gamma =
+     * 1.0) or as a simple gamma value, this method throws an exception. In this
+     * case, the {@link #getGamma(int)} method should be used to get the gamma
+     * value.
      *
-     * If the profile has specified the corresponding TRC
-     * as linear (gamma = 1.0) or as a simple gamma value, this method
-     * throws an exception.  In this case, the {@link #getGamma(int)}
-     * method should be used to get the gamma value.
-     *
-     * @param component The {@code ICC_ProfileRGB} constant that
-     * represents the component whose TRC you want to retrieve:
-     * {@code REDCOMPONENT}, {@code GREENCOMPONENT}, or
-     * {@code BLUECOMPONENT}.
-     *
-     * @return a short array representing the TRC.
-     * @exception ProfileDataException if the profile does not specify
-     *            the corresponding TRC as a table.
+     * @param  component the {@code ICC_ProfileRGB} constant that represents the
+     *         component whose TRC you want to retrieve: {@code REDCOMPONENT},
+     *         {@code GREENCOMPONENT}, or {@code BLUECOMPONENT}
+     * @return a short array representing the TRC
+     * @throws ProfileDataException if the profile does not specify the
+     *         corresponding TRC as a table
      */
     public short[] getTRC(int component) {
     short[] theTRC;
--- a/src/java.desktop/share/classes/java/awt/color/ProfileDataException.java	Fri Oct 26 15:44:33 2018 +0530
+++ b/src/java.desktop/share/classes/java/awt/color/ProfileDataException.java	Mon Oct 29 17:34:05 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,18 +26,23 @@
 package java.awt.color;
 
 /**
- * This exception is thrown when an error occurs in accessing or
- * processing an ICC_Profile object.
+ * This exception is thrown when an error occurs in accessing or processing an
+ * {@code ICC_Profile} object.
  */
+public class ProfileDataException extends java.lang.RuntimeException {
 
-public class ProfileDataException extends java.lang.RuntimeException {
+    /**
+     * Use serialVersionUID from JDK 1.2 for interoperability.
+     */
     private static final long serialVersionUID = 7286140888240322498L;
 
     /**
-     *  Constructs a ProfileDataException with the specified detail message.
-     *  @param s the specified detail message
+     * Constructs a {@code ProfileDataException} with the specified detail
+     * message.
+     *
+     * @param  s the specified detail message
      */
     public ProfileDataException(String s) {
-        super (s);
+        super(s);
     }
 }