summaryrefslogtreecommitdiffstats
path: root/jni
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2012-10-08 16:05:48 -0700
committerRuben Brunk <rubenbrunk@google.com>2012-10-08 18:11:42 -0700
commita66df0c9e8106ef6a275e20ab2a47286e054fe7c (patch)
treee4350cc98588a0f31e58d3f2c9fbb397f0d0a43e /jni
parentf70a356842a14fee9e2ba9ab3aa31195841715f1 (diff)
downloadandroid_packages_apps_Gallery2-a66df0c9e8106ef6a275e20ab2a47286e054fe7c.tar.gz
android_packages_apps_Gallery2-a66df0c9e8106ef6a275e20ab2a47286e054fe7c.tar.bz2
android_packages_apps_Gallery2-a66df0c9e8106ef6a275e20ab2a47286e054fe7c.zip
Added the rest of the Geometryfilter stubs.
Bug: 7224232 Bug: 7218935 Change-Id: I9ebbc4a98b5696e1514995e465aa4e145fdfa4f8
Diffstat (limited to 'jni')
-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 f2f5b27bc..8550dd778 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);
+}