ImageFilter.java revision 2f879102d630815df64636b8d37e3a7eea8e8b65
1
2package com.android.gallery3d.filtershow.filters;
3
4import android.graphics.Bitmap;
5
6import com.android.gallery3d.filtershow.presets.ImagePreset;
7
8public class ImageFilter implements Cloneable {
9
10    protected int mMaxParameter = 100;
11    protected int mMinParameter = -100;
12    protected int mPreviewParameter = mMaxParameter;
13    protected int mDefaultParameter = 0;
14    protected int mParameter = 0;
15    private ImagePreset mImagePreset;
16
17    protected String mName = "Original";
18    private final String LOGTAG = "ImageFilter";
19    public static final byte TYPE_BORDER =1;
20    public static final byte TYPE_FX  = 2;
21    public static final byte TYPE_WBALANCE = 3;
22    public static final byte TYPE_VIGNETTE = 4;
23    public static final byte TYPE_NORMAL = 5;
24    public static final byte TYPE_TINYPLANET = 6;
25    private byte filterType = TYPE_NORMAL;
26
27    public byte getFilterType(){
28        return filterType;
29    }
30
31    protected void setFilterType(byte type){
32        filterType = type;
33    }
34
35    @Override
36    public ImageFilter clone() throws CloneNotSupportedException {
37        ImageFilter filter = (ImageFilter) super.clone();
38        filter.setName(getName());
39        filter.setParameter(getParameter());
40        filter.setFilterType(filterType);
41        filter.mMaxParameter = mMaxParameter;
42        filter.mMinParameter = mMinParameter;
43        filter.mImagePreset = mImagePreset;
44        filter.mDefaultParameter = mDefaultParameter;
45        filter.mPreviewParameter = mPreviewParameter;
46        return filter;
47    }
48
49    public boolean isNil() {
50        if (mParameter == mDefaultParameter) {
51            return true;
52        }
53        return false;
54    }
55
56    public void setName(String name) {
57        mName = name;
58    }
59
60    public String getName() {
61        return mName;
62    }
63
64    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
65        // do nothing here, subclasses will implement filtering here
66        return bitmap;
67    }
68
69    public int getParameter() {
70        return mParameter;
71    }
72
73    public void setParameter(int value) {
74        mParameter = value;
75    }
76
77    /**
78     * The maximum allowed value (inclusive)
79     * @return maximum value allowed as input to this filter
80     */
81    public int getMaxParameter(){
82        return mMaxParameter;
83    }
84
85    /**
86     * The parameter value to be used in previews.
87     * @return parameter value to be used to preview the filter
88     */
89    public int getPreviewParameter(){
90        return mPreviewParameter;
91    }
92
93    /**
94     * The minimum allowed value (inclusive)
95     * @return minimum value allowed as input to this filter
96     */
97    public int getMinParameter(){
98        return mMinParameter;
99    }
100
101    /**
102     * Returns the default value returned by this filter.
103     * @return default value
104     */
105    public int getDefaultParameter(){
106        return mDefaultParameter;
107    }
108
109    public ImagePreset getImagePreset() {
110        return mImagePreset;
111    }
112
113    public void setImagePreset(ImagePreset mPreset) {
114        this.mImagePreset = mPreset;
115    }
116
117    public boolean same(ImageFilter filter) {
118        if (!filter.getName().equalsIgnoreCase(getName())) {
119            return false;
120        }
121        return true;
122    }
123
124    native protected void nativeApplyGradientFilter(Bitmap bitmap, int w, int h,
125            int[] redGradient, int[] greenGradient, int[] blueGradient);
126
127}
128