summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Fischer <enf@google.com>2010-02-23 16:45:41 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-02-23 16:45:41 -0800
commit8ca1228168d05533b4810be337bb400356b2379e (patch)
treecbac7f57bd3d5fca07fae9460cb05a270730cbd6
parentc1ba7431a45dbf10f211e7b0bbf5b03e64bf020c (diff)
parent1065758a0f8966a8597a61492112f7859a7050a4 (diff)
downloadframeworks_base-8ca1228168d05533b4810be337bb400356b2379e.zip
frameworks_base-8ca1228168d05533b4810be337bb400356b2379e.tar.gz
frameworks_base-8ca1228168d05533b4810be337bb400356b2379e.tar.bz2
Merge "Fix rounding of extra spacing when it is negative."
-rw-r--r--core/java/android/text/StaticLayout.java12
-rw-r--r--core/tests/coretests/src/android/text/StaticLayoutTest.java4
2 files changed, 8 insertions, 8 deletions
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index 6c89f92..6de9c65 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -1012,12 +1012,12 @@ extends Layout
int extra;
if (needMultiply) {
- // XXX: this looks like it is using the +0.5 and the cast to int
- // to do rounding, but this I expect this isn't doing the intended
- // thing when spacingmult < 1. An intended extra of, say, -1.2
- // will get 'rounded' to -.7 and then truncated to 0.
- extra = (int) ((below - above) * (spacingmult - 1)
- + spacingadd + 0.5);
+ double ex = (below - above) * (spacingmult - 1) + spacingadd;
+ if (ex >= 0) {
+ extra = (int)(ex + 0.5);
+ } else {
+ extra = -(int)(-ex + 0.5);
+ }
} else {
extra = 0;
}
diff --git a/core/tests/coretests/src/android/text/StaticLayoutTest.java b/core/tests/coretests/src/android/text/StaticLayoutTest.java
index 1e4db3d..7511ec1 100644
--- a/core/tests/coretests/src/android/text/StaticLayoutTest.java
+++ b/core/tests/coretests/src/android/text/StaticLayoutTest.java
@@ -213,13 +213,13 @@ public class StaticLayoutTest extends TestCase {
}
public int scale(float height) {
- int altVal = (int)(height * sMult + sAdd + 0.5); // existing impl
+ int altVal = (int)(height * sMult + sAdd + 0.5);
int rndVal = Math.round(height * sMult + sAdd);
if (altVal != rndVal) {
Log.i("Scale", "expected scale: " + rndVal +
" != returned scale: " + altVal);
}
- return altVal; // existing implementation
+ return rndVal;
}
}