diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2012-10-08 16:05:48 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2012-10-08 18:11:42 -0700 |
commit | 006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3 (patch) | |
tree | 154c235cf64f5286d224f696389665a67683ad5b /jni | |
parent | 7586ddacf5d40538fd2029785eb8c53e6197eb24 (diff) | |
download | android_packages_apps_Camera2-006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3.tar.gz android_packages_apps_Camera2-006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3.tar.bz2 android_packages_apps_Camera2-006f580da4867ca3bd4d2ce47b9b2b47c4a0d3a3.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.c | 68 |
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); +} |