summaryrefslogtreecommitdiff
path: root/core/java/android/text/StaticLayout.java
diff options
context:
space:
mode:
authorDoug Felt <dougfelt@google.com>2010-02-22 11:19:01 -0800
committerDoug Felt <dougfelt@google.com>2010-02-22 14:14:57 -0800
commit1065758a0f8966a8597a61492112f7859a7050a4 (patch)
tree0bfbb5c2d4eab9a59cdd3e2fc123c46c80a9647d /core/java/android/text/StaticLayout.java
parent4bd222f1072513b21cd66d6f983ebdccb6d9b0c8 (diff)
Fix rounding of extra spacing when it is negative.
Diffstat (limited to 'core/java/android/text/StaticLayout.java')
-rw-r--r--core/java/android/text/StaticLayout.java12
1 files changed, 6 insertions, 6 deletions
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index 6c89f92f1bcd..6de9c65d6886 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;
}