diff options
| author | Eric Fischer <enf@google.com> | 2010-02-23 16:45:41 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-02-23 16:45:41 -0800 |
| commit | 8ca1228168d05533b4810be337bb400356b2379e (patch) | |
| tree | cbac7f57bd3d5fca07fae9460cb05a270730cbd6 | |
| parent | c1ba7431a45dbf10f211e7b0bbf5b03e64bf020c (diff) | |
| parent | 1065758a0f8966a8597a61492112f7859a7050a4 (diff) | |
| download | frameworks_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.java | 12 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/text/StaticLayoutTest.java | 4 |
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; } } |
