OSDN Git Service

Fix scaling + quality parameters
authornicolasroard <nicolasroard@google.com>
Tue, 29 Jan 2013 21:16:21 +0000 (13:16 -0800)
committernicolasroard <nicolasroard@google.com>
Tue, 29 Jan 2013 21:16:21 +0000 (13:16 -0800)
Change-Id: I92e7759282e0f3cc7be8ff95a19a4acb890d214d

src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
src/com/android/gallery3d/filtershow/cache/ImageLoader.java

index a1dbe8e..eda10fc 100644 (file)
@@ -37,6 +37,7 @@ public class FilteringPipeline implements Handler.Callback {
     private ImagePreset mPreviousGeometryPreset = null;
     private ImagePreset mPreviousFiltersPreset = null;
     private GeometryMetadata mPreviousGeometry = null;
+    private float mPreviewScaleFactor = 1.0f;
 
     private Bitmap mOriginalBitmap = null;
     private Bitmap mResizedOriginalBitmap = null;
@@ -218,6 +219,13 @@ public class FilteringPipeline implements Handler.Callback {
         Bitmap bitmap = buffer.getProducer();
         long time2 = System.currentTimeMillis();
 
+        preset.setScaleFactor(mPreviewScaleFactor);
+        if (mPreviewScaleFactor < 1.0f) {
+            preset.setIsHighQuality(false);
+        } else {
+            preset.setIsHighQuality(true);
+        }
+
         if (type != COMPUTE_FILTERS_PRESET) {
             if (bitmap == null || (bitmap.getWidth() != mResizedOriginalBitmap.getWidth())
                     || (bitmap.getHeight() != mResizedOriginalBitmap.getHeight())) {
@@ -295,4 +303,12 @@ public class FilteringPipeline implements Handler.Callback {
         }
         return true;
     }
+
+    public void setPreviewScaleFactor(float previewScaleFactor) {
+        mPreviewScaleFactor = previewScaleFactor;
+    }
+
+    public float getPreviewScaleFactor() {
+        return mPreviewScaleFactor;
+    }
 }
index 85d0977..ade775d 100644 (file)
@@ -212,7 +212,10 @@ public class ImageLoader {
             mOriginalBitmapLarge = rotateToPortrait(mOriginalBitmapLarge, mOrientation);
         }
         mZoomOrientation = mOrientation;
-        FilteringPipeline.getPipeline().setOriginal(mOriginalBitmapLarge);
+        FilteringPipeline pipeline = FilteringPipeline.getPipeline();
+        pipeline.setOriginal(mOriginalBitmapLarge);
+        float previewScale = (float) mOriginalBitmapLarge.getWidth() / (float) getOriginalBounds().width();
+        pipeline.setPreviewScaleFactor(previewScale);
         warnListeners();
     }