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) {