From ec5da88505d9b3c1562b13ce8448bc1a6b02ed27 Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Wed, 27 Feb 2013 20:45:05 -0800 Subject: Cleanup ImagePreset Change-Id: I89e180293a290adb76d4fc8a9a8965fa1445440e --- .../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, 60 insertions(+), 74 deletions(-) (limited to 'src/com/android/gallery3d') diff --git a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java index 647b101a1..adb6922ea 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java +++ b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java @@ -107,6 +107,9 @@ 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 8a505fd4e..f3ac2e472 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -234,8 +234,7 @@ public class MasterImage implements RenderingRequestCaller { public void updatePresets(boolean force) { if (force || mGeometryOnlyPreset == null) { ImagePreset newPreset = new ImagePreset(mPreset); - newPreset.setDoApplyFilters(false); - newPreset.setDoApplyGeometry(true); + newPreset.resetFilters(); if (force || mGeometryOnlyPreset == null || !newPreset.same(mGeometryOnlyPreset)) { mGeometryOnlyPreset = newPreset; @@ -245,8 +244,7 @@ public class MasterImage implements RenderingRequestCaller { } if (force || mFiltersOnlyPreset == null) { ImagePreset newPreset = new ImagePreset(mPreset); - newPreset.setDoApplyFilters(true); - newPreset.setDoApplyGeometry(false); + newPreset.resetGeometry(); if (force || mFiltersOnlyPreset == null || !newPreset.same(mFiltersOnlyPreset)) { mFiltersOnlyPreset = newPreset; @@ -402,4 +400,5 @@ 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 14c671e9f..8c1f1c53c 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -48,10 +48,7 @@ public class ImagePreset { private String mHistoryName = "Original"; protected boolean mIsFxPreset = false; - private boolean mDoApplyGeometry = true; - private boolean mDoApplyFilters = true; - - public final GeometryMetadata mGeoData = new GeometryMetadata(); + public GeometryMetadata mGeoData = new GeometryMetadata(); private boolean mPartialRendering = false; private Rect mPartialRenderingBounds; @@ -88,7 +85,9 @@ public class ImagePreset { mIsFxPreset = source.isFx(); mImageLoader = source.getImageLoader(); - mGeoData.set(source.mGeoData); + if (mGeoData != null) { + mGeoData.set(source.mGeoData); + } } public FilterRepresentation getFilterRepresentation(int position) { @@ -141,18 +140,6 @@ 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; } @@ -161,7 +148,7 @@ public class ImagePreset { if (mBorder != null && !mBorder.isNil()) { return true; } - if (mGeoData.hasModifications()) { + if (mGeoData != null && mGeoData.hasModifications()) { return true; } for (int i = 0; i < mFilters.size(); i++) { @@ -177,7 +164,7 @@ public class ImagePreset { if (mBorder != null && !mBorder.isNil()) { return false; } - if (mGeoData.hasModifications()) { + if (mGeoData != null && mGeoData.hasModifications()) { return false; } for (FilterRepresentation representation : mFilters) { @@ -231,13 +218,11 @@ public class ImagePreset { if (!same(preset)) { 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; - } + 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; @@ -256,38 +241,30 @@ public class ImagePreset { return false; } - if (mDoApplyGeometry != preset.mDoApplyGeometry) { + if (mGeoData != null && !mGeoData.equals(preset.mGeoData)) { return false; } - if (mDoApplyGeometry && !mGeoData.equals(preset.mGeoData)) { + if (mBorder != preset.mBorder) { return false; } - if (mDoApplyGeometry && mBorder != preset.mBorder) { + if (mBorder != null && !mBorder.equals(preset.mBorder)) { return false; } - if (mBorder != null && !mBorder.equals(preset.mBorder)) { + if (mFilters.size() != preset.mFilters.size()) { return false; } - if (mDoApplyFilters != preset.mDoApplyFilters) { - if (mFilters.size() > 0 || preset.mFilters.size() > 0) { + 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; } } - 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; } @@ -395,18 +372,19 @@ public class ImagePreset { public Bitmap applyGeometry(Bitmap bitmap) { // Apply any transform -- 90 rotate, flip, straighten, crop // Returns a new bitmap. - if (mDoApplyGeometry) { - ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mGeoData); - mGeoData.synchronizeRepresentation(); - filter.useRepresentation(mGeoData); - filter.setImagePreset(this); - bitmap = filter.apply(bitmap, mScaleFactor, mQuality); - } + 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); return bitmap; } public Bitmap applyBorder(Bitmap bitmap) { - if (mBorder != null && mDoApplyGeometry) { + if (mBorder != null) { ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mBorder); mBorder.synchronizeRepresentation(); filter.useRepresentation(mBorder); @@ -417,32 +395,29 @@ public class ImagePreset { } public Bitmap applyFilters(Bitmap bitmap, int from, int to) { - - 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); + 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); } return bitmap; } public boolean canDoPartialRendering() { - if (mGeoData.hasModifications()) { + if (mGeoData != null && mGeoData.hasModifications()) { return false; } if (mBorder != null && !mBorder.supportsPartialRendering()) { @@ -501,4 +476,13 @@ 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 746ad12eb..0d3dfc0f1 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.setDoApplyGeometry(false); + mPreset.resetGeometry(); mDestination = destination; RenderingRequest.post(dst.copy(Bitmap.Config.ARGB_8888, true), mPreset, RenderingRequest.ICON_RENDERING, this); } -- cgit v1.2.3