171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard/*
271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * Copyright (C) 2013 The Android Open Source Project
371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard *
471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * Licensed under the Apache License, Version 2.0 (the "License");
571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * you may not use this file except in compliance with the License.
671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * You may obtain a copy of the License at
771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard *
871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard *      http://www.apache.org/licenses/LICENSE-2.0
971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard *
1071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * Unless required by applicable law or agreed to in writing, software
1171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * distributed under the License is distributed on an "AS IS" BASIS,
1271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * See the License for the specific language governing permissions and
1471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * limitations under the License.
1571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard */
1671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
1771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroardpackage com.android.gallery3d.filtershow.filters;
1871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
19502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui
20502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghuiimport android.util.Log;
21502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui
22235d2179374bec14040f20af91dc753e38ea3639John Hofordimport com.android.gallery3d.filtershow.controller.Control;
23d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hofordimport com.android.gallery3d.filtershow.controller.FilterView;
24d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hofordimport com.android.gallery3d.filtershow.controller.Parameter;
25235d2179374bec14040f20af91dc753e38ea3639John Hofordimport com.android.gallery3d.filtershow.controller.ParameterInteger;
2671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
27235d2179374bec14040f20af91dc753e38ea3639John Hofordpublic class FilterBasicRepresentation extends FilterRepresentation implements ParameterInteger {
28502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui    private static final String LOGTAG = "FilterBasicRep";
2971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    private int mMinimum;
3071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    private int mValue;
3171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    private int mMaximum;
3271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    private int mDefaultValue;
3371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    private int mPreviewValue;
34afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    public static final String SERIAL_NAME = "Name";
35afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    public static final String SERIAL_VALUE = "Value";
36502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui    private boolean mLogVerbose = Log.isLoggable(LOGTAG, Log.VERBOSE);
3771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
3871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public FilterBasicRepresentation(String name, int minimum, int value, int maximum) {
3971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        super(name);
4071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMinimum = minimum;
4171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMaximum = maximum;
4271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        setValue(value);
4371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
4471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
45235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
4671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public String toString() {
4771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return getName() + " : " + mMinimum + " < " + mValue + " < " + mMaximum;
4871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
4971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
5071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    @Override
513f0034140c165b86fbaf5c0369f39431548308e9John Hoford    public FilterRepresentation copy() {
523f0034140c165b86fbaf5c0369f39431548308e9John Hoford        FilterBasicRepresentation representation = new FilterBasicRepresentation(getName(),0,0,0);
533f0034140c165b86fbaf5c0369f39431548308e9John Hoford        copyAllParameters(representation);
5471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return representation;
5571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
5671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
57235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
583f0034140c165b86fbaf5c0369f39431548308e9John Hoford    protected void copyAllParameters(FilterRepresentation representation) {
593f0034140c165b86fbaf5c0369f39431548308e9John Hoford        super.copyAllParameters(representation);
603f0034140c165b86fbaf5c0369f39431548308e9John Hoford        representation.useParametersFrom(this);
613f0034140c165b86fbaf5c0369f39431548308e9John Hoford    }
623f0034140c165b86fbaf5c0369f39431548308e9John Hoford
633f0034140c165b86fbaf5c0369f39431548308e9John Hoford    @Override
6471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void useParametersFrom(FilterRepresentation a) {
6571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (a instanceof FilterBasicRepresentation) {
6671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            FilterBasicRepresentation representation = (FilterBasicRepresentation) a;
6771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setMinimum(representation.getMinimum());
6871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setMaximum(representation.getMaximum());
6971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setValue(representation.getValue());
7071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setDefaultValue(representation.getDefaultValue());
7171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setPreviewValue(representation.getPreviewValue());
7271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
7371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
7471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
7571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    @Override
7671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public boolean equals(FilterRepresentation representation) {
77d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        if (!super.equals(representation)) {
7871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            return false;
7971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
8071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (representation instanceof FilterBasicRepresentation) {
8171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            FilterBasicRepresentation basic = (FilterBasicRepresentation) representation;
8271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            if (basic.mMinimum == mMinimum
8371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mMaximum == mMaximum
8471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mValue == mValue
8571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mDefaultValue == mDefaultValue
8671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mPreviewValue == mPreviewValue) {
8771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                return true;
8871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            }
8971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
9071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return false;
9171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
9271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
93235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
9471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getMinimum() {
9571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mMinimum;
9671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
9771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
9871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setMinimum(int minimum) {
9971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMinimum = minimum;
10071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
10171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
102235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
10371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getValue() {
10471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mValue;
10571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
10671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
107235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
10871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setValue(int value) {
10971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mValue = value;
11071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (mValue < mMinimum) {
11171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            mValue = mMinimum;
11271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
11371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (mValue > mMaximum) {
11471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            mValue = mMaximum;
11571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
11671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
11771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
118235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
11971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getMaximum() {
12071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mMaximum;
12171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
12271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
12371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setMaximum(int maximum) {
12471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMaximum = maximum;
12571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
12671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
12771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setDefaultValue(int defaultValue) {
12871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mDefaultValue = defaultValue;
12971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
13071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
131235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
13271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getDefaultValue() {
13371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mDefaultValue;
13471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
13571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
13671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getPreviewValue() {
13771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mPreviewValue;
13871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
13971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
14071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setPreviewValue(int previewValue) {
14171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mPreviewValue = previewValue;
14271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
1432562a98c156a55b51239fea383838a11a0292c0enicolasroard
144235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
1452562a98c156a55b51239fea383838a11a0292c0enicolasroard    public String getStateRepresentation() {
14633de212ec780eaf2bc8d86908f07da33ea8dd7f2John Hoford        int val = getValue();
14733de212ec780eaf2bc8d86908f07da33ea8dd7f2John Hoford        return ((val > 0) ? "+" : "") + val;
1482562a98c156a55b51239fea383838a11a0292c0enicolasroard    }
149235d2179374bec14040f20af91dc753e38ea3639John Hoford
150235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
151235d2179374bec14040f20af91dc753e38ea3639John Hoford    public String getParameterType(){
152235d2179374bec14040f20af91dc753e38ea3639John Hoford        return sParameterType;
153235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
154235d2179374bec14040f20af91dc753e38ea3639John Hoford
155235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
156235d2179374bec14040f20af91dc753e38ea3639John Hoford    public void setController(Control control) {
157235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
158235d2179374bec14040f20af91dc753e38ea3639John Hoford
159235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
160235d2179374bec14040f20af91dc753e38ea3639John Hoford    public String getValueString() {
161235d2179374bec14040f20af91dc753e38ea3639John Hoford        return getStateRepresentation();
162235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
163235d2179374bec14040f20af91dc753e38ea3639John Hoford
164235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
165235d2179374bec14040f20af91dc753e38ea3639John Hoford    public String getParameterName() {
166235d2179374bec14040f20af91dc753e38ea3639John Hoford        return getName();
167235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
168d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford
169d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    @Override
170d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    public void setFilterView(FilterView editor) {
171d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    }
172d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford
173d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    @Override
174d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    public void copyFrom(Parameter src) {
175d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford        useParametersFrom((FilterBasicRepresentation) src);
176d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    }
177afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford
178afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    @Override
179afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    public String[][] serializeRepresentation() {
180afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford        String[][] ret = {
181afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford                {SERIAL_NAME  , getName() },
182afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford                {SERIAL_VALUE , Integer.toString(mValue)}};
183afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford        return ret;
184afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    }
185afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford
186afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    @Override
187afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    public void deSerializeRepresentation(String[][] rep) {
188afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford        super.deSerializeRepresentation(rep);
189afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford        for (int i = 0; i < rep.length; i++) {
190afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford            if (SERIAL_VALUE.equals(rep[i][0])) {
191afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford                mValue = Integer.parseInt(rep[i][1]);
192afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford                break;
193afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford            }
194afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford        }
195afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford    }
19671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard}
197