Merge "Bugfixes in StaticLayout. DO NOT MERGE." into honeycomb
This commit is contained in:
@@ -1727,6 +1727,17 @@ public abstract class Layout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inform this layout that not all of its lines will be displayed, because a maximum number of
|
||||||
|
* lines has been set on the associated TextView.
|
||||||
|
*
|
||||||
|
* A non strictly positive value means that all lines are displayed.
|
||||||
|
*
|
||||||
|
* @param lineCount number of visible lines
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void setMaximumVisibleLineCount(int lineCount) {}
|
||||||
|
|
||||||
private CharSequence mText;
|
private CharSequence mText;
|
||||||
private TextPaint mPaint;
|
private TextPaint mPaint;
|
||||||
/* package */ TextPaint mWorkPaint;
|
/* package */ TextPaint mWorkPaint;
|
||||||
@@ -1765,14 +1776,4 @@ public abstract class Layout {
|
|||||||
/* package */ static final Directions DIRS_ALL_RIGHT_TO_LEFT =
|
/* package */ static final Directions DIRS_ALL_RIGHT_TO_LEFT =
|
||||||
new Directions(new int[] { 0, RUN_LENGTH_MASK | RUN_RTL_FLAG });
|
new Directions(new int[] { 0, RUN_LENGTH_MASK | RUN_RTL_FLAG });
|
||||||
|
|
||||||
/**
|
|
||||||
* Inform this layout that not all of its lines will be displayed, because a maximum number of
|
|
||||||
* lines has been set on the associated TextView.
|
|
||||||
*
|
|
||||||
* A non positive value means that all lines are displayed.
|
|
||||||
*
|
|
||||||
* @param line line number of the last visible line (line numbers start at 1 for the first line)
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
public void setMaximumVisibleLineCount(int line) {}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -360,8 +360,6 @@ public class StaticLayout extends Layout
|
|||||||
okbottom = fitbottom;
|
okbottom = fitbottom;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ellipsize != null) {
|
|
||||||
// Break only at spaces using ok indexes.
|
|
||||||
if (ok != here) {
|
if (ok != here) {
|
||||||
// Log.e("text", "output ok " + here + " to " +ok);
|
// Log.e("text", "output ok " + here + " to " +ok);
|
||||||
|
|
||||||
@@ -377,43 +375,7 @@ public class StaticLayout extends Layout
|
|||||||
choosehtv, fm, hasTabOrEmoji,
|
choosehtv, fm, hasTabOrEmoji,
|
||||||
needMultiply, paraStart, chdirs, dir, easy,
|
needMultiply, paraStart, chdirs, dir, easy,
|
||||||
ok == bufend, includepad, trackpad,
|
ok == bufend, includepad, trackpad,
|
||||||
chs, widths, here - paraStart,
|
chs, widths, paraStart,
|
||||||
ellipsize, ellipsizedWidth, okwidth,
|
|
||||||
paint);
|
|
||||||
|
|
||||||
here = ok;
|
|
||||||
} else {
|
|
||||||
// Act like it fit even though it didn't.
|
|
||||||
|
|
||||||
fitwidth = w;
|
|
||||||
here = fit = j + 1;
|
|
||||||
|
|
||||||
if (fmtop < fittop)
|
|
||||||
fittop = fmtop;
|
|
||||||
if (fmascent < fitascent)
|
|
||||||
fitascent = fmascent;
|
|
||||||
if (fmdescent > fitdescent)
|
|
||||||
fitdescent = fmdescent;
|
|
||||||
if (fmbottom > fitbottom)
|
|
||||||
fitbottom = fmbottom;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (ok != here) {
|
|
||||||
// Log.e("text", "output ok " + here + " to " +ok);
|
|
||||||
|
|
||||||
while (ok < spanEnd && chs[ok - paraStart] == ' ') {
|
|
||||||
ok++;
|
|
||||||
}
|
|
||||||
|
|
||||||
v = out(source,
|
|
||||||
here, ok,
|
|
||||||
okascent, okdescent, oktop, okbottom,
|
|
||||||
v,
|
|
||||||
spacingmult, spacingadd, chooseht,
|
|
||||||
choosehtv, fm, hasTabOrEmoji,
|
|
||||||
needMultiply, paraStart, chdirs, dir, easy,
|
|
||||||
ok == bufend, includepad, trackpad,
|
|
||||||
chs, widths, here - paraStart,
|
|
||||||
ellipsize, ellipsizedWidth, okwidth,
|
ellipsize, ellipsizedWidth, okwidth,
|
||||||
paint);
|
paint);
|
||||||
|
|
||||||
@@ -429,7 +391,7 @@ public class StaticLayout extends Layout
|
|||||||
choosehtv, fm, hasTabOrEmoji,
|
choosehtv, fm, hasTabOrEmoji,
|
||||||
needMultiply, paraStart, chdirs, dir, easy,
|
needMultiply, paraStart, chdirs, dir, easy,
|
||||||
fit == bufend, includepad, trackpad,
|
fit == bufend, includepad, trackpad,
|
||||||
chs, widths, here - paraStart,
|
chs, widths, paraStart,
|
||||||
ellipsize, ellipsizedWidth, fitwidth,
|
ellipsize, ellipsizedWidth, fitwidth,
|
||||||
paint);
|
paint);
|
||||||
|
|
||||||
@@ -451,13 +413,12 @@ public class StaticLayout extends Layout
|
|||||||
needMultiply, paraStart, chdirs, dir, easy,
|
needMultiply, paraStart, chdirs, dir, easy,
|
||||||
here + 1 == bufend, includepad,
|
here + 1 == bufend, includepad,
|
||||||
trackpad,
|
trackpad,
|
||||||
chs, widths, here - paraStart,
|
chs, widths, paraStart,
|
||||||
ellipsize, ellipsizedWidth,
|
ellipsize, ellipsizedWidth,
|
||||||
widths[here - paraStart], paint);
|
widths[here - paraStart], paint);
|
||||||
|
|
||||||
here = here + 1;
|
here = here + 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (here < spanStart) {
|
if (here < spanStart) {
|
||||||
// didn't output all the text for this span
|
// didn't output all the text for this span
|
||||||
@@ -500,7 +461,7 @@ public class StaticLayout extends Layout
|
|||||||
choosehtv, fm, hasTabOrEmoji,
|
choosehtv, fm, hasTabOrEmoji,
|
||||||
needMultiply, paraStart, chdirs, dir, easy,
|
needMultiply, paraStart, chdirs, dir, easy,
|
||||||
paraEnd == bufend, includepad, trackpad,
|
paraEnd == bufend, includepad, trackpad,
|
||||||
chs, widths, here - paraStart,
|
chs, widths, paraStart,
|
||||||
ellipsize, ellipsizedWidth, w, paint);
|
ellipsize, ellipsizedWidth, w, paint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -620,19 +581,6 @@ public class StaticLayout extends Layout
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
private static void dump(byte[] data, int count, String label) {
|
|
||||||
if (false) {
|
|
||||||
System.out.print(label);
|
|
||||||
|
|
||||||
for (int i = 0; i < count; i++)
|
|
||||||
System.out.print(" " + data[i]);
|
|
||||||
|
|
||||||
System.out.println();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
private int out(CharSequence text, int start, int end,
|
private int out(CharSequence text, int start, int end,
|
||||||
int above, int below, int top, int bottom, int v,
|
int above, int below, int top, int bottom, int v,
|
||||||
float spacingmult, float spacingadd,
|
float spacingmult, float spacingadd,
|
||||||
@@ -735,8 +683,8 @@ public class StaticLayout extends Layout
|
|||||||
if (easy) {
|
if (easy) {
|
||||||
mLineDirections[j] = linedirs;
|
mLineDirections[j] = linedirs;
|
||||||
} else {
|
} else {
|
||||||
mLineDirections[j] = AndroidBidi.directions(dir, chdirs, widstart, chs,
|
mLineDirections[j] = AndroidBidi.directions(dir, chdirs, start - widstart, chs,
|
||||||
widstart, end - start);
|
start - widstart, end - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If ellipsize is in marquee mode, do not apply ellipsis on the first line
|
// If ellipsize is in marquee mode, do not apply ellipsis on the first line
|
||||||
@@ -875,7 +823,7 @@ public class StaticLayout extends Layout
|
|||||||
@Override
|
@Override
|
||||||
public int getLineDescent(int line) {
|
public int getLineDescent(int line) {
|
||||||
int descent = mLines[mColumns * line + DESCENT];
|
int descent = mLines[mColumns * line + DESCENT];
|
||||||
if (mMaximumVisibleLineCount > 0 && line >= mMaximumVisibleLineCount - 1 &&
|
if (mMaximumVisibleLineCount > 0 && line >= mMaximumVisibleLineCount - 1 && // -1 intended
|
||||||
line != mLineCount) {
|
line != mLineCount) {
|
||||||
descent += getBottomPadding();
|
descent += getBottomPadding();
|
||||||
}
|
}
|
||||||
@@ -939,8 +887,8 @@ public class StaticLayout extends Layout
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setMaximumVisibleLineCount(int line) {
|
public void setMaximumVisibleLineCount(int lineCount) {
|
||||||
mMaximumVisibleLineCount = line;
|
mMaximumVisibleLineCount = lineCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int mLineCount;
|
private int mLineCount;
|
||||||
|
|||||||
Reference in New Issue
Block a user