Fixed wallpaper bug where wrong size was taken when cropping

When cropping, the selected area of the image was incorrectly
cropped to the size of the view instead of the size of the image

Bug: 13617446
Change-Id: If54a0891fa2cdeee70ba63752874f1543d401701
This commit is contained in:
Selim Cinek
2014-03-24 13:53:06 +01:00
parent 83da75d938
commit c41853cee8

View File

@@ -346,16 +346,17 @@ public class WallpaperCropActivity extends Activity {
// Get the crop // Get the crop
RectF cropRect = mCropView.getCrop(); RectF cropRect = mCropView.getCrop();
Point inSize = mCropView.getSourceDimensions();
// Due to rounding errors in the cropview renderer the edges can be slightly offset // Due to rounding errors in the cropview renderer the edges can be slightly offset
// therefore we ensure that the boundaries are sanely defined // therefore we ensure that the boundaries are sanely defined
cropRect.left = Math.max(0, cropRect.left); cropRect.left = Math.max(0, cropRect.left);
cropRect.right = Math.min(mCropView.getWidth(), cropRect.right); cropRect.right = Math.min(inSize.x, cropRect.right);
cropRect.top = Math.max(0, cropRect.top); cropRect.top = Math.max(0, cropRect.top);
cropRect.bottom = Math.min(mCropView.getHeight(), cropRect.bottom); cropRect.bottom = Math.min(inSize.y, cropRect.bottom);
int cropRotation = mCropView.getImageRotation(); int cropRotation = mCropView.getImageRotation();
float cropScale = mCropView.getWidth() / (float) cropRect.width(); float cropScale = mCropView.getWidth() / (float) cropRect.width();
Point inSize = mCropView.getSourceDimensions();
Matrix rotateMatrix = new Matrix(); Matrix rotateMatrix = new Matrix();
rotateMatrix.setRotate(cropRotation); rotateMatrix.setRotate(cropRotation);
float[] rotatedInSize = new float[] { inSize.x, inSize.y }; float[] rotatedInSize = new float[] { inSize.x, inSize.y };