android_animation_PropertyValuesHolder.cpp revision 6e0ecb4eed5cd2e1f15766d7028467129974a12d
16e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase/*
26e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * Copyright (C) 2010 The Android Open Source Project
36e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase *
46e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * Licensed under the Apache License, Version 2.0 (the "License");
56e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * you may not use this file except in compliance with the License.
66e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * You may obtain a copy of the License at
76e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase *
86e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase *      http://www.apache.org/licenses/LICENSE-2.0
96e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase *
106e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * Unless required by applicable law or agreed to in writing, software
116e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * distributed under the License is distributed on an "AS IS" BASIS,
126e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * See the License for the specific language governing permissions and
146e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase * limitations under the License.
156e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase */
166e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
176e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase#include <stdio.h>
186e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase#include <assert.h>
196e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
206e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase#include "jni.h"
216e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase#include <android_runtime/AndroidRuntime.h>
226e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase#include <utils/misc.h>
236e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
246e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase// ----------------------------------------------------------------------------
256e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
266e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haasenamespace android {
276e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
286e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase// ----------------------------------------------------------------------------
296e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
306e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haaseconst char* const kClassPathName = "android/animation/PropertyValuesHolder";
316e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
326e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haasestatic jmethodID android_animation_PropertyValuesHolder_getIntMethod(
336e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase        JNIEnv* env, jclass pvhClass, jclass targetClass, jstring methodName)
346e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase{
356e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    const char *nativeString = env->GetStringUTFChars(methodName, 0);
366e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    jmethodID mid = env->GetMethodID(targetClass, nativeString, "(I)V");
376e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    env->ReleaseStringUTFChars(methodName, nativeString);
386e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    return mid;
396e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase}
406e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
416e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haasestatic jmethodID android_animation_PropertyValuesHolder_getFloatMethod(
426e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase        JNIEnv* env, jclass pvhClass, jclass targetClass, jstring methodName)
436e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase{
446e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    const char *nativeString = env->GetStringUTFChars(methodName, 0);
456e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    jmethodID mid = env->GetMethodID(targetClass, nativeString, "(F)V");
466e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    env->ReleaseStringUTFChars(methodName, nativeString);
476e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    return mid;
486e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase}
496e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
506e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haasestatic void android_animation_PropertyValuesHolder_callIntMethod(
516e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, int arg)
526e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase{
536e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    env->CallVoidMethod(target, methodID, arg);
546e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase}
556e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
566e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haasestatic void android_animation_PropertyValuesHolder_callFloatMethod(
576e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, float arg)
586e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase{
596e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    env->CallVoidMethod(target, methodID, arg);
606e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase}
616e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
626e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haasestatic JNINativeMethod gMethods[] = {
636e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    {   "nGetIntMethod", "(Ljava/lang/Class;Ljava/lang/String;)I",
646e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase            (void*)android_animation_PropertyValuesHolder_getIntMethod },
656e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    {   "nGetFloatMethod", "(Ljava/lang/Class;Ljava/lang/String;)I",
666e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase            (void*)android_animation_PropertyValuesHolder_getFloatMethod },
676e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    {   "nCallIntMethod", "(Ljava/lang/Object;II)V",
686e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase            (void*)android_animation_PropertyValuesHolder_callIntMethod },
696e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    {   "nCallFloatMethod", "(Ljava/lang/Object;IF)V",
706e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase            (void*)android_animation_PropertyValuesHolder_callFloatMethod }
716e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase};
726e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
736e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haaseint register_android_animation_PropertyValuesHolder(JNIEnv* env)
746e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase{
756e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase    return AndroidRuntime::registerNativeMethods(env,
766e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase            kClassPathName, gMethods, NELEM(gMethods));
776e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase}
786e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase
796e0ecb4eed5cd2e1f15766d7028467129974a12dChet Haase};
80