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