package rabbitescape.ui.swing;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import rabbitescape.render.BitmapScaler;
public class SwingBitmapScaler implements BitmapScaler<SwingBitmap>
{
@Override
public SwingBitmap scale( SwingBitmap originalBitmap, double scale )
{
SwingBitmap orig = originalBitmap;
BufferedImage origImage = orig.image;
int width = (int)( origImage.getWidth() * scale );
int height = (int)( origImage.getHeight() * scale );
BufferedImage ret = new java.awt.image.BufferedImage(
width, height, java.awt.image.BufferedImage.TYPE_INT_ARGB );
Graphics2D gfx = ret.createGraphics();
gfx.setRenderingHint(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR
);
gfx.drawImage(
origImage,
0, 0, width, height,
0, 0, origImage.getWidth(), origImage.getHeight(),
null
);
return new SwingBitmap( originalBitmap.name(), ret );
}
}