summaryrefslogtreecommitdiffstats
path: root/jni/filters
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2012-10-08 23:05:48 (GMT)
committerRuben Brunk <rubenbrunk@google.com>2012-10-09 01:11:42 (GMT)
commit006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3 (patch)
tree154c235cf64f5286d224f696389665a67683ad5b /jni/filters
parent7586ddacf5d40538fd2029785eb8c53e6197eb24 (diff)
downloadandroid_packages_apps_Snap-006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3.zip
android_packages_apps_Snap-006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3.tar.gz
android_packages_apps_Snap-006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3.tar.bz2
Added the rest of the Geometryfilter stubs.
Bug: 7224232 Bug: 7218935 Change-Id: I9ebbc4a98b5696e1514995e465aa4e145fdfa4f8
Diffstat (limited to 'jni/filters')
-rw-r--r--jni/filters/geometry.c68
1 files changed, 66 insertions, 2 deletions
diff --git a/jni/filters/geometry.c b/jni/filters/geometry.c
index f2f5b27..8550dd7 100644
--- a/jni/filters/geometry.c
+++ b/jni/filters/geometry.c
@@ -19,14 +19,18 @@
void JNIFUNCF(ImageFilterGeometry, nativeApplyFilterFlip, jobject src, jint srcWidth, jint srcHeight, jobject dst, jint dstWidth, jint dstHeight, jint flip) {
char* destination = 0;
char* source = 0;
+ int len = dstWidth * dstHeight * 4;
+ if (srcWidth != dstWidth || srcHeight != dstHeight) {
+ return;
+ }
AndroidBitmap_lockPixels(env, src, (void**) &source);
AndroidBitmap_lockPixels(env, dst, (void**) &destination);
int i = 0;
- for (; i < dstWidth * dstHeight * 4; i+=4) {
+ for (; i < len; i += 4) {
int r = source[RED];
int g = source[GREEN];
int b = source[BLUE];
-
+ // TODO: implement flip
destination[RED] = 255;
destination[GREEN] = g;
destination[BLUE] = b;
@@ -34,3 +38,63 @@ void JNIFUNCF(ImageFilterGeometry, nativeApplyFilterFlip, jobject src, jint srcW
AndroidBitmap_unlockPixels(env, dst);
AndroidBitmap_unlockPixels(env, src);
}
+
+void JNIFUNCF(ImageFilterGeometry, nativeApplyFilterRotate, jobject src, jint srcWidth, jint srcHeight, jobject dst, jint dstWidth, jint dstHeight, jfloat rotate) {
+ char* destination = 0;
+ char* source = 0;
+ int len = dstWidth * dstHeight * 4;
+ AndroidBitmap_lockPixels(env, src, (void**) &source);
+ AndroidBitmap_lockPixels(env, dst, (void**) &destination);
+ // TODO: implement rotate
+ int i = 0;
+ for (; i < len; i += 4) {
+ int r = source[RED];
+ int g = source[GREEN];
+ int b = source[BLUE];
+ destination[RED] = r;
+ destination[GREEN] = 255;
+ destination[BLUE] = b;
+ }
+ AndroidBitmap_unlockPixels(env, dst);
+ AndroidBitmap_unlockPixels(env, src);
+}
+
+void JNIFUNCF(ImageFilterGeometry, nativeApplyFilterCrop, jobject src, jint srcWidth, jint srcHeight, jobject dst, jint dstWidth, jint dstHeight, jint offsetWidth, jint offsetHeight) {
+ char* destination = 0;
+ char* source = 0;
+ int len = dstWidth * dstHeight * 4;
+ AndroidBitmap_lockPixels(env, src, (void**) &source);
+ AndroidBitmap_lockPixels(env, dst, (void**) &destination);
+ // TODO: implement crop
+ int i = 0;
+ for (; i < len; i += 4) {
+ int r = source[RED];
+ int g = source[GREEN];
+ int b = source[BLUE];
+ destination[RED] = r;
+ destination[GREEN] = g;
+ destination[BLUE] = 255;
+ }
+ AndroidBitmap_unlockPixels(env, dst);
+ AndroidBitmap_unlockPixels(env, src);
+}
+
+void JNIFUNCF(ImageFilterGeometry, nativeApplyFilterStraighten, jobject src, jint srcWidth, jint srcHeight, jobject dst, jint dstWidth, jint dstHeight, jfloat straightenAngle) {
+ char* destination = 0;
+ char* source = 0;
+ int len = dstWidth * dstHeight * 4;
+ AndroidBitmap_lockPixels(env, src, (void**) &source);
+ AndroidBitmap_lockPixels(env, dst, (void**) &destination);
+ // TODO: implement straighten
+ int i = 0;
+ for (; i < len; i += 4) {
+ int r = source[RED];
+ int g = source[GREEN];
+ int b = source[BLUE];
+ destination[RED] = 128;
+ destination[GREEN] = g;
+ destination[BLUE] = 128;
+ }
+ AndroidBitmap_unlockPixels(env, dst);
+ AndroidBitmap_unlockPixels(env, src);
+}