ImageFilter.java revision 49e31adb4d03ecd9a8972d61493853a96b62e7e4
1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.gallery3d.filtershow.filters; 18 19import android.graphics.Bitmap; 20 21import com.android.gallery3d.R; 22import com.android.gallery3d.filtershow.presets.ImagePreset; 23 24public class ImageFilter implements Cloneable { 25 26 public static int DEFAULT_MAX_PARAMETER = 100; 27 public static int DEFAULT_MIN_PARAMETER = -100; 28 public static int DEFAULT_INITIAL_PARAMETER = 0; 29 30 protected int mMaxParameter = DEFAULT_MAX_PARAMETER; 31 protected int mMinParameter = DEFAULT_MIN_PARAMETER; 32 protected int mPreviewParameter = mMaxParameter; 33 protected int mDefaultParameter = DEFAULT_INITIAL_PARAMETER; 34 protected int mParameter = DEFAULT_INITIAL_PARAMETER; 35 private ImagePreset mImagePreset; 36 37 protected String mName = "Original"; 38 private final String LOGTAG = "ImageFilter"; 39 public static final byte TYPE_BORDER = 1; 40 public static final byte TYPE_FX = 2; 41 public static final byte TYPE_WBALANCE = 3; 42 public static final byte TYPE_VIGNETTE = 4; 43 public static final byte TYPE_NORMAL = 5; 44 public static final byte TYPE_TINYPLANET = 6; 45 private byte filterType = TYPE_NORMAL; 46 47 public byte getFilterType() { 48 return filterType; 49 } 50 51 protected void setFilterType(byte type) { 52 filterType = type; 53 } 54 55 public int getButtonId() { 56 return 0; 57 } 58 59 public int getTextId() { 60 return 0; 61 } 62 63 public int getOverlayBitmaps() { 64 return 0; 65 } 66 67 public int getEditingViewId() { 68 return R.id.imageShow; 69 } 70 71 public boolean showEditingControls() { 72 return true; 73 } 74 75 public boolean showParameterValue() { 76 return true; 77 } 78 79 @Override 80 public ImageFilter clone() throws CloneNotSupportedException { 81 ImageFilter filter = (ImageFilter) super.clone(); 82 filter.setName(getName()); 83 filter.setParameter(getParameter()); 84 filter.setFilterType(filterType); 85 filter.mMaxParameter = mMaxParameter; 86 filter.mMinParameter = mMinParameter; 87 filter.mImagePreset = mImagePreset; 88 filter.mDefaultParameter = mDefaultParameter; 89 filter.mPreviewParameter = mPreviewParameter; 90 return filter; 91 } 92 93 public void reset() { 94 setParameter(mDefaultParameter); 95 } 96 97 public boolean isNil() { 98 if (mParameter == mDefaultParameter) { 99 return true; 100 } 101 return false; 102 } 103 104 public void setName(String name) { 105 mName = name; 106 } 107 108 public String getName() { 109 return mName; 110 } 111 112 public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) { 113 // do nothing here, subclasses will implement filtering here 114 return bitmap; 115 } 116 117 public int getParameter() { 118 return mParameter; 119 } 120 121 public void setParameter(int value) { 122 mParameter = value; 123 } 124 125 /** 126 * The maximum allowed value (inclusive) 127 * @return maximum value allowed as input to this filter 128 */ 129 public int getMaxParameter() { 130 return mMaxParameter; 131 } 132 133 /** 134 * The parameter value to be used in previews. 135 * @return parameter value to be used to preview the filter 136 */ 137 public int getPreviewParameter() { 138 return mPreviewParameter; 139 } 140 141 /** 142 * The minimum allowed value (inclusive) 143 * @return minimum value allowed as input to this filter 144 */ 145 public int getMinParameter() { 146 return mMinParameter; 147 } 148 149 /** 150 * Returns the default value returned by this filter. 151 * @return default value 152 */ 153 public int getDefaultParameter() { 154 return mDefaultParameter; 155 } 156 157 public ImagePreset getImagePreset() { 158 return mImagePreset; 159 } 160 161 public void setImagePreset(ImagePreset mPreset) { 162 this.mImagePreset = mPreset; 163 } 164 165 public boolean same(ImageFilter filter) { 166 if (filter == null) { 167 return false; 168 } 169 if (!filter.getName().equalsIgnoreCase(getName())) { 170 return false; 171 } 172 return true; 173 } 174 175 native protected void nativeApplyGradientFilter(Bitmap bitmap, int w, int h, 176 int[] redGradient, int[] greenGradient, int[] blueGradient); 177 178} 179