OSDN Git Service

Add the infrastructure to support Tiny Planet
authorJohn Hoford <hoford@google.com>
Fri, 19 Oct 2012 22:32:12 +0000 (15:32 -0700)
committerJohn Hoford <hoford@google.com>
Fri, 19 Oct 2012 23:20:27 +0000 (16:20 -0700)
bug:7293391
Change-Id: I25d95b78a832fa5f20b661e13c4028041517da19

src/com/android/gallery3d/filtershow/FilterShowActivity.java
src/com/android/gallery3d/filtershow/cache/ImageLoader.java
src/com/android/gallery3d/filtershow/filters/ImageFilter.java
src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
src/com/android/gallery3d/filtershow/presets/ImagePreset.java

index b8d74ac..760532a 100644 (file)
@@ -263,7 +263,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
             int pos = listColors.indexOfChild(v);
             listColors.removeView(v);
 
-            filters[i].setParameter(100);
+            filters[i].setParameter(filters[i].getMaxParameter());
             if(v instanceof ImageButtonTitle)
                 filters[i].setName(((ImageButtonTitle) v).getText());
             fView.setImageFilter(filters[i]);
@@ -546,6 +546,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
         };
 
         ImagePreset preset = new ImagePreset(); // empty
+        preset.setImageLoader(mImageLoader);
         ImageSmallFilter filter = new ImageSmallFilter(this);
 
         filter.setSelected(true);
index d0cab76..032c4f7 100644 (file)
@@ -38,6 +38,7 @@ import com.android.gallery3d.filtershow.HistoryAdapter;
 import com.android.gallery3d.filtershow.imageshow.ImageShow;
 import com.android.gallery3d.filtershow.presets.ImagePreset;
 import com.android.gallery3d.filtershow.tools.SaveCopyTask;
+import com.android.gallery3d.util.XmpUtilHelper;
 
 import java.io.Closeable;
 import java.io.File;
@@ -382,4 +383,13 @@ public class ImageLoader {
         cache.prepare(preset);
         cache.addObserver(caller);
     }
+
+    public Object getXmpObject() {
+        try {
+            InputStream is = mContext.getContentResolver().openInputStream(getUri());
+            return XmpUtilHelper.extractXMPMeta(is);
+        } catch (FileNotFoundException e) {
+            return null;
+        }
+    }
 }
index 270eb9a..f63286c 100644 (file)
@@ -3,12 +3,16 @@ package com.android.gallery3d.filtershow.filters;
 
 import android.graphics.Bitmap;
 
