summaryrefslogtreecommitdiffstats
path: root/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java
diff options
context:
space:
mode:
authorDeepanshu Gupta <deepanshu@google.com>2013-09-05 18:49:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-09-05 18:49:31 +0000
commit3a762d8bfbe6b2d4066bc5cc90301063c19976c4 (patch)
treec5eefbb73df3d3e021d370f4312303e6ec66f04e /tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java
parent68411471083abd7a7713483b5cd40f394387b7b3 (diff)
parent0d9c922c9614147d1277cb36cfb7296774415d15 (diff)
downloadframeworks_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.java31
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();
}
}