summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2013-09-17 10:58:36 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-17 10:58:36 -0700
commita87d19ad88e003e899f0c12adf62a04d10d144ba (patch)
tree238e0ba28eb0a36b6309de32453a977a51d06625
parent4218ba1e44b620c7b854809ab6cb4ccb68f2000d (diff)
parent3edaea1aaad846fc2fcd25e88c11563f0f8dbb35 (diff)
downloadandroid_packages_apps_Gallery2-a87d19ad88e003e899f0c12adf62a04d10d144ba.tar.gz
android_packages_apps_Gallery2-a87d19ad88e003e899f0c12adf62a04d10d144ba.tar.bz2
android_packages_apps_Gallery2-a87d19ad88e003e899f0c12adf62a04d10d144ba.zip
am 3edaea1a: am 6aea6b7f: Fix ImagePreset handling
* commit '3edaea1aaad846fc2fcd25e88c11563f0f8dbb35': Fix ImagePreset handling
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java51
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java34
2 files changed, 29 insertions, 56 deletions
diff --git a/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java b/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java
index f3c32dc01..8ae9a7c7b 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java
@@ -424,57 +424,6 @@ public class CachingPipeline implements PipelineInterface {
mEnvironment.cache(result);
}
- public synchronized void computeOld(SharedBuffer buffer, ImagePreset preset, int type) {
- synchronized (CachingPipeline.class) {
- if (getRenderScriptContext() == null) {
- return;
- }
- if (DEBUG) {
- Log.v(LOGTAG, "compute preset " + preset);
- preset.showFilters();
- }
-
- String thread = Thread.currentThread().getName();
- long time = System.currentTimeMillis();
- setupEnvironment(preset, false);
- mFiltersManager.freeFilterResources(preset);
-
- Bitmap resizedOriginalBitmap = mResizedOriginalBitmap;
- if (updateOriginalAllocation(preset) || buffer.getProducer() == null) {
- resizedOriginalBitmap = mResizedOriginalBitmap;
- buffer.setProducer(resizedOriginalBitmap);
- mEnvironment.cache(buffer.getProducer());
- }
-
- Bitmap bitmap = buffer.getProducer().getBitmap();
- long time2 = System.currentTimeMillis();
-
- if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth())
- || (bitmap.getHeight() != resizedOriginalBitmap.getHeight())) {
- mEnvironment.cache(buffer.getProducer());
- buffer.setProducer(resizedOriginalBitmap);
- bitmap = buffer.getProducer().getBitmap();
- }
- mOriginalAllocation.copyTo(bitmap);
-
- Bitmap tmpbitmap = preset.apply(bitmap, mEnvironment);
- if (tmpbitmap != bitmap) {
- mEnvironment.cache(buffer.getProducer());
- buffer.setProducer(tmpbitmap);
- }
-
- mFiltersManager.freeFilterResources(preset);
-
- time = System.currentTimeMillis() - time;
- time2 = System.currentTimeMillis() - time2;
- if (DEBUG) {
- Log.v(LOGTAG, "Applying type " + type + " filters to bitmap "
- + bitmap + " (" + bitmap.getWidth() + " x " + bitmap.getHeight()
- + ") took " + time + " ms, " + time2 + " ms for the filter, on thread " + thread);
- }
- }
- }
-
public boolean needsRepaint() {
SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer();
return buffer.checkRepaintNeeded();
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java
index 322a34d7b..657871300 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java
@@ -347,12 +347,22 @@ public class ImagePreset {
public void addFilter(FilterRepresentation representation) {
if (representation instanceof FilterUserPresetRepresentation) {
ImagePreset preset = ((FilterUserPresetRepresentation) representation).getImagePreset();
- // user preset replace everything but geometry
- mFilters.clear();
- for (int i = 0; i < preset.nbFilters(); i++) {
- addFilter(preset.getFilterRepresentation(i));
+ if (preset.nbFilters() == 1
+ && preset.contains(FilterRepresentation.TYPE_FX)) {
+ FilterRepresentation rep = preset.getFilterRepresentationForType(
+ FilterRepresentation.TYPE_FX);
+ removeFilter(rep);
+ if (!isNoneBorderFilter(rep)) {
+ mFilters.add(rep);
+ }
+ } else {
+ // user preset replaces everything
+ mFilters.clear();
+ for (int i = 0; i < preset.nbFilters(); i++) {
+ addFilter(preset.getFilterRepresentation(i));
+ }
+ mFilters.add(representation);
}
- mFilters.add(representation);
} else if (representation.getFilterType() == FilterRepresentation.TYPE_GEOMETRY) {
// Add geometry filter, removing duplicates and do-nothing operations.
for (int i = 0; i < mFilters.size(); i++) {
@@ -426,6 +436,20 @@ public class ImagePreset {
} else {
mFilters.add(representation);
}
+ // Enforces Filter type ordering for borders
+ FilterRepresentation border = null;
+ for (int i = 0; i < mFilters.size();) {
+ FilterRepresentation rep = mFilters.elementAt(i);
+ if (rep.getFilterType() == FilterRepresentation.TYPE_BORDER) {
+ border = rep;
+ mFilters.remove(i);
+ continue;
+ }
+ i++;
+ }
+ if (border != null) {
+ mFilters.add(border);
+ }
}
private boolean isNoneBorderFilter(FilterRepresentation representation) {