OSDN Git Service

Fix application of FX to not wipe out borders etc.
authorJohn Hoford <hoford@google.com>
Thu, 11 Oct 2012 16:13:40 +0000 (09:13 -0700)
committerJohn Hoford <hoford@google.com>
Thu, 11 Oct 2012 16:13:40 +0000 (09:13 -0700)
bug:7289442
Change-Id: I9efdfdc1d8a8c02a718e91a089b531ff26fd582d

src/com/android/gallery3d/filtershow/presets/ImagePreset.java
src/com/android/gallery3d/filtershow/presets/ImagePresetFX.java

index ec0ed74..0ddb017 100644 (file)
@@ -35,6 +35,11 @@ public class ImagePreset {
         setup();
     }
 
+    public ImagePreset(ImagePreset source, String historyName) {
+        this(source);
+        if (historyName!=null) setHistoryName(historyName);
+    }
+
     public ImagePreset(ImagePreset source) {
         try {
             if (source.mImageBorder != null) {
@@ -57,7 +62,7 @@ public class ImagePreset {
         mGeoData.set(m);
     }
 
-    public void setBorder(ImageFilter filter) {
+    private void setBorder(ImageFilter filter) {
         mImageBorder = filter;
     }
 
@@ -74,7 +79,7 @@ public class ImagePreset {
         mHistoryName = name;
     }
 
-    public void setHistoryName(String name) {
+    private void setHistoryName(String name) {
         mHistoryName = name;
     }
 
@@ -117,7 +122,32 @@ public class ImagePreset {
     }
 
     public void add(ImageFilter filter) {
-        mFilters.add(filter);
+        if (filter.getFilterType() == ImageFilter.TYPE_BORDER){
+            setHistoryName("Border");
+            setBorder(filter);
+        } else if (filter.getFilterType() == ImageFilter.TYPE_FX){
+            Vector<ImageFilter> fl = mFilters;
+            boolean found = false;
+            for (int i = 0; i < mFilters.size(); i++) {
+                byte type = fl.get(i).getFilterType();
+                if (found) {
+                    if (type != ImageFilter.TYPE_VIGNETTE){
+                        fl.remove(i);
+                    }
+                } else  if (type==ImageFilter.TYPE_FX){
+                    fl.remove(i);
+                    fl.add(i, filter);
+                    setHistoryName(filter.getName());
+                    found = true;
+                }
+
+            }
+            mFilters.add(filter);
+            setHistoryName(filter.getName());
+        } else {
+            mFilters.add(filter);
+            setHistoryName(filter.getName());
+        }
     }
 
     public void remove(String filterName) {
index 326471e..fa207a6 100644 (file)
@@ -22,7 +22,7 @@ public class ImagePresetFX extends ImagePreset {
 
     public void setup() {
         if (fxBitmap != null) {
-            mFilters.add(new ImageFilterFx(fxBitmap));
+            mFilters.add(new ImageFilterFx(fxBitmap,name));
         }
     }