java.awt.image

Class ColorModel

public abstract class ColorModel extends Object implements Transparency

A color model operates with colors in several formats:
Field Summary
protected intpixel_bits
protected inttransferType
Constructor Summary
ColorModel(int bits)
Constructs the default color model.
protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
Constructs a ColorModel that translates pixel values to color/alpha components.
Method Summary
ColorModelcoerceData(WritableRaster raster, boolean isAlphaPremultiplied)
protected voidcoerceDataWorker(WritableRaster raster, boolean isAlphaPremultiplied)
SampleModelcreateCompatibleSampleModel(int w, int h)
WritableRastercreateCompatibleWritableRaster(int w, int h)
booleanequals(Object obj)
voidfinalize()
abstract intgetAlpha(int pixel)
Extract alpha int sample from pixel value, scaled to [0, 255].
intgetAlpha(Object inData)
WritableRastergetAlphaRaster(WritableRaster raster)
Subclasses must override this method if it is possible for the color model to have an alpha channel.
abstract intgetBlue(int pixel)
Converts pixel value to sRGB and extract blue int sample scaled to range [0, 255].
intgetBlue(Object inData)
ColorSpacegetColorSpace()
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.
intgetComponentSize(int componentIdx)
int[]getComponentSize()
intgetDataElement(int[] components, int offset)
Converts the unnormalized component samples from an array to a pixel value.
intgetDataElement(float[] components, int offset)
Converts the normalized component samples from an array to a pixel value.
ObjectgetDataElements(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.
ObjectgetDataElements(int[] components, int offset, Object obj)
ObjectgetDataElements(float[] components, int offset, Object obj)
Converts the normalized component samples from an array to an array of TransferType values.
abstract intgetGreen(int pixel)
Converts pixel value to sRGB and extract green int sample scaled to range [0, 255].
intgetGreen(Object inData)
float[]getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
Convert unnormalized components to normalized components.
float[]getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)
Convert unnormalized components to normalized components.
intgetNumColorComponents()
intgetNumComponents()
intgetPixelSize()
Get get number of bits wide used for the bit size of pixel values
abstract intgetRed(int pixel)
Converts pixel value to sRGB and extract red int sample scaled to range [0, 255].
intgetRed(Object inData)
Converts pixel in the given array to sRGB and extract blue int sample scaled to range [0-255].
intgetRGB(int pixel)
Converts a pixel int value of the color space of the color model to a sRGB pixel int value.
intgetRGB(Object inData)
Converts a pixel in the given array of the color space of the color model to an sRGB pixel int value.
static ColorModelgetRGBdefault()
Returns the default color model which in Sun's case is an instance of DirectColorModel.
intgetTransferType()
intgetTransparency()
int[]getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
Convert normalized components to unnormalized components.
booleanhasAlpha()
booleanisAlphaPremultiplied()
booleanisCompatibleRaster(Raster raster)
Checks if the given raster has a compatible data-layout (SampleModel).
booleanisCompatibleSampleModel(SampleModel sm)
StringtoString()

Field Detail

pixel_bits

protected int pixel_bits

transferType

protected int transferType

Constructor Detail

ColorModel

public ColorModel(int bits)
Constructs the default color model. The default color model can be obtained by calling getRGBdefault of this class.

Parameters: bits the number of bits wide used for bit size of pixel values

ColorModel

protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
Constructs a ColorModel that translates pixel values to color/alpha components.

Throws: IllegalArgumentException If the length of the bit array is less than the number of color or alpha components in this ColorModel, or if the transparency is not a valid value, or if the sum of the number of bits in bits is less than 1 or if any of the elements in bits is less than 0.

Method Detail

coerceData

public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)

coerceDataWorker

protected void coerceDataWorker(WritableRaster raster, boolean isAlphaPremultiplied)

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w, int h)

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w, int h)

equals

public boolean equals(Object obj)

finalize

public void finalize()

getAlpha

public abstract int getAlpha(int pixel)
Extract alpha int sample from pixel value, scaled to [0, 255].

Parameters: pixel pixel value that will be interpreted according to the color model.

Returns: alpha sample, scaled to range [0, 255].

getAlpha

public int getAlpha(Object inData)

See Also: getRed

getAlphaRaster

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

Returns: null, as per JDK 1.3 doc. Subclasses will only return null if no alpha raster exists.

getBlue

public abstract int getBlue(int pixel)
Converts pixel value to sRGB and extract blue int sample scaled to range [0, 255].

See Also: ColorModel

getBlue

public int getBlue(Object inData)

See Also: getRed

getColorSpace

public final ColorSpace getColorSpace()

getComponents

public int[] getComponents(int pixel, int[] components, int offset)
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.

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

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 {@link 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.

getComponentSize

public int getComponentSize(int componentIdx)

getComponentSize

public int[] getComponentSize()

getDataElement

public int getDataElement(int[] components, int offset)
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().

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.

getDataElement

public int getDataElement(float[] components, int offset)
Converts the normalized 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 is typically overriden in subclasses to provide a more efficient implementation. The method provided by this abstract class converts the components to unnormalized form and returns getDataElement(int[], int).

Parameters: components Array of normalized 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.

Since: 1.4

getDataElements

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

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

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: getRGB

getDataElements

public Object getDataElements(int[] components, int offset, Object obj)

getDataElements

public Object getDataElements(float[] components, int offset, Object obj)
Converts the normalized component samples from an array to an array of TransferType values. I.e. composes the pixel from component samples, but does not perform any color conversion or scaling of the samples. If obj is null, a new array of TransferType is allocated and returned. Otherwise the results are stored in obj and obj is returned. If obj is not long enough, ArrayIndexOutOfBounds is thrown. If obj is not an array of primitives, ClassCastException is thrown. This method is typically overriden in subclasses to provide a more efficient implementation. The method provided by this abstract class converts the components to unnormalized form and returns getDataElement(int[], int, Object).

Parameters: components Array of normalized 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. obj Array of TransferType or null.

Returns: pixel value encoded according to the color model.

Throws: ArrayIndexOutOfBoundsException ClassCastException

Since: 1.4

getGreen

public abstract int getGreen(int pixel)
Converts pixel value to sRGB and extract green int sample scaled to range [0, 255].

See Also: ColorModel

getGreen

public int getGreen(Object inData)

See Also: getRed

getNormalizedComponents

public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
Convert unnormalized components to normalized components.

getNormalizedComponents

public float[] getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)
Convert unnormalized components to normalized components.

Since: 1.4

getNumColorComponents

public int getNumColorComponents()

getNumComponents

public int getNumComponents()

getPixelSize

public int getPixelSize()
Get get number of bits wide used for the bit size of pixel values

getRed

public abstract int getRed(int pixel)
Converts pixel value to sRGB and extract red int sample scaled to range [0, 255].

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.

getRed

public int getRed(Object inData)
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.

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

getRGB

public int getRGB(int pixel)
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.

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.

getRGB

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

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

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

Returns: a pixel in sRGB color space, encoded in default 0xAARRGGBB format.

See Also: ColorModel

getRGBdefault

public static ColorModel getRGBdefault()
Returns the default color model which in Sun's case is an instance of DirectColorModel.

getTransferType

public final int getTransferType()

getTransparency

public int getTransparency()

getUnnormalizedComponents

public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
Convert normalized components to unnormalized components.

hasAlpha

public final boolean hasAlpha()

isAlphaPremultiplied

public final boolean isAlphaPremultiplied()

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
Checks if the given raster has a compatible data-layout (SampleModel).

Parameters: raster The Raster to test.

Returns: true if raster is compatible.

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)

toString

public String toString()