summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Hoford <hoford@google.com>2012-10-02 18:12:03 -0700
committerJohn Hoford <hoford@google.com>2012-10-02 18:32:36 -0700
commit3cac6dd4d4c28ee7b0833715fae77ca5ddf4d77d (patch)
tree089561adae40510e0ee037096087b7d5cc5e4da9
parent7325d6115b91be94e84503c578c5fe40a1ee99b4 (diff)
downloadandroid_packages_apps_Snap-3cac6dd4d4c28ee7b0833715fae77ca5ddf4d77d.tar.gz
android_packages_apps_Snap-3cac6dd4d4c28ee7b0833715fae77ca5ddf4d77d.tar.bz2
android_packages_apps_Snap-3cac6dd4d4c28ee7b0833715fae77ca5ddf4d77d.zip
Add Shadow feature
bug:7234321 Change-Id: Ib0d4db773486e469ed818385b68b7b907070c297
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java6
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java61
-rw-r--r--src/com/android/gallery3d/filtershow/ui/ControlPoint.java2
3 files changed, 65 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index b50ab94d6..694f51290 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -783,14 +783,14 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
mImageShow.setVisibility(View.VISIBLE);
mImageShow.setShowControls(true);
ImagePreset preset = mImageShow.getImagePreset();
- ImageFilter filter = preset.getFilter("Hue");
+ ImageFilter filter = preset.getFilter("Shadows");
if (filter == null) {
- ImageFilterHue contrast = new ImageFilterHue();
+ ImageFilterShadows contrast = new ImageFilterShadows();
ImagePreset copy = new ImagePreset(preset);
copy.add(contrast);
copy.setHistoryName(contrast.getName());
copy.setIsFx(false);
- filter = copy.getFilter("Hue");
+ filter = copy.getFilter("Shadows");
mImageShow.setImagePreset(copy);
}
mImageShow.setCurrentFilter(filter);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java
new file mode 100644
index 000000000..39c95064b
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java
@@ -0,0 +1,61 @@
+
+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 float []baseX = {0f,SHADOW,MID,HIGHLIGHT,1f};
+ private 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);
+
+ public void apply(Bitmap bitmap) {
+ 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());
+ }
+}
diff --git a/src/com/android/gallery3d/filtershow/ui/ControlPoint.java b/src/com/android/gallery3d/filtershow/ui/ControlPoint.java
index 6daa96182..68b799a9e 100644
--- a/src/com/android/gallery3d/filtershow/ui/ControlPoint.java
+++ b/src/com/android/gallery3d/filtershow/ui/ControlPoint.java
@@ -1,7 +1,7 @@
package com.android.gallery3d.filtershow.ui;
-class ControlPoint implements Comparable {
+public class ControlPoint implements Comparable {
public ControlPoint(float px, float py) {
x = px;
y = py;