Turn off hinting by default for higher density displays.

Also adds an API for apps to control whether hinting is used.

Change-Id: I1a06b06255fbb8d0f02a8ce48c2cd60019088ed3
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp
index 98d7fce..423eff4 100644
--- a/core/jni/android/graphics/Paint.cpp
+++ b/core/jni/android/graphics/Paint.cpp
@@ -15,6 +15,10 @@
 ** limitations under the License.
 */
 
+#define LOG_TAG "Paint"
+
+#include <utils/Log.h>
+
 #include "jni.h"
 #include "GraphicsJNI.h"
 #include <android_runtime/AndroidRuntime.h>
@@ -50,8 +54,6 @@
 static JMetricsID gFontMetricsInt_fieldID;
 
 static void defaultSettingsForAndroid(SkPaint* paint) {
-    // looks best we decided
-    paint->setHinting(SkPaint::kSlight_Hinting);
     // utf16 is required for java
     paint->setTextEncoding(SkPaint::kUTF16_TextEncoding);
 }
@@ -96,6 +98,18 @@
         GraphicsJNI::getNativePaint(env, paint)->setFlags(flags);
     }
 
+    static jint getHinting(JNIEnv* env, jobject paint) {
+        NPE_CHECK_RETURN_ZERO(env, paint);
+        return GraphicsJNI::getNativePaint(env, paint)->getHinting()
+                == SkPaint::kNo_Hinting ? 0 : 1;
+    }
+
+    static void setHinting(JNIEnv* env, jobject paint, jint mode) {
+        NPE_CHECK_RETURN_VOID(env, paint);
+        GraphicsJNI::getNativePaint(env, paint)->setHinting(
+                mode == 0 ? SkPaint::kNo_Hinting : SkPaint::kSlight_Hinting);
+    }
+
     static void setAntiAlias(JNIEnv* env, jobject paint, jboolean aa) {
         NPE_CHECK_RETURN_VOID(env, paint);
         GraphicsJNI::getNativePaint(env, paint)->setAntiAlias(aa);
@@ -833,6 +847,8 @@
     {"native_set","(II)V", (void*) SkPaintGlue::assign},
     {"getFlags","()I", (void*) SkPaintGlue::getFlags},
     {"setFlags","(I)V", (void*) SkPaintGlue::setFlags},
+    {"getHinting","()I", (void*) SkPaintGlue::getHinting},
+    {"setHinting","(I)V", (void*) SkPaintGlue::setHinting},
     {"setAntiAlias","(Z)V", (void*) SkPaintGlue::setAntiAlias},
     {"setSubpixelText","(Z)V", (void*) SkPaintGlue::setSubpixelText},
     {"setLinearText","(Z)V", (void*) SkPaintGlue::setLinearText},