2 * Copyright (C) 2012 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.gallery3d.filtershow.filters;
19 import android.util.JsonReader;
20 import android.util.JsonWriter;
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;
28 import java.io.IOException;
30 public class FilterVignetteRepresentation extends FilterRepresentation implements Oval {
31 private static final String LOGTAG = "FilterVignetteRepresentation";
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;
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 = {
57 private int mParameterMode;
59 public FilterVignetteRepresentation() {
61 setSerializationName("VIGNETTE");
62 setShowParameterValue(true);
63 setFilterType(FilterRepresentation.TYPE_VIGNETTE);
64 setTextId(R.string.vignette);
65 setEditorId(EditorVignette.ID);
67 setFilterClass(ImageFilterVignette.class);
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());
85 public int getValue(int mode) {
86 return mAllParam[mode].getValue();
89 public void setValue(int mode, int value) {
90 mAllParam[mode].setValue(value);
94 public String toString() {
95 return getName() + " : " + mCenterX + ", " + mCenterY + " radius: " + mRadiusX;
99 public FilterRepresentation copy() {
100 FilterVignetteRepresentation representation = new FilterVignetteRepresentation();
101 copyAllParameters(representation);
102 return representation;
106 protected void copyAllParameters(FilterRepresentation representation) {
107 super.copyAllParameters(representation);
108 representation.useParametersFrom(this);
112 public void setCenter(float centerX, float centerY) {
118 public float getCenterX() {
123 public float getCenterY() {
128 public void setRadius(float radiusX, float radiusY) {
134 public void setRadiusX(float radiusX) {
139 public void setRadiusY(float radiusY) {
144 public float getRadiusX() {
149 public float getRadiusY() {
153 public boolean isCenterSet() {
154 return mCenterX != Float.NaN;
158 public boolean isNil() {
163 public boolean equals(FilterRepresentation representation) {
164 if (!super.equals(representation)) {
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())
173 if (rep.getCenterX() == getCenterX()
174 && rep.getCenterY() == getCenterY()
175 && rep.getRadiusX() == getRadiusX()
176 && rep.getRadiusY() == getRadiusY()) {
183 private static final String ELLIPSE = "ellipse";
184 private static final String ARGS = "adjust";
186 public void serializeRepresentation(JsonWriter writer) throws IOException {
187 writer.beginObject();
188 writer.name(ELLIPSE);
190 writer.value(mCenterX);
191 writer.value(mCenterY);
192 writer.value(mRadiusX);
193 writer.value(mRadiusY);
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());
209 public void deSerializeRepresentation(JsonReader sreader) throws IOException {
210 sreader.beginObject();
212 while (sreader.hasNext()) {
213 String name = sreader.nextName();
214 if (name.startsWith(ELLIPSE)) {
215 sreader.beginArray();
217 mCenterX = (float) sreader.nextDouble();
219 mCenterY = (float) sreader.nextDouble();
221 mRadiusX = (float) sreader.nextDouble();
223 mRadiusY = (float) sreader.nextDouble();
226 } else if (name.startsWith(ARGS)) {
227 sreader.beginArray();
229 mParamVignette.setValue(sreader.nextInt());
231 mParamExposure.setValue(sreader.nextInt());
233 mParamSaturation.setValue(sreader.nextInt());
235 mParamContrast.setValue(sreader.nextInt());
237 mParamFalloff.setValue(sreader.nextInt());
246 public int getParameterMode() {
247 return mParameterMode;
250 public void setParameterMode(int parameterMode) {
251 mParameterMode = parameterMode;
254 public int getCurrentParameter() {
255 return getValue(mParameterMode);
258 public void setCurrentParameter(int value) {
259 setValue(mParameterMode, value);
262 public BasicParameterInt getFilterParameter(int index) {
263 return mAllParam[index];