package net.bull.javamelody.swing.util;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ColorModel;
/**
* <p>Provides an abstract implementation of the <code>BufferedImageOp</code>
* interface. This class can be used to created new image filters based
* on <code>BufferedImageOp</code>.</p>
*
* @author Romain Guy, romain.guy@mac.com
*/
public abstract class AbstractFilter implements BufferedImageOp {
/**
* {@inheritDoc}
*/
@Override
public abstract BufferedImage filter(BufferedImage src, BufferedImage dest);
/**
* {@inheritDoc}
*/
@Override
public Rectangle2D getBounds2D(BufferedImage src) {
return new Rectangle(0, 0, src.getWidth(), src.getHeight());
}
/**
* {@inheritDoc}
*/
@Override
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) {
final ColorModel cm;
if (destCM == null) {
cm = src.getColorModel();
} else {
cm = destCM;
}
return new BufferedImage(cm, cm.createCompatibleWritableRaster(src.getWidth(),
src.getHeight()), cm.isAlphaPremultiplied(), null);
}
/**
* {@inheritDoc}
*/
@Override
public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
return (Point2D) srcPt.clone();
}
/**
* {@inheritDoc}
*/
@Override
public RenderingHints getRenderingHints() { // NOPMD
return null;
}
}