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;
34502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui    private boolean mLogVerbose = Log.isLoggable(LOGTAG, Log.VERBOSE);
3571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
3671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public FilterBasicRepresentation(String name, int minimum, int value, int maximum) {
3771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        super(name);
3871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMinimum = minimum;
3971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMaximum = maximum;
4071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        setValue(value);
4171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
4271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
43235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
4471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public String toString() {
4571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return getName() + " : " + mMinimum + " < " + mValue + " < " + mMaximum;
4671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
4771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
4871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    @Override
4971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public FilterRepresentation clone() throws CloneNotSupportedException {
5071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        FilterBasicRepresentation representation = (FilterBasicRepresentation) super.clone();
5171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        representation.setMinimum(getMinimum());
5271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        representation.setMaximum(getMaximum());
5371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        representation.setValue(getValue());
54502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui        if (mLogVerbose) {
55502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui            Log.v(LOGTAG, "cloning from <" + this + "> to <" + representation + ">");
56502244165ab673f3d0b1d0c0288de4b010c5c5c9ztenghui        }
5771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return representation;
5871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
5971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
60235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
6171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void useParametersFrom(FilterRepresentation a) {
6271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (a instanceof FilterBasicRepresentation) {
6371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            FilterBasicRepresentation representation = (FilterBasicRepresentation) a;
6471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setMinimum(representation.getMinimum());
6571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setMaximum(representation.getMaximum());
6671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setValue(representation.getValue());
6771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setDefaultValue(representation.getDefaultValue());
6871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            setPreviewValue(representation.getPreviewValue());
6971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
7071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
7171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
7271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    @Override
7371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public boolean equals(FilterRepresentation representation) {
74d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        if (!super.equals(representation)) {
7571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            return false;
7671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
7771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (representation instanceof FilterBasicRepresentation) {
7871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            FilterBasicRepresentation basic = (FilterBasicRepresentation) representation;
7971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            if (basic.mMinimum == mMinimum
8071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mMaximum == mMaximum
8171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mValue == mValue
8271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mDefaultValue == mDefaultValue
8371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                    && basic.mPreviewValue == mPreviewValue) {
8471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard                return true;
8571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            }
8671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
8771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return false;
8871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
8971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
90235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
9171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getMinimum() {
9271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mMinimum;
9371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
9471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
9571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setMinimum(int minimum) {
9671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMinimum = minimum;
9771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
9871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
99235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
10071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getValue() {
10171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mValue;
10271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
10371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
104235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
10571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setValue(int value) {
10671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mValue = value;
10771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (mValue < mMinimum) {
10871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            mValue = mMinimum;
10971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
11071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        if (mValue > mMaximum) {
11171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard            mValue = mMaximum;
11271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        }
11371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
11471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
115235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
11671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getMaximum() {
11771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mMaximum;
11871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
11971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
12071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setMaximum(int maximum) {
12171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mMaximum = maximum;
12271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
12371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
12471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setDefaultValue(int defaultValue) {
12571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mDefaultValue = defaultValue;
12671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
12771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
128235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
12971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getDefaultValue() {
13071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mDefaultValue;
13171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
13271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
13371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public int getPreviewValue() {
13471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        return mPreviewValue;
13571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
13671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard
13771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    public void setPreviewValue(int previewValue) {
13871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard        mPreviewValue = previewValue;
13971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard    }
1402562a98c156a55b51239fea383838a11a0292c0enicolasroard
141235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
1422562a98c156a55b51239fea383838a11a0292c0enicolasroard    public String getStateRepresentation() {
14333de212ec780eaf2bc8d86908f07da33ea8dd7f2John Hoford        int val = getValue();
14433de212ec780eaf2bc8d86908f07da33ea8dd7f2John Hoford        return ((val > 0) ? "+" : "") + val;
1452562a98c156a55b51239fea383838a11a0292c0enicolasroard    }
146235d2179374bec14040f20af91dc753e38ea3639John Hoford
147235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
148235d2179374bec14040f20af91dc753e38ea3639John Hoford    public String getParameterType(){
149235d2179374bec14040f20af91dc753e38ea3639John Hoford        return sParameterType;
150235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
151235d2179374bec14040f20af91dc753e38ea3639John Hoford
152235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
153235d2179374bec14040f20af91dc753e38ea3639John Hoford    public void setController(Control control) {
154235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
155235d2179374bec14040f20af91dc753e38ea3639John Hoford
156235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
157235d2179374bec14040f20af91dc753e38ea3639John Hoford    public String getValueString() {
158235d2179374bec14040f20af91dc753e38ea3639John Hoford        return getStateRepresentation();
159235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
160235d2179374bec14040f20af91dc753e38ea3639John Hoford
161235d2179374bec14040f20af91dc753e38ea3639John Hoford    @Override
162235d2179374bec14040f20af91dc753e38ea3639John Hoford    public String getParameterName() {
163235d2179374bec14040f20af91dc753e38ea3639John Hoford        return getName();
164235d2179374bec14040f20af91dc753e38ea3639John Hoford    }
165d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford
166d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    @Override
167d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    public void setFilterView(FilterView editor) {
168d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    }
169d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford
170d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    @Override
171d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    public void copyFrom(Parameter src) {
172d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford        useParametersFrom((FilterBasicRepresentation) src);
173d2f5fe607ee6d7b5f79862b495495e2f6024cdabJohn Hoford    }
17471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard}
175