diff options
| author | Deepanshu Gupta <deepanshu@google.com> | 2013-09-05 18:49:31 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-09-05 18:49:31 +0000 |
| commit | 3a762d8bfbe6b2d4066bc5cc90301063c19976c4 (patch) | |
| tree | c5eefbb73df3d3e021d370f4312303e6ec66f04e /tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java | |
| parent | 68411471083abd7a7713483b5cd40f394387b7b3 (diff) | |
| parent | 0d9c922c9614147d1277cb36cfb7296774415d15 (diff) | |
| download | frameworks_base-3a762d8bfbe6b2d4066bc5cc90301063c19976c4.zip frameworks_base-3a762d8bfbe6b2d4066bc5cc90301063c19976c4.tar.gz frameworks_base-3a762d8bfbe6b2d4066bc5cc90301063c19976c4.tar.bz2 | |
Merge "Fix text rendering" into jb-mr2-dev
Diffstat (limited to 'tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java')
| -rw-r--r-- | tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java index 52b8f34..973fa0e 100644 --- a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java +++ b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java @@ -16,7 +16,10 @@ package android.text; +import com.android.ide.common.rendering.api.LayoutLog; +import com.android.layoutlib.bridge.Bridge; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; +import com.ibm.icu.text.Bidi; /** @@ -29,9 +32,29 @@ import com.android.tools.layoutlib.annotations.LayoutlibDelegate; public class AndroidBidi_Delegate { @LayoutlibDelegate - /*package*/ static int runBidi(int dir, char[] chs, byte[] chInfo, int n, boolean haveInfo) { - // return the equivalent of Layout.DIR_LEFT_TO_RIGHT - // TODO: actually figure the direction. - return 0; + /*package*/ static int runBidi(int dir, char[] chars, byte[] charInfo, int count, + boolean haveInfo) { + + switch (dir) { + case 0: // Layout.DIR_REQUEST_LTR + case 1: // Layout.DIR_REQUEST_RTL + break; // No change. + case -1: + dir = Bidi.LEVEL_DEFAULT_LTR; + break; + case -2: + dir = Bidi.LEVEL_DEFAULT_RTL; + break; + default: + // Invalid code. Log error, assume LEVEL_DEFAULT_LTR and continue. + Bridge.getLog().error(LayoutLog.TAG_BROKEN, "Invalid direction flag", null); + dir = Bidi.LEVEL_DEFAULT_LTR; + } + Bidi bidi = new Bidi(chars, 0, null, 0, count, dir); + if (charInfo != null) { + for (int i = 0; i < count; ++i) + charInfo[i] = bidi.getLevelAt(i); + } + return bidi.getParaLevel(); } } |