+import com.android.gallery3d.filtershow.presets.ImagePreset;
+
 public class ImageFilter implements Cloneable {
 
     protected int mMaxParameter = 100;
     protected int mMinParameter = -100;
     protected int mDefaultParameter = 0;
     protected int mParameter = 0;
+    private ImagePreset mImagePreset;
+
     protected String mName = "Original";
     private final String LOGTAG = "ImageFilter";
     public static final byte TYPE_BORDER =1;
@@ -35,6 +39,7 @@ public class ImageFilter implements Cloneable {
         filter.setFilterType(filterType);
         filter.mMaxParameter = mMaxParameter;
         filter.mMinParameter = mMinParameter;
+        filter.mImagePreset = mImagePreset;
         filter.mDefaultParameter = mDefaultParameter;
         return filter;
     }
@@ -91,6 +96,14 @@ public class ImageFilter implements Cloneable {
         return mDefaultParameter;
     }
 
+    public ImagePreset getImagePreset() {
+        return mImagePreset;
+    }
+
+    public void setImagePreset(ImagePreset mPreset) {
+        this.mImagePreset = mPreset;
+    }
+
     public boolean same(ImageFilter filter) {
         if (!filter.getName().equalsIgnoreCase(getName())) {
             return false;
index 2575105..e742bb2 100644 (file)
@@ -8,6 +8,8 @@ import android.graphics.Paint;
 import android.graphics.Paint.Align;
 import android.util.Log;
 
+import com.android.gallery3d.filtershow.presets.ImagePreset;
+
 public class ImageFilterTinyPlanet extends ImageFilter {
     private static final String TAG = ImageFilterTinyPlanet.class.getSimpleName();
 
@@ -19,7 +21,17 @@ public class ImageFilterTinyPlanet extends ImageFilter {
     @Override
     public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
         Log.d(TAG, "Applying tiny planet.");
+        String str = "TinyPlanet";
+        ImagePreset preset = getImagePreset();
+        if (preset != null) {
+            if (!preset.isPanoramaSafe()) {
+                str = "NO TP";
 
+            } else {
+                Object xmp = preset.getImageLoader().getXmpObject();
+                str = "TP got Xmp";
+            }
+        }
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
 
@@ -30,7 +42,7 @@ public class ImageFilterTinyPlanet extends ImageFilter {
         paint.setColor(Color.RED);
         paint.setTextSize((int) (((mParameter + 100) / 200f) * 100));
         paint.setTextAlign(Align.CENTER);
-        canvas.drawText("TinyPlanet", w / 2, h / 2, paint);
+        canvas.drawText(str, w / 2, h / 2, paint);
         return super.apply(bitmap, scaleFactor, highQuality);
     }
 }
index 73dc598..61f998d 100644 (file)
@@ -506,6 +506,7 @@ public class ImageShow extends View implements OnGestureListener,
     public void setImagePreset(ImagePreset preset, boolean addToHistory) {
         mImagePreset = preset;
         if (getImagePreset() != null) {
+            getImagePreset().setImageLoader(mImageLoader);
             if (addToHistory) {
                 mHistoryAdapter.addHistoryItem(getImagePreset());
             }
@@ -520,6 +521,9 @@ public class ImageShow extends View implements OnGestureListener,
         mImageLoader = loader;
         if (mImageLoader != null) {
             mImageLoader.addListener(this);
+            if (mImagePreset != null) {
+                mImagePreset.setImageLoader(mImageLoader);
+            }
         }
     }
 
index f4bd41c..698c4ea 100644 (file)
@@ -53,6 +53,7 @@ public class ImageSmallFilter extends ImageShow implements View.OnClickListener
         mImageFilter = filter;
         mImagePreset = new ImagePreset();
         mImagePreset.setName(filter.getName());
+        filter.setImagePreset(mImagePreset);
         mImagePreset.add(mImageFilter);
     }
 
index 0d8fc31..83e7c12 100644 (file)
@@ -5,6 +5,7 @@ import android.graphics.Bitmap;
 import android.util.Log;
 
 import com.android.gallery3d.filtershow.ImageStateAdapter;
+import com.android.gallery3d.filtershow.cache.ImageLoader;
 import com.android.gallery3d.filtershow.filters.ImageFilter;
 import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
 import com.android.gallery3d.filtershow.imageshow.ImageShow;
@@ -19,6 +20,7 @@ public class ImagePreset {
     private ImageFilter mImageBorder = null;
     private float mScaleFactor = 1.0f;
     private boolean mIsHighQuality = false;
+    private ImageLoader mImageLoader = null;
 
     protected Vector<ImageFilter> mFilters = new Vector<ImageFilter>();
     protected String mName = "Original";
@@ -48,7 +50,9 @@ public class ImagePreset {
                 mImageBorder = source.mImageBorder.clone();
             }
             for (int i = 0; i < source.mFilters.size(); i++) {
-                add(source.mFilters.elementAt(i).clone());
+                ImageFilter filter = source.mFilters.elementAt(i).clone();
+                filter.setImagePreset(this);
+                add(filter);
             }
         } catch (java.lang.CloneNotSupportedException e) {
             Log.v(LOGTAG, "Exception trying to clone: " + e);
@@ -56,6 +60,7 @@ public class ImagePreset {
         mName = source.name();
         mHistoryName = source.name();
         mIsFxPreset = source.isFx();
+        mImageLoader = source.getImageLoader();
 
         mGeoData.set(source.mGeoData);
     }
@@ -118,6 +123,14 @@ public class ImagePreset {
         mHistoryName = name;
     }
 
+    public ImageLoader getImageLoader() {
+        return mImageLoader;
+    }
+
+    public void setImageLoader(ImageLoader mImageLoader) {
+        this.mImageLoader = mImageLoader;
+    }
+
     public boolean same(ImagePreset preset) {
         if (preset.mFilters.size() != mFilters.size()) {
             return false;
@@ -186,7 +199,7 @@ public class ImagePreset {
             mFilters.add(filter);
             setHistoryName(filter.getName());
         }
-
+        filter.setImagePreset(this);
     }
 
     public void remove(String filterName) {