OSDN Git Service

am d1b3e27b: (-s ours) am 4c89ec75: am 1b02bf12: (-s ours) DO NOT MERGE Fix build...
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / filters / FilterVignetteRepresentation.java
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.gallery3d.filtershow.filters;
18
19 import android.util.JsonReader;
20 import android.util.JsonWriter;
21
22 import com.android.gallery3d.R;
23 import com.android.gallery3d.filtershow.controller.BasicParameterInt;
24 import com.android.gallery3d.filtershow.controller.Parameter;
25 import com.android.gallery3d.filtershow.editors.EditorVignette;
26 import com.android.gallery3d.filtershow.imageshow.Oval;
27
28 import java.io.IOException;
29
30 public class FilterVignetteRepresentation extends FilterRepresentation implements Oval {
31     private static final String LOGTAG = "FilterVignetteRepresentation";
32
33     private float mCenterX = .5f;
34     private float mCenterY = .5f;
35     private float mRadiusX = .5f;
36     private float mRadiusY = .5f;
37     public static final int MODE_VIGNETTE = 0;
38     public static final int MODE_EXPOSURE = 1;
39     public static final int MODE_SATURATION = 2;
40     public static final int MODE_CONTRAST = 3;
41     public static final int MODE_FALLOFF = 4;
42     private static int MIN = -100;
43     private static int MAX = 100;
44     private static int MAXFALLOF = 200;
45
46     private BasicParameterInt mParamVignette = new BasicParameterInt(MODE_VIGNETTE, 50, MIN, MAX);
47     private BasicParameterInt mParamExposure = new BasicParameterInt(MODE_EXPOSURE, 0, MIN, MAX);
48     private BasicParameterInt mParamSaturation = new BasicParameterInt(MODE_SATURATION, 0, MIN, MAX);
49     private BasicParameterInt mParamContrast = new BasicParameterInt(MODE_CONTRAST, 0, MIN, MAX);
50     private BasicParameterInt mParamFalloff = new BasicParameterInt(MODE_FALLOFF, 40, 0, MAXFALLOF);
51     private BasicParameterInt[] mAllParam = {
52             mParamVignette,
53             mParamExposure,
54             mParamSaturation,
55             mParamContrast,
56             mParamFalloff};
57     private int mParameterMode;
58
59     public FilterVignetteRepresentation() {
60         super("Vignette");
61         setSerializationName("VIGNETTE");
62         setShowParameterValue(true);
63         setFilterType(FilterRepresentation.TYPE_VIGNETTE);
64         setTextId(R.string.vignette);
65         setEditorId(EditorVignette.ID);
66         setName("Vignette");
67         setFilterClass(ImageFilterVignette.class);
68     }
69
70     @Override
71     public void useParametersFrom(FilterRepresentation a) {
72         super.useParametersFrom(a);
73         FilterVignetteRepresentation rep = (FilterVignetteRepresentation) a;
74         mCenterX = rep.mCenterX;
75         mCenterY = rep.mCenterY;
76         mRadiusX = rep.mRadiusX;
77         mRadiusY = rep.mRadiusY;
78         mParamVignette.setValue(rep.mParamVignette.getValue());
79         mParamExposure.setValue(rep.mParamExposure.getValue());
80         mParamSaturation.setValue(rep.mParamSaturation.getValue());
81         mParamContrast.setValue(rep.mParamContrast.getValue());
82         mParamFalloff.setValue(rep.mParamFalloff.getValue());
83     }
84
85     public int getValue(int mode) {
86         return mAllParam[mode].getValue();
87     }
88
89     public void setValue(int mode, int value) {
90         mAllParam[mode].setValue(value);
91     }
92
93     @Override
94     public String toString() {
95         return getName() + " : " + mCenterX + ", " + mCenterY + " radius: " + mRadiusX;
96     }
97
98     @Override
99     public FilterRepresentation copy() {
100         FilterVignetteRepresentation representation = new FilterVignetteRepresentation();
101         copyAllParameters(representation);
102         return representation;
103     }
104
105     @Override
106     protected void copyAllParameters(FilterRepresentation representation) {
107         super.copyAllParameters(representation);
108         representation.useParametersFrom(this);
109     }
110
111     @Override
112     public void setCenter(float centerX, float centerY) {
113         mCenterX = centerX;
114         mCenterY = centerY;
115     }
116
117     @Override
118     public float getCenterX() {
119         return mCenterX;
120     }
121
122     @Override
123     public float getCenterY() {
124         return mCenterY;
125     }
126
127     @Override
128     public void setRadius(float radiusX, float radiusY) {
129         mRadiusX = radiusX;
130         mRadiusY = radiusY;
131     }
132
133     @Override
134     public void setRadiusX(float radiusX) {
135         mRadiusX = radiusX;
136     }
137
138     @Override
139     public void setRadiusY(float radiusY) {
140         mRadiusY = radiusY;
141     }
142
143     @Override
144     public float getRadiusX() {
145         return mRadiusX;
146     }
147
148     @Override
149     public float getRadiusY() {
150         return mRadiusY;
151     }
152
153     public boolean isCenterSet() {
154         return mCenterX != Float.NaN;
155     }
156
157     @Override
158     public boolean isNil() {
159         return false;
160     }
161
162     @Override
163     public boolean equals(FilterRepresentation representation) {
164         if (!super.equals(representation)) {
165             return false;
166         }
167         if (representation instanceof FilterVignetteRepresentation) {
168             FilterVignetteRepresentation rep = (FilterVignetteRepresentation) representation;
169             for (int i = 0; i < mAllParam.length; i++) {
170                 if (mAllParam[i].getValue() != rep.mAllParam[i].getValue())
171                     return false;
172             }
173             if (rep.getCenterX() == getCenterX()
174                     && rep.getCenterY() == getCenterY()
175                     && rep.getRadiusX() == getRadiusX()
176                     && rep.getRadiusY() == getRadiusY()) {
177                 return true;
178             }
179         }
180         return false;
181     }
182
183     private static final String ELLIPSE = "ellipse";
184     private static final String ARGS = "adjust";
185     @Override
186     public void serializeRepresentation(JsonWriter writer) throws IOException {
187         writer.beginObject();
188         writer.name(ELLIPSE);
189         writer.beginArray();
190         writer.value(mCenterX);
191         writer.value(mCenterY);
192         writer.value(mRadiusX);
193         writer.value(mRadiusY);
194         writer.endArray();
195
196         writer.name(ARGS);
197         writer.beginArray();
198         writer.value(mParamVignette.getValue());
199         writer.value(mParamExposure.getValue());
200         writer.value(mParamSaturation.getValue());
201         writer.value(mParamContrast.getValue());
202         writer.value(mParamFalloff.getValue());
203         writer.endArray();
204         writer.endObject();
205     }
206
207
208     @Override
209     public void deSerializeRepresentation(JsonReader sreader) throws IOException {
210         sreader.beginObject();
211
212         while (sreader.hasNext()) {
213             String name = sreader.nextName();
214             if (name.startsWith(ELLIPSE)) {
215                 sreader.beginArray();
216                 sreader.hasNext();
217                 mCenterX = (float) sreader.nextDouble();
218                 sreader.hasNext();
219                 mCenterY = (float) sreader.nextDouble();
220                 sreader.hasNext();
221                 mRadiusX = (float) sreader.nextDouble();
222                 sreader.hasNext();
223                 mRadiusY = (float) sreader.nextDouble();
224                 sreader.hasNext();
225                 sreader.endArray();
226             } else if (name.startsWith(ARGS)) {
227                 sreader.beginArray();
228                 sreader.hasNext();
229                 mParamVignette.setValue(sreader.nextInt());
230                 sreader.hasNext();
231                 mParamExposure.setValue(sreader.nextInt());
232                 sreader.hasNext();
233                 mParamSaturation.setValue(sreader.nextInt());
234                 sreader.hasNext();
235                 mParamContrast.setValue(sreader.nextInt());
236                 sreader.hasNext();
237                 mParamFalloff.setValue(sreader.nextInt());
238                 sreader.hasNext();
239                 sreader.endArray();
240             } else  {
241                 sreader.skipValue();
242             }
243         }
244         sreader.endObject();
245     }
246     public int getParameterMode() {
247         return mParameterMode;
248     }
249
250     public void setParameterMode(int parameterMode) {
251         mParameterMode = parameterMode;
252     }
253
254     public int getCurrentParameter() {
255         return getValue(mParameterMode);
256     }
257
258     public void setCurrentParameter(int value) {
259         setValue(mParameterMode, value);
260     }
261
262     public BasicParameterInt getFilterParameter(int index) {
263         return mAllParam[index];
264     }
265
266 }