java.awt.image
Class ComponentColorModel

java.lang.Object
  extended by java.awt.image.ColorModel
      extended by java.awt.image.ComponentColorModel
All Implemented Interfaces:
Transparency

public class ComponentColorModel
extends ColorModel


Field Summary
 
Fields inherited from class java.awt.image.ColorModel
pixel_bits, transferType
 
Fields inherited from interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
 
Constructor Summary
ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          Construct a new ComponentColorModel.
ComponentColorModel(ColorSpace colorSpace, int[] bits, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
           
 
Method Summary
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
           
 SampleModel createCompatibleSampleModel(int w, int h)
          Creates a SampleModel whose arrangement of pixel data is compatible to this ColorModel.
 WritableRaster createCompatibleWritableRaster(int w, int h)
           
 boolean equals(Object obj)
          Determine whether this Object is semantically equal to another Object.
 int getAlpha(int pixel)
          Extract alpha int sample from pixel value, scaled to [0, 255].
 int getAlpha(Object inData)
           
 WritableRaster getAlphaRaster(WritableRaster raster)
          Subclasses must override this method if it is possible for the color model to have an alpha channel.
 int getBlue(int pixel)
          Converts pixel value to sRGB and extract blue int sample scaled to range [0, 255].
 int getBlue(Object inData)
           
 int[] getComponents(int pixel, int[] components, int offset)
          Fills an array with the unnormalized component samples from a pixel value.
 int[] getComponents(Object pixel, int[] components, int offset)
          Fills an array with the unnormalized component samples from an array of transferType containing a single pixel.
 int getDataElement(int[] components, int offset)
          Converts the unnormalized component samples from an array to a pixel value.
 Object getDataElements(int[] components, int offset, Object obj)
           
 Object getDataElements(int rgb, Object pixel)
          Converts an sRGB pixel int value to an array containing a single pixel of the color space of the color model.
 int getGreen(int pixel)
          Converts pixel value to sRGB and extract green int sample scaled to range [0, 255].
 int getGreen(Object inData)
           
 int getRed(int pixel)
          Converts pixel value to sRGB and extract red int sample scaled to range [0, 255].
 int getRed(Object inData)
          Converts pixel in the given array to sRGB and extract blue int sample scaled to range [0-255].
 int getRGB(int pixel)
          Converts a pixel int value of the color space of the color model to a sRGB pixel int value.
 int getRGB(Object inData)
          Converts a pixel in the given array of the color space of the color model to an sRGB pixel int value.
 boolean isCompatibleRaster(Raster raster)
          Checks if the given raster has a compatible data-layout (SampleModel).
 boolean isCompatibleSampleModel(SampleModel sm)
           
 
Methods inherited from class java.awt.image.ColorModel
coerceDataWorker, finalize, getColorSpace, getComponentSize, getComponentSize, getDataElement, getDataElements, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, 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)

ComponentColorModel

public ComponentColorModel(ColorSpace colorSpace,
                           boolean hasAlpha,
                           boolean isAlphaPremultiplied,
                           int transparency,
                           int transferType)
Construct a new ComponentColorModel. This constructor makes all bits of each sample significant, so for a transferType of DataBuffer.BYTE, the bits per sample is 8, etc. If both hasAlpha and isAlphaPremultiplied are true, color samples are assumed to be premultiplied by the alpha component. Transparency may be one of OPAQUE, BITMASK, or TRANSLUCENT.

Parameters:
colorSpace - The colorspace for this color model.
hasAlpha - True if there is an alpha component.
isAlphaPremultiplied - True if colors are already multiplied by alpha.
transparency - The type of alpha values.
transferType - Data type of pixel sample values.
Since:
1.4
Method Detail

getRed

public int getRed(int pixel)
Description copied from class: ColorModel
Converts pixel value to sRGB and extract red int sample scaled to range [0, 255].

