public abstract class

ColorSpace

extends Object
implements Serializable
java.lang.Object
   ↳ java.awt.color.ColorSpace
Known Direct Subclasses

Class Overview

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.

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.

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 http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html .

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 CS_CIEXYZ space used by the toCIEXYZ/fromCIEXYZ methods can be described as follows:


      CIEXYZ
      viewing illuminance: 200 lux
      viewing white point: CIE D50
      media white point: "that of a perfectly reflecting diffuser" -- D50
      media black point: 0 lux or 0 Reflectance
      flare: 1 percent
      surround: 20percent of the media white point
      media description: reflection print (i.e., RLAB, Hunt viewing media)
      note: For developers creating an ICC profile for this conversion
            space, the following is applicable.  Use a simple Von Kries
            white point adaptation folded into the 3X3 matrix parameters
            and fold the flare and surround effects into the three
            one-dimensional lookup tables (assuming one uses the minimal
            model for monitors).

See Also

Summary

Constants
int CS_CIEXYZ The CIEXYZ conversion color space defined above.
int CS_GRAY The built-in linear gray scale color space.
int CS_LINEAR_RGB A built-in linear RGB color space.
int CS_PYCC The Photo YCC conversion color space.
int CS_sRGB The sRGB color space defined at http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html .
int TYPE_2CLR Generic 2 component color spaces.
int TYPE_3CLR Generic 3 component color spaces.
int TYPE_4CLR Generic 4 component color spaces.
int TYPE_5CLR Generic 5 component color spaces.
int TYPE_6CLR Generic 6 component color spaces.
int TYPE_7CLR Generic 7 component color spaces.
int TYPE_8CLR Generic 8 component color spaces.
int TYPE_9CLR Generic 9 component color spaces.
int TYPE_ACLR Generic 10 component color spaces.
int TYPE_BCLR Generic 11 component color spaces.
int TYPE_CCLR Generic 12 component color spaces.
int TYPE_CMY Any of the family of CMY color spaces.
int TYPE_CMYK Any of the family of CMYK color spaces.
int TYPE_DCLR Generic 13 component color spaces.
int TYPE_ECLR Generic 14 component color spaces.
int TYPE_FCLR Generic 15 component color spaces.
int TYPE_GRAY Any of the family of GRAY color spaces.
int TYPE_HLS Any of the family of HLS color spaces.
int TYPE_HSV Any of the family of HSV color spaces.
int TYPE_Lab Any of the family of Lab color spaces.
int TYPE_Luv Any of the family of Luv color spaces.
int TYPE_RGB Any of the family of RGB color spaces.
int TYPE_XYZ Any of the family of XYZ color spaces.
int TYPE_YCbCr Any of the family of YCbCr color spaces.
int TYPE_Yxy Any of the family of Yxy color spaces.
Protected Constructors
ColorSpace(int type, int numcomponents)
Constructs a ColorSpace object given a color space type and the number of components.
Public Methods
abstract float[] fromCIEXYZ(float[] colorvalue)
Transforms a color value assumed to be in the CS_CIEXYZ conversion color space into this ColorSpace.
abstract float[] fromRGB(float[] rgbvalue)
Transforms a color value assumed to be in the default CS_sRGB color space into this ColorSpace.
static ColorSpace getInstance(int colorspace)
Returns a ColorSpace representing one of the specific predefined color spaces.
float getMaxValue(int component)
Returns the maximum normalized color component value for the specified component.
float getMinValue(int component)
Returns the minimum normalized color component value for the specified component.
String getName(int idx)
Returns the name of the component given the component index.
int getNumComponents()
Returns the number of components of this ColorSpace.
int getType()
Returns the color space type of this ColorSpace (for example TYPE_RGB, TYPE_XYZ, ...).
boolean isCS_sRGB()
Returns true if the ColorSpace is CS_sRGB.
abstract float[] toCIEXYZ(float[] colorvalue)
Transforms a color value assumed to be in this ColorSpace into the CS_CIEXYZ conversion color space.
abstract float[] toRGB(float[] colorvalue)
Transforms a color value assumed to be in this ColorSpace into a value in the default CS_sRGB color space.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final int CS_CIEXYZ

The CIEXYZ conversion color space defined above.

Constant Value: 1001 (0x000003e9)

public static final int CS_GRAY

The built-in linear gray scale color space.

Constant Value: 1003 (0x000003eb)

public static final int CS_LINEAR_RGB

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.

Constant Value: 1004 (0x000003ec)

public static final int CS_PYCC

The Photo YCC conversion color space.

Constant Value: 1002 (0x000003ea)

public static final int CS_sRGB

Constant Value: 1000 (0x000003e8)

public static final int TYPE_2CLR

Generic 2 component color spaces.

Constant Value: 12 (0x0000000c)

public static final int TYPE_3CLR

Generic 3 component color spaces.

Constant Value: 13 (0x0000000d)

public static final int TYPE_4CLR

Generic 4 component color spaces.

Constant Value: 14 (0x0000000e)

public static final int TYPE_5CLR

Generic 5 component color spaces.

Constant Value: 15 (0x0000000f)

public static final int TYPE_6CLR

Generic 6 component color spaces.

Constant Value: 16 (0x00000010)

public static final int TYPE_7CLR

Generic 7 component color spaces.

Constant Value: 17 (0x00000011)

public static final int TYPE_8CLR

Generic 8 component color spaces.

Constant Value: 18 (0x00000012)

