diff options
author | nicolasroard <nicolasroard@google.com> | 2012-10-02 21:57:22 -0700 |
---|---|---|
committer | nicolasroard <nicolasroard@google.com> | 2012-10-04 17:11:52 -0700 |
commit | a0f822613dba5c5b140cc34202574e24c59461a2 (patch) | |
tree | 735858ee2b951a6140fc06aa7a968ed9625851c2 /src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java | |
parent | fd87d97665952360ac045507f06f9bf35a17c9fb (diff) | |
download | android_packages_apps_Snap-a0f822613dba5c5b140cc34202574e24c59461a2.tar.gz android_packages_apps_Snap-a0f822613dba5c5b140cc34202574e24c59461a2.tar.bz2 android_packages_apps_Snap-a0f822613dba5c5b140cc34202574e24c59461a2.zip |
Implement sharpen
bug:7279964
bug:7247494
bug:7234321
- add a sharpen filter
- add infrastructure to use RenderScript
- some refactoring (add an ImageSlave class)
- add new zoom UI
Change-Id: Id94dc94d32866c7107b6818adf4db35d0c6c0b01
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java new file mode 100644 index 000000000..3ec7b5f70 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java @@ -0,0 +1,52 @@ + +package com.android.gallery3d.filtershow.filters; + +import android.graphics.Bitmap; +import android.util.Log; +import android.renderscript.Element; +import android.renderscript.Script; +import android.renderscript.ScriptC; + +import com.android.gallery3d.R; + +public class ImageFilterSharpen extends ImageFilterRS { + + private static final String LOGTAG = "ImageFilterSharpen"; + private ScriptC_convolve3x3 mScript; + + public ImageFilterSharpen() { + mName = "Sharpen"; + } + + public void createFilter(android.content.res.Resources res) { + int w = mInPixelsAllocation.getType().getX(); + int h = mInPixelsAllocation.getType().getY(); + + float p1 = mParameter; + float value = p1 / 100.0f; + float f[] = new float[9]; + float p = value; + f[0] = -p; + f[1] = -p; + f[2] = -p; + f[3] = -p; + f[4] = 8 * p + 1; + f[5] = -p; + f[6] = -p; + f[7] = -p; + f[8] = -p; + if (mScript == null) { + mScript = new ScriptC_convolve3x3(getRenderScriptContext(), res, R.raw.convolve3x3); + } + mScript.set_gCoeffs(f); + mScript.set_gWidth(w); + mScript.set_gHeight(h); + } + + public void runFilter() { + mScript.set_gIn(mInPixelsAllocation); + mScript.bind_gPixels(mInPixelsAllocation); + mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation); + } + +} |