OSDN Git Service

Fix Curves
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / filters / FilterCurvesRepresentation.java
index 3511c67..cbcae4b 100644 (file)
@@ -1,5 +1,7 @@
 package com.android.gallery3d.filtershow.filters;
 
+import android.util.Log;
+
 import com.android.gallery3d.R;
 import com.android.gallery3d.filtershow.ui.Spline;
 
@@ -7,6 +9,8 @@ import com.android.gallery3d.filtershow.ui.Spline;
  * TODO: Insert description here. (generated by hoford)
  */
 public class FilterCurvesRepresentation extends FilterRepresentation {
+    private static final String LOGTAG = "FilterCurvesRepresentation";
+
     private Spline[] mSplines = new Spline[4];
 
     public FilterCurvesRepresentation() {
@@ -20,10 +24,33 @@ public class FilterCurvesRepresentation extends FilterRepresentation {
         setShowParameterValue(false);
         setShowUtilityPanel(true);
         setSupportsPartialRendering(true);
-        for (int i = 0; i < mSplines.length; i++) {
-            mSplines[i] = new Spline();
-            mSplines[i].reset();
+        reset();
+    }
+
+    @Override
+    public FilterRepresentation clone() throws CloneNotSupportedException {
+        FilterCurvesRepresentation rep = new FilterCurvesRepresentation();
+        rep.useParametersFrom(this);
+        return rep;
+    }
+
+    @Override
+    public void useParametersFrom(FilterRepresentation a) {
+        if (!(a instanceof FilterCurvesRepresentation)) {
+            Log.v(LOGTAG, "cannot use parameters from " + a);
+            return;
+        }
+        FilterCurvesRepresentation representation = (FilterCurvesRepresentation) a;
+        Spline[] spline = new Spline[4];
+        for (int i = 0; i < spline.length; i++) {
+            Spline sp = representation.mSplines[i];
+            if (sp != null) {
+                spline[i] = new Spline(sp);
+            } else {
+                spline[i] = new Spline();
+            }
         }
+        mSplines = spline;
     }
 
     public boolean isNil() {