Specified by:
getRed in class ColorModel
Parameters:
pixel - pixel value that will be interpreted according to the color model, (assumed alpha premultiplied if color model says so.)
Returns:
red sample scaled to range [0, 255], from default color space sRGB, alpha non-premultiplied.

getGreen

public int getGreen(int pixel)
Description copied from class: ColorModel
Converts pixel value to sRGB and extract green int sample scaled to range [0, 255].

Specified by:
getGreen in class ColorModel
See Also:
ColorModel.getRed(int)

getBlue

public int getBlue(int pixel)
Description copied from class: ColorModel
Converts pixel value to sRGB and extract blue int sample scaled to range [0, 255].

Specified by:
getBlue in class ColorModel
See Also:
ColorModel.getRed(int)

getAlpha

public int getAlpha(int pixel)
Description copied from class: ColorModel
Extract alpha int sample from pixel value, scaled to [0, 255].

Specified by:
getAlpha in class ColorModel
Parameters:
pixel - pixel value that will be interpreted according to the color model.
Returns:
alpha sample, scaled to range [0, 255].

getRGB

public int getRGB(int pixel)
Description copied from class: ColorModel
Converts a pixel int value of the color space of the color model to a sRGB pixel int value. This method is typically overriden in subclasses to provide a more efficient implementation.

Overrides:
getRGB in class ColorModel
Parameters:
pixel - pixel value that will be interpreted according to the color model.
Returns:
a pixel in sRGB color space, encoded in default 0xAARRGGBB format.

getRed

public int getRed(Object inData)
Description copied from class: ColorModel
Converts pixel in the given array to sRGB and extract blue int sample scaled to range [0-255]. This method is typically overriden in subclasses to provide a more efficient implementation.

Overrides:
getRed in class ColorModel
Parameters:
inData - array of transferType containing a single pixel. The pixel should be encoded in the natural way of the color model.

getGreen

public int getGreen(Object inData)
Overrides:
getGreen in class ColorModel
See Also:
ColorModel.getRed(Object)

getBlue

public int getBlue(Object inData)
Overrides:
getBlue in class ColorModel
See Also:
ColorModel.getRed(Object)

getAlpha

public int getAlpha(Object inData)
Overrides:
getAlpha in class ColorModel
See Also:
ColorModel.getRed(Object)

getRGB

public int getRGB(Object inData)
Description copied from class: ColorModel
Converts a pixel in the given array of the color space of the color model to an sRGB pixel int value.

This method performs the inverse function of getDataElements(int rgb, Object pixel). I.e. (rgb == cm.getRGB(cm.getDataElements(rgb, null))).

Overrides:
getRGB in class ColorModel
Parameters:
inData - pixel data of transferType, as returned by the getDataElements method in SampleModel.
Returns:
a pixel in sRGB color space, encoded in default 0xAARRGGBB format.
See Also:
ColorModel.getDataElements(int, Object)

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
Description copied from class: ColorModel
Converts an sRGB pixel int value to an array containing a single pixel of the color space of the color model.

This method performs the inverse function of getRGB(Object inData). Outline of conversion process:

  1. Convert rgb to normalized [0.0, 1.0] sRGB values.
  2. Convert to color space components using fromRGB in ColorSpace.
  3. If color model has alpha and should be premultiplied, multiply color space components with alpha value
  4. Scale the components to the correct number of bits.
  5. Arrange the components in the output array

Overrides:
getDataElements in class ColorModel
Parameters:
rgb - The color to be converted to dataElements. A pixel in sRGB color space, encoded in default 0xAARRGGBB format, assumed not alpha premultiplied.
pixel - to avoid needless creation of arrays, an array to use to return the pixel can be given. If null, a suitable array will be created.
Returns:
An array of transferType values representing the color, in the color model format. The color model defines whether the
See Also:
ColorModel.getRGB(Object)

getComponents

public int[] getComponents(int pixel,
                           int[] components,
                           int offset)
