summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Seigo Nonaka <nona@google.com> 2018-04-02 23:25:38 -0700
committer Seigo Nonaka <nona@google.com> 2018-04-04 18:25:12 +0000
commitfb0abe1feb2cadcee2a3edb2028e1da04bb8a8d5 (patch)
treeda29e520ba382f9eda4bef0d874faca223a39560
parent3e57c9f52573fdf15414fdda50bd988776e8ea3d (diff)
Update JNI interface of GetBounds in PrecomputedText
Bug: 77495049 Test: atest CtsWidgetTestCases:EditTextTest CtsWidgetTestCases:TextViewFadingEdgeTest FrameworksCoreTests:TextViewFallbackLineSpacingTest FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest CtsTextTestCases FrameworksCoreTests:android.text CtsWidgetTestCases:TextViewPrecomputedTextTest Change-Id: I54a70a91f6fba90720b702b52ed6ad430e17c87d
-rw-r--r--core/java/android/text/MeasuredParagraph.java11
-rw-r--r--core/java/android/text/PrecomputedText.java3
-rw-r--r--core/jni/android_text_MeasuredParagraph.cpp17
3 files changed, 11 insertions, 20 deletions
diff --git a/core/java/android/text/MeasuredParagraph.java b/core/java/android/text/MeasuredParagraph.java
index 96edfa31f541..c2c3182c2abd 100644
--- a/core/java/android/text/MeasuredParagraph.java
+++ b/core/java/android/text/MeasuredParagraph.java
@@ -303,10 +303,9 @@ public class MeasuredParagraph {
*
* 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 @@ public class MeasuredParagraph {
@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 44789d6bb76a..369f357d60d8 100644
--- a/core/java/android/text/PrecomputedText.java
+++ b/core/java/android/text/PrecomputedText.java
@@ -515,8 +515,7 @@ public class PrecomputedText implements Spannable {
+ "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 9d794175de18..41a81accf72c 100644
--- a/core/jni/android_text_MeasuredParagraph.cpp
+++ b/core/jni/android_text_MeasuredParagraph.cpp
@@ -111,20 +111,13 @@ static jfloat nGetWidth(jlong ptr, jint start, jint end) {
}
// 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 @@ static const JNINativeMethod gMethods[] = {
// 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
};