diff options
author | John Hoford <hoford@google.com> | 2012-10-19 15:32:12 -0700 |
---|---|---|
committer | John Hoford <hoford@google.com> | 2012-10-19 16:20:27 -0700 |
commit | ea4609e63cc3721912bc0381eaaa6b1800062bd5 (patch) | |
tree | 4ef64fff9656518a08bab5f6302849076e5b5186 | |
parent | 7eeb00e767afa7761c28fc96007505043c69c7f5 (diff) | |
download | android_packages_apps_Snap-ea4609e63cc3721912bc0381eaaa6b1800062bd5.tar.gz android_packages_apps_Snap-ea4609e63cc3721912bc0381eaaa6b1800062bd5.tar.bz2 android_packages_apps_Snap-ea4609e63cc3721912bc0381eaaa6b1800062bd5.zip |
Add the infrastructure to support Tiny Planet
bug:7293391
Change-Id: I25d95b78a832fa5f20b661e13c4028041517da19
7 files changed, 58 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index b8d74ac33..760532a8b 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -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); diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java index d0cab767e..032c4f78d 100644 --- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java +++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java @@ -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; + } + } } diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java index 270eb9a46..f63286cd7 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java @@ -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; diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java index 25751052c..e742bb2ea 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java @@ -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); } } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java index 73dc598b8..61f998d47 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java @@ -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); + } } } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java index f4bd41c9b..698c4ea7a 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java @@ -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); } diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index 0d8fc317e..83e7c129a 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -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) { |