Merge "Add equality check into FilterCurveRep" into gb-ub-photos-carlsbad
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
index a71aa88..569ead9 100644
--- a/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
+++ b/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
@@ -58,6 +58,7 @@
         mSplines = spline;
     }
 
+    @Override
     public boolean isNil() {
         for (int i = 0; i < MAX_SPLINE_NUMBER; i++) {
             if (getSpline(i) != null && !getSpline(i).isOriginal()) {
@@ -67,6 +68,27 @@
         return true;
     }
 
+    @Override
+    public boolean equals(FilterRepresentation representation) {
+        if (!super.equals(representation)) {
+            return false;
+        }
+
+        if (!(representation instanceof FilterCurvesRepresentation)) {
+            return false;
+        } else {
+            FilterCurvesRepresentation curve =
+                    (FilterCurvesRepresentation) representation;
+            for (int i = 0; i < MAX_SPLINE_NUMBER; i++) {
+                if (!getSpline(i).sameValues(curve.getSpline(i))) {
+                    return false;
+                }
+            }
+        }
+        // Every spline matches, therefore they are the same.
+        return true;
+    }
+
     public void reset() {
         Spline spline = new Spline();
 
@@ -81,6 +103,7 @@
     public void setSpline(int splineIndex, Spline s) {
         mSplines[splineIndex] = s;
     }
+
     public Spline getSpline(int splineIndex) {
         return mSplines[splineIndex];
     }
diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
index 08d8c45..ed09fb1 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
@@ -198,7 +198,7 @@
             return false;
         }
         int sw = SMALL_BITMAP_DIM;
-        int sh = (int) (sw * (float) mOriginalBitmapLarge.getHeight() / (float) mOriginalBitmapLarge
+        int sh = (int) (sw * (float) mOriginalBitmapLarge.getHeight() / mOriginalBitmapLarge
                 .getWidth());
         mOriginalBitmapSmall = Bitmap.createScaledBitmap(mOriginalBitmapLarge, sw, sh, true);
         mZoomOrientation = mOrientation;
@@ -325,7 +325,7 @@
             if (loadedPreset == null) {
                 return mPreset.hasModifications();
             } else {
-                return !mPreset.equals(getLoadedPreset());
+                return !mPreset.equals(loadedPreset);
             }
         }
     }
diff --git a/src/com/android/gallery3d/filtershow/ui/ControlPoint.java b/src/com/android/gallery3d/filtershow/ui/ControlPoint.java
index 73589d3..a95364b 100644
--- a/src/com/android/gallery3d/filtershow/ui/ControlPoint.java
+++ b/src/com/android/gallery3d/filtershow/ui/ControlPoint.java
@@ -30,6 +30,23 @@
         y = point.y;
     }
 
+    public boolean sameValues(ControlPoint other) {
+        if (this == other) {
+            return true;
+        }
+        if (other == null) {
+            return false;
+        }
+
+        if (Float.floatToIntBits(x) != Float.floatToIntBits(other.x)) {
+            return false;
+        }
+        if (Float.floatToIntBits(y) != Float.floatToIntBits(other.y)) {
+            return false;
+        }
+        return true;
+    }
+
     public ControlPoint copy() {
         return new ControlPoint(x, y);
     }
diff --git a/src/com/android/gallery3d/filtershow/ui/Spline.java b/src/com/android/gallery3d/filtershow/ui/Spline.java
index cadf2fd..5b931a9 100644
--- a/src/com/android/gallery3d/filtershow/ui/Spline.java
+++ b/src/com/android/gallery3d/filtershow/ui/Spline.java
@@ -83,6 +83,28 @@
         return Color.WHITE;
     }
 
+    public boolean sameValues(Spline other) {
+        if (this == other) {
+            return true;
+        }
+        if (other == null) {
+            return false;
+        }
+
+        if (getNbPoints() != other.getNbPoints()) {
+            return false;
+        }
+
+        for (int i = 0; i < getNbPoints(); i++) {
+            ControlPoint p = mPoints.elementAt(i);
+            ControlPoint otherPoint = other.mPoints.elementAt(i);
+            if (!p.sameValues(otherPoint)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     private void didMovePoint(ControlPoint point) {
         mCurrentControlPoint = point;
     }