summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2012-10-19 17:27:45 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-10-19 17:27:45 -0700
commit9c69205301ac2e14d980b4d328ac7c02977ba3ab (patch)
treee24551ed9382a14aeaf56cb2497e210bd7a8d9ec
parentc174217272576bcd085ca95f7b0d9958a9d3a125 (diff)
parented9c2b629cc43e5c61c1d016a5bcf21e086720c9 (diff)
downloadandroid_packages_apps_Snap-9c69205301ac2e14d980b4d328ac7c02977ba3ab.tar.gz
android_packages_apps_Snap-9c69205301ac2e14d980b4d328ac7c02977ba3ab.tar.bz2
android_packages_apps_Snap-9c69205301ac2e14d980b4d328ac7c02977ba3ab.zip
am 2f879102: Adds a tiny planet (stereographic projection) image filter.
* commit '2f879102d630815df64636b8d37e3a7eea8e8b65': Adds a tiny planet (stereographic projection) image filter.
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java5
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilter.java10
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java54
3 files changed, 40 insertions, 29 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index 760532a8b..2cdc22e94 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -238,7 +238,6 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
R.id.vibranceButton,
R.id.contrastButton,
R.id.saturationButton,
- R.id.shadowRecoveryButton,
R.id.wbalanceButton,
R.id.hueButton,
R.id.exposureButton,
@@ -257,13 +256,12 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
};
for (int i = 0; i < filters.length; i++) {
-
ImageSmallFilter fView = new ImageSmallFilter(this);
View v = listColors.findViewById(recastIDs[i]);
int pos = listColors.indexOfChild(v);
listColors.removeView(v);
- filters[i].setParameter(filters[i].getMaxParameter());
+ filters[i].setParameter(filters[i].getPreviewParameter());
if(v instanceof ImageButtonTitle)
filters[i].setName(((ImageButtonTitle) v).getText());
fView.setImageFilter(filters[i]);
@@ -353,7 +351,6 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
} else if (action.equalsIgnoreCase(TINY_PLANET_ACTION)) {
mPanelController.showComponent(findViewById(R.id.tinyplanetButton));
}
-
}
private int getScreenImageSize() {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index f63286cd7..21a1dffb5 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -9,6 +9,7 @@ public class ImageFilter implements Cloneable {
protected int mMaxParameter = 100;
protected int mMinParameter = -100;
+ protected int mPreviewParameter = mMaxParameter;
protected int mDefaultParameter = 0;
protected int mParameter = 0;
private ImagePreset mImagePreset;
@@ -41,6 +42,7 @@ public class ImageFilter implements Cloneable {
filter.mMinParameter = mMinParameter;
filter.mImagePreset = mImagePreset;
filter.mDefaultParameter = mDefaultParameter;
+ filter.mPreviewParameter = mPreviewParameter;
return filter;
}
@@ -81,6 +83,14 @@ public class ImageFilter implements Cloneable {
}
/**
+ * The parameter value to be used in previews.
+ * @return parameter value to be used to preview the filter
+ */
+ public int getPreviewParameter(){
+ return mPreviewParameter;
+ }
+
+ /**
* The minimum allowed value (inclusive)
* @return minimum value allowed as input to this filter
*/
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
index e742bb2ea..cba1cd231 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
@@ -2,47 +2,51 @@
package com.android.gallery3d.filtershow.filters;
import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Paint.Align;
-import android.util.Log;
import com.android.gallery3d.filtershow.presets.ImagePreset;
+/**
+ * An image filter which creates a tiny planet projection.
+ */
public class ImageFilterTinyPlanet extends ImageFilter {
private static final String TAG = ImageFilterTinyPlanet.class.getSimpleName();
public ImageFilterTinyPlanet() {
setFilterType(TYPE_TINYPLANET);
mName = "TinyPlanet";
+
+ mMinParameter = 10;
+ mMaxParameter = 60;
+ mDefaultParameter = 20;
+ mPreviewParameter = 20;
+ mParameter = 20;
}
+ native protected void nativeApplyFilter(
+ Bitmap bitmapIn, int width, int height, Bitmap bitmapOut, int outSize, float scale);
+
@Override
- public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
- Log.d(TAG, "Applying tiny planet.");
- String str = "TinyPlanet";
+ public Bitmap apply(Bitmap bitmapIn, float scaleFactor, boolean highQuality) {
ImagePreset preset = getImagePreset();
if (preset != null) {
- if (!preset.isPanoramaSafe()) {
- str = "NO TP";
-
- } else {
+ if (preset.isPanoramaSafe()) {
+ // TODO(haeberling): Get XMPMeta object.
Object xmp = preset.getImageLoader().getXmpObject();
- str = "TP got Xmp";
+ } else {
+ // TODO(haeberling): What should we do for:
+ // !preset.isPanoramaSafe()?
}
}
- int w = bitmap.getWidth();
- int h = bitmap.getHeight();
-
- // Print TinyPlanet as text on the image as a placeholder
- // TODO(haeberling): Implement the real deal.
- Canvas canvas = new Canvas(bitmap);
- Paint paint = new Paint();
- paint.setColor(Color.RED);
- paint.setTextSize((int) (((mParameter + 100) / 200f) * 100));
- paint.setTextAlign(Align.CENTER);
- canvas.drawText(str, w / 2, h / 2, paint);
- return super.apply(bitmap, scaleFactor, highQuality);
+
+ int w = bitmapIn.getWidth();
+ int h = bitmapIn.getHeight();
+ int outputSize = Math.min(w, h);
+
+ Bitmap mBitmapOut = Bitmap.createBitmap(
+ outputSize, outputSize, Bitmap.Config.ARGB_8888);
+
+ // TODO(haeberling): Add the padding back in based on the meta-data.
+ nativeApplyFilter(bitmapIn, w, h, mBitmapOut, outputSize, mParameter / 100f);
+ return mBitmapOut;
}
}