OSDN Git Service

Cleanup ImagePreset
authornicolasroard <nicolasroard@google.com>
Thu, 28 Feb 2013 04:45:05 +0000 (20:45 -0800)
committernicolasroard <nicolasroard@google.com>
Thu, 28 Feb 2013 05:06:42 +0000 (21:06 -0800)
Change-Id: I89e180293a290adb76d4fc8a9a8965fa1445440e

src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java
src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
src/com/android/gallery3d/filtershow/presets/ImagePreset.java
src/com/android/gallery3d/filtershow/ui/FilterIconButton.java

index 647b101..adb6922 100644 (file)
@@ -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;
index 8a505fd..f3ac2e4 100644 (file)
@@ -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();
     }
+
 }
index 14c671e..8c1f1c5 100644 (file)
@@ -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;
+    }
 }
index 746ad12..0d3dfc0 100644 (file)
@@ -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);
             }