You are on page 1of 2

/*

** Copyright 2005 Huxtable.com. All rights reserved.


*/

package com.jhlabs.image;

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;

/**
* A convenience class which implements those methods of BufferedImageOp which are
rarely changed.
*/
public abstract class AbstractBufferedImageOp implements BufferedImageOp {

public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel


dstCM) {
if ( dstCM == null )
dstCM = src.getColorModel();
return new BufferedImage(dstCM,
dstCM.createCompatibleWritableRaster(src.getWidth(), src.getHeight()),
dstCM.isAlphaPremultiplied(), null);
}

public Rectangle2D getBounds2D( BufferedImage src ) {


return new Rectangle(0, 0, src.getWidth(), src.getHeight());
}

public Point2D getPoint2D( Point2D srcPt, Point2D dstPt ) {


if ( dstPt == null )
dstPt = new Point2D.Double();
dstPt.setLocation( srcPt.getX(), srcPt.getY() );
return dstPt;
}

public RenderingHints getRenderingHints() {


return null;
}

/**
* A convenience method for getting ARGB pixels from an image. This tries to
avoid the performance
* penalty of BufferedImage.getRGB unmanaging the image.
*/
public int[] getRGB( BufferedImage image, int x, int y, int width, int
height, int[] pixels ) {
int type = image.getType();
if ( type == BufferedImage.TYPE_INT_ARGB || type ==
BufferedImage.TYPE_INT_RGB )
return (int [])image.getRaster().getDataElements( x, y, width,
height, pixels );
return image.getRGB( x, y, width, height, pixels, 0, width );
}

/**
* A convenience method for setting ARGB pixels in an image. This tries to
avoid the performance
* penalty of BufferedImage.setRGB unmanaging the image.
*/
public void setRGB( BufferedImage image, int x, int y, int width, int height,
int[] pixels ) {
int type = image.getType();
if ( type == BufferedImage.TYPE_INT_ARGB || type ==
BufferedImage.TYPE_INT_RGB )
image.getRaster().setDataElements( x, y, width, height, pixels );
else
image.setRGB( x, y, width, height, pixels, 0, width );
}
}

You might also like