javax.media.jai.operator
Class CompositeDescriptor

java.lang.Object
  extended byjavax.media.jai.OperationDescriptorImpl
      extended byjavax.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.

It should be noted that the source1Alpha and source1Alpha parameters are RenderedImages in the "rendered" mode and are RenderableImages in the "renderable" mode.

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 Rendered mode java.awt.image.RenderedImage NO_PARAMETER_DEFAULT
Renderable mode java.awt.image.renderable.RenderableImage
source2Alpha Rendered mode java.awt.image.RenderedImage null
Renderable mode java.awt.image.renderable.RenderableImage
alphaPremultiplied java.lang.Boolean false
destAlpha javax.media.jai.operator.CompositeDestAlpha NO_DESTINATION_ALPHA

See Also:
CompositeDestAlpha, ColorModel, OperationDescriptor, 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
sourceNames
 
Fields inherited from interface javax.media.jai.OperationDescriptor
NO_PARAMETER_DEFAULT
 
Constructor Summary
CompositeDescriptor()
          Constructor.
 
Method Summary
static RenderedOp create(RenderedImage source0, RenderedImage source1, RenderedImage source1Alpha, RenderedImage source2Alpha, Boolean alphaPremultiplied, CompositeDestAlpha destAlpha, RenderingHints hints)
          Composites two images based on an alpha mask.
static RenderableOp createRenderable(RenderableImage source0, RenderableImage source1, RenderableImage source1Alpha, RenderableImage source2Alpha, Boolean alphaPremultiplied, CompositeDestAlpha destAlpha, RenderingHints hints)
          Composites two images based on an alpha mask.
 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.

Specified by:
validateArguments in interface OperationDescriptor
Overrides:
validateArguments in 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.
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)

create

public static RenderedOp create(RenderedImage source0,
                                RenderedImage source1,
                                RenderedImage source1Alpha,
                                RenderedImage source2Alpha,
                                Boolean alphaPremultiplied,
                                CompositeDestAlpha destAlpha,
                                RenderingHints hints)
Composites two images based on an alpha mask.

Creates a ParameterBlockJAI from all supplied arguments except hints and invokes JAI.create(String,ParameterBlock,RenderingHints).

Parameters:
source0 - RenderedImage source 0.
source1 - RenderedImage source 1.
source1Alpha - The alpha image for the first source.
source2Alpha - The alpha image for the second source. May be null.
alphaPremultiplied - True if alpha has been premultiplied to both sources and the destination. May be null.
destAlpha - Indicates if the destination image should include an extra alpha channel, and if so, should it be the first or last band. May be null.
hints - The RenderingHints to use. May be null.
Returns:
The RenderedOp destination.
Throws:
IllegalArgumentException - if source0 is null.
IllegalArgumentException - if source1 is null.
IllegalArgumentException - if source1Alpha is null.
See Also:
JAI, ParameterBlockJAI, RenderedOp

createRenderable

public static RenderableOp createRenderable(RenderableImage source0,
                                            RenderableImage source1,
                                            RenderableImage source1Alpha,
                                            RenderableImage source2Alpha,
                                            Boolean alphaPremultiplied,
                                            CompositeDestAlpha destAlpha,
                                            RenderingHints hints)
Composites two images based on an alpha mask.

Creates a ParameterBlockJAI from all supplied arguments except hints and invokes JAI.createRenderable(String,ParameterBlock,RenderingHints).

Parameters:
source0 - RenderableImage source 0.
source1 - RenderableImage source 1.
source1Alpha - The alpha image for the first source.
source2Alpha - The alpha image for the second source. May be null.
alphaPremultiplied - True if alpha has been premultiplied to both sources and the destination. May be null.
destAlpha - Indicates if the destination image should include an extra alpha channel, and if so, should it be the first or last band. May be null.
hints - The RenderingHints to use. May be null.
Returns:
The RenderableOp destination.
Throws:
IllegalArgumentException - if source0 is null.
IllegalArgumentException - if source1 is null.
IllegalArgumentException - if source1Alpha is null.
See Also:
JAI, ParameterBlockJAI, RenderableOp