19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "jni.h" 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <android_runtime/AndroidRuntime.h> 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <math.h> 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <float.h> 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "SkTypes.h" 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass MathUtilsGlue { 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static float FloorF(JNIEnv* env, jobject clazz, float x) { 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return floorf(x); 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static float CeilF(JNIEnv* env, jobject clazz, float x) { 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ceilf(x); 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static float SinF(JNIEnv* env, jobject clazz, float x) { 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sinf(x); 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static float CosF(JNIEnv* env, jobject clazz, float x) { 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return cosf(x); 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static float SqrtF(JNIEnv* env, jobject clazz, float x) { 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return sqrtf(x); 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 285d728bb9ff8c6ad89d5a1b88b2804f954d45d763Jeff Brown 295d728bb9ff8c6ad89d5a1b88b2804f954d45d763Jeff Brown static float ExpF(JNIEnv* env, jobject clazz, float x) { 305d728bb9ff8c6ad89d5a1b88b2804f954d45d763Jeff Brown return expf(x); 315d728bb9ff8c6ad89d5a1b88b2804f954d45d763Jeff Brown } 32270e3381e7053c3b15aa8f508c9df9d98032cd62Jeff Brown 33e2c279e8a1abc2cc7bc87b94a514a563b814cdc1Jeff Brown static float PowF(JNIEnv* env, jobject clazz, float x, float y) { 34e2c279e8a1abc2cc7bc87b94a514a563b814cdc1Jeff Brown return powf(x, y); 35e2c279e8a1abc2cc7bc87b94a514a563b814cdc1Jeff Brown } 36e2c279e8a1abc2cc7bc87b94a514a563b814cdc1Jeff Brown 37270e3381e7053c3b15aa8f508c9df9d98032cd62Jeff Brown static float HypotF(JNIEnv* env, jobject clazz, float x, float y) { 38270e3381e7053c3b15aa8f508c9df9d98032cd62Jeff Brown return hypotf(x, y); 39270e3381e7053c3b15aa8f508c9df9d98032cd62Jeff Brown } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic JNINativeMethod gMathUtilsMethods[] = { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"floor", "(F)F", (void*) MathUtilsGlue::FloorF}, 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"ceil", "(F)F", (void*) MathUtilsGlue::CeilF}, 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"sin", "(F)F", (void*) MathUtilsGlue::SinF}, 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"cos", "(F)F", (void*) MathUtilsGlue::CosF}, 475d728bb9ff8c6ad89d5a1b88b2804f954d45d763Jeff Brown {"sqrt", "(F)F", (void*) MathUtilsGlue::SqrtF}, 485d728bb9ff8c6ad89d5a1b88b2804f954d45d763Jeff Brown {"exp", "(F)F", (void*) MathUtilsGlue::ExpF}, 49e2c279e8a1abc2cc7bc87b94a514a563b814cdc1Jeff Brown {"pow", "(FF)F", (void*) MathUtilsGlue::PowF}, 50270e3381e7053c3b15aa8f508c9df9d98032cd62Jeff Brown {"hypot", "(FF)F", (void*) MathUtilsGlue::HypotF}, 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint register_android_util_FloatMath(JNIEnv* env) 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int result = android::AndroidRuntime::registerNativeMethods(env, 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android/util/FloatMath", 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gMathUtilsMethods, 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SK_ARRAY_COUNT(gMathUtilsMethods)); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 62