CropImageFilterpublic class CropImageFilter extends ImageFilter An ImageFilter class for cropping images.
This class extends the basic ImageFilter Class to extract a given
rectangular region of an existing Image and provide a source for a
new image containing just the extracted region. It is meant to
be used in conjunction with a FilteredImageSource object to produce
cropped versions of existing images. |
Fields Summary |
---|
int | cropX | int | cropY | int | cropW | int | cropH |
Constructors Summary |
---|
public CropImageFilter(int x, int y, int w, int h)Constructs a CropImageFilter that extracts the absolute rectangular
region of pixels from its source Image as specified by the x, y,
w, and h parameters.
cropX = x;
cropY = y;
cropW = w;
cropH = h;
|
Methods Summary |
---|
private int | addWithoutOverflow(int x, int w)
int x2 = x + w;
if ( x > 0 && w > 0 && x2 < 0 ) {
x2 = Integer.MAX_VALUE;
} else if( x < 0 && w < 0 && x2 > 0 ) {
x2 = Integer.MIN_VALUE;
}
return x2;
| public void | setDimensions(int w, int h)Override the source image's dimensions and pass the dimensions
of the rectangular cropped region to the ImageConsumer.
Note: This method is intended to be called by the
ImageProducer of the Image whose
pixels are being filtered. Developers using
this class to filter pixels from an image should avoid calling
this method directly since that operation could interfere
with the filtering operation.
consumer.setDimensions(cropW, cropH);
| public void | setPixels(int x, int y, int w, int h, java.awt.image.ColorModel model, byte[] pixels, int off, int scansize)Determine whether the delivered byte pixels intersect the region to
be extracted and passes through only that subset of pixels that
appear in the output region.
Note: This method is intended to be called by the
ImageProducer of the Image whose
pixels are being filtered. Developers using
this class to filter pixels from an image should avoid calling
this method directly since that operation could interfere
with the filtering operation.
int x1 = x;
if (x1 < cropX) {
x1 = cropX;
}
int x2 = addWithoutOverflow(x, w);
if (x2 > cropX + cropW) {
x2 = cropX + cropW;
}
int y1 = y;
if (y1 < cropY) {
y1 = cropY;
}
int y2 = addWithoutOverflow(y, h);
if (y2 > cropY + cropH) {
y2 = cropY + cropH;
}
if (x1 >= x2 || y1 >= y2) {
return;
}
consumer.setPixels(x1 - cropX, y1 - cropY, (x2 - x1), (y2 - y1),
model, pixels,
off + (y1 - y) * scansize + (x1 - x), scansize);
| public void | setPixels(int x, int y, int w, int h, java.awt.image.ColorModel model, int[] pixels, int off, int scansize)Determine if the delivered int pixels intersect the region to
be extracted and pass through only that subset of pixels that
appear in the output region.
Note: This method is intended to be called by the
ImageProducer of the Image whose
pixels are being filtered. Developers using
this class to filter pixels from an image should avoid calling
this method directly since that operation could interfere
with the filtering operation.
int x1 = x;
if (x1 < cropX) {
x1 = cropX;
}
int x2 = addWithoutOverflow(x, w);
if (x2 > cropX + cropW) {
x2 = cropX + cropW;
}
int y1 = y;
if (y1 < cropY) {
y1 = cropY;
}
int y2 = addWithoutOverflow(y, h);
if (y2 > cropY + cropH) {
y2 = cropY + cropH;
}
if (x1 >= x2 || y1 >= y2) {
return;
}
consumer.setPixels(x1 - cropX, y1 - cropY, (x2 - x1), (y2 - y1),
model, pixels,
off + (y1 - y) * scansize + (x1 - x), scansize);
| public void | setProperties(java.util.Hashtable props)Passes along the properties from the source object after adding a
property indicating the cropped region.
This method invokes super.setProperties ,
which might result in additional properties being added.
Note: This method is intended to be called by the
ImageProducer of the Image whose pixels
are being filtered. Developers using
this class to filter pixels from an image should avoid calling
this method directly since that operation could interfere
with the filtering operation.
Hashtable<Object,Object> p = (Hashtable<Object,Object>)props.clone();
p.put("croprect", new Rectangle(cropX, cropY, cropW, cropH));
super.setProperties(p);
|
|