diff options
author | Romain Guy <romainguy@google.com> | 2010-07-23 18:55:21 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2010-07-23 18:55:21 -0700 |
commit | e8e62a4a032a80409114a37908b5f18ab0080848 (patch) | |
tree | 7bd5be7505e21861a02dda702e24f94d8e9b24cc /core/jni/android_view_GLES20Canvas.cpp | |
parent | 9e05ed2f6860a2d34c339a1755dbb5f68081c62e (diff) | |
download | frameworks_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.cpp | 17 |
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); } |