javax.media.jai.operator
Class CompositeDescriptor

java.lang.Object
  |
  +--javax.media.jai.OperationDescriptorImpl
        |
        +--javax.media.jai.operator.CompositeDescriptor
All Implemented Interfaces:
OperationDescriptor, RegistryElementDescriptor, Serializable

public class CompositeDescriptor
extends OperationDescriptorImpl

An OperationDescriptor describing the "Composite" operation.

The "Composite" operation combines two images based on their alpha values at each pixel. It is done on a per-band basis, and the two source images are expected to have the same number of bands and the same data type. The destination image has the same data type as the two sources.

The destAlpha parameter indicates if the destination image should have an extra alpha channel. If this parameter is set to NO_DESTINATION_ALPHA, then the destination image does not include an alpha band, and it should have the same number of bands as the two source images. If it is set to DESTINATION_ALPHA_FIRST, then the destination image has one extra band than the source images, which represents the result alpha channel, and this band is the first band (band 0) of the destination. If it is set to DESTINATION_ALPHA_LAST, then the destination image also has the extra alpha channel, but this band is the last band of the destination.

The destination pixel values may be viewed as representing a fractional pixel coverage or transparency factor. Specifically, Composite implements the Porter-Duff "over" rule (see Computer Graphics, July 1984 pp. 253-259), in which the output color of a pixel with source value/alpha tuples (A, a) and (B, b) is given by a*A + (1 - a)*(b*B). The output alpha value is given by a + (1 - a)*b. For premultiplied sources tuples (a*A, a) and (b*B, b), the premultiplied output value is simply (a*A) + (1 - a)*(b*B).

The color channels of the two source images are supplied via source1 and source2. The two sources must be either both pre-multiplied by alpha or not. Alpha channel should not be included in source1 and source2.

The alpha channel of the first source images must be supplied via the source1Alpha parameter. This parameter may not be null. The alpha channel of the second source image may be supplied via the source2Alpha parameter. This parameter may be null, in which case the second source is considered completely opaque. The alpha images should be single-banded, and have the same data type as well as dimensions as their corresponding source images.

The alphaPremultiplied parameter indicates whether or not the supplied alpha image is premultiplied to both the source images. It also indicates whether the destination image color channels have the alpha values multiplied to the pixel color values.

The destination image is the combination of the two source images. It has the color channels, and if specified, one additional alpha channel (the band index depends on the value of the destAlpha parameter). Whether alpha value is pre-multiplied to the color channels also depend on the value of alphaPremultiplied (pre-multiplied if true).

Resource List
Name Value
GlobalName composite
LocallName composite
Vendor com.sun.media.jai
Description Composites two images based on an alpha mask.
DocURL http://java.sun.com/products/java-media/jai/forDevelopers/jaiapi/javax.media.jai.operator.CompositeDescriptor.html
Version 1.0
arg0Desc The alpha image for the first source.
arg1Desc The alpha image for the second source.
arg2Desc True if alpha has been premultiplied to both sources and the destination.
arg3Desc Indicates if the destination image should include an extra alpha channel, and if so, should it be the first or last band.

Parameter List
Name Class Type Default Value
source1Alpha javax.media.jai.PlanarImage NO_PARAMETER_DEFAULT
source2Alpha javax.media.jai.PlanarImage null
alphaPremultiplied java.lang.Boolean false
destAlpha javax.media.jai.operator.CompositeDestAlpha NO_DESTINATION_ALPHA

See Also:
CompositeDestAlpha, ColorModel, OperationDescriptor, PlanarImage, Serialized Form

Field Summary
static CompositeDestAlpha DESTINATION_ALPHA_FIRST
          The destination image has the channel, and it is the first band.
static CompositeDestAlpha DESTINATION_ALPHA_LAST
          The destination image has the channel, and it is the last band.
static CompositeDestAlpha NO_DESTINATION_ALPHA
          The destination image does not have the alpha channel.
protected static String[][] resources
          The resource strings that provide the general documentation and specify the parameter list for this operation.
 
Fields inherited from class javax.media.jai.OperationDescriptorImpl
resources, sourceNames, supportedModes
 
Constructor Summary
CompositeDescriptor()
          Constructor.
 
Method Summary
 boolean validateArguments(String modeName, ParameterBlock args, StringBuffer msg)
          Validates the input sources and parameters.
 
Methods inherited from class javax.media.jai.OperationDescriptorImpl
arePropertiesSupported, getDefaultSourceClass, getDestClass, getDestClass, getInvalidRegion, getName, getNumParameters, getNumSources, getParamClasses, getParamDefaults, getParamDefaultValue, getParameterListDescriptor, getParamMaxValue, getParamMinValue, getParamNames, getPropertyGenerators, getPropertyGenerators, getRenderableDestClass, getRenderableSourceClasses, getResourceBundle, getResources, getSourceClasses, getSourceClasses, getSourceNames, getSupportedModes, isImmediate, isModeSupported, isRenderableSupported, isRenderedSupported, makeDefaultSourceClassList, validateArguments, validateParameters, validateParameters, validateRenderableArguments, validateRenderableSources, validateSources, validateSources
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_DESTINATION_ALPHA

public static final CompositeDestAlpha NO_DESTINATION_ALPHA
The destination image does not have the alpha channel.

DESTINATION_ALPHA_FIRST

public static final CompositeDestAlpha DESTINATION_ALPHA_FIRST
The destination image has the channel, and it is the first band.

DESTINATION_ALPHA_LAST

public static final CompositeDestAlpha DESTINATION_ALPHA_LAST
The destination image has the channel, and it is the last band.

resources

protected static final String[][] resources
The resource strings that provide the general documentation and specify the parameter list for this operation.
Constructor Detail

CompositeDescriptor

public CompositeDescriptor()
Constructor.
Method Detail

validateArguments

public boolean validateArguments(String modeName,
                                 ParameterBlock args,
                                 StringBuffer msg)
Validates the input sources and parameters.

In addition to the standard checks performed by the superclass method, this method checks that the source image samplemodels have the same number of bands and transfer type, and that the alpha images have the same bounds as the corresponding sources and the correct transfer type.

Overrides:
validateArguments in class OperationDescriptorImpl
Tags copied from class: OperationDescriptorImpl
Parameters:
modeName - the operation mode name
args - Input arguments, including source(s) and/or parameter(s).
msg - A string that may contain error messages.
Throws:
IllegalArgumentException - if modeName is null
See Also:
OperationDescriptorImpl.validateSources(java.lang.String, java.awt.image.renderable.ParameterBlock, java.lang.StringBuffer), OperationDescriptorImpl.validateParameters(java.lang.String, java.awt.image.renderable.ParameterBlock, java.lang.StringBuffer)