public static final int TYPE_9CLR

Generic 9 component color spaces.

Constant Value: 19 (0x00000013)

public static final int TYPE_ACLR

Generic 10 component color spaces.

Constant Value: 20 (0x00000014)

public static final int TYPE_BCLR

Generic 11 component color spaces.

Constant Value: 21 (0x00000015)

public static final int TYPE_CCLR

Generic 12 component color spaces.

Constant Value: 22 (0x00000016)

public static final int TYPE_CMY

Any of the family of CMY color spaces.

Constant Value: 11 (0x0000000b)

public static final int TYPE_CMYK

Any of the family of CMYK color spaces.

Constant Value: 9 (0x00000009)

public static final int TYPE_DCLR

Generic 13 component color spaces.

Constant Value: 23 (0x00000017)

public static final int TYPE_ECLR

Generic 14 component color spaces.

Constant Value: 24 (0x00000018)

public static final int TYPE_FCLR

Generic 15 component color spaces.

Constant Value: 25 (0x00000019)

public static final int TYPE_GRAY

Any of the family of GRAY color spaces.

Constant Value: 6 (0x00000006)

public static final int TYPE_HLS

Any of the family of HLS color spaces.

Constant Value: 8 (0x00000008)

public static final int TYPE_HSV

Any of the family of HSV color spaces.

Constant Value: 7 (0x00000007)

public static final int TYPE_Lab

Any of the family of Lab color spaces.

Constant Value: 1 (0x00000001)

public static final int TYPE_Luv

Any of the family of Luv color spaces.

Constant Value: 2 (0x00000002)

public static final int TYPE_RGB

Any of the family of RGB color spaces.

Constant Value: 5 (0x00000005)

public static final int TYPE_XYZ

Any of the family of XYZ color spaces.

Constant Value: 0 (0x00000000)

public static final int TYPE_YCbCr

Any of the family of YCbCr color spaces.

Constant Value: 3 (0x00000003)

public static final int TYPE_Yxy

Any of the family of Yxy color spaces.

Constant Value: 4 (0x00000004)

Protected Constructors

protected ColorSpace (int type, int numcomponents)

Constructs a ColorSpace object given a color space type and the number of components.

Parameters
type one of the ColorSpace type constants
numcomponents the number of components in the color space

Public Methods

public abstract float[] fromCIEXYZ (float[] colorvalue)

Transforms a color value assumed to be in the CS_CIEXYZ conversion color space into this ColorSpace.

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 fromCIEXYZ method of ICC_ColorSpace for further information.

Parameters
colorvalue a float array with length of at least 3
Returns
  • a float array with length equal to the number of components in this 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 the default CS_sRGB color space into this ColorSpace.

This method transforms color values using algorithms designed to produce the best perceptual match between input and output colors. In order to do colorimetric conversion of color values, you should use the 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 fromCIEXYZ method of this color space to convert from CS_CIEXYZ to the output color space. See toCIEXYZ and fromCIEXYZ for further information.

Parameters
rgbvalue a float array with length of at least 3
Returns
  • a float array with length equal to the number of components in this ColorSpace
Throws
ArrayIndexOutOfBoundsException if array length is not at least 3

public static ColorSpace getInstance (int colorspace)

Returns a ColorSpace representing one of the specific predefined color spaces.

Parameters
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
  • the requested ColorSpace object

public float getMaxValue (int component)

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.

Parameters
component the component index
Returns
  • the maximum normalized component value
Throws
IllegalArgumentException if component is less than 0 or greater than numComponents - 1

public float getMinValue (int component)

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.

Parameters
component the component index
Returns
  • the minimum normalized component value
Throws
IllegalArgumentException if component is less than 0 or greater than numComponents - 1

public String getName (int idx)

Returns the name of the component given the component index.

Parameters
idx the component index
Returns
  • the name of the component at the specified index
Throws
IllegalArgumentException if idx is less than 0 or greater than numComponents - 1

public int getNumComponents ()

Returns the number of components of this ColorSpace.

Returns
  • The number of components in this ColorSpace.

public int getType ()

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 type constant that represents the type of this ColorSpace

public boolean isCS_sRGB ()

Returns true if the ColorSpace is CS_sRGB.

Returns
  • true if this is a CS_sRGB color space, false if it is not

public abstract float[] toCIEXYZ (float[] colorvalue)

Transforms a color value assumed to be in this ColorSpace into the CS_CIEXYZ conversion color space.

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 toCIEXYZ method of ICC_ColorSpace for further information.

Parameters
colorvalue a float array with length of at least the number of components in this ColorSpace
Returns
  • a float array of length 3
Throws
ArrayIndexOutOfBoundsException if array length is not at least the number of components in this ColorSpace.

public abstract float[] toRGB (float[] colorvalue)

Transforms a color value assumed to be in this ColorSpace into a value in the default CS_sRGB color space.

This method transforms color values using algorithms designed to produce the best perceptual match between input and output colors. In order to do colorimetric conversion of color values, you should use the toCIEXYZ method of this color space to first convert from the input color space to the CS_CIEXYZ color space, and then use the fromCIEXYZ method of the CS_sRGB color space to convert from CS_CIEXYZ to the output color space. See toCIEXYZ and fromCIEXYZ for further information.

Parameters
colorvalue a float array with length of at least the number of components in this ColorSpace
Returns
  • a float array of length 3
Throws
ArrayIndexOutOfBoundsException if array length is not at least the number of components in this ColorSpace