summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Hoford <hoford@google.com>2012-10-11 09:13:40 -0700
committerJohn Hoford <hoford@google.com>2012-10-11 09:13:40 -0700
commit6f1dfae8dff9114b59d4ae4e44a6cec68d791950 (patch)
tree387caf5cc0a3e04a98d4c50d8f08d20a77f6b70c
parent823824122d04c9b0073f3bd13c292abdec210de9 (diff)
downloadandroid_packages_apps_Snap-6f1dfae8dff9114b59d4ae4e44a6cec68d791950.tar.gz
android_packages_apps_Snap-6f1dfae8dff9114b59d4ae4e44a6cec68d791950.tar.bz2
android_packages_apps_Snap-6f1dfae8dff9114b59d4ae4e44a6cec68d791950.zip
Fix application of FX to not wipe out borders etc.
bug:7289442 Change-Id: I9efdfdc1d8a8c02a718e91a089b531ff26fd582d
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java44
-rw-r--r--src/com/android/gallery3d/filtershow/PanelController.java1
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilter.java15
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java1
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java5
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java1
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java1
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePreset.java36
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePresetFX.java2
-rw-r--r--src/com/android/gallery3d/filtershow/ui/ImageCurves.java15
10 files changed, 90 insertions, 31 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index 07b78a383..7ad1b80b9 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -35,6 +35,7 @@ import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.cache.ImageLoader;
import com.android.gallery3d.filtershow.filters.ImageFilter;
import com.android.gallery3d.filtershow.filters.ImageFilterBorder;
+import com.android.gallery3d.filtershow.filters.ImageFilterFx;
import com.android.gallery3d.filtershow.filters.ImageFilterParametricBorder;
import com.android.gallery3d.filtershow.filters.ImageFilterRS;
import com.android.gallery3d.filtershow.imageshow.ImageBorder;
@@ -392,7 +393,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
private void fillListImages(LinearLayout listFilters) {
// TODO: use listview
// TODO: load the filters straight from the filesystem
- ImagePreset[] preset = new ImagePreset[18];
+
+ ImageFilterFx[] fxArray = new ImageFilterFx[18];
int p = 0;
int[] drawid = {
@@ -419,25 +421,34 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
R.string.ffx_washout_color,
};
- preset[p++] = new ImagePreset();
+ ImagePreset preset = new ImagePreset(); // empty
+ ImageSmallFilter filter = new ImageSmallFilter(this);
+
+ filter.setSelected(true);
+ mCurrentImageSmallFilter = filter;
+
+ filter.setPreviousImageSmallFilter(null);
+ preset.setIsFx(true);
+ filter.setImagePreset(preset);
+
+ filter.setController(this);
+ filter.setImageLoader(mImageLoader);
+ listFilters.addView(filter);
+ ImageSmallFilter previousFilter = filter;
+
BitmapFactory.Options o = new BitmapFactory.Options();
o.inScaled = false;
for (int i = 0; i < drawid.length; i++) {
Bitmap b = BitmapFactory.decodeResource(getResources(), drawid[i], o);
- preset[p++] = new ImagePresetFX(b, getString(fxNameid[i]));
+ fxArray[p++] = new ImageFilterFx(b, getString(fxNameid[i]));
}
- ImageSmallFilter previousFilter = null;
for (int i = 0; i < p; i++) {
- ImageSmallFilter filter = new ImageSmallFilter(this);
- if (i == 0) {
- filter.setSelected(true);
- mCurrentImageSmallFilter = filter;
- }
+ filter = new ImageSmallFilter(this);
+
filter.setPreviousImageSmallFilter(previousFilter);
- preset[i].setIsFx(true);
- filter.setImagePreset(preset[i]);
+ filter.setImageFilter(fxArray[i]);
filter.setController(this);
filter.setImageLoader(mImageLoader);
listFilters.addView(filter);
@@ -445,7 +456,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
}
// Default preset (original)
- mImageShow.setImagePreset(preset[0]);
+ mImageShow.setImagePreset(preset);
}
private void fillListBorders(LinearLayout listBorders) {
@@ -650,12 +661,9 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
ImagePreset oldPreset = mImageShow.getImagePreset();
ImagePreset copy = new ImagePreset(oldPreset);
// TODO: use a numerical constant instead.
- if (setBorder) {
- copy.setHistoryName("Border");
- copy.setBorder(imageFilter);
- } else {
- copy.add(imageFilter);
- }
+
+ copy.add(imageFilter);
+
mImageShow.setImagePreset(copy);
invalidateViews();
}
diff --git a/src/com/android/gallery3d/filtershow/PanelController.java b/src/com/android/gallery3d/filtershow/PanelController.java
index 804c6b236..d9205bf75 100644
--- a/src/com/android/gallery3d/filtershow/PanelController.java
+++ b/src/com/android/gallery3d/filtershow/PanelController.java
@@ -327,7 +327,6 @@ public class PanelController implements OnClickListener {
public ImageFilter setImagePreset(ImageFilter filter, String name) {
ImagePreset copy = new ImagePreset(getImagePreset());
copy.add(filter);
- copy.setHistoryName(filter.getName());
copy.setIsFx(false);
mMasterImage.setImagePreset(copy);
return filter;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index 662e8ed2b..6d0c020a7 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -8,12 +8,27 @@ public class ImageFilter implements Cloneable {
protected int mParameter = 0;
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;
+ private byte filterType = TYPE_NORMAL;
+
+ public byte getFilterType(){
+ return filterType;
+ }
+
+ protected void setFilterType(byte type){
+ filterType = type;
+ }
@Override
public ImageFilter clone() throws CloneNotSupportedException {
ImageFilter filter = (ImageFilter) super.clone();
filter.setName(getName());
filter.setParameter(getParameter());
+ filter.setFilterType(filterType);
return filter;
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
index 9fcf1dc1d..dd7d17c46 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
@@ -17,6 +17,7 @@ public class ImageFilterBorder extends ImageFilter {
}
public ImageFilterBorder(Drawable ninePatch) {
+ setFilterType(TYPE_BORDER);
mName = "Border";
mNinePatch = ninePatch;
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
index 00fd20cf5..1575b18bb 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
@@ -13,8 +13,9 @@ public class ImageFilterFx extends ImageFilter {
private static final String TAG = "ImageFilterFx";
Bitmap fxBitmap;
- public ImageFilterFx(Bitmap fxBitmap) {
- mName = "fx";
+ public ImageFilterFx(Bitmap fxBitmap,String name) {
+ setFilterType(TYPE_FX);
+ mName = name;
this.fxBitmap = fxBitmap;
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
index 163ed0c65..9d9c7e548 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
@@ -8,6 +8,7 @@ public class ImageFilterWBalance extends ImageFilter {
private static final String TAG = "ImageFilterWBalance";
public ImageFilterWBalance() {
+ setFilterType(TYPE_WBALANCE);
mName = "WBalance";
}
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
index 0b0c2c475..78d877df9 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
@@ -46,6 +46,7 @@ public class ImageSmallFilter extends ImageShow implements View.OnClickListener
public void setImageFilter(ImageFilter filter) {
mImageFilter = filter;
mImagePreset = new ImagePreset();
+ mImagePreset.setName(filter.getName());
mImagePreset.add(mImageFilter);
}
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
index ec0ed7402..0ddb0170f 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
@@ -35,6 +35,11 @@ public class ImagePreset {
setup();
}
+ public ImagePreset(ImagePreset source, String historyName) {
+ this(source);
+ if (historyName!=null) setHistoryName(historyName);
+ }
+
public ImagePreset(ImagePreset source) {
try {
if (source.mImageBorder != null) {
@@ -57,7 +62,7 @@ public class ImagePreset {
mGeoData.set(m);
}
- public void setBorder(ImageFilter filter) {
+ private void setBorder(ImageFilter filter) {
mImageBorder = filter;
}
@@ -74,7 +79,7 @@ public class ImagePreset {
mHistoryName = name;
}
- public void setHistoryName(String name) {
+ private void setHistoryName(String name) {
mHistoryName = name;
}
@@ -117,7 +122,32 @@ public class ImagePreset {
}
public void add(ImageFilter filter) {
- mFilters.add(filter);
+ if (filter.getFilterType() == ImageFilter.TYPE_BORDER){
+ setHistoryName("Border");
+ setBorder(filter);
+ } else if (filter.getFilterType() == ImageFilter.TYPE_FX){
+ Vector<ImageFilter> fl = mFilters;
+ boolean found = false;
+ for (int i = 0; i < mFilters.size(); i++) {
+ byte type = fl.get(i).getFilterType();
+ if (found) {
+ if (type != ImageFilter.TYPE_VIGNETTE){
+ fl.remove(i);
+ }
+ } else if (type==ImageFilter.TYPE_FX){
+ fl.remove(i);
+ fl.add(i, filter);
+ setHistoryName(filter.getName());
+ found = true;
+ }
+
+ }
+ mFilters.add(filter);
+ setHistoryName(filter.getName());
+ } else {
+ mFilters.add(filter);
+ setHistoryName(filter.getName());
+ }
}
public void remove(String filterName) {
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePresetFX.java b/src/com/android/gallery3d/filtershow/presets/ImagePresetFX.java
index 326471ef3..fa207a6d0 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePresetFX.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePresetFX.java
@@ -22,7 +22,7 @@ public class ImagePresetFX extends ImagePreset {
public void setup() {
if (fxBitmap != null) {
- mFilters.add(new ImageFilterFx(fxBitmap));
+ mFilters.add(new ImageFilterFx(fxBitmap,name));
}
}
diff --git a/src/com/android/gallery3d/filtershow/ui/ImageCurves.java b/src/com/android/gallery3d/filtershow/ui/ImageCurves.java
index fb18bcf8f..660a4fadd 100644
--- a/src/com/android/gallery3d/filtershow/ui/ImageCurves.java
+++ b/src/com/android/gallery3d/filtershow/ui/ImageCurves.java
@@ -240,17 +240,20 @@ public class ImageCurves extends ImageSlave {
applyNewCurve();
// Log.v(LOGTAG, "ACTION UP, mCurrentControlPoint set to null!");
mCurrentControlPoint = null;
- ImagePreset copy = new ImagePreset(getImagePreset());
-
+ String name = null;
if (mUseRed && mUseGreen && mUseBlue) {
- copy.setHistoryName("Curves (RGB)");
+ name = "Curves (RGB)";
} else if (mUseRed) {
- copy.setHistoryName("Curves (Red)");
+ name = "Curves (Red)";
} else if (mUseGreen) {
- copy.setHistoryName("Curves (Green)");
+ name = "Curves (Green)";
} else if (mUseBlue) {
- copy.setHistoryName("Curves (Blue)");
+ name = "Curves (Blue)";
}
+
+
+ ImagePreset copy = new ImagePreset(getImagePreset(),name);
+
copy.setIsFx(false);
mImageLoader.getHistory().insert(copy, 0);