FileDocCategorySizeDatePackage
CropImageFilter.javaAPI DocAndroid 1.5 API5604Wed May 06 22:41:54 BST 2009java.awt.image

CropImageFilter

public class CropImageFilter extends ImageFilter
The CropImageFilter class crops a rectangular region of an source Image and provides a source for a new image containing the extracted region.
since
Android 1.0

Fields Summary
private final int
X
The HEIGHT.
private final int
Y
private final int
WIDTH
private final int
HEIGHT
Constructors Summary
public CropImageFilter(int x, int y, int w, int h)
Instantiates a new CropImageFilter object with the specified rectangular area.

param
x the X coordinate of rectangular area.
param
y the Y coordinate of rectangular area.
param
w the width of rectangular area.
param
h the height of rectangular area.

        X = x;
        Y = y;
        WIDTH = w;
        HEIGHT = h;
    
Methods Summary
public voidsetDimensions(int w, int h)

        consumer.setDimensions(WIDTH, HEIGHT);
    
public voidsetPixels(int x, int y, int w, int h, java.awt.image.ColorModel model, int[] pixels, int off, int scansize)


        if (x + w < X || X + WIDTH < x || y + h < Y || Y + HEIGHT < y) {
            return;
        }

        int destX, destY, destWidth, destHeight, endX, endY, srcEndX, srcEndY;

        int newOffset = off;

        endX = X + WIDTH;
        endY = Y + HEIGHT;

        srcEndX = x + w;
        srcEndY = y + h;

        if (x <= X) {
            destX = 0;
            newOffset += X;
            if (endX >= srcEndX) {
                destWidth = srcEndX - X;
            } else {
                destWidth = WIDTH;
            }
        } else {
            destX = x - X;
            if (endX >= srcEndX) {
                destWidth = w;
            } else {
                destWidth = endX - x;
            }
        }

        if (y <= Y) {
            newOffset += scansize * (Y - y);
            destY = 0;
            if (endY >= srcEndY) {
                destHeight = srcEndY - Y;
            } else {
                destHeight = HEIGHT;
            }
        } else {
            destY = y - Y;
            if (endY >= srcEndY) {
                destHeight = h;
            } else {
                destHeight = endY - y;
            }
        }
        consumer.setPixels(destX, destY, destWidth, destHeight, model, pixels, newOffset, scansize);
    
public voidsetPixels(int x, int y, int w, int h, java.awt.image.ColorModel model, byte[] pixels, int off, int scansize)


        if (x + w < X || X + WIDTH < x || y + h < Y || Y + HEIGHT < y) {
            return;
        }

        int destX, destY, destWidth, destHeight, endX, endY, srcEndX, srcEndY;

        int newOffset = off;

        endX = X + WIDTH;
        endY = Y + HEIGHT;

        srcEndX = x + w;
        srcEndY = y + h;

        if (x <= X) {
            destX = 0;
            newOffset += X;
            if (endX >= srcEndX) {
                destWidth = srcEndX - X;
            } else {
                destWidth = WIDTH;
            }
        } else {
            destX = x - X;
            if (endX >= srcEndX) {
                destWidth = w;
            } else {
                destWidth = endX - x;
            }
        }

        if (y <= Y) {
            newOffset += scansize * (Y - y);
            destY = 0;
            if (endY >= srcEndY) {
                destHeight = srcEndY - Y;
            } else {
                destHeight = HEIGHT;
            }
        } else {
            destY = y - Y;
            if (endY >= srcEndY) {
                destHeight = h;
            } else {
                destHeight = endY - y;
            }
        }
        consumer.setPixels(destX, destY, destWidth, destHeight, model, pixels, newOffset, scansize);
    
public voidsetProperties(java.util.Hashtable props)

        Hashtable<Object, Object> fprops;
        if (props == null) {
            fprops = new Hashtable<Object, Object>();
        } else {
            fprops = (Hashtable<Object, Object>)props.clone();
        }
        String propName = "Crop Filters"; //$NON-NLS-1$
        String prop = "x=" + X + "; y=" + Y + "; width=" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                WIDTH + "; height=" + HEIGHT; //$NON-NLS-1$
        Object o = fprops.get(propName);
        if (o != null) {
            if (o instanceof String) {
                prop = (String)o + "; " + prop; //$NON-NLS-1$
            } else {
                prop = o.toString() + "; " + prop; //$NON-NLS-1$
            }
        }
        fprops.put(propName, prop);
        consumer.setProperties(fprops);