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