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 vtkJavaDeleteObjectFromHash(JNIEnv *env, int id);
00057 extern JNIEXPORT jobject vtkJavaGetObjectFromPointer(void *ptr);
00058 extern JNIEXPORT int vtkJavaShouldIDeleteObject(JNIEnv *env,jobject obj);
00059 extern JNIEXPORT char *vtkJavaUTFToChar(JNIEnv *env, jstring in);
00060 extern JNIEXPORT jstring vtkJavaMakeJavaString(JNIEnv *env, const char *in);
00061
00062 extern JNIEXPORT jarray vtkJavaMakeJArrayOfDoubleFromFloat(JNIEnv *env,
00063 float *arr, int size);
00064 extern JNIEXPORT jarray vtkJavaMakeJArrayOfDoubleFromDouble(JNIEnv *env,
00065 double *arr, int size);
00066 extern JNIEXPORT jarray vtkJavaMakeJArrayOfIntFromInt(JNIEnv *env, int *arr, int size);
00067 extern JNIEXPORT jarray vtkJavaMakeJArrayOfByteFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size);
00068
00069 extern JNIEXPORT jobject vtkJavaCreateNewJavaStubForObject(JNIEnv *env, vtkObject* obj);
00070 extern JNIEXPORT jobject vtkJavaCreateNewJavaStub(JNIEnv *env,
00071 const char* fullclassname, void* obj);
00072
00073
00074
00075 struct vtkJavaVoidFuncArg
00076 {
00077 JavaVM *vm;
00078 jobject uobj;
00079 jmethodID mid;
00080 } ;
00081
00082 extern JNIEXPORT void vtkJavaVoidFunc(void *);
00083 extern JNIEXPORT void vtkJavaVoidFuncArgDelete(void *);
00084
00085 class vtkJavaCommand : public vtkCommand
00086 {
00087 public:
00088 vtkJavaCommand();
00089 ~vtkJavaCommand();
00090 static vtkJavaCommand *New() { return new vtkJavaCommand; };
00091
00092 void SetGlobalRef(jobject obj) { this->uobj = obj; };
00093 void SetMethodID(jmethodID id) { this->mid = id; };
00094 void AssignJavaVM(JNIEnv *env) { env->GetJavaVM(&(this->vm)); };
00095
00096 void Execute(vtkObject *, unsigned long, void *);
00097
00098 JavaVM *vm;
00099 jobject uobj;
00100 jmethodID mid;
00101 };
00102
00103 #endif