Merge "Update JNI interface of GetBounds in PrecomputedText" into pi-dev
am: 42c686861c
Change-Id: I734f1715092ec932f8fc5569c4ecadfc45d9ad66
diff --git a/core/java/android/text/MeasuredParagraph.java b/core/java/android/text/MeasuredParagraph.java
index 96edfa3..c2c3182 100644
--- a/core/java/android/text/MeasuredParagraph.java
+++ b/core/java/android/text/MeasuredParagraph.java
@@ -303,10 +303,9 @@
*
* This is available only if the MeasuredParagraph is computed with buildForStaticLayout.
*/
- public void getBounds(@NonNull Paint paint, @IntRange(from = 0) int start,
- @IntRange(from = 0) int end, @NonNull Rect bounds) {
- nGetBounds(mNativePtr, mCopiedBuffer, paint.getNativeInstance(), start, end,
- paint.getBidiFlags(), bounds);
+ public void getBounds(@IntRange(from = 0) int start, @IntRange(from = 0) int end,
+ @NonNull Rect bounds) {
+ nGetBounds(mNativePtr, mCopiedBuffer, start, end, bounds);
}
/**
@@ -743,6 +742,6 @@
@CriticalNative
private static native int nGetMemoryUsage(/* Non Zero */ long nativePtr);
- private static native void nGetBounds(long nativePtr, char[] buf, long paintPtr, int start,
- int end, int bidiFlag, Rect rect);
+ private static native void nGetBounds(long nativePtr, char[] buf, int start, int end,
+ Rect rect);
}
diff --git a/core/java/android/text/PrecomputedText.java b/core/java/android/text/PrecomputedText.java
index 44789d6..369f357 100644
--- a/core/java/android/text/PrecomputedText.java
+++ b/core/java/android/text/PrecomputedText.java
@@ -515,8 +515,7 @@
+ "para: (" + paraStart + ", " + paraEnd + "), "
+ "request: (" + start + ", " + end + ")");
}
- getMeasuredParagraph(paraIndex).getBounds(mParams.mPaint,
- start - paraStart, end - paraStart, bounds);
+ getMeasuredParagraph(paraIndex).getBounds(start - paraStart, end - paraStart, bounds);
}
/**
diff --git a/core/jni/android_text_MeasuredParagraph.cpp b/core/jni/android_text_MeasuredParagraph.cpp
index 9d79417..41a81ac 100644
--- a/core/jni/android_text_MeasuredParagraph.cpp
+++ b/core/jni/android_text_MeasuredParagraph.cpp
@@ -111,20 +111,13 @@
}
// Regular JNI
-static void nGetBounds(JNIEnv* env, jobject, jlong ptr, jcharArray javaText, jlong paintPtr,
- jint start, jint end, jint bidiFlags, jobject bounds) {
+static void nGetBounds(JNIEnv* env, jobject, jlong ptr, jcharArray javaText, jint start, jint end,
+ jobject bounds) {
ScopedCharArrayRO text(env, javaText);
const minikin::U16StringPiece textBuffer(text.get(), text.size());
+ const minikin::Range range(start, end);
- minikin::MeasuredText* mt = toMeasuredParagraph(ptr);
- Paint* paint = toPaint(paintPtr);
- const Typeface* typeface = Typeface::resolveDefault(paint->getAndroidTypeface());
- minikin::Layout layout = MinikinUtils::doLayout(paint,
- static_cast<minikin::Bidi>(bidiFlags), typeface, textBuffer.data(), start, end - start,
- textBuffer.size(), mt);
-
- minikin::MinikinRect rect;
- layout.getBounds(&rect);
+ minikin::MinikinRect rect = toMeasuredParagraph(ptr)->getBounds(textBuffer, range);
SkRect r;
r.fLeft = rect.mLeft;
@@ -156,7 +149,7 @@
// MeasuredParagraph native functions.
{"nGetWidth", "(JII)F", (void*) nGetWidth}, // Critical Natives
- {"nGetBounds", "(J[CJIIILandroid/graphics/Rect;)V", (void*) nGetBounds}, // Regular JNI
+ {"nGetBounds", "(J[CIILandroid/graphics/Rect;)V", (void*) nGetBounds}, // Regular JNI
{"nGetReleaseFunc", "()J", (void*) nGetReleaseFunc}, // Critical Natives
{"nGetMemoryUsage", "(J)I", (void*) nGetMemoryUsage}, // Critical Native
};