summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorMike Reed <reed@google.com>2009-09-29 17:02:26 -0400
committerMike Reed <reed@google.com>2009-09-29 17:02:26 -0400
commit4e03999ca20fd326e4ded3d7444ddd5c14f369c7 (patch)
tree33488089fb38c94e0a58fae04ebe832c75209235 /graphics
parentf993fefc3b14ece3f0f3eac6bb3d241bffb3cdfb (diff)
downloadframeworks_base-4e03999ca20fd326e4ded3d7444ddd5c14f369c7.zip
frameworks_base-4e03999ca20fd326e4ded3d7444ddd5c14f369c7.tar.gz
frameworks_base-4e03999ca20fd326e4ded3d7444ddd5c14f369c7.tar.bz2
if we have a single value for roundrect radius, manually clamp it before drawing.
Skia will clamp the radius independently in X and Y to ensure it is not larger than 1/2 the width (or height). If the caller to our drawable gives us a single value, we'll assume they want it to be circular, and not an oval. To do that, we clamp it up front, so we get (possibly smaller) circular corners, rather than potentially elliptical ones. This makes the progress bar look "nicer" when it is very thin in one dimension.
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/graphics/drawable/GradientDrawable.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index ddbbaf1..91a2bc1 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -319,7 +319,16 @@ public class GradientDrawable extends Drawable {
}
}
else {
+ // since the caller is only giving us 1 value, we will force
+ // it to be square if the rect is too small in one dimension
+ // to show it. If we did nothing, Skia would clamp the rad
+ // independently along each axis, giving us a thin ellips
+ // if the rect were very wide but not very tall
float rad = st.mRadius;
+ float r = Math.min(mRect.width(), mRect.height()) * 0.5f;
+ if (rad > r) {
+ rad = r;
+ }
canvas.drawRoundRect(mRect, rad, rad, mFillPaint);
if (haveStroke) {
canvas.drawRoundRect(mRect, rad, rad, mStrokePaint);