functionality added to transport filter parameter values to following filters. e.g. FixedFrames use the style from Retrolux or Film to tinting the frame.

Change-Id: I87f2497bdaccf8de5d153cbebf9641b979ea15a3
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index b80fc7f..6481e10 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -69,10 +69,12 @@
     public boolean supportsAllocationInput() { return false; }
 
     public void apply(Allocation in, Allocation out) {
+        setGeneralParameters();
     }
 
     public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         // do nothing here, subclasses will implement filtering here
+        setGeneralParameters();
         return bitmap;
     }
 
@@ -102,4 +104,11 @@
     public FilterEnvironment getEnvironment() {
         return mEnvironment;
     }
+
+    public void setGeneralParameters() {
+        // should implement in subclass which like to transport
+        // some information to other filters. (like the style setting from RetroLux
+        // and Film to FixedFrame)
+        mEnvironment.clearGeneralParameters();
+    }
 }
diff --git a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
index 47f8dfc..8d59c9f 100644
--- a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
+++ b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
@@ -50,6 +50,9 @@
     private HashMap<Long, WeakReference<Bitmap>>
             bitmapCach = new HashMap<Long, WeakReference<Bitmap>>();
 
+    private HashMap<Integer, Integer>
+                    generalParameters = new HashMap<Integer, Integer>();
+
     public void cache(Bitmap bitmap) {
         if (bitmap == null) {
             return;
@@ -116,6 +119,7 @@
         if (filter.supportsAllocationInput()) {
             filter.apply(in, out);
         }
+        filter.setGeneralParameters();
         filter.setEnvironment(null);
     }
 
@@ -124,6 +128,7 @@
         filter.useRepresentation(representation);
         filter.setEnvironment(this);
         Bitmap ret = filter.apply(bitmap, mScaleFactor, mQuality);
+        filter.setGeneralParameters();
         filter.setEnvironment(null);
         return ret;
     }
@@ -136,4 +141,23 @@
         mPipeline = cachingPipeline;
     }
 
+    public synchronized void clearGeneralParameters() {
+        generalParameters = null;
+    }
+
+    public synchronized Integer getGeneralParameter(int id) {
+        if (generalParameters == null || !generalParameters.containsKey(id)) {
+            return null;
+        }
+        return generalParameters.get(id);
+    }
+
+    public synchronized void setGeneralParameter(int id, int value) {
+        if (generalParameters == null) {
+            generalParameters = new HashMap<Integer, Integer>();
+        }
+
+        generalParameters.put(id, value);
+    }
+
 }