Merge change 3701 into donut

* changes:
  Fix the way gestures are rasterized to bitmaps.
This commit is contained in:
Android (Google) Code Review
2009-06-10 01:22:48 -07:00
2 changed files with 20 additions and 10 deletions

View File

@@ -216,16 +216,15 @@ public class Gesture implements Parcelable {
*
* @param width
* @param height
* @param edge
* @param inset
* @param color
* @return the bitmap
*/
public Bitmap toBitmap(int width, int height, int edge, int color) {
final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
public Bitmap toBitmap(int width, int height, int inset, int color) {
final Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
canvas.translate(edge, edge);
final Paint paint = new Paint();
paint.setAntiAlias(BITMAP_RENDERING_ANTIALIAS);
paint.setDither(BITMAP_RENDERING_DITHER);
@@ -235,12 +234,22 @@ public class Gesture implements Parcelable {
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(BITMAP_RENDERING_WIDTH);
final ArrayList<GestureStroke> strokes = mStrokes;
final int count = strokes.size();
final Path path = toPath();
final RectF bounds = new RectF();
path.computeBounds(bounds, true);
for (int i = 0; i < count; i++) {
strokes.get(i).draw(canvas, paint);
}
final float sx = (width - 2 * inset) / bounds.width();
final float sy = (height - 2 * inset) / bounds.height();
final float scale = sx > sy ? sy : sx;
paint.setStrokeWidth(2.0f / scale);
path.offset(-bounds.left + (width - bounds.width() * scale) / 2.0f,
-bounds.top + (height - bounds.height() * scale) / 2.0f);
canvas.translate(inset, inset);
canvas.scale(scale, scale);
canvas.drawPath(path, paint);
return bitmap;
}

View File

@@ -294,6 +294,7 @@ public class GestureOverlayView extends FrameLayout {
final RectF bounds = new RectF();
path.computeBounds(bounds, true);
// TODO: The path should also be scaled to fit inside this view
mPath.rewind();
mPath.addPath(path, -bounds.left + (getWidth() - bounds.width()) / 2.0f,
-bounds.top + (getHeight() - bounds.height()) / 2.0f);