summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2011-06-06 14:14:36 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-06-06 14:14:36 -0700
commit890e013c05ed62bea9781168f3f65efebcbac4d5 (patch)
tree937139385b85564dc0c6b0cd10d34b6b043ee266
parent4e75dbb94d276009327ad248a1cdc869c5eafd6d (diff)
parentaf033caf26ef4eca99c4024e59def7e42c3fa4cd (diff)
downloadframeworks_base-890e013c05ed62bea9781168f3f65efebcbac4d5.zip
frameworks_base-890e013c05ed62bea9781168f3f65efebcbac4d5.tar.gz
frameworks_base-890e013c05ed62bea9781168f3f65efebcbac4d5.tar.bz2
Merge "Fix USE_TEXT_LAYOUT_CACHE define"
-rw-r--r--core/jni/android/graphics/Canvas.cpp26
-rw-r--r--core/jni/android/graphics/TextLayout.cpp18
-rw-r--r--core/jni/android_view_GLES20Canvas.cpp18
3 files changed, 43 insertions, 19 deletions
diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp
index 4a09232..942aa8a 100644
--- a/core/jni/android/graphics/Canvas.cpp
+++ b/core/jni/android/graphics/Canvas.cpp
@@ -755,32 +755,46 @@ public:
jfloat x, jfloat y, int flags, SkPaint* paint) {
jint count = end - start;
- sp<TextLayoutCacheValue> value = gTextLayoutCache.getValue(
- paint, textArray, start, count, end, flags);
+ sp<TextLayoutCacheValue> value;
+#if USE_TEXT_LAYOUT_CACHE
+ value = gTextLayoutCache.getValue(paint, textArray, start, count, end, flags);
if (value == NULL) {
LOGE("Cannot get TextLayoutCache value");
return ;
}
+#else
+ value = new TextLayoutCacheValue();
+ value->computeValues(paint, textArray, start, count, end, flags);
+#endif
+
#if DEBUG_GLYPHS
logGlyphs(value);
#endif
- doDrawGlyphs(canvas, value->getGlyphs(), 0, value->getGlyphsCount(),
- x, y, flags, paint);
+
+ doDrawGlyphs(canvas, value->getGlyphs(), 0, value->getGlyphsCount(),
+ x, y, flags, paint);
}
static void drawTextWithGlyphs(SkCanvas* canvas, const jchar* textArray,
int start, int count, int contextCount,
jfloat x, jfloat y, int flags, SkPaint* paint) {
- sp<TextLayoutCacheValue> value = gTextLayoutCache.getValue(
- paint, textArray, start, count, contextCount, flags);
+ sp<TextLayoutCacheValue> value;
+#if USE_TEXT_LAYOUT_CACHE
+ value = gTextLayoutCache.getValue(paint, textArray, start, count, contextCount, flags);
if (value == NULL) {
LOGE("Cannot get TextLayoutCache value");
return ;
}
+#else
+ value = new TextLayoutCacheValue();
+ value->computeValues(paint, textArray, start, count, contextCount, flags);
+#endif
+
#if DEBUG_GLYPHS
logGlyphs(value);
#endif
+
doDrawGlyphs(canvas, value->getGlyphs(), 0, value->getGlyphsCount(),
x, y, flags, paint);
}
diff --git a/core/jni/android/graphics/TextLayout.cpp b/core/jni/android/graphics/TextLayout.cpp
index 46e6c2b..7e89a37 100644
--- a/core/jni/android/graphics/TextLayout.cpp
+++ b/core/jni/android/graphics/TextLayout.cpp
@@ -254,21 +254,21 @@ void TextLayout::drawTextRun(SkPaint* paint, const jchar* chars,
void TextLayout::getTextRunAdvances(SkPaint* paint, const jchar* chars, jint start,
jint count, jint contextCount, jint dirFlags,
jfloat* resultAdvances, jfloat& resultTotalAdvance) {
+ sp<TextLayoutCacheValue> value;
#if USE_TEXT_LAYOUT_CACHE
// Return advances from the cache. Compute them if needed
- sp<TextLayoutCacheValue> layout = gTextLayoutCache.getValue(
+ value = gTextLayoutCache.getValue(
paint, chars, start, count, contextCount, dirFlags);
- if (layout != NULL) {
+#else
+ value = new TextLayoutCacheValue();
+ value->computeValues(paint, chars, start, count, contextCount, dirFlags);
+#endif
+ if (value != NULL) {
if (resultAdvances != NULL) {
- memcpy(resultAdvances, layout->getAdvances(), layout->getAdvancesCount() * sizeof(jfloat));
+ memcpy(resultAdvances, value->getAdvances(), value->getAdvancesCount() * sizeof(jfloat));
}
- resultTotalAdvance = layout->getTotalAdvance();
+ resultTotalAdvance = value->getTotalAdvance();
}
-#else
- // Compute advances and return them
- TextLayoutCacheValue::computeValuesWithHarfbuzz(paint, chars, start, count, contextCount,
- dirFlags, resultAdvances, &resultTotalAdvance, NULL, NULL );
-#endif
}
void TextLayout::getTextRunAdvancesHB(SkPaint* paint, const jchar* chars, jint start,
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index 31988f7..57a97bd 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -438,12 +438,17 @@ static void android_view_GLES20Canvas_setupShadow(JNIEnv* env, jobject clazz,
static void renderText(OpenGLRenderer* renderer, const jchar* text, int count,
jfloat x, jfloat y, int flags, SkPaint* paint) {
#if RTL_USE_HARFBUZZ
- sp<TextLayoutCacheValue> value = gTextLayoutCache.getValue(
- paint, text, 0, count, count, flags);
+ sp<TextLayoutCacheValue> value;
+#if USE_TEXT_LAYOUT_CACHE
+ value = gTextLayoutCache.getValue(paint, text, 0, count, count, flags);
if (value == NULL) {
LOGE("Cannot get TextLayoutCache value");
return ;
}
+#else
+ value = new TextLayoutCacheValue();
+ value->computeValues(paint, text, 0, count, count, flags);
+#endif
#if DEBUG_GLYPHS
logGlyphs(value);
#endif
@@ -466,12 +471,17 @@ static void renderTextRun(OpenGLRenderer* renderer, const jchar* text,
jint start, jint count, jint contextCount, jfloat x, jfloat y,
int flags, SkPaint* paint) {
#if RTL_USE_HARFBUZZ
- sp<TextLayoutCacheValue> value = gTextLayoutCache.getValue(
- paint, text, start, count, contextCount, flags);
+ sp<TextLayoutCacheValue> value;
+#if USE_TEXT_LAYOUT_CACHE
+ value = gTextLayoutCache.getValue(paint, text, start, count, contextCount, flags);
if (value == NULL) {
LOGE("Cannot get TextLayoutCache value");
return ;
}
+#else
+ value = new TextLayoutCacheValue();
+ value->computeValues(paint, text, start, count, contextCount, flags);
+#endif
#if DEBUG_GLYPHS
logGlyphs(value);
#endif