Add dynamic loading for DevIL routines. Add all functions that can be called platform independently.
This commit is contained in:
parent
df870c3861
commit
0b746d6392
|
@ -0,0 +1,69 @@
|
|||
#include "extil.h"
|
||||
|
||||
/* turn off the warning for the borland compiler*/
|
||||
#ifdef __BORLANDC__
|
||||
#pragma warn -8064
|
||||
#pragma warn -8065
|
||||
#endif /* __BORLANDC__ */
|
||||
|
||||
#ifdef _WIN32
|
||||
HMODULE devILhandle = NULL;
|
||||
#endif
|
||||
|
||||
/* getProcAddress */
|
||||
|
||||
void *extil_GetProcAddress(const char *name) {
|
||||
#ifdef _WIN32
|
||||
void *t = GetProcAddress(devILhandle, name);
|
||||
|
||||
|
||||
if (t == NULL) {
|
||||
printfDebug("Could not locate symbol %s\n", name);
|
||||
}
|
||||
|
||||
printf("\r\nget proc address %s %d", name, t);
|
||||
|
||||
return t;
|
||||
#endif
|
||||
}
|
||||
|
||||
void extil_InitializeClass(JNIEnv *env, jclass clazz, int num_functions, JavaMethodAndExtFunction *functions) {
|
||||
ext_InitializeClass(env, clazz, &extil_GetProcAddress, num_functions, functions);
|
||||
}
|
||||
|
||||
|
||||
bool extil_InitializeFunctions(int num_functions, ExtFunction *functions) {
|
||||
return ext_InitializeFunctions(&extil_GetProcAddress, num_functions, functions);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
bool extil_Open(JNIEnv *env) {
|
||||
bool result = true;
|
||||
|
||||
if (devILhandle == NULL) {
|
||||
// load the dynamic libraries for DevIL
|
||||
printf("\r\nattempting to load F:\\Apps\\DevIL\\lib\\DevIL.dll");
|
||||
devILhandle = LoadLibrary("F:\\Apps\\DevIL\\lib\\DevIL.dll");
|
||||
if (devILhandle == NULL) {
|
||||
printf("\r\nfailed to load DevIL");
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif /* WIN32 */
|
||||
|
||||
void extgl_Close(void) {
|
||||
#ifdef _WIN32
|
||||
FreeLibrary(devILhandle);
|
||||
devILhandle = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* turn on the warning for the borland compiler*/
|
||||
#ifdef __BORLANDC__
|
||||
#pragma warn .8064
|
||||
#pragma warn .8065
|
||||
#endif /* __BORLANDC__ */
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
#ifndef __EXTIL_H__
|
||||
#define __EXTIL_H__
|
||||
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <IL\il.h>
|
||||
#include "org_lwjgl_devil_IL.h"
|
||||
#include "common_tools.h"
|
||||
|
||||
|
||||
/*-----------------------------------------*/
|
||||
/*-----------------------------------------*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY)
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#include <windows.h>
|
||||
|
||||
#endif
|
||||
|
||||
#define __ilext_h_
|
||||
#define __ILEXT_H_
|
||||
#define __il_h_
|
||||
#define __IL_H__
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#ifndef APIENTRY
|
||||
#define APIENTRY
|
||||
#endif
|
||||
|
||||
#include "common_tools.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* initializes everything, call this right after the rc is created. the function returns 0 if successful */
|
||||
extern bool extil_Open(JNIEnv *env);
|
||||
extern void extil_Close(void);
|
||||
extern void extil_InitializeClass(JNIEnv *env, jclass clazz, int num_functions, JavaMethodAndExtFunction *functions);
|
||||
extern bool extil_InitializeFunctions(int num_functions, ExtFunction *functions);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __EXTIL_H__ */
|
|
@ -1,11 +1,5 @@
|
|||
#include <IL\il.h>
|
||||
#include "extgl.h"
|
||||
#include "org_lwjgl_devil_IL.h"
|
||||
#include "common_tools.h"
|
||||
#include "extil.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: org_lwjgl_devil_IL
|
||||
* Method: ilActiveImage
|
||||
|
@ -174,8 +168,8 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_devil_IL_ilDefaultImage(JNIEnv *env, j
|
|||
|
||||
/*
|
||||
* Class: org_lwjgl_devil_IL
|
||||
* Method: ilDeleteImages
|
||||
* Signature: (I[I)V
|
||||
* Method: nilDeleteImages
|
||||
* Signature: (ILjava/nio/IntBuffer;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_devil_IL_nilDeleteImages(JNIEnv * env, jclass clazz, jint num, jobject lists_buffer, jint lists_offset) {
|
||||
ILbyte *lists = (ILbyte *) safeGetBufferAddress(env, lists_buffer, lists_offset);
|
||||
|
@ -212,8 +206,8 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_devil_IL_ilFormatFunc(JNIEnv *env, jcl
|
|||
|
||||
/*
|
||||
* Class: org_lwjgl_devil_IL
|
||||
* Method: ilGenImages
|
||||
* Signature: (I[I)V
|
||||
* Method: nilGenImages
|
||||
* Signature: (ILjava/nio/IntBuffer;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_devil_IL_nilGenImages(JNIEnv *env , jclass clazz, jint num, jobject lists_buffer, jint lists_offset) {
|
||||
ILbyte *lists = (ILbyte *) safeGetBufferAddress(env, lists_buffer, lists_offset);
|
||||
|
@ -713,7 +707,95 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_devil_IL_ilSaveData(JNIEnv *env, jclas
|
|||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_devil_IL
|
||||
* Method: nCreate
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_devil_IL_nCreate(JNIEnv *env, jclass clazz) {
|
||||
if (!extil_Open(env)) {
|
||||
throwException(env, "Failed to load DevIL library");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_devil_IL_initNativeStubs(JNIEnv *env, jclass clazz) {
|
||||
JavaMethodAndExtFunction functions[] = {
|
||||
{"ilActiveImage", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilActiveImage, "ilActiveImage", (void*)&ilActiveImage},
|
||||
{"ilActiveLayer", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilActiveLayer, "ilActiveLayer", (void*)&ilActiveLayer},
|
||||
{"ilActiveMipmap", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilActiveMipmap, "ilActiveMipmap", (void*)&ilActiveMipmap},
|
||||
{"ilApplyPal", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilApplyPal, "ilApplyPal", (void*)&ilApplyPal},
|
||||
{"ilApplyProfile", "(Ljava/lang/String;Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilApplyProfile, "ilApplyProfile", (void*)&ilApplyProfile},
|
||||
{"ilBindImage", "(I)V", (void*)&Java_org_lwjgl_devil_IL_ilBindImage, "ilBindImage", (void*)&ilBindImage},
|
||||
{"ilBlit", "(IIIIIIIIII)Z", (void*)&Java_org_lwjgl_devil_IL_ilBlit, "ilBlit", (void*)&ilBlit},
|
||||
{"ilClearColour", "(FFFF)V", (void*)&Java_org_lwjgl_devil_IL_ilClearColour, "ilClearColour", (void*)&ilClearColour},
|
||||
{"ilClearImage", "()Z", (void*)&Java_org_lwjgl_devil_IL_ilClearImage, "ilClearImage", (void*)&ilClearImage},
|
||||
{"ilCloneCurImage", "()I", (void*)&Java_org_lwjgl_devil_IL_ilCloneCurImage, "ilCloneCurImage", (void*)&ilCloneCurImage},
|
||||
{"ilCompressFunc", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilCompressFunc, "ilCompressFunc", (void*)&ilCompressFunc},
|
||||
{"ilConvertImage", "(II)Z", (void*)&Java_org_lwjgl_devil_IL_ilConvertImage, "ilConvertImage", (void*)&ilConvertImage},
|
||||
{"ilConvertPal", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilConvertPal, "ilConvertPal", (void*)&ilConvertPal},
|
||||
{"ilCopyImage", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilCopyImage, "ilCopyImage", (void*)&ilCopyImage},
|
||||
{"nilCopyPixels", "(IIIIIIIILjava/nio/ByteBuffer;I)I", (void*)&Java_org_lwjgl_devil_IL_nilCopyPixels, "ilCopyPixels", (void*)&ilCopyPixels},
|
||||
{"ilCreateSubImage", "(II)I", (void*)&Java_org_lwjgl_devil_IL_ilCreateSubImage, "ilCreateSubImage", (void*)&ilCreateSubImage},
|
||||
{"ilDefaultImage", "()Z", (void*)&Java_org_lwjgl_devil_IL_ilDefaultImage, "ilDefaultImage", (void*)&ilDefaultImage},
|
||||
{"nilDeleteImages", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_devil_IL_nilDeleteImages, "ilDeleteImages", (void*)&ilDeleteImages},
|
||||
{"ilDisable", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilDisable, "ilDisable", (void*)&ilDisable},
|
||||
{"ilEnable", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilEnable, "ilEnable", (void*)&ilEnable},
|
||||
{"ilFormatFunc", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilFormatFunc, "ilFormatFunc", (void*)&ilFormatFunc},
|
||||
{"nilGenImages", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_devil_IL_nilGenImages, "ilGenImages", (void*)&ilGenImages},
|
||||
{"ilGetAlpha", "(I)[B", (void*)&Java_org_lwjgl_devil_IL_ilGetAlpha, "ilGetAlpha", (void*)&ilGetAlpha},
|
||||
{"ilModAlpha", "(I)V", (void*)&Java_org_lwjgl_devil_IL_ilModAlpha, "ilModAlpha", (void*)&ilModAlpha},
|
||||
{"ilSetAlpha", "(I)V", (void*)&Java_org_lwjgl_devil_IL_ilSetAlpha, "ilSetAlpha", (void*)&ilSetAlpha},
|
||||
{"ilGetBoolean", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilGetBoolean, "ilGetBoolean", (void*)&ilGetBoolean},
|
||||
{"ilGetData", "()[B", (void*)&Java_org_lwjgl_devil_IL_ilGetData, "ilGetData", (void*)&ilGetData},
|
||||
{"ilGetError", "()I", (void*)&Java_org_lwjgl_devil_IL_ilGetError, "ilGetError", (void*)&ilGetError},
|
||||
{"ilGetInteger", "(I)I", (void*)&Java_org_lwjgl_devil_IL_ilGetInteger, "ilGetInteger", (void*)&ilGetInteger},
|
||||
{"ilGetLumpPos", "()I", (void*)&Java_org_lwjgl_devil_IL_ilGetLumpPos, "ilGetLumpPos", (void*)&ilGetLumpPos},
|
||||
{"ilGetPalette", "()[B", (void*)&Java_org_lwjgl_devil_IL_ilGetPalette, "ilGetPalette", (void*)&ilGetPalette},
|
||||
{"ilGetString", "(I)Ljava/lang/String;", (void*)&Java_org_lwjgl_devil_IL_ilGetString, "ilGetString", (void*)&ilGetString},
|
||||
{"ilHint", "(II)V", (void*)&Java_org_lwjgl_devil_IL_ilHint, "ilHint", (void*)&ilHint},
|
||||
{"ilInit", "()V", (void*)&Java_org_lwjgl_devil_IL_ilInit, "ilInit", (void*)&ilInit},
|
||||
{"ilIsDisabled", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilIsDisabled, "ilIsDisabled", (void*)&ilIsDisabled},
|
||||
{"ilIsEnabled", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilIsEnabled, "ilIsEnabled", (void*)&ilIsEnabled},
|
||||
{"ilIsImage", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilIsImage, "ilIsImage", (void*)&ilIsImage},
|
||||
{"ilIsValid", "(ILjava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilIsValid, "ilIsValid", (void*)&ilIsValid},
|
||||
{"nilIsValidL", "(ILjava/nio/ByteBuffer;II)Z", (void*)&Java_org_lwjgl_devil_IL_nilIsValidL, "ilIsValidL", (void*)&ilIsValidL},
|
||||
{"ilKeyColour", "(FFFF)V", (void*)&Java_org_lwjgl_devil_IL_ilKeyColour, "ilKeyColour", (void*)&ilKeyColour},
|
||||
{"ilLoad", "(ILjava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilLoad, "ilLoad", (void*)&ilLoad},
|
||||
{"ilLoadImage", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilLoadImage, "ilLoadImage", (void*)&ilLoadImage},
|
||||
{"nilLoadL", "(ILjava/nio/ByteBuffer;II)Z", (void*)&Java_org_lwjgl_devil_IL_nilLoadL, "ilLoadL", (void*)&ilLoadL},
|
||||
{"ilLoadPal", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilLoadPal, "ilLoadPal", (void*)&ilLoadPal},
|
||||
{"ilOriginFunc", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilOriginFunc, "ilOriginFunc", (void*)&ilOriginFunc},
|
||||
{"ilOverlayImage", "(IIII)Z", (void*)&Java_org_lwjgl_devil_IL_ilOverlayImage, "ilOverlayImage", (void*)&ilOverlayImage},
|
||||
{"ilPopAttrib", "()V", (void*)&Java_org_lwjgl_devil_IL_ilPopAttrib, "ilPopAttrib", (void*)&ilPopAttrib},
|
||||
{"ilPushAttrib", "(I)V", (void*)&Java_org_lwjgl_devil_IL_ilPushAttrib, "ilPushAttrib", (void*)&ilPushAttrib},
|
||||
{"ilRemoveLoad", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilRemoveLoad, "ilRemoveLoad", (void*)&ilRemoveLoad},
|
||||
{"ilRemoveSave", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilRemoveSave, "ilRemoveSave", (void*)&ilRemoveSave},
|
||||
{"ilResetMemory", "()V", (void*)&Java_org_lwjgl_devil_IL_ilResetMemory, "ilResetMemory", (void*)&ilResetMemory},
|
||||
{"ilResetRead", "()V", (void*)&Java_org_lwjgl_devil_IL_ilResetRead, "ilResetRead", (void*)&ilResetRead},
|
||||
{"ilResetWrite", "()V", (void*)&Java_org_lwjgl_devil_IL_ilResetWrite, "ilResetWrite", (void*)&ilResetWrite},
|
||||
{"ilSave", "(ILjava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilSave, "ilSave", (void*)&ilSave},
|
||||
{"ilSaveImage", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilSaveImage, "ilSaveImage", (void*)&ilSaveImage},
|
||||
{"nilSaveL", "(ILjava/nio/ByteBuffer;II)I", (void*)&Java_org_lwjgl_devil_IL_nilSaveL, "ilSaveL", (void*)&ilSaveL},
|
||||
{"ilSavePal", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilSavePal, "ilSavePal", (void*)&ilSavePal},
|
||||
{"nilSetData", "(Ljava/nio/ByteBuffer;I)Z", (void*)&Java_org_lwjgl_devil_IL_nilSetData, "ilSetData", (void*)&ilSetData},
|
||||
{"ilSetDuration", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilSetDuration, "ilSetDuration", (void*)&ilSetDuration},
|
||||
{"ilSetInteger", "(II)V", (void*)&Java_org_lwjgl_devil_IL_ilSetInteger, "ilSetInteger", (void*)&ilSetInteger},
|
||||
{"nilSetPixels", "(IIIIIIIILjava/nio/ByteBuffer;I)V", (void*)&Java_org_lwjgl_devil_IL_nilSetPixels, "ilSetPixels", (void*)&ilSetPixels},
|
||||
{"ilSetString", "(ILjava/lang/String;)V", (void*)&Java_org_lwjgl_devil_IL_ilSetString, "ilSetString", (void*)&ilSetString},
|
||||
{"ilShutDown", "()V", (void*)&Java_org_lwjgl_devil_IL_ilShutDown, "ilShutDown", (void*)&ilShutDown},
|
||||
{"nilTexImage", "(IIIBIILjava/nio/ByteBuffer;I)Z", (void*)&Java_org_lwjgl_devil_IL_nilTexImage, "ilTexImage", (void*)&ilTexImage},
|
||||
{"ilTypeFunc", "(I)Z", (void*)&Java_org_lwjgl_devil_IL_ilTypeFunc, "ilTypeFunc", (void*)&ilTypeFunc},
|
||||
{"ilLoadData", "(Ljava/lang/String;IIIB)Z", (void*)&Java_org_lwjgl_devil_IL_ilLoadData, "ilLoadData", (void*)&ilLoadData},
|
||||
{"ilLoadDataL", "(Ljava/nio/ByteBuffer;IIIIIB)Z", (void*)&Java_org_lwjgl_devil_IL_nilLoadDataL, "ilLoadDataL", (void*)&ilLoadDataL},
|
||||
{"ilSaveData", "(Ljava/lang/String;)Z", (void*)&Java_org_lwjgl_devil_IL_ilSaveData, "ilSaveData", (void*)&ilSaveData}
|
||||
};
|
||||
int num_functions = NUMFUNCTIONS(functions);
|
||||
extil_InitializeClass(env, clazz, num_functions, functions);
|
||||
printf("\r\ninitNativeStubs");
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
Loading…
Reference in New Issue