diff options
author | John Hoford <hoford@google.com> | 2012-10-08 14:21:57 -0700 |
---|---|---|
committer | John Hoford <hoford@google.com> | 2012-10-08 15:03:10 -0700 |
commit | 86aa80d008745a3717666d6773f563865aa6029c (patch) | |
tree | 2985466bbbe73a979def61e1c1dcd239b59ca1d7 /src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java | |
parent | d922690a19edb8afbb103381f3a9c329ee2f9681 (diff) | |
download | android_packages_apps_Snap-86aa80d008745a3717666d6773f563865aa6029c.tar.gz android_packages_apps_Snap-86aa80d008745a3717666d6773f563865aa6029c.tar.bz2 android_packages_apps_Snap-86aa80d008745a3717666d6773f563865aa6029c.zip |
add redeye and improve shadow removal
bug:7234321
Change-Id: I12c2eb28555d7594fddf86dfa224219b70137681
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java | 39 |
1 files changed, 3 insertions, 36 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java index 9b379a1ff..ee621966d 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java @@ -3,61 +3,28 @@ package com.android.gallery3d.filtershow.filters; import android.graphics.Bitmap; -import com.android.gallery3d.filtershow.ui.ControlPoint; -import com.android.gallery3d.filtershow.ui.Spline; - public class ImageFilterShadows extends ImageFilter { - private final float SHADOW = .1f; - private final float MID = .5f; - private final float HIGHLIGHT = .9f; - - private final float []baseX = {0f,SHADOW,MID,HIGHLIGHT,1f}; - private final float []baseY = {0f,SHADOW,MID,HIGHLIGHT,1f}; public ImageFilterShadows() { mName = "Shadows"; } - short [] calcMap(){ - Spline sp = new Spline(); - for (int i = 0; i < baseX.length; i++) { - sp.addPoint(baseX[i], baseY[i]); - } - int max = 4080; - int w = 40800; - float []px = new float[w+1]; - float []py = new float[w+1]; - short []vlut = new short[4080+1]; - for (int i = 0; i < px.length; i++) { - float t = i/(float)(w); - - ControlPoint p = sp.getPoint(t); - px[i] = p.x; - py[i] = p.y; - } - for (int i = 0; i < py.length; i++) { - short x = (short)Math.min(4080,Math.max(0,((int)(px[i]*max)))); - short y = (short)Math.min(4082,Math.max(0,((int)(py[i]*max)))); - vlut[x] = y; - } - return vlut; - } + @Override public ImageFilter clone() throws CloneNotSupportedException { ImageFilterShadows filter = (ImageFilterShadows) super.clone(); return filter; } - native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, short []valMap); + native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float factor); @Override public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) { int w = bitmap.getWidth(); int h = bitmap.getHeight(); float p = mParameter; - baseY[1] = (float)(SHADOW*Math.pow(4, mParameter/100.)); - nativeApplyFilter(bitmap, w, h, calcMap()); + nativeApplyFilter(bitmap, w, h, p); return bitmap; } } |