Description copied from class: ColorModel
Fills an array with the unnormalized component samples from a pixel value. I.e. decompose the pixel, but not perform any color conversion. This method is typically overriden in subclasses to provide a more efficient implementation.

Overrides:
getComponents in class ColorModel
Parameters:
pixel - pixel value encoded according to the color model.
Returns:
arrays of unnormalized component samples of single pixel. The scale and multiplication state of the samples are according to the color model. Each component sample is stored as a separate element in the array.

getComponents

public int[] getComponents(Object pixel,
                           int[] components,
                           int offset)
Description copied from class: ColorModel
Fills an array with the unnormalized component samples from an array of transferType containing a single pixel. I.e. decompose the pixel, but not perform any color conversion. This method is typically overriden in subclasses to provide a more efficient implementation.

Overrides:
getComponents in class ColorModel
Parameters:
pixel - an array of transferType containing a single pixel. The pixel should be encoded in the natural way of the color model. If this argument is not an array, as expected, a ClassCastException will be thrown.
components - an array that will be filled with the color component of the pixel. If this is null, a new array will be allocated
offset - index into the components array at which the result will be stored
Returns:
arrays of unnormalized component samples of single pixel. The scale and multiplication state of the samples are according to the color model. Each component sample is stored as a separate element in the array.

getDataElement

public int getDataElement(int[] components,
                          int offset)
Description copied from class: ColorModel
Converts the unnormalized component samples from an array to a pixel value. I.e. composes the pixel from component samples, but does not perform any color conversion or scaling of the samples. This method performs the inverse function of getComponents(int pixel, int[] components, int offset). I.e. (pixel == cm.getDataElement(cm.getComponents(pixel, null, 0), 0)). This method is overriden in subclasses since this abstract class throws UnsupportedOperationException().

Overrides:
getDataElement in class ColorModel
Parameters:
components - Array of unnormalized component samples of single pixel. The scale and multiplication state of the samples are according to the color model. Each component sample is stored as a separate element in the array.
offset - Position of the first value of the pixel in components.
Returns:
pixel value encoded according to the color model.

getDataElements

public Object getDataElements(int[] components,
                              int offset,
                              Object obj)
Overrides:
getDataElements in class ColorModel

coerceData

public ColorModel coerceData(WritableRaster raster,
                             boolean isAlphaPremultiplied)
Overrides:
coerceData in class ColorModel

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
Description copied from class: ColorModel
Checks if the given raster has a compatible data-layout (SampleModel).

Overrides:
isCompatibleRaster in class ColorModel
Parameters:
raster - The Raster to test.
Returns:
true if raster is compatible.

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w,
                                                     int h)
Overrides:
createCompatibleWritableRaster in class ColorModel

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
Creates a SampleModel whose arrangement of pixel data is compatible to this ColorModel.

Overrides:
createCompatibleSampleModel in class ColorModel
Parameters:
w - the number of pixels in the horizontal direction.
h - the number of pixels in the vertical direction.

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)
Overrides:
isCompatibleSampleModel in class ColorModel

getAlphaRaster

public WritableRaster getAlphaRaster(WritableRaster raster)
Description copied from class: ColorModel
Subclasses must override this method if it is possible for the color model to have an alpha channel.

Overrides:
getAlphaRaster in class ColorModel
Returns:
null, as per JDK 1.3 doc. Subclasses will only return null if no alpha raster exists.

equals

public boolean equals(Object obj)
Description copied from class: Object
Determine whether this Object is semantically equal to another Object.

There are some fairly strict requirements on this method which subclasses must follow:

This is typically overridden to throw a ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a NullPointerException.

In general, the Collections API (java.util) use the equals method rather than the == operator to compare objects. However, IdentityHashMap is an exception to this rule, for its own good reasons.

The default implementation returns this == o.

Overrides:
equals in class ColorModel
Parameters:
obj - the Object to compare to
Returns:
whether this Object is semantically equal to another
See Also:
Object.hashCode()