summaryrefslogtreecommitdiffstats
path: root/core/jni/android_view_GLES20Canvas.cpp
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2010-07-23 18:55:21 -0700
committerRomain Guy <romainguy@google.com>2010-07-23 18:55:21 -0700
commite8e62a4a032a80409114a37908b5f18ab0080848 (patch)
tree7bd5be7505e21861a02dda702e24f94d8e9b24cc /core/jni/android_view_GLES20Canvas.cpp
parent9e05ed2f6860a2d34c339a1755dbb5f68081c62e (diff)
downloadframeworks_base-e8e62a4a032a80409114a37908b5f18ab0080848.zip
frameworks_base-e8e62a4a032a80409114a37908b5f18ab0080848.tar.gz
frameworks_base-e8e62a4a032a80409114a37908b5f18ab0080848.tar.bz2
Add text alignment support to drawText().
This change also integrates better support for RTL text. Change-Id: I6da8f5cf5dc28ca7cf1b22e27b0d853c919e8481
Diffstat (limited to 'core/jni/android_view_GLES20Canvas.cpp')
-rw-r--r--core/jni/android_view_GLES20Canvas.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index 2f1dcb6..d2e7faf 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -33,6 +33,8 @@
#include <Rect.h>
#include <ui/Rect.h>
+#include "TextLayout.h"
+
namespace android {
using namespace uirenderer;
@@ -251,12 +253,20 @@ static void android_view_GLES20Canvas_setupLinearShader(JNIEnv* env, jobject can
// Text
// ----------------------------------------------------------------------------
+static void renderText(OpenGLRenderer* renderer, const jchar* text, int count,
+ jfloat x, jfloat y, int flags, SkPaint* paint) {
+ const jchar *workText;
+ int32_t workBytes;
+ if (TextLayout::prepareText(paint, text, count, flags, &workText, &workBytes)) {
+ renderer->drawText((const char*) workText, workBytes, count, x, y, paint);
+ }
+}
+
static void android_view_GLES20Canvas_drawTextArray(JNIEnv* env, jobject canvas,
OpenGLRenderer* renderer, jcharArray text, int index, int count,
jfloat x, jfloat y, int flags, SkPaint* paint) {
jchar* textArray = env->GetCharArrayElements(text, NULL);
- // TODO: Prepare the text for RTL
- renderer->drawText((const char*) (textArray + index), count, x, y, paint);
+ renderText(renderer, textArray + index, count, x, y, flags, paint);
env->ReleaseCharArrayElements(text, textArray, JNI_ABORT);
}
@@ -264,8 +274,7 @@ static void android_view_GLES20Canvas_drawText(JNIEnv* env, jobject canvas,
OpenGLRenderer* renderer, jstring text, int start, int end,
jfloat x, jfloat y, int flags, SkPaint* paint) {
const jchar* textArray = env->GetStringChars(text, NULL);
- // TODO: Prepare the text for RTL
- renderer->drawText((const char*) (textArray + start), end - start, x, y, paint);
+ renderText(renderer, textArray + start, end - start, x, y, flags, paint);
env->ReleaseStringChars(text, textArray);
}