summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/text/MeasuredText.java30
-rw-r--r--core/java/android/text/StaticLayout.java10
2 files changed, 8 insertions, 32 deletions
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java
index 9f54d8e2ab7b..2cfec30938f0 100644
--- a/core/java/android/text/MeasuredText.java
+++ b/core/java/android/text/MeasuredText.java
@@ -165,40 +165,26 @@ class MeasuredText {
paint.getFontMetricsInt(fm);
}
- int p = mPos;
+ final int p = mPos;
mPos = p + len;
- // try to do widths measurement in native code, but use Java if paint has been subclassed
- // FIXME: may want to eliminate special case for subclass
- float[] widths = null;
- if (mBuilder == null || paint.getClass() != TextPaint.class) {
- widths = mWidths;
- }
if (mEasy) {
- boolean isRtl = mDir != Layout.DIR_LEFT_TO_RIGHT;
- float width = 0;
- if (widths != null) {
- width = paint.getTextRunAdvances(mChars, p, len, p, len, isRtl, widths, p);
- if (mBuilder != null) {
- mBuilder.addMeasuredRun(paint, p, p + len, widths);
- }
+ final boolean isRtl = mDir != Layout.DIR_LEFT_TO_RIGHT;
+ if (mBuilder == null) {
+ return paint.getTextRunAdvances(mChars, p, len, p, len, isRtl, mWidths, p);
} else {
- width = mBuilder.addStyleRun(paint, p, p + len, isRtl);
+ return mBuilder.addStyleRun(paint, p, p + len, isRtl);
}
- return width;
}
float totalAdvance = 0;
int level = mLevels[p];
for (int q = p, i = p + 1, e = p + len;; ++i) {
if (i == e || mLevels[i] != level) {
- boolean isRtl = (level & 0x1) != 0;
- if (widths != null) {
+ final boolean isRtl = (level & 0x1) != 0;
+ if (mBuilder == null) {
totalAdvance +=
- paint.getTextRunAdvances(mChars, q, i - q, q, i - q, isRtl, widths, q);
- if (mBuilder != null) {
- mBuilder.addMeasuredRun(paint, q, i, widths);
- }
+ paint.getTextRunAdvances(mChars, q, i - q, q, i - q, isRtl, mWidths, q);
} else {
totalAdvance += mBuilder.addStyleRun(paint, q, i, isRtl);
}
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index e71ad5b21fcf..e2c31de4d77f 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -431,7 +431,6 @@ public class StaticLayout extends Layout {
* Then, for each run within the paragraph:
* - one of the following, depending on the type of run:
* + addStyleRun (a text run, to be measured in native code)
- * + addMeasuredRun (a run already measured in Java, passed into native code)
* + addReplacementRun (a replacement run, width is given)
*
* After measurement, nGetWidths() is valid if the widths are needed (eg for ellipsis).
@@ -460,11 +459,6 @@ public class StaticLayout extends Layout {
locHyph.first, locHyph.second);
}
- /* package */ void addMeasuredRun(TextPaint paint, int start, int end, float[] widths) {
- Pair<String, long[]> locHyph = getLocaleAndHyphenatorIfChanged(paint);
- nAddMeasuredRun(mNativePtr, start, end, widths, locHyph.first, locHyph.second);
- }
-
/* package */ void addReplacementRun(TextPaint paint, int start, int end, float width) {
Pair<String, long[]> locHyph = getLocaleAndHyphenatorIfChanged(paint);
nAddReplacementRun(mNativePtr, start, end, width, locHyph.first, locHyph.second);
@@ -1552,10 +1546,6 @@ public class StaticLayout extends Layout {
@IntRange(from = 0) int start, @IntRange(from = 0) int end, boolean isRtl,
@Nullable String languageTags, @Nullable long[] hyphenators);
- private static native void nAddMeasuredRun(/* non-zero */ long nativePtr,
- @IntRange(from = 0) int start, @IntRange(from = 0) int end, @NonNull float[] widths,
- @Nullable String languageTags, @Nullable long[] hyphenators);
-
private static native void nAddReplacementRun(/* non-zero */ long nativePtr,
@IntRange(from = 0) int start, @IntRange(from = 0) int end,
@FloatRange(from = 0.0f) float width, @Nullable String languageTags,