Java Reference
In-Depth Information
Code 11.11
continued
Abstract class
Filter
:
Superclass for all filters
* @param image The image to be changed by this filter.
*/
public abstract
void
apply(OFImage image);
}
Once we have written the superclass, it is not hard to implement specific filters as subclasses. All we
need to do is provide an implementation for the
apply
method that manipulates an image (passed in
as a parameter) using its
getPixel
and
setPixel
methods. Code 11.12 shows an example.
Code 11.12
Implementation of a
specific filter class
//
All comments omitted.
public
class
DarkerFilter
extends
Filter
{
public
DarkerFilter(String name)
{
super
(name);
}
public
void
apply(OFImage image)
{
int
height = image.getHeight();
int
width = image.getWidth();
for
(
int
y = 0; y < height; y++) {
for
(
int
x = 0; x < width; x++) {
image.setPixel(
x, y, image.getPixel(x, y).darker());
}
}
}
}
As a side effect of this, the
OFImage
class becomes much simpler, as all of the filter methods
can be removed from it. It now only defines the
setPixel
and
getPixel
methods.
Once we have defined our filters like this, we can create filter objects and store them in a
collection (Code 11.13).
Code 11.13
Adding a collection
of filters
public
class
ImageViewer
{
//
Other fields and comments omitted.
private
List<Filter> filters;
Search WWH ::
Custom Search