OSDN Git Service

Revert "Revert "Make Gallery2 use platform RenderScript""
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / filters / FilterChanSatRepresentation.java
1 /*
2  * Copyright (C) 2013 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.controller.ParameterSet;
26 import com.android.gallery3d.filtershow.editors.EditorChanSat;
27 import com.android.gallery3d.filtershow.imageshow.ControlPoint;
28 import com.android.gallery3d.filtershow.imageshow.Spline;
29
30 import java.io.IOException;
31 import java.util.Vector;
32
33 /**
34  * Representation for a filter that has per channel & Master saturation
35  */
36 public class FilterChanSatRepresentation extends FilterRepresentation implements ParameterSet {
37     private static final String LOGTAG = "FilterChanSatRepresentation";
38     private static final String ARGS = "ARGS";
39     private static final String SERIALIZATION_NAME = "channelsaturation";
40
41     public static final int MODE_MASTER = 0;
42     public static final int MODE_RED = 1;
43     public static final int MODE_YELLOW = 2;
44     public static final int MODE_GREEN = 3;
45     public static final int MODE_CYAN = 4;
46     public static final int MODE_BLUE = 5;
47     public static final int MODE_MAGENTA = 6;
48     private int mParameterMode = MODE_MASTER;
49
50     private static int MINSAT = -100;
51     private static int MAXSAT = 100;
52     private BasicParameterInt mParamMaster = new BasicParameterInt(MODE_MASTER, 0, MINSAT, MAXSAT);
53     private BasicParameterInt mParamRed = new BasicParameterInt(MODE_RED, 0, MINSAT, MAXSAT);
54     private BasicParameterInt mParamYellow = new BasicParameterInt(MODE_YELLOW, 0, MINSAT, MAXSAT);
55     private BasicParameterInt mParamGreen = new BasicParameterInt(MODE_GREEN, 0, MINSAT, MAXSAT);
56     private BasicParameterInt mParamCyan = new BasicParameterInt(MODE_CYAN, 0, MINSAT, MAXSAT);
57     private BasicParameterInt mParamBlue = new BasicParameterInt(MODE_BLUE, 0, MINSAT, MAXSAT);
58     private BasicParameterInt mParamMagenta = new BasicParameterInt(MODE_MAGENTA, 0, MINSAT, MAXSAT);
59
60     private BasicParameterInt[] mAllParam = {
61             mParamMaster,
62             mParamRed,
63             mParamYellow,
64             mParamGreen,
65             mParamCyan,
66             mParamBlue,
67             mParamMagenta};
68
69     public FilterChanSatRepresentation() {
70         super("ChannelSaturation");
71         setTextId(R.string.saturation);
72         setFilterType(FilterRepresentation.TYPE_NORMAL);
73         setSerializationName(SERIALIZATION_NAME);
74         setFilterClass(ImageFilterChanSat.class);
75         setEditorId(EditorChanSat.ID);
76         setSupportsPartialRendering(true);
77     }
78
79     public String toString() {
80         return getName() + " : " + mParamRed + ", " + mParamCyan + ", " + mParamRed
81                 + ", " + mParamGreen + ", " + mParamMaster + ", " + mParamYellow;
82     }
83
84     @Override
85     public FilterRepresentation copy() {
86         FilterChanSatRepresentation representation = new FilterChanSatRepresentation();
87         copyAllParameters(representation);
88         return representation;
89     }
90
91     @Override
92     protected void copyAllParameters(FilterRepresentation representation) {
93         super.copyAllParameters(representation);
94         representation.useParametersFrom(this);
95     }
96
97     public void useParametersFrom(FilterRepresentation a) {
98         if (a instanceof FilterChanSatRepresentation) {
99             FilterChanSatRepresentation representation = (FilterChanSatRepresentation) a;
100
101             for (int i = 0; i < mAllParam.length; i++) {
102                 mAllParam[i].copyFrom(representation.mAllParam[i]);
103             }
104         }
105     }
106
107     @Override
108     public boolean equals(FilterRepresentation representation) {
109         if (!super.equals(representation)) {
110             return false;
111         }
112         if (representation instanceof FilterChanSatRepresentation) {
113             FilterChanSatRepresentation rep = (FilterChanSatRepresentation) representation;
114             for (int i = 0; i < mAllParam.length; i++) {
115                 if (rep.getValue(i) != getValue(i))
116                     return false;
117             }
118             return true;
119         }
120         return false;
121     }
122
123     public int getValue(int mode) {
124         return mAllParam[mode].getValue();
125     }
126
127     public void setValue(int mode, int value) {
128         mAllParam[mode].setValue(value);
129     }
130
131     public int getMinimum() {
132         return mParamMaster.getMinimum();
133     }
134
135     public int getMaximum() {
136         return mParamMaster.getMaximum();
137     }
138
139     public int getParameterMode() {
140         return mParameterMode;
141     }
142
143     public void setParameterMode(int parameterMode) {
144         mParameterMode = parameterMode;
145     }
146
147     public int getCurrentParameter() {
148         return getValue(mParameterMode);
149     }
150
151     public void setCurrentParameter(int value) {
152         setValue(mParameterMode, value);
153     }
154
155     @Override
156     public int getNumberOfParameters() {
157         return 6;
158     }
159
160     @Override
161     public Parameter getFilterParameter(int index) {
162         return mAllParam[index];
163     }
164
165     @Override
166     public void serializeRepresentation(JsonWriter writer) throws IOException {
167         writer.beginObject();
168
169         writer.name(ARGS);
170         writer.beginArray();
171         writer.value(getValue(MODE_MASTER));
172         writer.value(getValue(MODE_RED));
173         writer.value(getValue(MODE_YELLOW));
174         writer.value(getValue(MODE_GREEN));
175         writer.value(getValue(MODE_CYAN));
176         writer.value(getValue(MODE_BLUE));
177         writer.value(getValue(MODE_MAGENTA));
178         writer.endArray();
179         writer.endObject();
180     }
181
182     @Override
183     public void deSerializeRepresentation(JsonReader sreader) throws IOException {
184         sreader.beginObject();
185
186         while (sreader.hasNext()) {
187             String name = sreader.nextName();
188             if (name.startsWith(ARGS)) {
189                 sreader.beginArray();
190                 sreader.hasNext();
191                 setValue(MODE_MASTER, sreader.nextInt());
192                 sreader.hasNext();
193                 setValue(MODE_RED, sreader.nextInt());
194                 sreader.hasNext();
195                 setValue(MODE_YELLOW, sreader.nextInt());
196                 sreader.hasNext();
197                 setValue(MODE_GREEN, sreader.nextInt());
198                 sreader.hasNext();
199                 setValue(MODE_CYAN, sreader.nextInt());
200                 sreader.hasNext();
201                 setValue(MODE_BLUE, sreader.nextInt());
202                 sreader.hasNext();
203                 setValue(MODE_MAGENTA, sreader.nextInt());
204                 sreader.hasNext();
205                 sreader.endArray();
206             } else {
207                 sreader.skipValue();
208             }
209         }
210         sreader.endObject();
211     }
212 }