summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Wang <jaywang@codeaurora.org>2015-09-30 18:53:53 -0700
committerJay Wang <jaywang@codeaurora.org>2015-12-22 17:32:24 -0800
commit3af42a52732f2cbedc66c6f9e9fc7f251e0634ff (patch)
tree4f7093b89f5e61715bc8fb89ee8be01a55b2ee2b
parent417e92cdb7d5562c10c72a1d219bd62e0fbcbcf4 (diff)
downloadandroid_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
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java34
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java36
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java46
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java2
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);