From eb95e74e21a0e910704ca2fd67e074ab640bfba3 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 14 Mar 2014 18:42:48 +0100 Subject: DO NOT MERGE - Fixed crash for odd image width/height Due to an internal rounding in the renderer, the calculations for the cropping area could be slightly offset, getting out of the image boundaries. I sanitized the rect by ensuring they are inside the image. Bug: 12174629 Change-Id: Icc37790732ddd479631b898b23c05501d2dcd5be --- .../src/com/android/wallpapercropper/WallpaperCropActivity.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java index 57c0581b8f87..7b3f112ff8c6 100644 --- a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java +++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java @@ -340,6 +340,13 @@ public class WallpaperCropActivity extends Activity { getWindowManager()); // Get the crop RectF cropRect = mCropView.getCrop(); + + // Due to rounding errors in the cropview renderer the edges can be slightly offset + // therefore we ensure that the boundaries are sanely defined + cropRect.left = Math.max(0, cropRect.left); + cropRect.right = Math.min(mCropView.getWidth(), cropRect.right); + cropRect.top = Math.max(0, cropRect.top); + cropRect.bottom = Math.min(mCropView.getHeight(), cropRect.bottom); int cropRotation = mCropView.getImageRotation(); float cropScale = mCropView.getWidth() / (float) cropRect.width(); -- cgit v1.2.3-59-g8ed1b