diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/ImageFilter.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilter.java | 168 |
1 files changed, 20 insertions, 148 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java index a261031c3..614c6a01d 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java @@ -17,94 +17,19 @@ package com.android.gallery3d.filtershow.filters; import android.graphics.Bitmap; +import android.graphics.Matrix; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.editors.BasicEditor; +import com.android.gallery3d.filtershow.imageshow.GeometryMetadata; import com.android.gallery3d.filtershow.presets.ImagePreset; -public class ImageFilter implements Cloneable { +public abstract class ImageFilter implements Cloneable { - public static int DEFAULT_MAX_PARAMETER = 100; - public static int DEFAULT_MIN_PARAMETER = -100; - public static int DEFAULT_INITIAL_PARAMETER = 0; - - protected int mMaxParameter = DEFAULT_MAX_PARAMETER; - protected int mMinParameter = DEFAULT_MIN_PARAMETER; - protected int mPreviewParameter = mMaxParameter; - protected int mDefaultParameter = DEFAULT_INITIAL_PARAMETER; - protected int mParameter = DEFAULT_INITIAL_PARAMETER; private ImagePreset mImagePreset; protected String mName = "Original"; private final String LOGTAG = "ImageFilter"; - public static final byte TYPE_BORDER = 1; - public static final byte TYPE_FX = 2; - public static final byte TYPE_WBALANCE = 3; - public static final byte TYPE_VIGNETTE = 4; - public static final byte TYPE_NORMAL = 5; - public static final byte TYPE_TINYPLANET = 6; - private byte filterType = TYPE_NORMAL; - - public byte getFilterType() { - return filterType; - } - - protected void setFilterType(byte type) { - filterType = type; - } - - public int getButtonId() { - return 0; - } - - public int getTextId() { - return 0; - } - - public int getOverlayBitmaps() { - return 0; - } - - public int getEditingViewId() { - return BasicEditor.ID; - } - - public boolean showEditingControls() { - return true; - } - - public boolean showParameterValue() { - return true; - } - - public boolean showUtilityPanel() { - return true; - } - - @Override - public ImageFilter clone() throws CloneNotSupportedException { - ImageFilter filter = (ImageFilter) super.clone(); - filter.setName(getName()); - filter.setParameter(getParameter()); - filter.setFilterType(filterType); - filter.mMaxParameter = mMaxParameter; - filter.mMinParameter = mMinParameter; - filter.mImagePreset = mImagePreset; - filter.mDefaultParameter = mDefaultParameter; - filter.mPreviewParameter = mPreviewParameter; - return filter; - } - - public void reset() { - setParameter(mDefaultParameter); - } - - public boolean isNil() { - if (mParameter == mDefaultParameter) { - return true; - } - return false; - } public void setName(String name) { mName = name; @@ -114,7 +39,7 @@ public class ImageFilter implements Cloneable { return mName; } - public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) { + public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) { // do nothing here, subclasses will implement filtering here return bitmap; } @@ -123,86 +48,33 @@ public class ImageFilter implements Cloneable { * Called on small bitmaps to create button icons for each filter. * Override this to provide filter-specific button icons. */ - public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) { - int param = getParameter(); - setParameter(getPreviewParameter()); - bitmap = apply(bitmap, scaleFactor, highQuality); - setParameter(param); - return bitmap; - } - - public int getParameter() { - return mParameter; - } - - public void setParameter(int value) { - mParameter = value; - } - - /** - * The maximum allowed value (inclusive) - * @return maximum value allowed as input to this filter - */ - public int getMaxParameter() { - return mMaxParameter; - } - - /** - * The parameter value to be used in previews. - * @return parameter value to be used to preview the filter - */ - public int getPreviewParameter() { - return mPreviewParameter; - } - - /** - * The minimum allowed value (inclusive) - * @return minimum value allowed as input to this filter - */ - public int getMinParameter() { - return mMinParameter; - } - - /** - * Returns the default value returned by this filter. - * @return default value - */ - public int getDefaultParameter() { - return mDefaultParameter; + public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) { + return apply(bitmap, scaleFactor, quality); } public ImagePreset getImagePreset() { return mImagePreset; } - public void setImagePreset(ImagePreset mPreset) { - this.mImagePreset = mPreset; - } - - public boolean equals(ImageFilter filter) { - if (!same(filter)) { - return false; - } - if (mParameter != filter.mParameter) { - return false; - } - return true; + public void setImagePreset(ImagePreset imagePreset) { + mImagePreset = imagePreset; } - public boolean same(ImageFilter filter) { - if (filter == null) { - return false; - } - if (!filter.getName().equalsIgnoreCase(getName())) { - return false; - } - return true; - } + public abstract void useRepresentation(FilterRepresentation representation); native protected void nativeApplyGradientFilter(Bitmap bitmap, int w, int h, int[] redGradient, int[] greenGradient, int[] blueGradient); - public void useFilter(ImageFilter a) { - setParameter(a.getParameter()); + public FilterRepresentation getDefaultRepresentation() { + return null; + } + + protected Matrix getOriginalToScreenMatrix(int w, int h) { + GeometryMetadata geo = getImagePreset().mGeoData; + Matrix originalToScreen = geo.getOriginalToScreen(true, + getImagePreset().getImageLoader().getOriginalBounds().width(), + getImagePreset().getImageLoader().getOriginalBounds().height(), + w, h); + return originalToScreen; } } |