ImageFilter.java revision 3038d014b7ade998d1820c997242b9d9d8bc7ccf
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 void setName(String name) {
42        mName = name;
43    }
44
45    public String getName() {
46        return mName;
47    }
48
49    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
50        // do nothing here, subclasses will implement filtering here
51        return bitmap;
52    }
53
54    public int getParameter() {
55        return mParameter;
56    }
57
58    public void setParameter(int value) {
59        mParameter = value;
60    }
61
62    /**
63     * The maximum allowed value (inclusive)
64     * @return maximum value allowed as input to this filter
65     */
66    public int getMaxParameter(){
67        return mMaxParameter;
68    }
69
70    /**
71     * The minimum allowed value (inclusive)
72     * @return minimum value allowed as input to this filter
73     */
74    public int getMinParameter(){
75        return mMinParameter;
76    }
77
78    /**
79     * Returns the default value returned by this filter.
80     * @return default value
81     */
82    public int getDefaultParameter(){
83        return mDefaultParameter;
84    }
85
86    public boolean same(ImageFilter filter) {
87        if (!filter.getName().equalsIgnoreCase(getName())) {
88            return false;
89        }
90        return true;
91    }
92
93    native protected void nativeApplyGradientFilter(Bitmap bitmap, int w, int h,
94            int[] redGradient, int[] greenGradient, int[] blueGradient);
95
96}
97