JavaTM 2 Platform
Standard Edition

java.awt.image
Class ComponentColorModel

java.lang.Object
  |
  +--java.awt.image.ColorModel
        |
        +--java.awt.image.ComponentColorModel

public class ComponentColorModel
extends ColorModel

A ColorModel class that works with pixel values that represent color and alpha information as separate samples and that store each sample in a separate data element. This class can be used with an arbitrary ColorSpace. The number of color samples in the pixel values must be same as the number of color components in the ColorSpace. There may be a single alpha sample.

For those methods that use a primitive array pixel representation of type transferType, the array length is the same as the number of color and alpha samples. Color samples are stored first in the array followed by the alpha sample, if present. The order of the color samples is specified by the ColorSpace. Typically, this order reflects the name of the color space type. For example, for TYPE_RGB, index 0 corresponds to red, index 1 to green, and index 2 to blue. The transfer types supported are DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, and DataBuffer.TYPE_INT.

The translation from pixel values to color/alpha components for display or processing purposes is a one-to-one correspondence of samples to components. The number of bits in a color or alpha sample of a pixel value might not be the same as the number of bits for the corresponding color or alpha component passed to the ComponentColorModel constructor. This class assumes that the least significant n bits of a sample value hold the component value, where n is the number of significant bits for the component passed to the constructor. It also assumes that any higher-order bits in a sample value are zero.

Methods that use a single int pixel representation throw an IllegalArgumentException, unless the number of components for the ComponentColorModel is one--in other words, a single color component and no alpha.

A ComponentColorModel can be used in conjunction with a ComponentSampleModel, a BandedSampleModel, or a PixelInterleavedSampleModel to construct a BufferedImage.

See Also:
ColorModel, ColorSpace, ComponentSampleModel, BandedSampleModel, PixelInterleavedSampleModel, BufferedImage

Fields inherited from class java.awt.image.ColorModel
pixel_bits, transferType
 
