-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLuminaryNative.cpp
More file actions
88 lines (71 loc) · 3.25 KB
/
LuminaryNative.cpp
File metadata and controls
88 lines (71 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <jni.h>
#include <stdio.h>
#include "Luminary.h"
#include "LuminaryNative.h"
#include "cmath"
#include <string>
const char * get_version() {
#ifdef _WIN64
return "Luminary Native (Windows 64-bit / v1.0.0)";
#elif _WIN32
return "Luminary Native (Windows 32-bit / v1.0.0)";
#elif __APPLE__ || __MACH__
return "Luminary Native (Mac OSX / v1.0.0)";
#elif __linux__
return "Luminary Native (Linux / v1.0.0)";
#elif __unix || __unix__
return "Luminary Native (Unix / v1.0.0)";
#else
return "Luminary Native (Other / v1.0.0) *(THIS SHOULD NEVER HAPPEN IN PRODUCTION)";
#endif
};
JNIEXPORT jstring JNICALL Java_com_luminary_os_core_Native_getInfo(JNIEnv* env, jobject thisObject) {
jstring result = env->NewStringUTF(get_version());
return result;
}
/*
Optimised for rendering Java ASCII surfaces.
*/
JNIEXPORT jstring JNICALL Java_com_luminary_os_core_Native_blacklistMethods(JNIEnv* env, jobject thisObject, jclass clazz, jobject blacklisted) {
jclass reflClass = env->FindClass("jdk/internal/reflect/Reflection");
if (reflClass == nullptr) {
return env->NewStringUTF("CLASS_NOT_FOUND(NULLPTR)");
}
jmethodID rmtfmid = env->GetStaticMethodID(reflClass, "registerMethodsToFilter", "(Ljava/lang/Class;Ljava/util/Set;)V");
if (rmtfmid == nullptr) {
return env->NewStringUTF("METHOD_NOT_FOUND(NULLPTR)");
}
env->CallStaticVoidMethod(reflClass, rmtfmid, clazz, blacklisted);
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
return env->NewStringUTF("EXCEPTION");
}
return env->NewStringUTF("SUCCESS");
}
JNIEXPORT jstring JNICALL Java_com_luminary_os_core_Native_blacklistFields(JNIEnv* env, jobject thisObject, jclass clazz, jobject blacklisted) {
jclass reflClass = env->FindClass("jdk/internal/reflect/Reflection");
if (reflClass == nullptr) {
return env->NewStringUTF("CLASS_NOT_FOUND(NULLPTR)");
}
jmethodID rftfmid = env->GetStaticMethodID(reflClass, "registerFieldsToFilter", "(Ljava/lang/Class;Ljava/util/Set;)V");
if (rftfmid == nullptr) {
return env->NewStringUTF("METHOD_NOT_FOUND(NULLPTR)");
}
env->CallStaticVoidMethod(reflClass, rftfmid, clazz, blacklisted);
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
return env->NewStringUTF("EXCEPTION");
}
return env->NewStringUTF("SUCCESS");
}
JNIEXPORT jfloat JNICALL Java_com_luminary_os_core_Native_calculateX(JNIEnv* env, jobject thisObject, jint i, jint j, jint k, jfloat A, jfloat B, jfloat C) {
return j * sin(A) * sin(B) * cos(C) - k * cos(A) * sin(B) * cos(C) + j * cos(A) * sin(C) + k * sin(A) * sin(C) + i * cos(B) * cos(C);
}
JNIEXPORT jfloat JNICALL Java_com_luminary_os_core_Native_calculateY(JNIEnv* env, jobject thisObject, jint i, jint j, jint k, jfloat A, jfloat B, jfloat C) {
return j * cos(A) * cos(C) + k * sin(A) * cos(C) - j * sin(A) * sin(B) * sin(C) + k * cos(A) * sin(B) * sin(C) - i * cos(B) * sin(C);
}
JNIEXPORT jfloat JNICALL Java_com_luminary_os_core_Native_calculateZ(JNIEnv* env, jobject thisObject, jint i, jint j, jint k, jfloat A, jfloat B, jfloat C) {
return k * cos(A) * cos(B) - j * sin(A) * cos(B) + i * sin(B);
}