summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2012-10-17 15:11:53 -0700
committernicolasroard <nicolasroard@google.com>2012-10-17 15:43:51 -0700
commit24fc5f1dd7a3a99e04e1e7f0d54d9ec1e777145d (patch)
tree31c23b629d0fa8b7beacddb58611514af4b026aa /src/com
parentd4f457e0133bac5e3b172a1261a36ff62c39953c (diff)
downloadandroid_packages_apps_Snap-24fc5f1dd7a3a99e04e1e7f0d54d9ec1e777145d.tar.gz
android_packages_apps_Snap-24fc5f1dd7a3a99e04e1e7f0d54d9ec1e777145d.tar.bz2
android_packages_apps_Snap-24fc5f1dd7a3a99e04e1e7f0d54d9ec1e777145d.zip
Fix back button behaviour
bug:7290000 bug:7256201 Change-Id: Ia6f5726b0602c45e98566bcb5e027686e7f2fe57
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java13
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilter.java7
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java10
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java15
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterParametricBorder.java5
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java20
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageShow.java7
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageSmallBorder.java5
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePreset.java30
10 files changed, 100 insertions, 20 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index 162d2c1c6..74d4813dd 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -115,6 +115,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
private WeakReference<ProgressDialog> mSavingProgressDialog;
private static final int SEEK_BAR_MAX = 600;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -536,7 +537,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
filter.setSelected(true);
mCurrentImageSmallFilter = filter;
- filter.setImageFilter(new ImageFilterFx(null,getString(R.string.ffx_original)));
+ filter.setImageFilter(new ImageFilterFx(null, getString(R.string.ffx_original)));
filter.setController(this);
filter.setImageLoader(mImageLoader);
@@ -726,7 +727,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
@Override
public void onBackPressed() {
if (mPanelController.onBackPressed()) {
- finish();
+ saveImage();
}
}
@@ -814,8 +815,12 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
}
public void saveImage() {
- showSavingProgress();
- mImageShow.saveImage(this, null);
+ if (mImageShow.hasModifications()) {
+ showSavingProgress();
+ mImageShow.saveImage(this, null);
+ } else {
+ finish();
+ }
}
static {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index 36f2b104f..78a835130 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -38,6 +38,13 @@ public class ImageFilter implements Cloneable {
return filter;
}
+ public boolean isNil() {
+ if (mParameter == mDefaultParameter) {
+ return true;
+ }
+ return false;
+ }
+
public void setName(String name) {
mName = name;
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
index dd7d17c46..4291fe47a 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
@@ -23,6 +23,14 @@ public class ImageFilterBorder extends ImageFilter {
}
@Override
+ public boolean isNil() {
+ if (mNinePatch == null) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public boolean same(ImageFilter filter) {
boolean isBorderFilter = super.same(filter);
if (!isBorderFilter) {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
index 3e8d298a3..0f05a1c83 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
@@ -27,6 +27,16 @@ public class ImageFilterCurves extends ImageFilter {
}
@Override
+ public boolean isNil() {
+ for (int i = 0; i < 4; i++) {
+ if (mSplines[i] != null && !mSplines[i].isOriginal()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
public boolean same(ImageFilter filter) {
boolean isCurveFilter = super.same(filter);
if (!isCurveFilter) {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
index 93cde1fe5..4fc43a7c7 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
@@ -2,12 +2,6 @@
package com.android.gallery3d.filtershow.filters;
import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.util.Log;
-
-import com.android.gallery3d.R;
-
-import java.util.Arrays;
public class ImageFilterFx extends ImageFilter {
private static final String TAG = "ImageFilterFx";
@@ -26,8 +20,17 @@ public class ImageFilterFx extends ImageFilter {
return filter;
}
+ @Override
+ public boolean isNil() {
+ if (fxBitmap != null) {
+ return false;
+ }
+ return true;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h,Bitmap fxBitmap, int fxw, int fxh);
+ @Override
public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
if (fxBitmap==null)
return bitmap;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterParametricBorder.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterParametricBorder.java
index 3649d28fa..66dad7881 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterParametricBorder.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterParametricBorder.java
@@ -31,6 +31,11 @@ public class ImageFilterParametricBorder extends ImageFilter {
}
@Override
+ public boolean isNil() {
+ return false;
+ }
+
+ @Override
public boolean same(ImageFilter filter) {
boolean isBorderFilter = super.same(filter);
if (!isBorderFilter) {
diff --git a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java
index 352fa5bf3..164b6f989 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java
@@ -26,6 +26,7 @@ public class GeometryMetadata {
// Applied in order: rotate, crop, scale.
// Do not scale saved image (presumably?).
private static final ImageFilterGeometry mImageFilter = new ImageFilterGeometry();
+ private static final String LOGTAG = "GeometryMetadata";
private float mScaleFactor = 1.0f;
private float mRotation = 0;
private float mStraightenRotation = 0;
@@ -46,7 +47,26 @@ public class GeometryMetadata {
set(g);
}
+ public boolean hasModifications() {
+ if (mScaleFactor != 1.0f) {
+ return true;
+ }
+ if (mRotation != 0) {
+ return true;
+ }
+ if (mStraightenRotation != 0) {
+ return true;
+ }
+ if (!mCropBounds.equals(mPhotoBounds)) {
+ return true;
+ }
+ return false;
+ }
+
public Bitmap apply(Bitmap original, float scaleFactor, boolean highQuality) {
+ if (!hasModifications()) {
+ return original;
+ }
mImageFilter.setGeometryMetadata(this);
Bitmap m = mImageFilter.apply(original, scaleFactor, highQuality);
return m;
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
index 3b074bf4f..09cdb7914 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
@@ -141,6 +141,13 @@ public class ImageShow extends View implements SliderListener, OnSeekBarChangeLi
}
+ public boolean hasModifications() {
+ if (getImagePreset() == null) {
+ return false;
+ }
+ return getImagePreset().hasModifications();
+ }
+
public void resetParameter() {
onNewValue(getCurrentFilter().getDefaultParameter());
if (USE_SLIDER_GESTURE) {
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallBorder.java b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallBorder.java
index 25112ad55..0cf6389ce 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallBorder.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallBorder.java
@@ -33,7 +33,6 @@ public class ImageSmallBorder extends ImageSmallFilter {
getFilteredImage();
canvas.drawColor(mBackgroundColor);
// TODO: simplify & make faster...
- mPaint.setColor(mInnerBorderColor);
RectF border = new RectF(mMargin, 2*mMargin, getWidth() - mMargin - 1, getWidth());
if (mIsSelected) {
@@ -41,7 +40,7 @@ public class ImageSmallBorder extends ImageSmallFilter {
canvas.drawRect(0, mMargin, getWidth(), getWidth() + mMargin, mPaint);
}
- canvas.drawLine(0, 0, getWidth(), 0, mPaint);
+ mPaint.setColor(mInnerBorderColor);
mPaint.setStrokeWidth(mInnerBorderWidth);
Path path = new Path();
path.addRect(border, Path.Direction.CCW);
@@ -51,7 +50,7 @@ public class ImageSmallBorder extends ImageSmallFilter {
canvas.save();
canvas.clipRect(mMargin + 1, 2*mMargin, getWidth() - mMargin - 2, getWidth() - 1,
Region.Op.INTERSECT);
- canvas.translate(mMargin, mMargin + 1);
+ canvas.translate(mMargin + 1, 2*mMargin + 1);
canvas.scale(mImageScaleFactor, mImageScaleFactor);
Rect d = new Rect(0, 0, getWidth(), getWidth());
drawImage(canvas, mFilteredImage, d);
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
index 42dbcb90e..f303d4c15 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
@@ -37,7 +37,9 @@ public class ImagePreset {
public ImagePreset(ImagePreset source, String historyName) {
this(source);
- if (historyName!=null) setHistoryName(historyName);
+ if (historyName != null) {
+ setHistoryName(historyName);
+ }
}
public ImagePreset(ImagePreset source) {
@@ -58,6 +60,22 @@ public class ImagePreset {
mGeoData.set(source.mGeoData);
}
+ public boolean hasModifications() {
+ if (mImageBorder != null && !mImageBorder.isNil()) {
+ return true;
+ }
+ if (mGeoData.hasModifications()) {
+ return true;
+ }
+ for (int i = 0; i < mFilters.size(); i++) {
+ ImageFilter filter = mFilters.elementAt(i);
+ if (!filter.isNil()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public void setGeometry(GeometryMetadata m) {
mGeoData.set(m);
}
@@ -123,27 +141,25 @@ public class ImagePreset {
public void add(ImageFilter filter) {
- if (filter.getFilterType() == ImageFilter.TYPE_BORDER){
+ if (filter.getFilterType() == ImageFilter.TYPE_BORDER) {
setHistoryName("Border");
setBorder(filter);
- } else if (filter.getFilterType() == ImageFilter.TYPE_FX){
-
+ } else if (filter.getFilterType() == ImageFilter.TYPE_FX) {
boolean found = false;
for (int i = 0; i < mFilters.size(); i++) {
byte type = mFilters.get(i).getFilterType();
if (found) {
- if (type != ImageFilter.TYPE_VIGNETTE){
+ if (type != ImageFilter.TYPE_VIGNETTE) {
mFilters.remove(i);
continue;
}
}
- if (type==ImageFilter.TYPE_FX){
+ if (type == ImageFilter.TYPE_FX) {
mFilters.remove(i);
mFilters.add(i, filter);
setHistoryName(filter.getName());
found = true;
}
-
}
if (!found) {
mFilters.add(filter);