Constructor Summary
ComponentColorModel(ColorSpace colorSpace, int[] bits, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          Constructs a ComponentColorModel from the specified parameters.
 
Method Summary
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
          Forces the raster data to match the state specified in the isAlphaPremultiplied variable, assuming the data is currently correctly described by this ColorModel.
 SampleModel createCompatibleSampleModel(int w, int h)
          Creates a SampleModel with the specified width and height, that has a data layout compatible with this ColorModel.
 WritableRaster createCompatibleWritableRaster(int w, int h)
          Creates a WritableRaster with the specified width and height, that has a data layout (SampleModel) compatible with this ColorModel.
 boolean equals(Object obj)
          Compares this color model with another for equality.
 int getAlpha(int pixel)
          Returns the alpha component for the specified pixel, scaled from 0 to 255.
 int getAlpha(Object inData)
          Returns the alpha component for the specified pixel, scaled from 0 to 255.
 WritableRaster getAlphaRaster(WritableRaster raster)
          Returns a Raster representing the alpha channel of an image, extracted from the input Raster.
 int getBlue(int pixel)
          Returns the blue color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB.
 int getBlue(Object inData)
          Returns the blue color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB.
 int[] getComponents(int pixel, int[] components, int offset)
          Returns an array of unnormalized color/alpha components given a pixel in this ColorModel.
 int[] getComponents(Object pixel, int[] components, int offset)
          Returns an array of unnormalized color/alpha components given a pixel in this ColorModel.
 int getDataElement(int[] components, int offset)
          Returns a pixel value represented as an int in this ColorModel, given an array of unnormalized color/alpha components.
 Object getDataElements(int[] components, int offset, Object obj)
          Returns a data element array representation of a pixel in this ColorModel, given an array of unnormalized color/alpha components.
 Object getDataElements(int rgb, Object pixel)
          Returns a data element array representation of a pixel in this ColorModel, given an integer pixel representation in the default RGB color model.
 int getGreen(int pixel)
          Returns the green color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB.
 int getGreen(Object inData)
          Returns the green color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB.
 int getRed(int pixel)
          Returns the red color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB.
 int getRed(Object inData)
          Returns the red color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB.
 int getRGB(int pixel)
          Returns the color/alpha components of the pixel in the default RGB color model format.
 int getRGB(Object inData)
          Returns the color/alpha components for the specified pixel in the default RGB color model format.
 boolean isCompatibleRaster(Raster raster)
          Returns true if raster is compatible with this ColorModel; false if it is not.
 boolean isCompatibleSampleModel(SampleModel sm)
          Checks whether or not the specified SampleModel is compatible with this ColorModel.
 
Methods inherited from class java.awt.image.ColorModel
finalize, getColorSpace, getComponentSize, getComponentSize, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransparency, getUnnormalizedComponents, hasAlpha, isAlphaPremultiplied, toString
 
Methods inherited from class java.lang.Object
clone, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ComponentColorModel

public ComponentColorModel(ColorSpace colorSpace,
                           int[] bits,
                           boolean hasAlpha,
                           boolean isAlphaPremultiplied,
                           int transparency,
                           int transferType)
Constructs a ComponentColorModel from the specified parameters. Color components will be in the specified ColorSpace. The bits array specifies the number of significant bits per color and alpha component. Its length should be the number of components in the ColorSpace if there is no alpha information in the pixel values, or one more than this number if there is alpha information. An IllegalArgumentException is thrown if the length of the array does not match the number of components. hasAlpha indicates whether alpha information is present. If hasAlpha is true, then the boolean isAlphaPremultiplied specifies how to interpret color and alpha samples in pixel values. If the boolean is true, color samples are assumed to have been multiplied by the alpha sample. The transparency specifies what alpha values can be represented by this color model. The transferType is the type of primitive array used to represent pixel values. Note that the bits array contains the number of significant bits per color/alpha component after the translation from pixel values.
Parameters:
colorSpace - The ColorSpace associated with this color model.
bits - The number of significant bits per component.
hasAlpha - If true, this color model supports alpha.
isAlphaPremultiplied - If true, alpha is premultiplied.
transparency - Specifies what alpha values can be represented by this color model.
transferType - Specifies the type of primitive array used to represent pixel values.
Throws:
IllegalArgumentException - If the length of the length of the bits array does not match the number of components.
See Also:
ColorSpace, Transparency
Method Detail

getRed

public int getRed(int pixel)
Returns the red color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB. A color conversion is done if necessary. The pixel value is specified as an int. The returned value will be a non pre-multiplied value. If the alpha is premultiplied, this method divides it out before returning the value (if the alpha value is 0, the red value will be 0).
Overrides:
getRed in class ColorModel
Parameters:
pixel - The pixel from which you want to get the red color component.
Returns:
The red color component for the specified pixel, as an int.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.

getGreen

public int getGreen(int pixel)
Returns the green color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB. A color conversion is done if necessary. The pixel value is specified as an int. The returned value will be a non pre-multiplied value. If the alpha is premultiplied, this method divides it out before returning the value (if the alpha value is 0, the green value will be 0).
Overrides:
getGreen in class ColorModel
Parameters:
pixel - The pixel from which you want to get the green color component.
Returns:
The green color component for the specified pixel, as an int.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.

getBlue

public int getBlue(int pixel)
Returns the blue color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB. A color conversion is done if necessary. The pixel value is specified as an int. The returned value will be a non pre-multiplied value. If the alpha is premultiplied, this method divides it out before returning the value (if the alpha value is 0, the blue value will be 0).
Overrides:
getBlue in class ColorModel
Parameters:
pixel - The pixel from which you want to get the blue color component.
Returns:
The blue color component for the specified pixel, as an int.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.

getAlpha

public int getAlpha(int pixel)
Returns the alpha component for the specified pixel, scaled from 0 to 255. The pixel value is specified as an int.
Overrides:
getAlpha in class ColorModel
Parameters:
pixel - The pixel from which you want to get the alpha component.
Returns:
The alpha component for the specified pixel, as an int.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.

getRGB

public int getRGB(int pixel)
Returns the color/alpha components of the pixel in the default RGB color model format. A color conversion is done if necessary. The returned value will be in a non pre-multiplied format. If the alpha is premultiplied, this method divides it out of the color components (if the alpha value is 0, the color values will be 0).
Overrides:
getRGB in class ColorModel
Parameters:
pixel - The pixel from which you want to get the color/alpha components.
Returns:
The color/alpha components for the specified pixel, as an int.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.

getRed

public int getRed(Object inData)
Returns the red color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB. A color conversion is done if necessary. The pixel value is specified by an array of data elements of type transferType passed in as an object reference. The returned value will be a non pre-multiplied value. If the alpha is premultiplied, this method divides it out before returning the value (if the alpha value is 0, the red value will be 0).
Overrides:
getRed in class ColorModel
Parameters:
inData - The pixel from which you want to get the red color component, specified by an array of data elements of type transferType.
Returns:
The red color component for the specified pixel, as an int.
Throws:
ClassCastException - If inData is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - if inData is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.

getGreen

public int getGreen(Object inData)
Returns the green color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB. A color conversion is done if necessary. The pixel value is specified by an array of data elements of type transferType passed in as an object reference. The returned value is a non pre-multiplied value. If the alpha is premultiplied, this method divides it out before returning the value (if the alpha value is 0, the green value will be 0).
Overrides:
getGreen in class ColorModel
Parameters:
inData - The pixel from which you want to get the green color component, specified by an array of data elements of type transferType.
Returns:
The green color component for the specified pixel, as an int.
Throws:
ClassCastException - If inData is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - if inData is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.

getBlue

public int getBlue(Object inData)
Returns the blue color component for the specified pixel, scaled from 0 to 255 in the default RGB ColorSpace, sRGB. A color conversion is done if necessary. The pixel value is specified by an array of data elements of type transferType passed in as an object reference. The returned value is a non pre-multiplied value. If the alpha is premultiplied, this method divides it out before returning the value (if the alpha value is 0, the blue value will be 0).
Overrides:
getBlue in class ColorModel
Parameters:
inData - The pixel from which you want to get the blue color component, specified by an array of data elements of type transferType.
Returns:
The blue color component for the specified pixel, as an int.
Throws:
ClassCastException - If inData is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - if inData is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.

getAlpha

public int getAlpha(Object inData)
Returns the alpha component for the specified pixel, scaled from 0 to 255. The pixel value is specified by an array of data elements of type transferType passed in as an object reference.
Overrides:
getAlpha in class ColorModel
Parameters:
inData - The pixel from which you want to get the alpha component, specified by an array of data elements of type transferType.
Returns:
The alpha component for the specified pixel, as an int.
Throws:
ClassCastException - If inData is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - if inData is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.

getRGB

public int getRGB(Object inData)
Returns the color/alpha components for the specified pixel in the default RGB color model format. A color conversion is done if necessary. The pixel value is specified by an array of data elements of type transferType passed in as an object reference. The returned value is in a non pre-multiplied format. If the alpha is premultiplied, this method divides it out of the color components (if the alpha value is 0, the color values will be 0).
Overrides:
getRGB in class ColorModel
Parameters:
inData - The pixel from which you want to get the color/alpha components, specified by an array of data elements of type transferType.
Returns:
The color/alpha components for the specified pixel, as an int.
Throws:
ClassCastException - If inData is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - if inData is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
See Also:
ColorModel.getRGBdefault()

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
Returns a data element array representation of a pixel in this ColorModel, given an integer pixel representation in the default RGB color model. This array can then be passed to the setDataElements method of a WritableRaster object. If the pixel parameter is null, a new array is allocated.
Overrides:
getDataElements in class ColorModel
Parameters:
rgb -  
pixel - The integer representation of the pixel.
Throws:
ClassCastException - If pixel is not null and is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - If pixel is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
See Also:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getComponents

public int[] getComponents(int pixel,
                           int[] components,
                           int offset)
Returns an array of unnormalized color/alpha components given a pixel in this ColorModel. Color/alpha components are stored in the components array starting at offset (even if the array is allocated by this method).
Overrides:
getComponents in class ColorModel
Parameters:
pixel - The pixel value specified as an integer.
components - An integer array in which to store the unnormalized color/alpha components. If the components array is null, a new array is allocated.
offset - An offset into the components array.
Returns:
The components array.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.
ArrayIndexOutOfBoundsException - If the components array is not null and is not large enough to hold all the color and alpha components (starting at offset).

getComponents

public int[] getComponents(Object pixel,
                           int[] components,
                           int offset)
Returns an array of unnormalized color/alpha components given a pixel in this ColorModel. The pixel value is specified by an array of data elements of type transferType passed in as an object reference. Color/alpha components are stored in the components array starting at offset (even if the array is allocated by this method).
Overrides:
getComponents in class ColorModel
Parameters:
pixel - A pixel value specified by an array of data elements of type transferType.
components - An integer array in which to store the unnormalized color/alpha components. If the components array is null, a new array is allocated.
offset - An offset into the components array.
Returns:
The components array.
Throws:
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
ClassCastException - If pixel is not a primitive array of type transferType.
IllegalArgumentException - If the components array is not null and is not large enough to hold all the color and alpha components (starting at offset), or if pixel is not large enough to hold a pixel value for this ColorModel.

getDataElement

public int getDataElement(int[] components,
                          int offset)
Returns a pixel value represented as an int in this ColorModel, given an array of unnormalized color/alpha components.
Overrides:
getDataElement in class ColorModel
Parameters:
components - An array of unnormalized color/alpha components.
offset - An offset into the components array.
Returns:
A pixel value represented as an int.
Throws:
IllegalArgumentException - If there is more than one component in this ColorModel.

getDataElements

public Object getDataElements(int[] components,
                              int offset,
                              Object obj)
Returns a data element array representation of a pixel in this ColorModel, given an array of unnormalized color/alpha components. This array can then be passed to the setDataElements method of a WritableRaster object.
Overrides:
getDataElements in class ColorModel
Parameters:
components - An array of unnormalized color/alpha components.
offset - The integer offset into the components array.
obj - The object in which to store the data element array representation of the pixel. If obj variable is null, a new array is allocated. If obj is not null, it must be a primitive array of type transferType. An ArrayIndexOutOfBoundsException is thrown if obj is not large enough to hold a pixel value for this ColorModel.
Returns:
The data element array representation of a pixel in this ColorModel.
Throws:
IllegalArgumentException - If the components array is not large enough to hold all the color and alpha components (starting at offset).
ClassCastException - If obj is not null and is not a primitive array of type transferType.
ArrayIndexOutOfBoundsException - If obj is not large enough to hold a pixel value for this ColorModel.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
See Also:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

coerceData

public ColorModel coerceData(WritableRaster raster,
                             boolean isAlphaPremultiplied)
Forces the raster data to match the state specified in the isAlphaPremultiplied variable, assuming the data is currently correctly described by this ColorModel. It may multiply or divide the color raster data by alpha, or do nothing if the data is in the correct state. If the data needs to be coerced, this method also returns an instance of this ColorModel with the isAlphaPremultiplied flag set appropriately.
Overrides:
coerceData in class ColorModel
Throws:
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
UnsupportedOperationException - If the transfer type of this ComponentColorModel is not one of the supported transfer types: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
Returns true if raster is compatible with this ColorModel; false if it is not.
Overrides:
isCompatibleRaster in class ColorModel
Parameters:
raster - The Raster object to test for compatibility.
Returns:
true if raster is compatible with this ColorModel, false if it is not.

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w,
                                                     int h)
