diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/text/MeasuredText.java | 30 | ||||
| -rw-r--r-- | core/java/android/text/StaticLayout.java | 10 |
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, |
