diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
| commit | f013e1afd1e68af5e3b868c26a653bbfb39538f8 (patch) | |
| tree | 7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf /core/java/android/text/style | |
| parent | e70cfafe580c6f2994c4827cd8a534aabf3eb05c (diff) | |
| download | frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.zip frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.tar.gz frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.tar.bz2 | |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'core/java/android/text/style')
| -rw-r--r-- | core/java/android/text/style/DynamicDrawableSpan.java | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/core/java/android/text/style/DynamicDrawableSpan.java b/core/java/android/text/style/DynamicDrawableSpan.java index 3bcc335..dd89b68 100644 --- a/core/java/android/text/style/DynamicDrawableSpan.java +++ b/core/java/android/text/style/DynamicDrawableSpan.java @@ -16,11 +16,12 @@ package android.text.style; -import java.lang.ref.WeakReference; - -import android.graphics.drawable.Drawable; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; + +import java.lang.ref.WeakReference; /** * @@ -35,48 +36,51 @@ extends ReplacementSpan */ public abstract Drawable getDrawable(); + @Override public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) { - Drawable b = getCachedDrawable(); + Drawable d = getCachedDrawable(); + Rect rect = d.getBounds(); if (fm != null) { - fm.ascent = -b.getIntrinsicHeight(); - fm.descent = 0; + fm.ascent = -rect.bottom; + fm.descent = 0; fm.top = fm.ascent; fm.bottom = 0; } - return b.getIntrinsicWidth(); + return rect.right; } + @Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { Drawable b = getCachedDrawable(); canvas.save(); - canvas.translate(x, bottom-b.getIntrinsicHeight());; + canvas.translate(x, bottom - b.getBounds().bottom); b.draw(canvas); canvas.restore(); } private Drawable getCachedDrawable() { - WeakReference wr = mDrawableRef; - Drawable b = null; + WeakReference<Drawable> wr = mDrawableRef; + Drawable d = null; if (wr != null) - b = (Drawable) wr.get(); + d = wr.get(); - if (b == null) { - b = getDrawable(); - mDrawableRef = new WeakReference(b); + if (d == null) { + d = getDrawable(); + mDrawableRef = new WeakReference<Drawable>(d); } - return b; + return d; } - private WeakReference mDrawableRef; + private WeakReference<Drawable> mDrawableRef; } |
