From 1a07da3cd8060d49afabd11df33044ff9d05b48e Mon Sep 17 00:00:00 2001 From: Nicolas Roard Date: Thu, 28 Feb 2013 06:00:05 +0000 Subject: Revert "Cleanup ImagePreset" This reverts commit 0f0765676e5be73c7187a44ee88e500ab691bf01 Change-Id: Id5a7eec61cdac3d57c8c4c790d24adf258410545 --- .../filtershow/imageshow/GeometryMetadata.java | 3 - .../filtershow/imageshow/MasterImage.java | 7 +- .../gallery3d/filtershow/presets/ImagePreset.java | 122 ++++++++++++--------- .../gallery3d/filtershow/ui/FilterIconButton.java | 2 +- 4 files changed, 74 insertions(+), 60 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java index adb6922ea..647b101a1 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java +++ b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java @@ -107,9 +107,6 @@ public class GeometryMetadata extends FilterRepresentation { } public void set(GeometryMetadata g) { - if (g == null) { - return; - } mScaleFactor = g.mScaleFactor; mRotation = g.mRotation; mStraightenRotation = g.mStraightenRotation; diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index f3ac2e472..8a505fd4e 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -234,7 +234,8 @@ public class MasterImage implements RenderingRequestCaller { public void updatePresets(boolean force) { if (force || mGeometryOnlyPreset == null) { ImagePreset newPreset = new ImagePreset(mPreset); - newPreset.resetFilters(); + newPreset.setDoApplyFilters(false); + newPreset.setDoApplyGeometry(true); if (force || mGeometryOnlyPreset == null || !newPreset.same(mGeometryOnlyPreset)) { mGeometryOnlyPreset = newPreset; @@ -244,7 +245,8 @@ public class MasterImage implements RenderingRequestCaller { } if (force || mFiltersOnlyPreset == null) { ImagePreset newPreset = new ImagePreset(mPreset); - newPreset.resetGeometry(); + newPreset.setDoApplyFilters(true); + newPreset.setDoApplyGeometry(false); if (force || mFiltersOnlyPreset == null || !newPreset.same(mFiltersOnlyPreset)) { mFiltersOnlyPreset = newPreset; @@ -400,5 +402,4 @@ public class MasterImage implements RenderingRequestCaller { mTranslation.y = 0; needsUpdateFullResPreview(); } - } diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index 8c1f1c53c..14c671e9f 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -48,7 +48,10 @@ public class ImagePreset { private String mHistoryName = "Original"; protected boolean mIsFxPreset = false; - public GeometryMetadata mGeoData = new GeometryMetadata(); + private boolean mDoApplyGeometry = true; + private boolean mDoApplyFilters = true; + + public final GeometryMetadata mGeoData = new GeometryMetadata(); private boolean mPartialRendering = false; private Rect mPartialRenderingBounds; @@ -85,9 +88,7 @@ public class ImagePreset { mIsFxPreset = source.isFx(); mImageLoader = source.getImageLoader(); - if (mGeoData != null) { - mGeoData.set(source.mGeoData); - } + mGeoData.set(source.mGeoData); } public FilterRepresentation getFilterRepresentation(int position) { @@ -140,6 +141,18 @@ public class ImagePreset { MasterImage.getImage().invalidatePreview(); } + public void setDoApplyGeometry(boolean value) { + mDoApplyGeometry = value; + } + + public void setDoApplyFilters(boolean value) { + mDoApplyFilters = value; + } + + public boolean getDoApplyFilters() { + return mDoApplyFilters; + } + public synchronized GeometryMetadata getGeometry() { return mGeoData; } @@ -148,7 +161,7 @@ public class ImagePreset { if (mBorder != null && !mBorder.isNil()) { return true; } - if (mGeoData != null && mGeoData.hasModifications()) { + if (mGeoData.hasModifications()) { return true; } for (int i = 0; i < mFilters.size(); i++) { @@ -164,7 +177,7 @@ public class ImagePreset { if (mBorder != null && !mBorder.isNil()) { return false; } - if (mGeoData != null && mGeoData.hasModifications()) { + if (mGeoData.hasModifications()) { return false; } for (FilterRepresentation representation : mFilters) { @@ -218,11 +231,13 @@ public class ImagePreset { if (!same(preset)) { return false; } - for (int i = 0; i < preset.mFilters.size(); i++) { - FilterRepresentation a = preset.mFilters.elementAt(i); - FilterRepresentation b = mFilters.elementAt(i); - if (!a.equals(b)) { - return false; + if (mDoApplyFilters && preset.mDoApplyFilters) { + for (int i = 0; i < preset.mFilters.size(); i++) { + FilterRepresentation a = preset.mFilters.elementAt(i); + FilterRepresentation b = mFilters.elementAt(i); + if (!a.equals(b)) { + return false; + } } } return true; @@ -241,30 +256,38 @@ public class ImagePreset { return false; } - if (mGeoData != null && !mGeoData.equals(preset.mGeoData)) { + if (mDoApplyGeometry != preset.mDoApplyGeometry) { return false; } - if (mBorder != preset.mBorder) { + if (mDoApplyGeometry && !mGeoData.equals(preset.mGeoData)) { return false; } - if (mBorder != null && !mBorder.equals(preset.mBorder)) { + if (mDoApplyGeometry && mBorder != preset.mBorder) { return false; } - if (mFilters.size() != preset.mFilters.size()) { + if (mBorder != null && !mBorder.equals(preset.mBorder)) { return false; } - for (int i = 0; i < preset.mFilters.size(); i++) { - FilterRepresentation a = preset.mFilters.elementAt(i); - FilterRepresentation b = mFilters.elementAt(i); - if (!a.same(b)) { + if (mDoApplyFilters != preset.mDoApplyFilters) { + if (mFilters.size() > 0 || preset.mFilters.size() > 0) { return false; } } + if (mDoApplyFilters && preset.mDoApplyFilters) { + for (int i = 0; i < preset.mFilters.size(); i++) { + FilterRepresentation a = preset.mFilters.elementAt(i); + FilterRepresentation b = mFilters.elementAt(i); + if (!a.same(b)) { + return false; + } + } + } + return true; } @@ -372,19 +395,18 @@ public class ImagePreset { public Bitmap applyGeometry(Bitmap bitmap) { // Apply any transform -- 90 rotate, flip, straighten, crop // Returns a new bitmap. - if (mGeoData == null) { - return bitmap; - } - ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mGeoData); - mGeoData.synchronizeRepresentation(); - filter.useRepresentation(mGeoData); - filter.setImagePreset(this); - bitmap = filter.apply(bitmap, mScaleFactor, mQuality); + if (mDoApplyGeometry) { + ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mGeoData); + mGeoData.synchronizeRepresentation(); + filter.useRepresentation(mGeoData); + filter.setImagePreset(this); + bitmap = filter.apply(bitmap, mScaleFactor, mQuality); + } return bitmap; } public Bitmap applyBorder(Bitmap bitmap) { - if (mBorder != null) { + if (mBorder != null && mDoApplyGeometry) { ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mBorder); mBorder.synchronizeRepresentation(); filter.useRepresentation(mBorder); @@ -395,29 +417,32 @@ public class ImagePreset { } public Bitmap applyFilters(Bitmap bitmap, int from, int to) { - if (from < 0) { - from = 0; - } - if (to == -1) { - to = mFilters.size(); - } - for (int i = from; i < to; i++) { - FilterRepresentation representation = null; - synchronized (mFilters) { - representation = mFilters.elementAt(i); - representation.synchronizeRepresentation(); + + if (mDoApplyFilters) { + if (from < 0) { + from = 0; + } + if (to == -1) { + to = mFilters.size(); + } + for (int i = from; i < to; i++) { + FilterRepresentation representation = null; + synchronized (mFilters) { + representation = mFilters.elementAt(i); + representation.synchronizeRepresentation(); + } + ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(representation); + filter.useRepresentation(representation); + filter.setImagePreset(this); + bitmap = filter.apply(bitmap, mScaleFactor, mQuality); } - ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(representation); - filter.useRepresentation(representation); - filter.setImagePreset(this); - bitmap = filter.apply(bitmap, mScaleFactor, mQuality); } return bitmap; } public boolean canDoPartialRendering() { - if (mGeoData != null && mGeoData.hasModifications()) { + if (mGeoData.hasModifications()) { return false; } if (mBorder != null && !mBorder.supportsPartialRendering()) { @@ -476,13 +501,4 @@ public class ImagePreset { public Rect getPartialRenderingBounds() { return mPartialRenderingBounds; } - - public void resetGeometry() { - mGeoData = null; - } - - public void resetFilters() { - mFilters.clear(); - mBorder = null; - } } diff --git a/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java b/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java index 0d3dfc0f1..746ad12eb 100644 --- a/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java +++ b/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java @@ -83,7 +83,7 @@ public class FilterIconButton extends IconButton implements View.OnClickListener dst = super.drawImage(dst, image, destination); ImagePreset mPreset = new ImagePreset(); mPreset.addFilter(mFilterRepresentation); - mPreset.resetGeometry(); + mPreset.setDoApplyGeometry(false); mDestination = destination; RenderingRequest.post(dst.copy(Bitmap.Config.ARGB_8888, true), mPreset, RenderingRequest.ICON_RENDERING, this); } -- cgit v1.2.3