From 87e889b195de98334048bb70bb1263a2ab76c76a Mon Sep 17 00:00:00 2001 From: John Hoford Date: Fri, 1 Feb 2013 16:22:50 -0800 Subject: fix performance problem with large images in draw Change-Id: I9fa5a90e58273c6dd6e80d7d0bf07c3371a6f10e --- .../filtershow/colorpicker/ColorOpacityView.java | 17 +++++++++-------- .../gallery3d/filtershow/filters/ImageFilterDraw.java | 10 ++++------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/colorpicker/ColorOpacityView.java b/src/com/android/gallery3d/filtershow/colorpicker/ColorOpacityView.java index d773b6b77..2bff501f7 100644 --- a/src/com/android/gallery3d/filtershow/colorpicker/ColorOpacityView.java +++ b/src/com/android/gallery3d/filtershow/colorpicker/ColorOpacityView.java @@ -47,7 +47,7 @@ public class ColorOpacityView extends View implements ColorListener { private Paint mDotPaint; private int mBgcolor = 0; - private float mDotRadus; + private float mDotRadius; private float mBorder; private float[] mHSVO = new float[4]; @@ -61,7 +61,7 @@ public class ColorOpacityView extends View implements ColorListener { super(ctx, attrs); DisplayMetrics metrics = ctx.getResources().getDisplayMetrics(); float mDpToPix = metrics.density; - mDotRadus = DOT_SIZE * mDpToPix; + mDotRadius = DOT_SIZE * mDpToPix; mBorder = BORDER_SIZE * mDpToPix; mBarPaint1 = new Paint(); @@ -115,10 +115,11 @@ public class ColorOpacityView extends View implements ColorListener { mHSVO[3] = (mDotX - mBorder) / (mWidth - mBorder * 2); notifyColorListeners(mHSVO); setupButton(); - invalidate((int) (ox - mDotRadus), (int) (oy - mDotRadus), (int) (ox + mDotRadus), - (int) (oy + mDotRadus)); - invalidate((int) (mDotX - mDotRadus), (int) (mDotY - mDotRadus), (int) (mDotX + mDotRadus), - (int) (mDotY + mDotRadus)); + invalidate((int) (ox - mDotRadius), (int) (oy - mDotRadius), (int) (ox + mDotRadius), + (int) (oy + mDotRadius)); + invalidate( + (int) (mDotX - mDotRadius), (int) (mDotY - mDotRadius), (int) (mDotX + mDotRadius), + (int) (mDotY + mDotRadius)); return true; } @@ -129,7 +130,7 @@ public class ColorOpacityView extends View implements ColorListener { int[] colors3 = new int[] { mSliderColor, mSliderColor, 0x66000000, 0 }; - RadialGradient g = new RadialGradient(mDotX, mDotY, mDotRadus, colors3, new float[] { + RadialGradient g = new RadialGradient(mDotX, mDotY, mDotRadius, colors3, new float[] { 0, .3f, .31f, 1 }, Shader.TileMode.CLAMP); mDotPaint.setShader(g); } @@ -163,7 +164,7 @@ public class ColorOpacityView extends View implements ColorListener { canvas.drawLine(mDotX, mDotY, mWidth - mBorder, mDotY, mLinePaint1); canvas.drawLine(mBorder, mDotY, mDotX, mDotY, mLinePaint2); if (mDotX != Float.NaN) { - canvas.drawCircle(mDotX, mDotY, mDotRadus, mDotPaint); + canvas.drawCircle(mDotX, mDotY, mDotRadius, mDotPaint); } } diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java index fac9e99a9..3177d2473 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java @@ -24,7 +24,6 @@ import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.PathMeasure; -import android.util.Log; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.editors.EditorDraw; @@ -280,14 +279,13 @@ public class ImageFilterDraw extends ImageFilter { return; } Paint paint = new Paint(); - - canvas.save(); - canvas.concat(toScrMatrix); paint.setStyle(Style.STROKE); float scale = toScrMatrix.mapRadius(1); - draw(canvas, paint, mCurrentColor, mCurrentRadius, path); - canvas.restore(); + Path mCacheTransPath = new Path(); + mCacheTransPath.addPath(path, toScrMatrix); + draw(canvas, paint, mCurrentColor, toScrMatrix.mapRadius(mCurrentRadius), + mCacheTransPath); } @Override -- cgit v1.2.3