Improve ellipsize performance

Instead of iterate all ellipsized characters, only iterate the necessary
ranges for copying.

Bug: 188913943
Test: atest CtsTextTestCases CtsGraphicsTestCases CtsWidgetTestCases
Change-Id: I3d03b1e3897e427c23fbe51315f412c57a4ce9e9
Merged-In: I3d03b1e3897e427c23fbe51315f412c57a4ce9e9
This commit is contained in:
Seigo Nonaka
2021-06-08 16:12:39 -07:00
parent 0684e7a64a
commit ae1912b62f

View File

@@ -2214,20 +2214,20 @@ public abstract class Layout {
int ellipsisStart = getEllipsisStart(line);
int linestart = getLineStart(line);
for (int i = ellipsisStart; i < ellipsisStart + 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++) {
char c;
if (i == ellipsisStart) {
if (i == 0) {
c = getEllipsisChar(method); // ellipsis
} else {
c = '\uFEFF'; // 0-width space
}
int a = i + linestart;
if (a >= start && a < end) {
dest[destoff + a - start] = c;
}
int a = i + ellipsisStart + linestart;
dest[destoff + a - start] = c;
}
}