OSDN Git Service

fix draw to support rotation/crop
authorJohn Hoford <hoford@google.com>
Wed, 13 Feb 2013 19:40:52 +0000 (11:40 -0800)
committerJohn Hoford <hoford@google.com>
Wed, 13 Feb 2013 21:04:07 +0000 (13:04 -0800)
Change-Id: Iea1db9e42f1fa2b86a452bf1d40b1663b69d03e2

src/com/android/gallery3d/filtershow/cache/RenderingRequest.java
src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java
src/com/android/gallery3d/filtershow/presets/ImagePreset.java

index 2815936..1e9f6b8 100644 (file)
@@ -18,6 +18,7 @@ package com.android.gallery3d.filtershow.cache;
 
 import android.graphics.Bitmap;
 import com.android.gallery3d.app.Log;
+import com.android.gallery3d.filtershow.imageshow.MasterImage;
 import com.android.gallery3d.filtershow.presets.ImagePreset;
 
 public class RenderingRequest {
@@ -47,7 +48,9 @@ public class RenderingRequest {
             bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), mConfig);
         }
         request.setBitmap(bitmap);
-        request.setImagePreset(new ImagePreset(preset));
+        ImagePreset passedPreset = new ImagePreset(preset);
+        passedPreset.setImageLoader(MasterImage.getImage().getImageLoader());
+        request.setImagePreset(passedPreset);
         request.setType(type);
         request.setCaller(caller);
         request.post();
index 9fa4ce9..4b21d35 100644 (file)
@@ -27,6 +27,7 @@ import android.graphics.Path;
 import android.graphics.PathMeasure;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
+import android.graphics.Rect;
 import android.util.Log;
 
 import com.android.gallery3d.R;
@@ -266,13 +267,12 @@ public class ImageFilterDraw extends ImageFilter {
     public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
-        short[] rect = new short[4];
-
-        Matrix m = new Matrix();
-        m.setScale(scaleFactor, scaleFactor);
+        ImagePreset imgPreset = getImagePreset();
+        Rect bounds = imgPreset.getImageLoader().getOriginalBounds();
+        Matrix m = imgPreset.mGeoData.getOriginalToScreen(true,
+                bounds.width(),
+                bounds.height(), w, h);
         drawData(new Canvas(bitmap), m, quality);
-
-
         return bitmap;
     }
 
index 3ee55ad..e359484 100644 (file)
@@ -411,6 +411,7 @@ public class ImagePreset {
                 }
                 ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(representation);
                 filter.useRepresentation(representation);
+                filter.setImagePreset(this);
                 bitmap = filter.apply(bitmap, mScaleFactor, mQuality);
             }
         }