Loading res/values/crop_colors.xml +2 −0 Original line number Diff line number Diff line Loading @@ -15,4 +15,6 @@ --> <resources> <color name="crop_shadow_color">#CF000000</color> <color name="crop_shadow_wp_color">#5F000000</color> <color name="crop_wp_markers">#7FFFFFFF</color> </resources> src/com/android/gallery3d/filtershow/crop/CropActivity.java +2 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,8 @@ public class CropActivity extends Activity { if (aspectX > 0 && aspectY > 0) { mCropView.applyAspect(aspectX, aspectY); } mCropView.setWallpaperSpotlight(mCropExtras.getSpotlightX(), mCropExtras.getSpotlightY()); } enableSave(true); } else { Loading src/com/android/gallery3d/filtershow/crop/CropDrawingUtils.java +35 −0 Original line number Diff line number Diff line Loading @@ -20,7 +20,9 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.graphics.Region; import android.graphics.drawable.Drawable; public abstract class CropDrawingUtils { Loading Loading @@ -92,6 +94,39 @@ public abstract class CropDrawingUtils { } } public static void drawWallpaperSelectionFrame(Canvas canvas, RectF cropBounds, float spotX, float spotY, Paint p, Paint shadowPaint) { float sx = cropBounds.width() * spotX; float sy = cropBounds.height() * spotY; float cx = cropBounds.centerX(); float cy = cropBounds.centerY(); RectF r1 = new RectF(cx - sx / 2, cy - sy / 2, cx + sx / 2, cy + sy / 2); float temp = sx; sx = sy; sy = temp; RectF r2 = new RectF(cx - sx / 2, cy - sy / 2, cx + sx / 2, cy + sy / 2); canvas.save(); canvas.clipRect(cropBounds); canvas.clipRect(r1, Region.Op.DIFFERENCE); canvas.clipRect(r2, Region.Op.DIFFERENCE); canvas.drawPaint(shadowPaint); canvas.restore(); Path path = new Path(); path.moveTo(r1.left, r1.top); path.lineTo(r1.left, r1.bottom); path.moveTo(r1.right, r1.top); path.lineTo(r1.right, r1.bottom); path.moveTo(r2.left, r2.top); path.lineTo(r2.right, r2.top); path.moveTo(r2.right, r2.top); path.lineTo(r2.right, r2.bottom); path.moveTo(r2.left, r2.bottom); path.lineTo(r2.right, r2.bottom); path.moveTo(r2.left, r2.top); path.lineTo(r2.left, r2.bottom); canvas.drawPath(path, p); } public static void drawShadows(Canvas canvas, Paint p, RectF innerBounds, RectF outerBounds) { canvas.drawRect(outerBounds.left, outerBounds.top, innerBounds.right, innerBounds.top, p); canvas.drawRect(innerBounds.right, outerBounds.top, outerBounds.right, innerBounds.bottom, Loading src/com/android/gallery3d/filtershow/crop/CropView.java +32 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.DashPathEffect; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; Loading @@ -32,7 +34,6 @@ import android.view.MotionEvent; import android.view.View; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.crop.CropDrawingUtils; public class CropView extends View { Loading @@ -59,10 +60,15 @@ public class CropView extends View { private float mPrevX = 0; private float mPrevY = 0; private float mSpotX = 0; private float mSpotY = 0; private boolean mDoSpot = false; private int mShadowMargin = 15; private int mMargin = 32; private int mOverlayShadowColor = 0xCF000000; private int mOverlayWPShadowColor = 0x5F000000; private int mWPMarkerColor = 0x7FFFFFFF; private int mMinSideSize = 90; private int mTouchTolerance = 40; Loading @@ -83,6 +89,8 @@ public class CropView extends View { mMinSideSize = (int) rsc.getDimension(R.dimen.crop_min_side); mTouchTolerance = (int) rsc.getDimension(R.dimen.crop_touch_tolerance); mOverlayShadowColor = (int) rsc.getColor(R.color.crop_shadow_color); mOverlayWPShadowColor = (int) rsc.getColor(R.color.crop_shadow_wp_color); mWPMarkerColor = (int) rsc.getColor(R.color.crop_wp_markers); } public void initialize(Bitmap image, RectF newCropBounds, RectF newPhotoBounds, int rotation) { Loading Loading @@ -210,6 +218,18 @@ public class CropView extends View { invalidate(); } public void setWallpaperSpotlight(float spotlightX, float spotlightY) { mSpotX = spotlightX; mSpotY = spotlightY; if (mSpotX > 0 && mSpotY > 0) { mDoSpot = true; } } public void unsetWallpaperSpotlight() { mDoSpot = false; } @Override public void onDraw(Canvas canvas) { if (mBitmap == null) { Loading Loading @@ -280,7 +300,17 @@ public class CropView extends View { // Draw crop rect and markers CropDrawingUtils.drawCropRect(canvas, mScreenCropBounds); if (!mDoSpot) { CropDrawingUtils.drawRuleOfThird(canvas, mScreenCropBounds); } else { Paint wpPaint = new Paint(); wpPaint.setColor(mWPMarkerColor); wpPaint.setStrokeWidth(3); wpPaint.setStyle(Paint.Style.STROKE); wpPaint.setPathEffect(new DashPathEffect(new float[] {20, 30}, 0)); p.setColor(mOverlayWPShadowColor); CropDrawingUtils.drawWallpaperSelectionFrame(canvas, mScreenCropBounds, mSpotX, mSpotY, wpPaint, p); } CropDrawingUtils.drawIndicators(canvas, mCropIndicator, mIndicatorSize, mScreenCropBounds, mCropObj.isFixedAspect(), mCropObj.getSelectState()); } Loading Loading
res/values/crop_colors.xml +2 −0 Original line number Diff line number Diff line Loading @@ -15,4 +15,6 @@ --> <resources> <color name="crop_shadow_color">#CF000000</color> <color name="crop_shadow_wp_color">#5F000000</color> <color name="crop_wp_markers">#7FFFFFFF</color> </resources>
src/com/android/gallery3d/filtershow/crop/CropActivity.java +2 −0 Original line number Diff line number Diff line Loading @@ -202,6 +202,8 @@ public class CropActivity extends Activity { if (aspectX > 0 && aspectY > 0) { mCropView.applyAspect(aspectX, aspectY); } mCropView.setWallpaperSpotlight(mCropExtras.getSpotlightX(), mCropExtras.getSpotlightY()); } enableSave(true); } else { Loading
src/com/android/gallery3d/filtershow/crop/CropDrawingUtils.java +35 −0 Original line number Diff line number Diff line Loading @@ -20,7 +20,9 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.graphics.Region; import android.graphics.drawable.Drawable; public abstract class CropDrawingUtils { Loading Loading @@ -92,6 +94,39 @@ public abstract class CropDrawingUtils { } } public static void drawWallpaperSelectionFrame(Canvas canvas, RectF cropBounds, float spotX, float spotY, Paint p, Paint shadowPaint) { float sx = cropBounds.width() * spotX; float sy = cropBounds.height() * spotY; float cx = cropBounds.centerX(); float cy = cropBounds.centerY(); RectF r1 = new RectF(cx - sx / 2, cy - sy / 2, cx + sx / 2, cy + sy / 2); float temp = sx; sx = sy; sy = temp; RectF r2 = new RectF(cx - sx / 2, cy - sy / 2, cx + sx / 2, cy + sy / 2); canvas.save(); canvas.clipRect(cropBounds); canvas.clipRect(r1, Region.Op.DIFFERENCE); canvas.clipRect(r2, Region.Op.DIFFERENCE); canvas.drawPaint(shadowPaint); canvas.restore(); Path path = new Path(); path.moveTo(r1.left, r1.top); path.lineTo(r1.left, r1.bottom); path.moveTo(r1.right, r1.top); path.lineTo(r1.right, r1.bottom); path.moveTo(r2.left, r2.top); path.lineTo(r2.right, r2.top); path.moveTo(r2.right, r2.top); path.lineTo(r2.right, r2.bottom); path.moveTo(r2.left, r2.bottom); path.lineTo(r2.right, r2.bottom); path.moveTo(r2.left, r2.top); path.lineTo(r2.left, r2.bottom); canvas.drawPath(path, p); } public static void drawShadows(Canvas canvas, Paint p, RectF innerBounds, RectF outerBounds) { canvas.drawRect(outerBounds.left, outerBounds.top, innerBounds.right, innerBounds.top, p); canvas.drawRect(innerBounds.right, outerBounds.top, outerBounds.right, innerBounds.bottom, Loading
src/com/android/gallery3d/filtershow/crop/CropView.java +32 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.DashPathEffect; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; Loading @@ -32,7 +34,6 @@ import android.view.MotionEvent; import android.view.View; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.crop.CropDrawingUtils; public class CropView extends View { Loading @@ -59,10 +60,15 @@ public class CropView extends View { private float mPrevX = 0; private float mPrevY = 0; private float mSpotX = 0; private float mSpotY = 0; private boolean mDoSpot = false; private int mShadowMargin = 15; private int mMargin = 32; private int mOverlayShadowColor = 0xCF000000; private int mOverlayWPShadowColor = 0x5F000000; private int mWPMarkerColor = 0x7FFFFFFF; private int mMinSideSize = 90; private int mTouchTolerance = 40; Loading @@ -83,6 +89,8 @@ public class CropView extends View { mMinSideSize = (int) rsc.getDimension(R.dimen.crop_min_side); mTouchTolerance = (int) rsc.getDimension(R.dimen.crop_touch_tolerance); mOverlayShadowColor = (int) rsc.getColor(R.color.crop_shadow_color); mOverlayWPShadowColor = (int) rsc.getColor(R.color.crop_shadow_wp_color); mWPMarkerColor = (int) rsc.getColor(R.color.crop_wp_markers); } public void initialize(Bitmap image, RectF newCropBounds, RectF newPhotoBounds, int rotation) { Loading Loading @@ -210,6 +218,18 @@ public class CropView extends View { invalidate(); } public void setWallpaperSpotlight(float spotlightX, float spotlightY) { mSpotX = spotlightX; mSpotY = spotlightY; if (mSpotX > 0 && mSpotY > 0) { mDoSpot = true; } } public void unsetWallpaperSpotlight() { mDoSpot = false; } @Override public void onDraw(Canvas canvas) { if (mBitmap == null) { Loading Loading @@ -280,7 +300,17 @@ public class CropView extends View { // Draw crop rect and markers CropDrawingUtils.drawCropRect(canvas, mScreenCropBounds); if (!mDoSpot) { CropDrawingUtils.drawRuleOfThird(canvas, mScreenCropBounds); } else { Paint wpPaint = new Paint(); wpPaint.setColor(mWPMarkerColor); wpPaint.setStrokeWidth(3); wpPaint.setStyle(Paint.Style.STROKE); wpPaint.setPathEffect(new DashPathEffect(new float[] {20, 30}, 0)); p.setColor(mOverlayWPShadowColor); CropDrawingUtils.drawWallpaperSelectionFrame(canvas, mScreenCropBounds, mSpotX, mSpotY, wpPaint, p); } CropDrawingUtils.drawIndicators(canvas, mCropIndicator, mIndicatorSize, mScreenCropBounds, mCropObj.isFixedAspect(), mCropObj.getSelectState()); } Loading