OSDN Git Service

Revert "Cleanup ImagePreset"
authorNicolas Roard <nicolasroard@google.com>
Thu, 28 Feb 2013 06:00:05 +0000 (06:00 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Thu, 28 Feb 2013 06:00:05 +0000 (06:00 +0000)
This reverts commit 0f0765676e5be73c7187a44ee88e500ab691bf01

Change-Id: Id5a7eec61cdac3d57c8c4c790d24adf258410545

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 adb6922..647b101 100644 (file)
@@ -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;
index f3ac2e4..8a505fd 100644 (file)
@@ -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();
     }
-
 }
index 8c1f1c5..14c671e 100644 (file)
@@ -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;
-    }
 }
index 0d3dfc0..746ad12 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.resetGeometry();
+                mPreset.setDoApplyGeometry(false);
                 mDestination = destination;
                 RenderingRequest.post(dst.copy(Bitmap.Config.ARGB_8888, true), mPreset, RenderingRequest.ICON_RENDERING, this);
             }