Set Graphics2D rendering hints to improve resized image quality.
Fixes issue 7193.
Review-Link: http://gwt-code-reviews.appspot.com/1663803
Review by: goktug@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@11476 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java b/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
index 429acfa..931d2b2 100644
--- a/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
+++ b/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
@@ -24,6 +24,7 @@
import org.w3c.dom.Node;
import java.awt.Graphics2D;
+import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
@@ -538,6 +539,8 @@
Graphics2D g2d = bundledImage.createGraphics();
createGraphicsEvent.end();
+ setBetterRenderingQuality(g2d);
+
g2d.drawImage(rect.getImage(), rect.transform(), null);
g2d.dispose();
@@ -593,6 +596,13 @@
return b / gcd(a, b) * a;
}
+ private static void setBetterRenderingQuality(Graphics2D g2d) {
+ g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
+ RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+ g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
+ RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
+ }
+
private final Map<String, ImageRect> imageNameToImageRectMap = new HashMap<String, ImageRect>();
public ImageBundleBuilder() {
@@ -818,6 +828,9 @@
SpeedTracerLogger.Event graphicsEvent = SpeedTracerLogger.start(CompilerEventType.GRAPHICS_INIT,
"java.awt.headless", System.getProperty("java.awt.headless"));
Graphics2D g2d = bundledImage.createGraphics();
+
+ setBetterRenderingQuality(g2d);
+
graphicsEvent.end();
for (ImageRect imageRect : imageRects) {