diff options
Diffstat (limited to 'src')
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); |