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