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},