VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkJavaUtil.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 00016 #ifndef __vtkJavaUtil_h 00017 #define __vtkJavaUtil_h 00018 00019 #include "vtkSystemIncludes.h" 00020 #include <jni.h> 00021 #include "vtkCommand.h" 00022 #include "vtkWrappingJavaModule.h" 00023 00024 #include <string> 00025 00026 extern VTKWRAPPINGJAVA_EXPORT jlong q(JNIEnv *env,jobject obj); 00027 00028 extern VTKWRAPPINGJAVA_EXPORT void *vtkJavaGetPointerFromObject(JNIEnv *env,jobject obj); 00029 extern VTKWRAPPINGJAVA_EXPORT char *vtkJavaUTFToChar(JNIEnv *env, jstring in); 00030 extern VTKWRAPPINGJAVA_EXPORT bool vtkJavaUTFToString(JNIEnv *env, jstring in, std::string &out); 00031 extern VTKWRAPPINGJAVA_EXPORT jstring vtkJavaMakeJavaString(JNIEnv *env, const char *in); 00032 00033 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfFloatFromFloat(JNIEnv *env, 00034 float *arr, int size); 00035 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfDoubleFromFloat(JNIEnv *env, 00036 float *arr, int size); 00037 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfDoubleFromDouble(JNIEnv *env, 00038 double *arr, int size); 00039 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfShortFromShort(JNIEnv *env, short *arr, int size); 00040 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfIntFromInt(JNIEnv *env, int *arr, int size); 00041 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfIntFromIdType(JNIEnv *env, vtkIdType *arr, int size); 00042 #if defined(VTK_TYPE_USE_LONG_LONG) 00043 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfIntFromLongLong(JNIEnv *env, long long *arr, int size); 00044 #endif 00045 #if defined(VTK_TYPE_USE___INT64) 00046 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfIntFrom__Int64(JNIEnv *env, __int64 *arr, int size); 00047 #endif 00048 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfIntFromSignedChar(JNIEnv *env, signed char *arr, int size); 00049 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfLongFromLong(JNIEnv *env, long *arr, int size); 00050 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfByteFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size); 00051 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfByteFromChar(JNIEnv *env, char *arr, int size); 00052 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfCharFromChar(JNIEnv *env, char *arr, int size); 00053 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfUnsignedCharFromUnsignedChar(JNIEnv *env, unsigned char *arr, int size); 00054 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfUnsignedIntFromUnsignedInt(JNIEnv *env, unsigned int *arr, int size); 00055 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfUnsignedShortFromUnsignedShort(JNIEnv *env,unsigned short *ptr,int size); 00056 extern VTKWRAPPINGJAVA_EXPORT jarray vtkJavaMakeJArrayOfUnsignedLongFromUnsignedLong(JNIEnv *env, unsigned long *arr, int size); 00057 00058 // this is the void pointer parameter passed to the vtk callback routines on 00059 // behalf of the Java interface for callbacks. 00060 struct vtkJavaVoidFuncArg 00061 { 00062 JavaVM *vm; 00063 jobject uobj; 00064 jmethodID mid; 00065 } ; 00066 00067 extern VTKWRAPPINGJAVA_EXPORT void vtkJavaVoidFunc(void *); 00068 extern VTKWRAPPINGJAVA_EXPORT void vtkJavaVoidFuncArgDelete(void *); 00069 00070 class VTKWRAPPINGJAVA_EXPORT vtkJavaCommand : public vtkCommand 00071 { 00072 public: 00073 static vtkJavaCommand *New() { return new vtkJavaCommand; }; 00074 00075 void SetGlobalRef(jobject obj) { this->uobj = obj; }; 00076 void SetMethodID(jmethodID id) { this->mid = id; }; 00077 void AssignJavaVM(JNIEnv *env) { env->GetJavaVM(&(this->vm)); }; 00078 00079 void Execute(vtkObject *, unsigned long, void *); 00080 00081 JavaVM *vm; 00082 jobject uobj; 00083 jmethodID mid; 00084 protected: 00085 vtkJavaCommand(); 00086 ~vtkJavaCommand(); 00087 }; 00088 00089 #endif 00090 // VTK-HeaderTest-Exclude: vtkJavaUtil.h