diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters')
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilter.java | 10 | ||||
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java | 54 |
2 files changed, 39 insertions, 25 deletions
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; } } |