diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | 54b6cfa9a9e5b861a9930af873580d6dc20f773c (patch) | |
tree | 35051494d2af230dce54d6b31c6af8fc24091316 /core/jni/android/graphics/Camera.cpp | |
download | frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.zip frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.gz frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.bz2 |
Initial Contribution
Diffstat (limited to 'core/jni/android/graphics/Camera.cpp')
-rw-r--r-- | core/jni/android/graphics/Camera.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/core/jni/android/graphics/Camera.cpp b/core/jni/android/graphics/Camera.cpp new file mode 100644 index 0000000..980003e --- /dev/null +++ b/core/jni/android/graphics/Camera.cpp @@ -0,0 +1,102 @@ +#include "jni.h" +#include <android_runtime/AndroidRuntime.h> + +#include "SkCamera.h" + +static jfieldID gNativeInstanceFieldID; + +static void Camera_constructor(JNIEnv* env, jobject obj) { + Sk3DView* view = new Sk3DView; + env->SetIntField(obj, gNativeInstanceFieldID, (int)view); +} + +static void Camera_destructor(JNIEnv* env, jobject obj) { + delete (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); +} + +static void Camera_save(JNIEnv* env, jobject obj) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->save(); +} + +static void Camera_restore(JNIEnv* env, jobject obj) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->restore(); +} + +static void Camera_translate(JNIEnv* env, jobject obj, + float dx, float dy, float dz) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->translate(SkFloatToScalar(dx), SkFloatToScalar(dy), SkFloatToScalar(dz)); +} + +static void Camera_rotateX(JNIEnv* env, jobject obj, float degrees) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->rotateX(SkFloatToScalar(degrees)); +} + +static void Camera_rotateY(JNIEnv* env, jobject obj, float degrees) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->rotateY(SkFloatToScalar(degrees)); +} + +static void Camera_rotateZ(JNIEnv* env, jobject obj, float degrees) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->rotateZ(SkFloatToScalar(degrees)); +} + +static void Camera_getMatrix(JNIEnv* env, jobject obj, int native_matrix) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->getMatrix((SkMatrix*)native_matrix); +} + +static void Camera_applyToCanvas(JNIEnv* env, jobject obj, int native_canvas) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + v->applyToCanvas((SkCanvas*)native_canvas); +} + +static float Camera_dotWithNormal(JNIEnv* env, jobject obj, + float x, float y, float z) { + Sk3DView* v = (Sk3DView*)env->GetIntField(obj, gNativeInstanceFieldID); + SkScalar dot = v->dotWithNormal(SkFloatToScalar(x), SkFloatToScalar(y), + SkFloatToScalar(z)); + return SkScalarToFloat(dot); +} + +// ---------------------------------------------------------------------------- + +/* + * JNI registration. + */ +static JNINativeMethod gCameraMethods[] = { + /* name, signature, funcPtr */ + + { "nativeConstructor", "()V", (void*)Camera_constructor }, + { "nativeDestructor", "()V", (void*)Camera_destructor }, + { "save", "()V", (void*)Camera_save }, + { "restore", "()V", (void*)Camera_restore }, + { "translate", "(FFF)V", (void*)Camera_translate }, + { "rotateX", "(F)V", (void*)Camera_rotateX }, + { "rotateY", "(F)V", (void*)Camera_rotateY }, + { "rotateZ", "(F)V", (void*)Camera_rotateZ }, + { "nativeGetMatrix", "(I)V", (void*)Camera_getMatrix }, + { "nativeApplyToCanvas", "(I)V", (void*)Camera_applyToCanvas }, + { "dotWithNormal", "(FFF)F", (void*)Camera_dotWithNormal } +}; + +int register_android_graphics_Camera(JNIEnv* env); +int register_android_graphics_Camera(JNIEnv* env) { + jclass clazz = env->FindClass("android/graphics/Camera"); + if (clazz == 0) { + return -1; + } + gNativeInstanceFieldID = env->GetFieldID(clazz, "native_instance", "I"); + if (gNativeInstanceFieldID == 0) { + return -1; + } + return android::AndroidRuntime::registerNativeMethods(env, + "android/graphics/Camera", + gCameraMethods, + SK_ARRAY_COUNT(gCameraMethods)); +} + |