diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2012-01-05 15:18:52 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-01-05 15:18:52 -0800 |
commit | d4a69b4a1cb5b52035345abd8cb9595ae4cf9fa5 (patch) | |
tree | 37611fad9b9cde629eac0f20ceb7684cddf47f0b | |
parent | a4ad2928eb47974e922191dd008dfa98e3711ca0 (diff) | |
parent | c511bee87cda99a252d1a62487f47c8f05aee78c (diff) | |
download | frameworks_base-d4a69b4a1cb5b52035345abd8cb9595ae4cf9fa5.zip frameworks_base-d4a69b4a1cb5b52035345abd8cb9595ae4cf9fa5.tar.gz frameworks_base-d4a69b4a1cb5b52035345abd8cb9595ae4cf9fa5.tar.bz2 |
Merge "Fix bug #5753006 Garbled Labels in Maps"
-rw-r--r-- | core/jni/android/graphics/Canvas.cpp | 9 | ||||
-rw-r--r-- | core/jni/android/graphics/Paint.cpp | 4 | ||||
-rw-r--r-- | core/jni/android/graphics/TextLayout.cpp | 21 | ||||
-rw-r--r-- | core/jni/android/graphics/TextLayout.h | 2 | ||||
-rw-r--r-- | libs/hwui/DisplayListRenderer.cpp | 4 |
5 files changed, 10 insertions, 30 deletions
diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp index f118dc1..8d05e28 100644 --- a/core/jni/android/graphics/Canvas.cpp +++ b/core/jni/android/graphics/Canvas.cpp @@ -779,15 +779,8 @@ public: // TODO: need to suppress this code after the GL renderer is modified for not // copying the paint - // Save old text encoding - SkPaint::TextEncoding oldEncoding = paint->getTextEncoding(); - // Define Glyph encoding - paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); - + // Beware: this needs Glyph encoding (already done on the Paint constructor) canvas->drawText(glyphArray + index * 2, count * 2, x, y, *paint); - - // Get back old encoding - paint->setTextEncoding(oldEncoding); } static void drawTextRun___CIIIIFFIPaint( diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp index 19f53d7..9f3238a 100644 --- a/core/jni/android/graphics/Paint.cpp +++ b/core/jni/android/graphics/Paint.cpp @@ -54,8 +54,8 @@ static jclass gFontMetricsInt_class; static JMetricsID gFontMetricsInt_fieldID; static void defaultSettingsForAndroid(SkPaint* paint) { - // utf16 is required for java - paint->setTextEncoding(SkPaint::kUTF16_TextEncoding); + // GlyphID encoding is required because we are using Harfbuzz shaping + paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); } class SkPaintGlue { diff --git a/core/jni/android/graphics/TextLayout.cpp b/core/jni/android/graphics/TextLayout.cpp index f88dcd6..5099510 100644 --- a/core/jni/android/graphics/TextLayout.cpp +++ b/core/jni/android/graphics/TextLayout.cpp @@ -52,7 +52,7 @@ bool TextLayout::needsLayout(const jchar* text, jint len, jint bidiFlags) { // This will draw if canvas is not null, otherwise path must be non-null and it will create // a path representing the text that would have been drawn. void TextLayout::handleText(SkPaint *paint, const jchar* text, jsize len, - jint bidiFlags, jfloat x, jfloat y,SkCanvas *canvas, SkPath *path) { + jint bidiFlags, jfloat x, jfloat y, SkPath *path) { sp<TextLayoutCacheValue> value; #if USE_TEXT_LAYOUT_CACHE // Return advances from the cache. Compute them if needed @@ -70,11 +70,8 @@ void TextLayout::handleText(SkPaint *paint, const jchar* text, jsize len, } SkScalar x_ = SkFloatToScalar(x); SkScalar y_ = SkFloatToScalar(y); - if (canvas) { - canvas->drawText(value->getGlyphs(), value->getGlyphsCount() * 2, x_, y_, *paint); - } else { - paint->getTextPath(value->getGlyphs(), value->getGlyphsCount() * 2, x_, y_, path); - } + // Beware: this needs Glyph encoding (already done on the Paint constructor) + paint->getTextPath(value->getGlyphs(), value->getGlyphsCount() * 2, x_, y_, path); } void TextLayout::getTextRunAdvances(SkPaint* paint, const jchar* chars, jint start, @@ -113,7 +110,7 @@ void TextLayout::getTextRunAdvancesICU(SkPaint* paint, const jchar* chars, jint void TextLayout::getTextPath(SkPaint *paint, const jchar *text, jsize len, jint bidiFlags, jfloat x, jfloat y, SkPath *path) { - handleText(paint, text, len, bidiFlags, x, y, NULL, path); + handleText(paint, text, len, bidiFlags, x, y, path); } @@ -143,16 +140,8 @@ void TextLayout::drawTextOnPath(SkPaint* paint, const jchar* text, int count, String8(text, count).string()); return ; } - - // Save old text encoding - SkPaint::TextEncoding oldEncoding = paint->getTextEncoding(); - // Define Glyph encoding - paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); - + // Beware: this needs Glyph encoding (already done on the Paint constructor) canvas->drawTextOnPathHV(value->getGlyphs(), value->getGlyphsCount() * 2, *path, h_, v_, *paint); - - // Get back old encoding - paint->setTextEncoding(oldEncoding); } void TextLayout::computeAdvancesWithICU(SkPaint* paint, const UChar* chars, diff --git a/core/jni/android/graphics/TextLayout.h b/core/jni/android/graphics/TextLayout.h index 1dabe32..a0f9402 100644 --- a/core/jni/android/graphics/TextLayout.h +++ b/core/jni/android/graphics/TextLayout.h @@ -81,7 +81,7 @@ private: static bool needsLayout(const jchar* text, jint len, jint bidiFlags); static void handleText(SkPaint* paint, const jchar* text, jsize len, - int bidiFlags, jfloat x, jfloat y, SkCanvas* canvas, SkPath* path); + int bidiFlags, jfloat x, jfloat y, SkPath* path); static void computeAdvancesWithICU(SkPaint* paint, const UChar* chars, size_t start, size_t count, size_t contextCount, int dirFlags, diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp index b8ba23d..656a384 100644 --- a/libs/hwui/DisplayListRenderer.cpp +++ b/libs/hwui/DisplayListRenderer.cpp @@ -1210,10 +1210,8 @@ void DisplayListRenderer::drawText(const char* text, int bytesCount, int count, // see if it matters. // If we make a copy, then drawTextDecorations() should *not* make // its own copy as it does right now. + // Beware: this needs Glyph encoding (already done on the Paint constructor) paint->setAntiAlias(true); -#if RENDER_TEXT_AS_GLYPHS - paint->setTextEncoding(SkPaint::kGlyphID_TextEncoding); -#endif addPaint(paint); addFloat(length < 0.0f ? paint->measureText(text, bytesCount) : length); } |