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