diff options
| author | Jay Wang <jaywang@codeaurora.org> | 2015-09-30 18:53:53 -0700 |
|---|---|---|
| committer | Jay Wang <jaywang@codeaurora.org> | 2015-12-22 17:32:24 -0800 |
| commit | 3af42a52732f2cbedc66c6f9e9fc7f251e0634ff (patch) | |
| tree | 4f7093b89f5e61715bc8fb89ee8be01a55b2ee2b /src | |
| parent | 417e92cdb7d5562c10c72a1d219bd62e0fbcbcf4 (diff) | |
| download | android_packages_apps_Gallery2-3af42a52732f2cbedc66c6f9e9fc7f251e0634ff.tar.gz android_packages_apps_Gallery2-3af42a52732f2cbedc66c6f9e9fc7f251e0634ff.tar.bz2 android_packages_apps_Gallery2-3af42a52732f2cbedc66c6f9e9fc7f251e0634ff.zip | |
Gallery2: fix for using scaled down image for preview
When using scaled down image for preview, we need to
take previously applied geometry filters into account.
Need to apply geometry filters correctly for smaller sized preview.
Conflicts:
src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java
src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java
src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java
Change-Id: I4f1e586dde161949626d15185efc993b8b9aae11
Diffstat (limited to 'src')
4 files changed, 79 insertions, 39 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java index 1e89f3361..6475250b6 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java @@ -41,8 +41,11 @@ import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.cache.BitmapCache; +import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils; import com.android.gallery3d.filtershow.imageshow.MasterImage; +import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils.GeometryHolder; import com.android.gallery3d.filtershow.pipeline.FilterEnvironment; +import com.android.gallery3d.filtershow.pipeline.ImagePreset; import com.android.gallery3d.filtershow.tools.DualCameraNativeEngine; public class ImageFilterDualCamFusion extends ImageFilter { @@ -79,11 +82,20 @@ public class ImageFilterDualCamFusion extends ImageFilter { if(!point.equals(-1,-1)) { Bitmap filteredBitmap = null; - Rect originalBounds = MasterImage.getImage().getOriginalBounds(); - int origW = originalBounds.width(); - int origH = originalBounds.height(); + int filteredW; + int filteredH; - filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(origW, origH, BitmapCache.FILTERS); + if(quality == FilterEnvironment.QUALITY_FINAL) { + Rect originalBounds = MasterImage.getImage().getOriginalBounds(); + filteredW = originalBounds.width(); + filteredH = originalBounds.height(); + } else { + Bitmap originalBmp = MasterImage.getImage().getOriginalBitmapHighres(); + filteredW = originalBmp.getWidth(); + filteredH = originalBmp.getHeight(); + } + + filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(filteredW, filteredH, BitmapCache.FILTERS); filteredBitmap.setHasAlpha(true); boolean result = DualCameraNativeEngine.getInstance().getForegroundImg(point.x, point.y, filteredBitmap); @@ -112,15 +124,17 @@ public class ImageFilterDualCamFusion extends ImageFilter { bitmap.setHasAlpha(true); Canvas canvas = new Canvas(bitmap); - int w = bitmap.getWidth(); - int h = bitmap.getHeight(); + ImagePreset preset = getEnvironment().getImagePreset(); + int bmWidth = bitmap.getWidth(); + int bmHeight = bitmap.getHeight(); canvas.drawColor(0, PorterDuff.Mode.CLEAR); - if(getEnvironment().getImagePreset().getDoApplyGeometry()) { - Matrix originalToScreen = getOriginalToScreenMatrix(w, h); - canvas.drawBitmap(filteredBitmap, originalToScreen, null); + if(preset.getDoApplyGeometry()) { + GeometryHolder holder = GeometryMathUtils.unpackGeometry(preset.getGeometryFilters()); + GeometryMathUtils.drawTransformedCropped(holder, canvas, filteredBitmap, bmWidth, bmHeight); } else { - canvas.drawBitmap(filteredBitmap, null, new Rect(0,0,w,h), null); + canvas.drawBitmap(filteredBitmap, null, + new Rect(0, 0,bmWidth, bmHeight), mPaint); } MasterImage.getImage().getBitmapCache().cache(filteredBitmap); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java index 6907fe394..3af19e76f 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java @@ -40,8 +40,11 @@ import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.cache.BitmapCache; +import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils; import com.android.gallery3d.filtershow.imageshow.MasterImage; +import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils.GeometryHolder; import com.android.gallery3d.filtershow.pipeline.FilterEnvironment; +import com.android.gallery3d.filtershow.pipeline.ImagePreset; import com.android.gallery3d.filtershow.tools.DualCameraNativeEngine; public class ImageFilterDualCamSketch extends ImageFilter { @@ -72,14 +75,22 @@ public class ImageFilterDualCamSketch extends ImageFilter { Point point = getParameters().getPoint(); if(!point.equals(-1,-1)) { - boolean result = false; Bitmap filteredBitmap = null; + boolean result = false; + int filteredW; + int filteredH; - Rect originalBounds = MasterImage.getImage().getOriginalBounds(); - int origW = originalBounds.width(); - int origH = originalBounds.height(); + if(quality == FilterEnvironment.QUALITY_FINAL) { + Rect originalBounds = MasterImage.getImage().getOriginalBounds(); + filteredW = originalBounds.width(); + filteredH = originalBounds.height(); + } else { + Bitmap originalBmp = MasterImage.getImage().getOriginalBitmapHighres(); + filteredW = originalBmp.getWidth(); + filteredH = originalBmp.getHeight(); + } - filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(origW, origH, BitmapCache.FILTERS); + filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(filteredW, filteredH, BitmapCache.FILTERS); result = DualCameraNativeEngine.getInstance().applySketch(point.x, point.y, filteredBitmap); @@ -105,13 +116,16 @@ public class ImageFilterDualCamSketch extends ImageFilter { } Canvas canvas = new Canvas(bitmap); - int w = bitmap.getWidth(); - int h = bitmap.getHeight(); - if(getEnvironment().getImagePreset().getDoApplyGeometry()) { - Matrix originalToScreen = getOriginalToScreenMatrix(w, h); - canvas.drawBitmap(filteredBitmap, originalToScreen, mPaint); + ImagePreset preset = getEnvironment().getImagePreset(); + int bmWidth = bitmap.getWidth(); + int bmHeight = bitmap.getHeight(); + + if(preset.getDoApplyGeometry()) { + GeometryHolder holder = GeometryMathUtils.unpackGeometry(preset.getGeometryFilters()); + GeometryMathUtils.drawTransformedCropped(holder, canvas, filteredBitmap, bmWidth, bmHeight); } else { - canvas.drawBitmap(filteredBitmap, null, new Rect(0,0,w,h), mPaint); + canvas.drawBitmap(filteredBitmap, null, + new Rect(0, 0,bmWidth, bmHeight), mPaint); } MasterImage.getImage().getBitmapCache().cache(filteredBitmap); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java index dce31c353..9874274ed 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java @@ -40,8 +40,11 @@ import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.cache.BitmapCache; +import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils; import com.android.gallery3d.filtershow.imageshow.MasterImage; +import com.android.gallery3d.filtershow.imageshow.GeometryMathUtils.GeometryHolder; import com.android.gallery3d.filtershow.pipeline.FilterEnvironment; +import com.android.gallery3d.filtershow.pipeline.ImagePreset; import com.android.gallery3d.filtershow.tools.DualCameraNativeEngine; public class ImageFilterDualCamera extends ImageFilter { @@ -71,20 +74,27 @@ public class ImageFilterDualCamera extends ImageFilter { } Point point = getParameters().getPoint(); - int value = getParameters().getValue(); - int maxValue = getParameters().getMaximum(); - float intensity = (float)value / (float)maxValue; - Bitmap filteredBitmap = null; if(!point.equals(-1,-1)) { + int value = getParameters().getValue(); + int maxValue = getParameters().getMaximum(); + float intensity = (float)value / (float)maxValue; + Bitmap filteredBitmap = null; + boolean result = false; + int filteredW; + int filteredH; - Rect originalBounds = MasterImage.getImage().getOriginalBounds(); - int origW = originalBounds.width(); - int origH = originalBounds.height(); + if(quality == FilterEnvironment.QUALITY_FINAL) { + Rect originalBounds = MasterImage.getImage().getOriginalBounds(); + filteredW = originalBounds.width(); + filteredH = originalBounds.height(); + } else { + Bitmap originalBmp = MasterImage.getImage().getOriginalBitmapHighres(); + filteredW = originalBmp.getWidth(); + filteredH = originalBmp.getHeight(); + } - filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(origW, origH, BitmapCache.FILTERS); - - boolean result = false; + filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(filteredW, filteredH, BitmapCache.FILTERS); switch(mParameters.getTextId()) { case R.string.focus: @@ -120,17 +130,19 @@ public class ImageFilterDualCamera extends ImageFilter { } Canvas canvas = new Canvas(bitmap); - int w = bitmap.getWidth(); - int h = bitmap.getHeight(); - if(getEnvironment().getImagePreset().getDoApplyGeometry()) { - Matrix originalToScreen = getOriginalToScreenMatrix(w, h); - canvas.drawBitmap(filteredBitmap, originalToScreen, mPaint); + ImagePreset preset = getEnvironment().getImagePreset(); + int bmWidth = bitmap.getWidth(); + int bmHeight = bitmap.getHeight(); + + if(preset.getDoApplyGeometry()) { + GeometryHolder holder = GeometryMathUtils.unpackGeometry(preset.getGeometryFilters()); + GeometryMathUtils.drawTransformedCropped(holder, canvas, filteredBitmap, bmWidth, bmHeight); } else { - canvas.drawBitmap(filteredBitmap, null, new Rect(0,0,w,h), mPaint); + canvas.drawBitmap(filteredBitmap, null, + new Rect(0, 0,bmWidth, bmHeight), mPaint); } MasterImage.getImage().getBitmapCache().cache(filteredBitmap); - } } diff --git a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java index 615eca9a4..1fb88a1c5 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java @@ -413,7 +413,7 @@ public class ImagePreset { } } if (!replaced && !isNoneFxFilter(representation)) { - mFilters.add(0, representation); + mFilters.add(representation); } } else { mFilters.add(representation); |
