Revert "Revert "Refactor TextLine class""
This reverts commit 3c097aa45e1fc8c03e09aea09a0dc3596b82c761.
Reason for revert: we thought this CL caused b/119659731 but apparently it is not.
Change-Id: Id375c4c8f2bffb7c42dc36bc053d536c6ea57a8d
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index e5fd292..c8e0dd2 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -2360,6 +2360,52 @@
public Directions(int[] dirs) {
mDirections = dirs;
}
+
+ /**
+ * Returns number of BiDi runs.
+ *
+ * @hide
+ */
+ public @IntRange(from = 0) int getRunCount() {
+ return mDirections.length / 2;
+ }
+
+ /**
+ * Returns the start offset of the BiDi run.
+ *
+ * @param runIndex the index of the BiDi run
+ * @return the start offset of the BiDi run.
+ * @hide
+ */
+ public @IntRange(from = 0) int getRunStart(@IntRange(from = 0) int runIndex) {
+ return mDirections[runIndex * 2];
+ }
+
+ /**
+ * Returns the length of the BiDi run.
+ *
+ * Note that this method may return too large number due to reducing the number of object
+ * allocations. The too large number means the remaining part is assigned to this run. The
+ * caller must clamp the returned value.
+ *
+ * @param runIndex the index of the BiDi run
+ * @return the length of the BiDi run.
+ * @hide
+ */
+ public @IntRange(from = 0) int getRunLength(@IntRange(from = 0) int runIndex) {
+ return mDirections[runIndex * 2 + 1] & RUN_LENGTH_MASK;
+ }
+
+ /**
+ * Returns true if the BiDi run is RTL.
+ *
+ * @param runIndex the index of the BiDi run
+ * @return true if the BiDi run is RTL.
+ * @hide
+ */
+ public boolean isRunRtl(int runIndex) {
+ return (mDirections[runIndex * 2 + 1] & RUN_RTL_FLAG) != 0;
+ }
}
/**