package com.hphoto.image; import java.awt.*; import java.awt.geom.*; import java.awt.image.*; /** * A filter which crops an image to a given rectangle. */ public class CropFilter extends AbstractBufferedImageOp { private int x; private int y; private int width; private int height; /** * Construct a CropFilter. */ public CropFilter() { this(0, 0, 32, 32); } /** * Construct a CropFilter. * @param x the left edge of the crop rectangle * @param y the top edge of the crop rectangle * @param width the width of the crop rectangle * @param height the height of the crop rectangle */ public CropFilter(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } /** * Set the left edge of the crop rectangle. * @param x the left edge of the crop rectangle * @see #getX */ public void setX(int x) { this.x = x; } /** * Get the left edge of the crop rectangle. * @return the left edge of the crop rectangle * @see #setX */ public int getX() { return x; } /** * Set the top edge of the crop rectangle. * @param y the top edge of the crop rectangle * @see #getY */ public void setY(int y) { this.y = y; } /** * Get the top edge of the crop rectangle. * @return the top edge of the crop rectangle * @see #setY */ public int getY() { return y; } /** * Set the width of the crop rectangle. * @param width the width of the crop rectangle * @see #getWidth */ public void setWidth(int width) { this.width = width; } /** * Get the width of the crop rectangle. * @return the width of the crop rectangle * @see #setWidth */ public int getWidth() { return width; } /** * Set the height of the crop rectangle. * @param height the height of the crop rectangle * @see #getHeight */ public void setHeight(int height) { this.height = height; } /** * Get the height of the crop rectangle. * @return the height of the crop rectangle * @see #setHeight */ public int getHeight() { return height; } public BufferedImage filter( BufferedImage src, BufferedImage dst ) { int w = src.getWidth(); int h = src.getHeight(); if ( dst == null ) { ColorModel dstCM = src.getColorModel(); dst = new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster(width, height), dstCM.isAlphaPremultiplied(), null); } Graphics2D g = dst.createGraphics(); g.drawRenderedImage( src, AffineTransform.getTranslateInstance(-x, -y) ); g.dispose(); return dst; } public String toString() { return "Distort/Crop"; } }