|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javax.media.jai.OperationDescriptorImpl | +--javax.media.jai.operator.CompositeDescriptor
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 RenderedImage
s in
the "rendered" mode and are RenderableImage
s 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).
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. |
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 |
CompositeDestAlpha
,
ColorModel
,
OperationDescriptor
, Serialized FormField 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, supportedModes |
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 java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final CompositeDestAlpha NO_DESTINATION_ALPHA
public static final CompositeDestAlpha DESTINATION_ALPHA_FIRST
public static final CompositeDestAlpha DESTINATION_ALPHA_LAST
protected static final String[][] resources
Constructor Detail |
public CompositeDescriptor()
Method Detail |
public boolean validateArguments(String modeName, ParameterBlock args, StringBuffer msg)
In addition to the standard checks performed by the
superclass method, this method checks that the source image
samplemodel
s 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.
validateArguments
in class OperationDescriptorImpl
javax.media.jai.OperationDescriptorImpl
modeName
- the operation mode nameargs
- Input arguments, including source(s) and/or parameter(s).msg
- A string that may contain error messages.IllegalArgumentException
- if modeName
is null
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)
public static RenderedOp create(RenderedImage source0, RenderedImage source1, RenderedImage source1Alpha, RenderedImage source2Alpha, Boolean alphaPremultiplied, CompositeDestAlpha destAlpha, RenderingHints hints)
Creates a ParameterBlockJAI
from all
supplied arguments except hints
and invokes
JAI.create(String,ParameterBlock,RenderingHints)
.
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
.RenderedOp
destination.IllegalArgumentException
- if source0
is null
.IllegalArgumentException
- if source1
is null
.IllegalArgumentException
- if source1Alpha
is null
.JAI
,
ParameterBlockJAI
,
RenderedOp
public static RenderableOp createRenderable(RenderableImage source0, RenderableImage source1, RenderableImage source1Alpha, RenderableImage source2Alpha, Boolean alphaPremultiplied, CompositeDestAlpha destAlpha, RenderingHints hints)
Creates a ParameterBlockJAI
from all
supplied arguments except hints
and invokes
JAI.createRenderable(String,ParameterBlock,RenderingHints)
.
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
.RenderableOp
destination.IllegalArgumentException
- if source0
is null
.IllegalArgumentException
- if source1
is null
.IllegalArgumentException
- if source1Alpha
is null
.JAI
,
ParameterBlockJAI
,
RenderableOp
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |