summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java')
-rw-r--r--src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java69
1 files changed, 65 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
index 4554f9b6d..a71aa8863 100644
--- a/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
+++ b/src/com/android/gallery3d/filtershow/filters/FilterCurvesRepresentation.java
@@ -1,17 +1,24 @@
package com.android.gallery3d.filtershow.filters;
+import android.util.JsonReader;
+import android.util.JsonWriter;
import android.util.Log;
import com.android.gallery3d.R;
+import com.android.gallery3d.filtershow.ui.ControlPoint;
import com.android.gallery3d.filtershow.ui.Spline;
+import java.io.IOException;
+
/**
* TODO: Insert description here. (generated by hoford)
*/
public class FilterCurvesRepresentation extends FilterRepresentation {
private static final String LOGTAG = "FilterCurvesRepresentation";
+ public static final String SERIALIZATION_NAME = "Curve";
+ private static final int MAX_SPLINE_NUMBER = 4;
- private Spline[] mSplines = new Spline[4];
+ private Spline[] mSplines = new Spline[MAX_SPLINE_NUMBER];
public FilterCurvesRepresentation() {
super("Curves");
@@ -39,7 +46,7 @@ public class FilterCurvesRepresentation extends FilterRepresentation {
return;
}
FilterCurvesRepresentation representation = (FilterCurvesRepresentation) a;
- Spline[] spline = new Spline[4];
+ Spline[] spline = new Spline[MAX_SPLINE_NUMBER];
for (int i = 0; i < spline.length; i++) {
Spline sp = representation.mSplines[i];
if (sp != null) {
@@ -52,7 +59,7 @@ public class FilterCurvesRepresentation extends FilterRepresentation {
}
public boolean isNil() {
- for (int i = 0; i < 4; i++) {
+ for (int i = 0; i < MAX_SPLINE_NUMBER; i++) {
if (getSpline(i) != null && !getSpline(i).isOriginal()) {
return false;
}
@@ -66,7 +73,7 @@ public class FilterCurvesRepresentation extends FilterRepresentation {
spline.addPoint(0.0f, 1.0f);
spline.addPoint(1.0f, 0.0f);
- for (int i = 0; i < 4; i++) {
+ for (int i = 0; i < MAX_SPLINE_NUMBER; i++) {
mSplines[i] = new Spline(spline);
}
}
@@ -77,4 +84,58 @@ public class FilterCurvesRepresentation extends FilterRepresentation {
public Spline getSpline(int splineIndex) {
return mSplines[splineIndex];
}
+
+ @Override
+ public void serializeRepresentation(JsonWriter writer) throws IOException {
+ writer.beginObject();
+ {
+ writer.name(NAME_TAG);
+ writer.value(getName());
+ for (int i = 0; i < mSplines.length; i++) {
+ writer.name(SERIALIZATION_NAME + i);
+ writer.beginArray();
+ int nop = mSplines[i].getNbPoints();
+ for (int j = 0; j < nop; j++) {
+ ControlPoint p = mSplines[i].getPoint(j);
+ writer.beginArray();
+ writer.value(p.x);
+ writer.value(p.y);
+ writer.endArray();
+ }
+ writer.endArray();
+ }
+
+ }
+ writer.endObject();
+ }
+
+ @Override
+ public void deSerializeRepresentation(JsonReader sreader) throws IOException {
+ sreader.beginObject();
+ Spline[] spline = new Spline[MAX_SPLINE_NUMBER];
+ while (sreader.hasNext()) {
+ String name = sreader.nextName();
+ if (NAME_TAG.equals(name)) {
+ setName(sreader.nextString());
+ } else if (name.startsWith(SERIALIZATION_NAME)) {
+ int curveNo = Integer.parseInt(name.substring(SERIALIZATION_NAME.length()));
+ spline[curveNo] = new Spline();
+ sreader.beginArray();
+ while (sreader.hasNext()) {
+ sreader.beginArray();
+ sreader.hasNext();
+ float x = (float) sreader.nextDouble();
+ sreader.hasNext();
+ float y = (float) sreader.nextDouble();
+ sreader.endArray();
+ spline[curveNo].addPoint(x, y);
+ }
+ sreader.endArray();
+
+ }
+ }
+ mSplines = spline;
+ sreader.endObject();
+ }
+
}