diff options
| author | 2021-06-26 02:52:03 +0000 | |
|---|---|---|
| committer | 2021-06-26 02:52:03 +0000 | |
| commit | 9ca29d2c47e192d25ddb669b3b431661d5c11058 (patch) | |
| tree | 969ba1f72c0c79c535e31a2e107d89a324b91312 | |
| parent | 4042304ccb39d2303b206ec21dba31baa65ac811 (diff) | |
| parent | b3b499045390cbd2d944c327c429120849a5404d (diff) | |
Merge "Improve ellipsize performance" into rvc-dev am: b3b4990453
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14905055
Change-Id: Ib9c5c9b376ea08177c855a10a5a3d5c1112c0ba8
| -rw-r--r-- | core/java/android/text/Layout.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java index 8a4497a0f0ce..6baea1aea471 100644 --- a/core/java/android/text/Layout.java +++ b/core/java/android/text/Layout.java @@ -2350,7 +2350,10 @@ public abstract class Layout { final int ellipsisStringLen = ellipsisString.length(); // Use the ellipsis string only if there are that at least as many characters to replace. final boolean useEllipsisString = ellipsisCount >= ellipsisStringLen; - for (int i = 0; i < ellipsisCount; i++) { + final int min = Math.max(0, start - ellipsisStart - lineStart); + final int max = Math.min(ellipsisCount, end - ellipsisStart - lineStart); + + for (int i = min; i < max; i++) { final char c; if (useEllipsisString && i < ellipsisStringLen) { c = ellipsisString.charAt(i); @@ -2359,9 +2362,7 @@ public abstract class Layout { } final int a = i + ellipsisStart + lineStart; - if (start <= a && a < end) { - dest[destoff + a - start] = c; - } + dest[destoff + a - start] = c; } } |