diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/presets')
-rw-r--r-- | src/com/android/gallery3d/filtershow/presets/ImagePreset.java | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index 830f3cb70..a7b4b4090 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -2,12 +2,10 @@ package com.android.gallery3d.filtershow.presets; import android.graphics.Bitmap; -import android.graphics.RectF; import android.util.Log; import com.android.gallery3d.filtershow.ImageStateAdapter; import com.android.gallery3d.filtershow.filters.ImageFilter; -import com.android.gallery3d.filtershow.filters.ImageFilterStraighten; import com.android.gallery3d.filtershow.imageshow.GeometryMetadata; import com.android.gallery3d.filtershow.imageshow.ImageShow; @@ -16,32 +14,32 @@ import java.util.Vector; public class ImagePreset { private static final String LOGTAG = "ImagePreset"; - ImageShow mEndPoint = null; + + private ImageShow mEndPoint = null; + private ImageFilter mImageBorder = null; + private float mScaleFactor = 1.0f; + private boolean mIsHighQuality = false; + protected Vector<ImageFilter> mFilters = new Vector<ImageFilter>(); protected String mName = "Original"; protected String mHistoryName = "Original"; protected boolean mIsFxPreset = false; - enum FullRotate { - ZERO, NINETY, HUNDRED_EIGHTY, TWO_HUNDRED_SEVENTY - } - - // This is where the geometry metadata lives now. public final GeometryMetadata mGeoData = new GeometryMetadata(); - public void setGeometry(GeometryMetadata m) { - mGeoData.set(m); + enum FullRotate { + ZERO, NINETY, HUNDRED_EIGHTY, TWO_HUNDRED_SEVENTY } - private float mScaleFactor = 1.0f; - private boolean mIsHighQuality = false; - public ImagePreset() { setup(); } public ImagePreset(ImagePreset source) { try { + if (source.mImageBorder != null) { + mImageBorder = source.mImageBorder.clone(); + } for (int i = 0; i < source.mFilters.size(); i++) { add(source.mFilters.elementAt(i).clone()); } @@ -55,6 +53,14 @@ public class ImagePreset { mGeoData.set(source.mGeoData); } + public void setGeometry(GeometryMetadata m) { + mGeoData.set(m); + } + + public void setBorder(ImageFilter filter) { + mImageBorder = filter; + } + public boolean isFx() { return mIsFxPreset; } @@ -83,6 +89,15 @@ public class ImagePreset { if (!mGeoData.equals(preset.mGeoData)) { return false; } + + if (mImageBorder != preset.mImageBorder) { + return false; + } + + if (mImageBorder != null && !mImageBorder.same(preset.mImageBorder)) { + return false; + } + for (int i = 0; i < preset.mFilters.size(); i++) { ImageFilter a = preset.mFilters.elementAt(i); ImageFilter b = mFilters.elementAt(i); @@ -138,20 +153,15 @@ public class ImagePreset { // First we apply any transform -- 90 rotate, flip, straighten, crop Bitmap bitmap = mGeoData.apply(original, mScaleFactor, mIsHighQuality); - // TODO -- apply borders separately - ImageFilter borderFilter = null; + if (mImageBorder != null) { + bitmap = mImageBorder.apply(bitmap, mScaleFactor, mIsHighQuality); + } + for (int i = 0; i < mFilters.size(); i++) { ImageFilter filter = mFilters.elementAt(i); - if (filter.getName().equalsIgnoreCase("Border")) { - // TODO don't use the name as an id - borderFilter = filter; - } else { - bitmap = filter.apply(bitmap, mScaleFactor, mIsHighQuality); - } - } - if (borderFilter != null) { - bitmap = borderFilter.apply(bitmap, mScaleFactor, mIsHighQuality); + bitmap = filter.apply(bitmap, mScaleFactor, mIsHighQuality); } + if (mEndPoint != null) { mEndPoint.updateFilteredImage(bitmap); } |