From 94754ef36d1ceacb9a335202585e60c82b1f4b0d Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Tue, 19 Jun 2012 17:38:04 -0700 Subject: Fix 6656710: center dot pattern in GlowPadView This fixes a bug where the dots weren't aligned with the center of the view. The matrix should not contain the offset of the image itself since we really want to scale about the abstract points. The code now subtracts the image centering positions (cx,cy) from the point to be scaled. Change-Id: I1d46a5d51b1fd1d39944c64baf86c306c2d5e923 --- .../android/internal/widget/multiwaveview/PointCloud.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/java/com/android/internal/widget/multiwaveview/PointCloud.java b/core/java/com/android/internal/widget/multiwaveview/PointCloud.java index 1a5a9a2332e3..bbd1276be6fe 100644 --- a/core/java/com/android/internal/widget/multiwaveview/PointCloud.java +++ b/core/java/com/android/internal/widget/multiwaveview/PointCloud.java @@ -202,25 +202,25 @@ public class PointCloud { public void draw(Canvas canvas) { ArrayList points = mPointCloud; - final float cx = mDrawable != null ? (-mDrawable.getIntrinsicWidth() / 2) : 0; - final float cy = mDrawable != null ? (-mDrawable.getIntrinsicHeight() / 2) : 0; canvas.save(Canvas.MATRIX_SAVE_FLAG); canvas.scale(mScale, mScale, mCenterX, mCenterY); for (int i = 0; i < points.size(); i++) { Point point = points.get(i); final float pointSize = interp(MAX_POINT_SIZE, MIN_POINT_SIZE, point.radius / mOuterRadius); - final float px = point.x + cx + mCenterX; - final float py = point.y + cy + mCenterY; + final float px = point.x + mCenterX; + final float py = point.y + mCenterY; int alpha = getAlphaForPoint(point); if (alpha == 0) continue; if (mDrawable != null) { canvas.save(Canvas.MATRIX_SAVE_FLAG); - float s = pointSize / MAX_POINT_SIZE; + final float cx = mDrawable.getIntrinsicWidth() * 0.5f; + final float cy = mDrawable.getIntrinsicHeight() * 0.5f; + final float s = pointSize / MAX_POINT_SIZE; canvas.scale(s, s, px, py); - canvas.translate(px, py); + canvas.translate(px - cx, py - cy); mDrawable.setAlpha(alpha); mDrawable.draw(canvas); canvas.restore(); -- cgit v1.2.3-59-g8ed1b