From 589211113909726cd97e2dca7326ac1bb9e5a552 Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Sun, 21 Oct 2012 15:39:44 -0700 Subject: Fix several issues with crop/straighten bug:7386266 bug:7386270 bug:7385727 - use a transparent white for the bounds instead of green - add "rule of third" lines to the crop tool - improves preview image quality for geometric operations Change-Id: I94c233e7ea89d67451e7808fb71537d03a1c183d --- .../filtershow/filters/ImageFilterGeometry.java | 6 +++++- .../gallery3d/filtershow/imageshow/ImageCrop.java | 25 +++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java index b9c94b634..2c7ed2dd8 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java @@ -105,7 +105,11 @@ public class ImageFilterGeometry extends ImageFilter { bitmap.getWidth() / rp.width(), null); */ Canvas canvas = new Canvas(temp); - canvas.drawBitmap(bitmap, drawMatrix, new Paint()); + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setFilterBitmap(true); + paint.setDither(true); + canvas.drawBitmap(bitmap, drawMatrix, paint); return temp; } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java index 3f8326d14..a57868ce9 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java @@ -57,6 +57,7 @@ public class ImageCrop extends ImageGeometry { private int movingEdges; private final Drawable cropIndicator; private final int indicatorSize; + private final int mBorderColor = Color.argb(128, 255, 255, 255); private static final String LOGTAG = "ImageCrop"; @@ -67,10 +68,9 @@ public class ImageCrop extends ImageGeometry { Resources resources = context.getResources(); cropIndicator = resources.getDrawable(R.drawable.camera_crop); indicatorSize = (int) resources.getDimension(R.dimen.crop_indicator_size); - int borderColor = Color.argb(128, 255, 255, 255); borderPaint = new Paint(); borderPaint.setStyle(Paint.Style.STROKE); - borderPaint.setColor(borderColor); + borderPaint.setColor(mBorderColor); borderPaint.setStrokeWidth(2f); } @@ -79,10 +79,9 @@ public class ImageCrop extends ImageGeometry { Resources resources = context.getResources(); cropIndicator = resources.getDrawable(R.drawable.camera_crop); indicatorSize = (int) resources.getDimension(R.dimen.crop_indicator_size); - int borderColor = Color.argb(128, 255, 255, 255); borderPaint = new Paint(); borderPaint.setStyle(Paint.Style.STROKE); - borderPaint.setColor(borderColor); + borderPaint.setColor(mBorderColor); borderPaint.setStrokeWidth(2f); } @@ -580,6 +579,21 @@ public class ImageCrop extends ImageGeometry { protected void lostVisibility() { } + private void drawRuleOfThird(Canvas canvas, RectF bounds) { + float stepX = bounds.width() / 3.0f; + float stepY = bounds.height() / 3.0f; + float x = bounds.left + stepX; + float y = bounds.top + stepY; + for (int i = 0; i < 2; i++) { + canvas.drawLine(x, bounds.top, x, bounds.bottom, gPaint); + x += stepX; + } + for (int j = 0; j < 2; j++) { + canvas.drawLine(bounds.left, y, bounds.right, y, gPaint); + y += stepY; + } + } + @Override protected void drawShape(Canvas canvas, Bitmap image) { // TODO: move style to xml @@ -595,11 +609,12 @@ public class ImageCrop extends ImageGeometry { float rotation = getLocalRotation(); drawTransformedBitmap(canvas, image, gPaint, true); - gPaint.setARGB(255, 125, 255, 128); + gPaint.setColor(mBorderColor); gPaint.setStrokeWidth(3); gPaint.setStyle(Paint.Style.STROKE); drawStraighten(canvas, gPaint); RectF scaledCrop = unrotatedCropBounds(); + drawRuleOfThird(canvas, scaledCrop); int decoded_moving = decoder(movingEdges, rotation); canvas.save(); canvas.rotate(rotation, mCenterX, mCenterY); -- cgit v1.2.3