aicas logoJamaica 3.2 release 62

java.awt.image
Class ColorModel

java.lang.Object
  extended by java.awt.image.ColorModel
All Implemented Interfaces:
Transparency
Direct Known Subclasses:
ComponentColorModel, IndexColorModel, PackedColorModel

public abstract class ColorModel
extends Object
implements Transparency

A color model operates with colors in several formats:


Field Summary
protected  int pixel_bits
           
protected  int transferType
           
 
Fields inherited from interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
 
Constructor Summary
  ColorModel(int bits)
          Constructs the default color model.
protected ColorModel(int pixel_bits, int[] bits, java.awt.color.ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          Constructs a ColorModel that translates pixel values to color/alpha components.
 
Method Summary
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
           
protected  void coerceDataWorker(WritableRaster raster, boolean isAlphaPremultiplied)
           
 SampleModel createCompatibleSampleModel(int w, int h)
           
 WritableRaster createCompatibleWritableRaster(int w, int h)
           
 boolean equals(Object obj)
          equals compares this object to another object.
 void finalize()
          finalize may be called by the memory management of the virtual machine when it determined that this instance's memory is unreachable and can be reclaimed.
abstract  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.
abstract  int getBlue(int pixel)
          Converts pixel value to sRGB and extract blue int sample scaled to range [0, 255].
 int getBlue(Object inData)
           
 java.awt.color.ColorSpace getColorSpace()
           
 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[] getComponentSize()
           
 int getComponentSize(int componentIdx)
           
 int getDataElement(float[] components, int offset)
          Converts the normalized component samples from an array to a pixel value.
 int getDataElement(int[] components, int offset)
          Converts the unnormalized component samples from an array to a pixel value.
 Object getDataElements(float[] components, int offset, Object obj)
          Converts the normalized component samples from an array to an array of TransferType values.
 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.
abstract  int getGreen(int pixel)
          Converts pixel value to sRGB and extract green int sample scaled to range [0, 255].
 int getGreen(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.
 int getNumColorComponents()
           
 int getNumComponents()
           
 int getPixelSize()
          Get get number of bits wide used for the bit size of pixel values
abstract  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.
static ColorModel getRGBdefault()
          Returns the default color model which in Sun's case is an instance of DirectColorModel.
 int getTransferType()
           
 int getTransparency()
          Return the transparency type.
 int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
          Convert normalized components to unnormalized components.
 boolean hasAlpha()
           
 boolean isAlphaPremultiplied()
           
 boolean isCompatibleRaster(Raster raster)
          Checks if the given raster has a compatible data-layout (SampleModel).
 boolean isCompatibleSampleModel(SampleModel sm)
           
 String toString()
          toString creates a printable string that represents this object for debugging purposes.
 
Methods inherited from class java.lang.Object
clone, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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,
                     java.awt.color.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

finalize

public void finalize()
Description copied from class: Object
finalize may be called by the memory management of the virtual machine when it determined that this instance's memory is unreachable and can be reclaimed.

NOTE: The use of finalize() is strongly discouraged for realtime or safety-critical code. This method should only be used for debugging purposes. If used as a last resort to reclaim non-memory resouces, finalize() should indicate the resource leak with a loud error message.

There is no guarantee that finalize() will be called, the memory management may decide not to reclaim this object's memory or to delay the call to finalize() to an unspecified point in time. It is therefore recommended never to use the finalize method to release any resources (files, network connections, non-Java memory, etc.) since releasing of these resource may be delayed perpetually.

The order of finalization is not specified, i.e., the finalize method of any two objects that become unreachable may be called in an arbitrary order. It therefore has to be assumed that when finalize() is called on an object, that the finalize() method of any object that is only reachable through this object() has been called as well or is called simultaneously by another thread.

The presence of a finalize-method in any sub-class of Object causes the reclamation of the memory of this object to be delayed until the finalize() method has been executed. The finalize() method is typically executed by the finalizer thread (that may run at a low priority) or by a call to Runtime.runFinalization().

Any code sequence that creates instances of a class that defines a finalize() method must therefore ensure that sufficient CPU time is allocated to the finalizer thread or that Runtime.runFinalization() is called regularly such that the finalize() methods can be executed and the object's memory can be reclaimed.

The finalize method itself should never block or run for long times since it would otherwise block the finalizer thread or the thread that called Runtime.runFinalization() and prevent the execution other finalize() method and consequently prevent the reclamation of these object's memory.

For objects that are allocated in a javax.realtime.ScopedMemory, the finalize() methods will be called when this scoped memory is exited by the last thread. Unlike HeapMemory, which is controlled by the garbage collector, ScopedMemory provides a defined execution point for the finalize() mehods and it is therefore safer to use finalize() here.

Overrides:
finalize in class Object

getRGBdefault

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


hasAlpha

public final boolean hasAlpha()

isAlphaPremultiplied

public final boolean isAlphaPremultiplied()

getPixelSize

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


getComponentSize

public int getComponentSize(int componentIdx)

getComponentSize

public int[] getComponentSize()

getTransparency

public int getTransparency()
Description copied from interface: Transparency
Return the transparency type.

Specified by:
getTransparency in interface Transparency
Returns:
One of Transparency.OPAQUE, Transparency.BITMASK, or Transparency.TRANSLUCENT.

getNumComponents

public int getNumComponents()

getNumColorComponents

public int getNumColorComponents()

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.

getGreen

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

See Also:
getRed(int)

getBlue

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

See Also:
getRed(int)

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

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.

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.

getGreen

public int getGreen(Object inData)
See Also:
getRed(Object)

getBlue

public int getBlue(Object inData)
See Also:
getRed(Object)

getAlpha

public int getAlpha(Object inData)
See Also:
getRed(Object)

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:
getDataElements(int, Object)

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(Object)

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

getUnnormalizedComponents

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


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

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[] 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

equals

public boolean equals(Object obj)
Description copied from class: Object
equals compares this object to another object.

Equals must be symmetric (a.equals(b) == b.equals(a)), reflexive (a.equals(a)==true) and transitive (a.equals(b) && b.equals(c) IMPLIES (a.equals(c))) and not change over time (a.equals(b) == a.equals(b)). a.equals(null) should always return false.

If a.equals(b) is true for two objects a and b, then a.hashCode()==b.hashCode() must hold.

The default implementation of equals returns this==other.

Overrides:
equals in class Object
Parameters:
obj - the other object.
Returns:
if this and other are considered equal.

getColorSpace

public final java.awt.color.ColorSpace getColorSpace()

coerceData

public ColorModel coerceData(WritableRaster raster,
                             boolean isAlphaPremultiplied)

coerceDataWorker

protected void coerceDataWorker(WritableRaster raster,
                                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.

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w,
                                                     int h)

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)

getTransferType

public final int getTransferType()

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.

toString

public String toString()
Description copied from class: Object
toString creates a printable string that represents this object for debugging purposes.

The default implementation returns getClass().getName() + '@' + Integer.toHexString(hashCode()).

Overrides:
toString in class Object
Returns:
a string identifying this object.

aicas logoJamaica 3.2 release 62

aicas GmbH, Karlsruhe - Germany    www.aicas.com
Copyright 2001-2008 aicas GmbH. All Rights Reserved.