00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef __vtkJavaUtil_h
00042 #define __vtkJavaUtil_h
00043
00044 #include "vtkSystemIncludes.h"
00045 #include <jni.h>
00046 #include "vtkCommand.h"
00047
00048
00049 extern JNIEXPORT int vtkJavaGetId(JNIEnv *env,jobject obj);
00050
00051 extern JNIEXPORT int vtkJavaRegisterNewObject(JNIEnv *env, jobject obj, void *ptr);
00052 extern JNIEXPORT void vtkJavaRegisterCastFunction(JNIEnv *env, jobject obj, int id, void *tcFunc);
00053
00054 extern JNIEXPORT void *vtkJavaGetPointerFromObject(JNIEnv *env,jobject obj,
00055 char *result_type);
00056 extern JNIEXPORT void vtkJavaDeleteObject(JNIEnv *env, jobject obj);
00057 extern JNIEXPORT jobject vtkJavaGetObjectFromPointer(void *ptr);
00058 extern JNIEXPORT char *vtkJavaUTFToChar(JNIEnv *env, jstring in);
00059 extern JNIEXPORT jstring vtkJavaMakeJavaString(JNIEnv *env, const char *in);
00060
00061 extern JNIEXPORT jarray vtkJavaMakeJArrayOfDoubleFromFloat(JNIEnv *env,
00062 float *arr, int size);
00063 extern JNIEXPORT jarray vtkJavaMakeJArrayOfDoubleFromDouble(JNIEnv *env,
00064 double *arr, int size);
00065 extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFromInt(JNIEnv *env, int *arr, int size);
00066 extern JNIEXPORT jarray vtkJavaMakeJArrayOfByteFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size);
00067
00068 extern JNIEXPORT jobject vtkJavaCreateNewJavaStubForObject(JNIEnv *env, vtkObject* obj);
00069 extern JNIEXPORT jobject vtkJavaCreateNewJavaStub(JNIEnv *env,
00070 const char* fullclassname, void* obj);
00071
00072
00073
00074 struct vtkJavaVoidFuncArg
00075 {
00076 JavaVM *vm;
00077 jobject uobj;
00078 jmethodID mid;
00079 } ;
00080
00081 extern JNIEXPORT void vtkJavaVoidFunc(void *);
00082 extern JNIEXPORT void vtkJavaVoidFuncArgDelete(void *);
00083
00084 class vtkJavaCommand : public vtkCommand
00085 {
00086 public:
00087 static vtkJavaCommand *New() { return new vtkJavaCommand; };
00088
00089 void SetGlobalRef(jobject obj) { this->uobj = obj; };
00090 void SetMethodID(jmethodID id) { this->mid = id; };
00091 void AssignJavaVM(JNIEnv *env) { env->GetJavaVM(&(this->vm)); };
00092
00093 void Execute(vtkObject *, unsigned long, void *);
00094
00095 JavaVM *vm;
00096 jobject uobj;
00097 jmethodID mid;
00098 protected:
00099 vtkJavaCommand();
00100 ~vtkJavaCommand();
00101 };
00102
00103 #endif