public class ParameterBlock extends Object implements Cloneable, Serializable
ParameterBlock
encapsulates all the information about sources and
parameters (Objects) required by a RenderableImageOp, or other
classes that process images.
Although it is possible to place arbitrary objects in the
source Vector, users of this class may impose semantic constraints
such as requiring all sources to be RenderedImages or
RenderableImage. ParameterBlock
itself is merely a container and
performs no checking on source or parameter types.
All parameters in a ParameterBlock
are objects; convenience
add and set methods are available that take arguments of base type and
construct the appropriate subclass of Number (such as
Integer or Float). Corresponding get methods perform a
downward cast and have return values of base type; an exception
will be thrown if the stored values do not have the correct type.
There is no way to distinguish between the results of
"short s; add(s)" and "add(new Short(s))".
Note that the get and set methods operate on references.
Therefore, one must be careful not to share references between
ParameterBlock
s when this is inappropriate. For example, to create
a new ParameterBlock
that is equal to an old one except for an
added source, one might be tempted to write:
ParameterBlock addSource(ParameterBlock pb, RenderableImage im) { ParameterBlock pb1 = new ParameterBlock(pb.getSources()); pb1.addSource(im); return pb1; }
This code will have the side effect of altering the original
ParameterBlock
, since the getSources operation returned a reference
to its source Vector. Both pb and pb1 share their source Vector,
and a change in either is visible to both.
A correct way to write the addSource function is to clone the source Vector:
ParameterBlock addSource (ParameterBlock pb, RenderableImage im) { ParameterBlock pb1 = new ParameterBlock(pb.getSources().clone()); pb1.addSource(im); return pb1; }
The clone method of ParameterBlock
has been defined to
perform a clone of both the source and parameter Vectors for
this reason. A standard, shallow clone is available as
shallowClone.
The addSource, setSource, add, and set methods are defined to return 'this' after adding their argument. This allows use of syntax like:
ParameterBlock pb = new ParameterBlock(); op = new RenderableImageOp("operation", pb.add(arg1).add(arg2));
Modifier and Type | Field | Description |
---|---|---|
protected Vector<Object> |
parameters |
A Vector of non-source parameters, stored as arbitrary Objects.
|
protected Vector<Object> |
sources |
A Vector of sources, stored as arbitrary Objects.
|
Constructor | Description |
---|---|
ParameterBlock() |
A dummy constructor.
|
ParameterBlock(Vector<Object> sources) |
Constructs a
ParameterBlock with a given Vector
of sources. |
ParameterBlock(Vector<Object> sources,
Vector<Object> parameters) |
Constructs a
ParameterBlock with a given Vector of sources and
Vector of parameters. |
Modifier and Type | Method | Description |
---|---|---|
ParameterBlock |
add(byte b) |
Adds a Byte to the list of parameters.
|
ParameterBlock |
add(char c) |
Adds a Character to the list of parameters.
|
ParameterBlock |
add(double d) |
Adds a Double to the list of parameters.
|
ParameterBlock |
add(float f) |
Adds a Float to the list of parameters.
|
ParameterBlock |
add(int i) |
Adds a Integer to the list of parameters.
|
ParameterBlock |
add(long l) |
Adds a Long to the list of parameters.
|
ParameterBlock |
add(Object obj) |
Adds an object to the list of parameters.
|
ParameterBlock |
add(short s) |
Adds a Short to the list of parameters.
|
ParameterBlock |
addSource(Object source) |
Adds an image to end of the list of sources.
|
Object |
clone() |
Creates a copy of a
ParameterBlock . |
byte |
getByteParameter(int index) |
A convenience method to return a parameter as a byte.
|
char |
getCharParameter(int index) |
A convenience method to return a parameter as a char.
|
double |
getDoubleParameter(int index) |
A convenience method to return a parameter as a double.
|
float |
getFloatParameter(int index) |
A convenience method to return a parameter as a float.
|
int |
getIntParameter(int index) |
A convenience method to return a parameter as an int.
|
long |
getLongParameter(int index) |
A convenience method to return a parameter as a long.
|
int |
getNumParameters() |
Returns the number of parameters (not including source images).
|
int |
getNumSources() |
Returns the number of source images.
|
Object |
getObjectParameter(int index) |
Gets a parameter as an object.
|
Class[] |
getParamClasses() |
Returns an array of Class objects describing the types
of the parameters.
|
Vector<Object> |
getParameters() |
Returns the entire Vector of parameters.
|
RenderableImage |
|