diff --git a/src/api-impl-jni/generated_headers/android_text_Layout.h b/src/api-impl-jni/generated_headers/android_text_Layout.h index ce6c339b..de727d5a 100644 --- a/src/api-impl-jni/generated_headers/android_text_Layout.h +++ b/src/api-impl-jni/generated_headers/android_text_Layout.h @@ -47,6 +47,22 @@ JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1height JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1line_1count (JNIEnv *, jobject, jlong); +/* + * Class: android_text_Layout + * Method: native_get_line_start + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1line_1start + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: android_text_Layout + * Method: native_get_line_end + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1line_1end + (JNIEnv *, jobject, jlong, jint); + /* * Class: android_text_Layout * Method: native_get_line_top diff --git a/src/api-impl-jni/text/android_text_Layout.c b/src/api-impl-jni/text/android_text_Layout.c index d8be648a..bb6ab23c 100644 --- a/src/api-impl-jni/text/android_text_Layout.c +++ b/src/api-impl-jni/text/android_text_Layout.c @@ -47,6 +47,25 @@ JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1line_1count(JNIEnv return pango_layout_get_line_count(pango_layout); } +JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1line_1start(JNIEnv *env, jobject object, jlong layout, jint line) +{ + PangoLayout *pango_layout = _PTR(layout); + PangoLayoutIter *pango_iter = pango_layout_get_iter(pango_layout); + while (line--) + pango_layout_iter_next_line(pango_iter); + return pango_layout_iter_get_index(pango_iter); +} + +JNIEXPORT jint JNICALL Java_android_text_Layout_native_1get_1line_1end(JNIEnv *env, jobject object, jlong layout, jint line) +{ + PangoLayout *pango_layout = _PTR(layout); + PangoLayoutIter *pango_iter = pango_layout_get_iter(pango_layout); + while (line--) + pango_layout_iter_next_line(pango_iter); + pango_layout_iter_next_line(pango_iter); + return pango_layout_iter_get_index(pango_iter); +} + static void get_line_extends(PangoLayout *pango_layout, int line, PangoRectangle *logical_rect) { PangoRectangle ink_rect; PangoLayoutIter *pango_iter = pango_layout_get_iter(pango_layout); diff --git a/src/api-impl/android/text/Layout.java b/src/api-impl/android/text/Layout.java index 2ea11fee..1ba11a58 100644 --- a/src/api-impl/android/text/Layout.java +++ b/src/api-impl/android/text/Layout.java @@ -155,13 +155,13 @@ public class Layout { public int getLineStart(int line) { if (line < 0 || line >= getLineCount()) throw new ArrayIndexOutOfBoundsException(); - return native_get_line_left(layout, line); + return native_get_line_start(layout, line); } public int getLineEnd(int line) { if (line < 0 || line >= getLineCount()) throw new ArrayIndexOutOfBoundsException(); - return native_get_line_right(layout, line); + return native_get_line_end(layout, line); } public boolean isSpanned() { @@ -238,6 +238,8 @@ public class Layout { protected native int native_get_width(long layout); protected native int native_get_height(long layout); protected native int native_get_line_count(long layout); + protected native int native_get_line_start(long layout, int line); + protected native int native_get_line_end(long layout, int line); protected native int native_get_line_top(long layout, int line); protected native int native_get_line_bottom(long layout, int line); protected native int native_get_line_left(long layout, int line);