Merge "Change TabStop type from int to float"

This commit is contained in:
TreeHugger Robot
2019-03-13 23:00:28 +00:00
committed by Android (Google) Code Review
5 changed files with 36 additions and 33 deletions

View File

@@ -15929,13 +15929,13 @@ package android.graphics.text {
public static class LineBreaker.ParagraphConstraints {
ctor public LineBreaker.ParagraphConstraints();
method @Px @IntRange(from=0) public int getDefaultTabStop();
method @Px @FloatRange(from=0) public float getDefaultTabStop();
method @Px @FloatRange(from=0.0f) public float getFirstWidth();
method @Px @IntRange(from=0) public int getFirstWidthLineCount();
method @Nullable public int[] getTabStops();
method @Nullable public float[] getTabStops();
method @Px @FloatRange(from=0.0f) public float getWidth();
method public void setIndent(@Px @FloatRange(from=0.0f) float, @Px @IntRange(from=0) int);
method public void setTabStops(@Nullable int[], @Px @IntRange(from=0) int);
method public void setTabStops(@Nullable float[], @Px @FloatRange(from=0) float);
method public void setWidth(@Px @FloatRange(from=0.0f) float);
}

View File

@@ -2192,26 +2192,26 @@ public abstract class Layout {
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
public static class TabStops {
private int[] mStops;
private float[] mStops;
private int mNumStops;
private int mIncrement;
private float mIncrement;
public TabStops(int increment, Object[] spans) {
public TabStops(float increment, Object[] spans) {
reset(increment, spans);
}
void reset(int increment, Object[] spans) {
void reset(float increment, Object[] spans) {
this.mIncrement = increment;
int ns = 0;
if (spans != null) {
int[] stops = this.mStops;
float[] stops = this.mStops;
for (Object o : spans) {
if (o instanceof TabStopSpan) {
if (stops == null) {
stops = new int[10];
stops = new float[10];
} else if (ns == stops.length) {
int[] nstops = new int[ns * 2];
float[] nstops = new float[ns * 2];
for (int i = 0; i < ns; ++i) {
nstops[i] = stops[i];
}
@@ -2233,9 +2233,9 @@ public abstract class Layout {
float nextTab(float h) {
int ns = this.mNumStops;
if (ns > 0) {
int[] stops = this.mStops;
float[] stops = this.mStops;
for (int i = 0; i < ns; ++i) {
int stop = stops[i];
float stop = stops[i];
if (stop > h) {
return stop;
}
@@ -2244,7 +2244,10 @@ public abstract class Layout {
return nextDefaultStop(h, mIncrement);
}
public static float nextDefaultStop(float h, int inc) {
/**
* Returns the position of next tab stop.
*/
public static float nextDefaultStop(float h, float inc) {
return ((int) ((h + inc) / inc)) * inc;
}
}
@@ -2582,7 +2585,7 @@ public abstract class Layout {
ALIGN_RIGHT,
}
private static final int TAB_INCREMENT = 20;
private static final float TAB_INCREMENT = 20;
/** @hide */
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)

View File

@@ -737,14 +737,14 @@ public class StaticLayout extends Layout {
}
}
// tab stop locations
int[] variableTabStops = null;
float[] variableTabStops = null;
if (spanned != null) {
TabStopSpan[] spans = getParagraphSpans(spanned, paraStart,
paraEnd, TabStopSpan.class);
if (spans.length > 0) {
int[] stops = new int[spans.length];
float[] stops = new float[spans.length];
for (int i = 0; i < spans.length; i++) {
stops[i] = spans[i].getTabStop();
stops[i] = (float) spans[i].getTabStop();
}
Arrays.sort(stops, 0, stops.length);
variableTabStops = stops;
@@ -1422,7 +1422,7 @@ public class StaticLayout extends Layout {
private static final int START_HYPHEN_MASK = 0x18; // 0b11000
private static final int END_HYPHEN_MASK = 0x7; // 0b00111
private static final int TAB_INCREMENT = 20; // same as Layout, but that's private
private static final float TAB_INCREMENT = 20; // same as Layout, but that's private
private static final char CHAR_NEW_LINE = '\n';

View File

@@ -80,13 +80,13 @@ static jlong nComputeLineBreaks(JNIEnv* env, jclass, jlong nativePtr,
jfloat firstWidth,
jint firstWidthLineCount,
jfloat restWidth,
jintArray variableTabStops,
jint defaultTabStop,
jfloatArray variableTabStops,
jfloat defaultTabStop,
jint indentsOffset) {
minikin::android::StaticLayoutNative* builder = toNative(nativePtr);
ScopedCharArrayRO text(env, javaText);
ScopedNullableIntArrayRO tabStops(env, variableTabStops);
ScopedNullableFloatArrayRO tabStops(env, variableTabStops);
minikin::U16StringPiece u16Text(text.get(), length);
minikin::MeasuredText* measuredText = reinterpret_cast<minikin::MeasuredText*>(measuredTextPtr);
@@ -151,8 +151,8 @@ static const JNINativeMethod gMethods[] = {
"F" // firstWidth
"I" // firstWidthLineCount
"F" // restWidth
"[I" // variableTabStops
"I" // defaultTabStop
"[F" // variableTabStops
"F" // defaultTabStop
"I" // indentsOffset
")J", (void*) nComputeLineBreaks},

View File

@@ -248,8 +248,8 @@ public class LineBreaker {
private @FloatRange(from = 0.0f) float mWidth = 0;
private @FloatRange(from = 0.0f) float mFirstWidth = 0;
private @IntRange(from = 0) int mFirstWidthLineCount = 0;
private @Nullable int[] mVariableTabStops = null;
private @IntRange(from = 0) int mDefaultTabStop = 0;
private @Nullable float[] mVariableTabStops = null;
private @FloatRange(from = 0) float mDefaultTabStop = 0;
public ParagraphConstraints() {}
@@ -284,8 +284,8 @@ public class LineBreaker {
* @see #getTabStops()
* @see #getDefaultTabStop()
*/
public void setTabStops(@Nullable int[] tabStops,
@Px @IntRange(from = 0) int defaultTabStop) {
public void setTabStops(@Nullable float[] tabStops,
@Px @FloatRange(from = 0) float defaultTabStop) {
mVariableTabStops = tabStops;
mDefaultTabStop = defaultTabStop;
}
@@ -320,18 +320,18 @@ public class LineBreaker {
/**
* Returns the array of tab stops in pixels.
*
* @see #setTabStops(int[], int)
* @see #setTabStops(float[], int)
*/
public @Nullable int[] getTabStops() {
public @Nullable float[] getTabStops() {
return mVariableTabStops;
}
/**
* Returns the default tab stops in pixels.
*
* @see #setTabStop(int[], int)
* @see #setTabStop(float[], int)
*/
public @Px @IntRange(from = 0) int getDefaultTabStop() {
public @Px @FloatRange(from = 0) float getDefaultTabStop() {
return mDefaultTabStop;
}
}
@@ -513,8 +513,8 @@ public class LineBreaker {
@FloatRange(from = 0.0f) float firstWidth,
@IntRange(from = 0) int firstWidthLineCount,
@FloatRange(from = 0.0f) float restWidth,
@Nullable int[] variableTabStops,
int defaultTabStop,
@Nullable float[] variableTabStops,
float defaultTabStop,
@IntRange(from = 0) int indentsOffset);
// Result accessors