ImageFilter.java revision 2f879102d630815df64636b8d37e3a7eea8e8b65
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 mPreviewParameter = mMaxParameter; 13 protected int mDefaultParameter = 0; 14 protected int mParameter = 0; 15 private ImagePreset mImagePreset; 16 17 protected String mName = "Original"; 18 private final String LOGTAG = "ImageFilter"; 19 public static final byte TYPE_BORDER =1; 20 public static final byte TYPE_FX = 2; 21 public static final byte TYPE_WBALANCE = 3; 22 public static final byte TYPE_VIGNETTE = 4; 23 public static final byte TYPE_NORMAL = 5; 24 public static final byte TYPE_TINYPLANET = 6; 25 private byte filterType = TYPE_NORMAL; 26 27 public byte getFilterType(){ 28 return filterType; 29 } 30 31 protected void setFilterType(byte type){ 32 filterType = type; 33 } 34 35 @Override 36 public ImageFilter clone() throws CloneNotSupportedException { 37 ImageFilter filter = (ImageFilter) super.clone(); 38 filter.setName(getName()); 39 filter.setParameter(getParameter()); 40 filter.setFilterType(filterType); 41 filter.mMaxParameter = mMaxParameter; 42 filter.mMinParameter = mMinParameter; 43 filter.mImagePreset = mImagePreset; 44 filter.mDefaultParameter = mDefaultParameter; 45 filter.mPreviewParameter = mPreviewParameter; 46 return filter; 47 } 48 49 public boolean isNil() { 50 if (mParameter == mDefaultParameter) { 51 return true; 52 } 53 return false; 54 } 55 56 public void setName(String name) { 57 mName = name; 58 } 59 60 public String getName() { 61 return mName; 62 } 63 64 public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) { 65 // do nothing here, subclasses will implement filtering here 66 return bitmap; 67 } 68 69 public int getParameter() { 70 return mParameter; 71 } 72 73 public void setParameter(int value) { 74 mParameter = value; 75 } 76 77 /** 78 * The maximum allowed value (inclusive) 79 * @return maximum value allowed as input to this filter 80 */ 81 public int getMaxParameter(){ 82 return mMaxParameter; 83 } 84 85 /** 86 * The parameter value to be used in previews. 87 * @return parameter value to be used to preview the filter 88 */ 89 public int getPreviewParameter(){ 90 return mPreviewParameter; 91 } 92 93 /** 94 * The minimum allowed value (inclusive) 95 * @return minimum value allowed as input to this filter 96 */ 97 public int getMinParameter(){ 98 return mMinParameter; 99 } 100 101 /** 102 * Returns the default value returned by this filter. 103 * @return default value 104 */ 105 public int getDefaultParameter(){ 106 return mDefaultParameter; 107 } 108 109 public ImagePreset getImagePreset() { 110 return mImagePreset; 111 } 112 113 public void setImagePreset(ImagePreset mPreset) { 114 this.mImagePreset = mPreset; 115 } 116 117 public boolean same(ImageFilter filter) { 118 if (!filter.getName().equalsIgnoreCase(getName())) { 119 return false; 120 } 121 return true; 122 } 123 124 native protected void nativeApplyGradientFilter(Bitmap bitmap, int w, int h, 125 int[] redGradient, int[] greenGradient, int[] blueGradient); 126 127} 128