Creates a WritableRaster with the specified width and height, that has a data layout (SampleModel) compatible with this ColorModel.
Overrides:
createCompatibleWritableRaster in class ColorModel
Parameters:
w - The width of the WritableRaster you want to create.
h - The height of the WritableRaster you want to create.
Returns:
A WritableRaster that is compatible with this ColorModel.
See Also:
WritableRaster, SampleModel

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
Creates a SampleModel with the specified width and height, that has a data layout compatible with this ColorModel.
Overrides:
createCompatibleSampleModel in class ColorModel
Parameters:
w - The width of the SampleModel you want to create.
h - The height of the SampleModel you want to create.
Returns:
A SampleModel that is compatible with this ColorModel.
See Also:
SampleModel

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)
Checks whether or not the specified SampleModel is compatible with this ColorModel.
Overrides:
isCompatibleSampleModel in class ColorModel
Parameters:
sm - The SampleModel to test for compatibility.
Returns:
true if the SampleModel is compatible with this ColorModel, false if it is not.
See Also:
SampleModel

getAlphaRaster

public WritableRaster getAlphaRaster(WritableRaster raster)
Returns a Raster representing the alpha channel of an image, extracted from the input Raster. This method assumes that Raster objects associated with this ColorModel store the alpha band, if present, as the last band of image data. Returns null if there is no separate spatial alpha channel associated with this ColorModel. This method creates a new Raster, but will share the data array.
Overrides:
getAlphaRaster in class ColorModel
Parameters:
raster - The WritableRaster from which to extract the alpha channel.
Returns:
A WritableRaster containing the image's alpha channel.

equals

public boolean equals(Object obj)
Compares this color model with another for equality.
Overrides:
equals in class ColorModel
Parameters:
obj - The object to compare with this color model.
Returns:
true if the color model objects are equal, false if they are not.

JavaTM 2 Platform
Standard Edition

Submit a bug or feature
Java, Java 2D, and JDBC are a trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-1999 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.