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