diff options
| author | nicolasroard <nicolasroard@google.com> | 2013-09-17 10:58:36 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-09-17 10:58:36 -0700 |
| commit | a87d19ad88e003e899f0c12adf62a04d10d144ba (patch) | |
| tree | 238e0ba28eb0a36b6309de32453a977a51d06625 | |
| parent | 4218ba1e44b620c7b854809ab6cb4ccb68f2000d (diff) | |
| parent | 3edaea1aaad846fc2fcd25e88c11563f0f8dbb35 (diff) | |
| download | android_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.java | 51 | ||||
| -rw-r--r-- | src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java | 34 |
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) { |
