This commit is contained in:
parent
9182e5b3ae
commit
8291c7f163
|
@ -0,0 +1,120 @@
|
|||
#include <D3dx9math.h>
|
||||
#include "org_lwjgl_d3d_D3DUtil.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixLookAtLH
|
||||
* Signature: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixLookAtLH
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jobject eyeBuffer, jobject atBuffer, jobject upBuffer) {
|
||||
D3DXMATRIX* out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
CONST D3DXVECTOR3 *eye = (D3DXVECTOR3*)((*env)->GetDirectBufferAddress(env, eyeBuffer));
|
||||
CONST D3DXVECTOR3 *at = (D3DXVECTOR3*)((*env)->GetDirectBufferAddress(env, atBuffer));
|
||||
CONST D3DXVECTOR3 *up = (D3DXVECTOR3*)((*env)->GetDirectBufferAddress(env, upBuffer));
|
||||
|
||||
D3DXMatrixLookAtLH(out, eye, at, up);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixPerspectiveFovLH
|
||||
* Signature: (Ljava/nio/ByteBuffer;FFFF)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixPerspectiveFovLH
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jfloat fovy, jfloat aspect, jfloat zn, jfloat zf) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixPerspectiveFovLH(out, fovy, aspect, zn, zf);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixIdentity
|
||||
* Signature: (Ljava/nio/ByteBuffer;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixIdentity
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixIdentity(out);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixScaling
|
||||
* Signature: (Ljava/nio/ByteBuffer;FFF)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixScaling
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jfloat sx, jfloat sy, jfloat sz) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixScaling(out, sx, sy, sz);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixTranslation
|
||||
* Signature: (Ljava/nio/ByteBuffer;FFF)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixTranslation
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jfloat x, jfloat y, jfloat z) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixTranslation(out, x, y, z);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixRotationX
|
||||
* Signature: (Ljava/nio/ByteBuffer;F)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixRotationX
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jfloat angle) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixRotationY(out, angle);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixRotationY
|
||||
* Signature: (Ljava/nio/ByteBuffer;F)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixRotationY
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jfloat angle) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixRotationY(out, angle);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixRotationZ
|
||||
* Signature: (Ljava/nio/ByteBuffer;F)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixRotationZ
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jfloat angle) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
|
||||
D3DXMatrixRotationY(out, angle);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_D3DUtil
|
||||
* Method: nD3DXMatrixMultiply
|
||||
* Signature: (Ljava/nio/ByteBuffer;Lorg/lwjgl/d3d/D3DMatrix;Lorg/lwjgl/d3d/D3DMatrix;)Ljava/nio/ByteBuffer;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_D3DUtil_nD3DXMatrixMultiply
|
||||
(JNIEnv *env, jclass clazz, jobject outBuffer, jobject m1Buffer, jobject m2Buffer) {
|
||||
D3DXMATRIX *out = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, outBuffer));
|
||||
CONST D3DXMATRIX *m1 = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, m1Buffer));
|
||||
CONST D3DXMATRIX *m2 = (D3DXMATRIX*)((*env)->GetDirectBufferAddress(env, m2Buffer));
|
||||
|
||||
D3DXMATRIX *result = D3DXMatrixMultiply(out, m1, m2);
|
||||
|
||||
jobject resultBuffer = (*env)->NewDirectByteBuffer(env, result, sizeof(D3DXMATRIX));
|
||||
|
||||
return resultBuffer;
|
||||
}
|
|
@ -0,0 +1,200 @@
|
|||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <d3d9.h>
|
||||
#include <stdio.h>
|
||||
#include "org_lwjgl_d3d_IDirect3D9.h"
|
||||
#include "context.h"
|
||||
|
||||
extern void setPointer(JNIEnv *env, jobject classInstance, const char* methodName, jlong pointer);
|
||||
//void setPointer(JNIEnv *env, jobject classInstance, const char* methodName, jlong pointer) {
|
||||
// jclass clazz = (*env)->GetObjectClass(env, classInstance);
|
||||
// jmethodID mid = (*env)->GetMethodID(env, clazz, methodName, "(J)V");
|
||||
// if (mid != NULL) {
|
||||
// (*env)->CallVoidMethod(env, classInstance, mid, pointer);
|
||||
// }
|
||||
//}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCheckDepthStencilMatch
|
||||
* Signature: (IIIII)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCheckDepthStencilMatch
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jint adapterFormat, jint renderTargetFormat, jint depthStencilFormat) {
|
||||
return IDirect3D9_CheckDepthStencilMatch((IDirect3D9 *)iDirect3D9, adapter, deviceType, adapterFormat, renderTargetFormat, depthStencilFormat);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCheckDeviceFormat
|
||||
* Signature: (IIIJII)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCheckDeviceFormat
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jint adapterFormat, jint usage, jint resoruceType, jint checkFormat) {
|
||||
return IDirect3D9_CheckDeviceFormat((IDirect3D9 *)iDirect3D9, adapter, deviceType, adapterFormat, usage, resoruceType, checkFormat);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCheckDeviceFormatConversion
|
||||
* Signature: (IIII)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCheckDeviceFormatConversion
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jint sourceFormat, jint targetFormat) {
|
||||
return IDirect3D9_CheckDeviceFormatConversion((IDirect3D9 *)iDirect3D9, adapter, deviceType, sourceFormat, targetFormat);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCheckDeviceMultiSampleType
|
||||
* Signature: (IIIZILjava/nio/IntBuffer;)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCheckDeviceMultiSampleType
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jint surfaceFormat, boolean windowed, jint multiSampleType, jobject qualityLevels) {
|
||||
DWORD * quality = NULL;
|
||||
|
||||
if(qualityLevels != NULL) {
|
||||
DWORD * quality = (DWORD *)((*env)->GetDirectBufferAddress(env, qualityLevels));
|
||||
}
|
||||
|
||||
return IDirect3D9_CheckDeviceMultiSampleType((IDirect3D9 *)iDirect3D9, adapter, deviceType, surfaceFormat, windowed, multiSampleType, quality);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCheckDeviceType
|
||||
* Signature: (IIIIZ)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCheckDeviceType
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jint displayFormat, jint backBufferFormat, boolean windowed) {
|
||||
return IDirect3D9_CheckDeviceType((IDirect3D9 *)iDirect3D9, adapter, deviceType, displayFormat, backBufferFormat, windowed);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCreateDevice
|
||||
* Signature: (IIJJLorg/lwjgl/d3d/IDirect3D9$D3DPRESENT_PARAMETERS;Lorg/lwjgl/d3d/IDirect3DDevice9;)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCreateDevice
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jlong focusWindow, jint behaviorFlags, jobject presentationParameters, jobject returnedDeviceInterface) {
|
||||
IDirect3DDevice9 *iDirect3DDevice9;
|
||||
HWND myHwnd = (HWND)(INT_PTR)focusWindow;
|
||||
D3DPRESENT_PARAMETERS* pPresentationParameters = (D3DPRESENT_PARAMETERS*)((*env)->GetDirectBufferAddress(env, presentationParameters));
|
||||
|
||||
HRESULT hResult = IDirect3D9_CreateDevice((IDirect3D9 *)iDirect3D9, adapter, deviceType,
|
||||
myHwnd, behaviorFlags, pPresentationParameters, &iDirect3DDevice9);
|
||||
|
||||
setPointer(env, returnedDeviceInterface, "setIDirect3DDevice9", (jlong)iDirect3DDevice9);
|
||||
|
||||
return hResult;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nEnumAdapterModes
|
||||
* Signature: (IIILorg/lwjgl/d3d/IDirect3D9$D3DDISPLAYMODE;)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nEnumAdapterModes
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint format, jint modeIndex, jobject mode) {
|
||||
D3DDISPLAYMODE * displayMode = (D3DDISPLAYMODE *)((*env)->GetDirectBufferAddress(env, mode));
|
||||
|
||||
return IDirect3D9_EnumAdapterModes((IDirect3D9 *)iDirect3D9, adapter, format, modeIndex, displayMode);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nGetAdapterCount
|
||||
* Signature: (J)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_IDirect3D9_nGetAdapterCount
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9) {
|
||||
return IDirect3D9_GetAdapterCount((IDirect3D9 *)iDirect3D9);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nGetAdapterDisplayMode
|
||||
* Signature: (ILorg/lwjgl/d3d/IDirect3D9$D3DDISPLAYMODE;)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nGetAdapterDisplayMode
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jobject mode) {
|
||||
D3DDISPLAYMODE * displayMode = (D3DDISPLAYMODE *)((*env)->GetDirectBufferAddress(env, mode));
|
||||
|
||||
return IDirect3D9_GetAdapterDisplayMode((IDirect3D9 *)iDirect3D9, adapter, displayMode);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nGetAdapterIdentifier
|
||||
* Signature: (IJLorg/lwjgl/d3d/IDirect3D9$D3DADAPTER_IDENTIFIER9;)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nGetAdapterIdentifier
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint flags, jobject identifier) {
|
||||
D3DADAPTER_IDENTIFIER9 * adapterIdentifier = (D3DADAPTER_IDENTIFIER9 *)((*env)->GetDirectBufferAddress(env, identifier));
|
||||
|
||||
return IDirect3D9_GetAdapterIdentifier((IDirect3D9 *)iDirect3D9, adapter, flags, adapterIdentifier);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nGetAdapterModeCount
|
||||
* Signature: (II)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_IDirect3D9_nGetAdapterModeCount
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint format) {
|
||||
return IDirect3D9_GetAdapterModeCount((IDirect3D9 *)iDirect3D9, adapter, format);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nGetAdapterMonitor
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nGetAdapterMonitor
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter) {
|
||||
return (jlong)IDirect3D9_GetAdapterMonitor((IDirect3D9 *)iDirect3D9, adapter);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nGetDeviceCaps
|
||||
* Signature: (IILorg/lwjgl/d3d/IDirect3D9$D3DCAPS9;)I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nGetDeviceCaps
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9, jint adapter, jint deviceType, jobject caps) {
|
||||
D3DCAPS9 * d3dCaps = (D3DCAPS9 *)((*env)->GetDirectBufferAddress(env, caps));
|
||||
|
||||
return IDirect3D9_GetDeviceCaps((IDirect3D9 *)iDirect3D9, adapter, deviceType, d3dCaps);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nRegisterSoftwareDevice
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nRegisterSoftwareDevice
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nRelease
|
||||
* Signature: (J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_IDirect3D9_nRelease
|
||||
(JNIEnv *env, jobject object, jlong iDirect3D9) {
|
||||
IDirect3D9_Release((IDirect3D9 *)iDirect3D9);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9
|
||||
* Method: nCreate
|
||||
* Signature: ()J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9_nCreate
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
IDirect3D9 *direct3DInterface = Direct3DCreate9(D3D_SDK_VERSION);
|
||||
|
||||
return (jlong)direct3DInterface;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
#include "org_lwjgl_d3d_IDirect3D9Ex.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9Ex
|
||||
* Method: nCreateDeviceEx
|
||||
* Signature: (JIIJJLorg/lwjgl/d3d/D3DPresentParameters;Lorg/lwjgl/d3d/D3DDisplaymodeEx;Lorg/lwjgl/d3d/IDirect3DDevice9Ex;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9Ex_nCreateDeviceEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3D9Ex, jint adapter, jint deviceType, jlong focusWindow, jlong behaviorFlags, jobject presentationParameters, jobject fullscreenDisplayMode, jobject returnedDeviceInterface) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9Ex
|
||||
* Method: nEnumAdapterModesEx
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DDisplaymodeFilter;ILorg/lwjgl/d3d/D3DDisplaymodeEx;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9Ex_nEnumAdapterModesEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3D9Ex, jint adapter, jobject filter, jint mode, jobject displayMode) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9Ex
|
||||
* Method: nGetAdapterDisplayModeEx
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DDisplaymodeEx;I)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9Ex_nGetAdapterDisplayModeEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3D9Ex, jint adapter, jobject mode, jint rotation) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9Ex
|
||||
* Method: nGetAdapterLUID
|
||||
* Signature: (JILorg/lwjgl/d3d/LUID;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3D9Ex_nGetAdapterLUID
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3D9Ex, jint adapter, jobject LUID) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3D9Ex
|
||||
* Method: nGetAdapterModeCountEx
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DDisplaymodeFilter;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_IDirect3D9Ex_nGetAdapterModeCountEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3D9Ex, jint adapter, jobject filter) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DBaseTexture9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DBaseTexture9
|
||||
* Method: nGenerateMipSubLevels
|
||||
* Signature: (J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_IDirect3DBaseTexture9_nGenerateMipSubLevels
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DBaseTexture9) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DBaseTexture9
|
||||
* Method: nGetAutoGenFilterType
|
||||
* Signature: (J)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_IDirect3DBaseTexture9_nGetAutoGenFilterType
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DBaseTexture9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DBaseTexture9
|
||||
* Method: nGetLevelCount
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DBaseTexture9_nGetLevelCount
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DBaseTexture9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DBaseTexture9
|
||||
* Method: nGetLOD
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DBaseTexture9_nGetLOD
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DBaseTexture9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DBaseTexture9
|
||||
* Method: nSetAutoGenFilterType
|
||||
* Signature: (JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DBaseTexture9_nSetAutoGenFilterType
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DBaseTexture9, jint filterType) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DBaseTexture9
|
||||
* Method: nSetLOD
|
||||
* Signature: (JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DBaseTexture9_nSetLOD
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DBaseTexture9, jlong LODNew) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DCubeTexture9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DCubeTexture9
|
||||
* Method: nAddDirtyRect
|
||||
* Signature: (JILorg/lwjgl/d3d/Rectangle;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DCubeTexture9_nAddDirtyRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DCubeTexture9, jint faceType, jobject dirtyRect) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DCubeTexture9
|
||||
* Method: nGetCubeMapSurface
|
||||
* Signature: (JIILorg/lwjgl/d3d/IDirect3DSurface9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DCubeTexture9_nGetCubeMapSurface
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DCubeTexture9, jint faceType, jint level, jobject cubeMapSurface) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DCubeTexture9
|
||||
* Method: nGetLevelDesc
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DSsurfaceDesc;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DCubeTexture9_nGetLevelDesc
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DCubeTexture9, jint level, jobject desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DCubeTexture9
|
||||
* Method: nLockRect
|
||||
* Signature: (JIILorg/lwjgl/d3d/D3DLockedRect;Lorg/lwjgl/d3d/Rectangle;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DCubeTexture9_nLockRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DCubeTexture9, jint faceType, jint level, jobject lockedRect, jobject rect, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DCubeTexture9
|
||||
* Method: nUnlockRect
|
||||
* Signature: (JII)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DCubeTexture9_nUnlockRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DCubeTexture9, jint faceType, jint level) {
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,161 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DDevice9Ex.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nCheckDeviceState
|
||||
* Signature: (JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nCheckDeviceState
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jlong window) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nCheckResourceResidency
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DResource9;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nCheckResourceResidency
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jobject resourceArray, jlong numResources) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nCreateDepthStencilSurfaceEx
|
||||
* Signature: (JIIIIJZLorg/lwjgl/d3d/IDirect3DSurface9;JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nCreateDepthStencilSurfaceEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint width, jint height, jint format, jint multiSample, jlong multisampleQuality, jboolean discard, jobject surface, jlong sharedHandle, jlong usage) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nCreateOffscreenPlainSurfaceEx
|
||||
* Signature: (JIIIJLorg/lwjgl/d3d/IDirect3DSurface9;JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nCreateOffscreenPlainSurfaceEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint width, jint height, jint format, jlong pool, jobject surface, jlong sharedHandle, jlong usage) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nCreateRenderTargetEx
|
||||
* Signature: (JIIIIJZLorg/lwjgl/d3d/IDirect3DSurface9;JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nCreateRenderTargetEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint width, jint height, jint format, jint multiSample, jlong multisampleQuality, jboolean lockable, jobject surface, jlong sharedHandle, jlong usage) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nComposeRect
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DSurface9;Lorg/lwjgl/d3d/IDirect3DSurface9;Lorg/lwjgl/d3d/IDirect3DVertexBuffer9;ILorg/lwjgl/d3d/IDirect3DVertexBuffer9;III)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nComposeRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jobject source, jobject destination, jobject srcRectDescriptors, jint numRects, jobject dstRectDescriptors, jint operation, jint xOffset, jint yOffset) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nGetDisplayModeEx
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DDisplaymodeEx;I)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nGetDisplayModeEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint swapChain, jobject mode, jint rotation) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nGetGPUThreadPriority
|
||||
* Signature: (JLjava/nio/IntBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nGetGPUThreadPriority
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jobject priority) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nGetMaximumFrameLatency
|
||||
* Signature: (JLjava/nio/IntBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nGetMaximumFrameLatency
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jobject maxLatency) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nPresentEx
|
||||
* Signature: (JLorg/lwjgl/d3d/Rectangle;Lorg/lwjgl/d3d/Rectangle;JLorg/lwjgl/d3d/D3DRegionData;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nPresentEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jobject sourceRect, jobject destRect, jlong destWindowOverride, jobject dirtyRegion, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nResetEx
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DPresentParameters;Lorg/lwjgl/d3d/D3DDisplaymodeEx;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nResetEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jobject presentationParameters, jobject fullscreenDisplayMode) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nSetConvolutionMonoKernel
|
||||
* Signature: (JIILjava/nio/FloatBuffer;Ljava/nio/FloatBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nSetConvolutionMonoKernel
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint width, jint height, jobject rowWeights, jobject columnWeights) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nSetGPUThreadPriority
|
||||
* Signature: (JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nSetGPUThreadPriority
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint priority) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nSetMaximumFrameLatency
|
||||
* Signature: (JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nSetMaximumFrameLatency
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint maxLatency) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nTestCooperativeLevel
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nTestCooperativeLevel
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DDevice9Ex
|
||||
* Method: nWaitForVBlank
|
||||
* Signature: (JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DDevice9Ex_nWaitForVBlank
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DDevice9Ex, jint swapChainIndex) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DIndexBuffer9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DIndexBuffer9
|
||||
* Method: nGetDesc
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DIndexBufferDesc;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DIndexBuffer9_nGetDesc
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DIndexBuffer9, jobject desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DIndexBuffer9
|
||||
* Method: nLock
|
||||
* Signature: (JIILjava/nio/ByteBuffer;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DIndexBuffer9_nLock
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DIndexBuffer9, jint offsetToLock, jint sizeToLock, jobject data, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DIndexBuffer9
|
||||
* Method: nUnlock
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DIndexBuffer9_nUnlock
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DIndexBuffer9) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DPixelShader9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DPixelShader9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DPixelShader9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DPixelShader9, jobject device) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DPixelShader9
|
||||
* Method: nGetFunction
|
||||
* Signature: (JLjava/nio/ByteBuffer;Ljava/nio/IntBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DPixelShader9_nGetFunction
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DPixelShader9, jobject data, jobject sizeOfData) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DQuery9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DQuery9
|
||||
* Method: nGetData
|
||||
* Signature: (JLjava/nio/ByteBuffer;JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DQuery9_nGetData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DQuery9, jobject data, jlong size, jlong getDataFlags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DQuery9
|
||||
* Method: nGetDataSize
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DQuery9_nGetDataSize
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DQuery9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DQuery9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DQuery9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DQuery9, jobject device) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DQuery9
|
||||
* Method: nGetType
|
||||
* Signature: (J)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_IDirect3DQuery9_nGetType
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DQuery9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DQuery9
|
||||
* Method: nIssue
|
||||
* Signature: (JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DQuery9_nIssue
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DQuery9, jlong issueFlags) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DResource9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nFreePrivateData
|
||||
* Signature: (JLorg/lwjgl/d3d/GUID;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nFreePrivateData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9, jobject refguid) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9, jobject device) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nGetPriority
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nGetPriority
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nGetPrivateData
|
||||
* Signature: (JLorg/lwjgl/d3d/GUID;Ljava/nio/ByteBuffer;Ljava/nio/LongBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nGetPrivateData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9, jobject refguid, jobject data, jobject sizeOfData) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nGetType
|
||||
* Signature: (J)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nGetType
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nPreLoad
|
||||
* Signature: (J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nPreLoad
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nSetPriority
|
||||
* Signature: (JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nSetPriority
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9, jlong priorityNew) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DResource9
|
||||
* Method: nSetPrivateData
|
||||
* Signature: (JLorg/lwjgl/d3d/GUID;Ljava/nio/ByteBuffer;JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DResource9_nSetPrivateData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DResource9, jobject refguid, jobject data, jlong sizeOfData, jlong flags) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DStateBlock9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DStateBlock9
|
||||
* Method: nApply
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DStateBlock9_nApply
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DStateBlock9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DStateBlock9
|
||||
* Method: nCapture
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DStateBlock9_nCapture
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DStateBlock9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DStateBlock9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DStateBlock9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DStateBlock9, jobject device) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DSurface9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSurface9
|
||||
* Method: nGetContainer
|
||||
* Signature: (JJLjava/nio/ByteBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSurface9_nGetContainer
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSurface9, jlong riid, jobject container) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSurface9
|
||||
* Method: nGetDC
|
||||
* Signature: (JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSurface9_nGetDC
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSurface9, jlong hdc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSurface9
|
||||
* Method: nGetDesc
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DSurfaceDesc;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSurface9_nGetDesc
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSurface9, jobject desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSurface9
|
||||
* Method: nLockRect
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DLockedRect;Lorg/lwjgl/d3d/Rectangle;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSurface9_nLockRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSurface9, jobject lockedRect, jobject rect, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSurface9
|
||||
* Method: nReleaseDC
|
||||
* Signature: (JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSurface9_nReleaseDC
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSurface9, jlong hdc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSurface9
|
||||
* Method: nUnlockRect
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSurface9_nUnlockRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSurface9) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DSwapChain9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nGetBackBuffer
|
||||
* Signature: (JIILorg/lwjgl/d3d/IDirect3DSurface9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nGetBackBuffer
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jint backBuffer, jint type, jobject backBufferSurface) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jobject device) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nGetDisplayMode
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DDisplaymode;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nGetDisplayMode
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jobject mode) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nGetFrontBufferData
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DSurface9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nGetFrontBufferData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jobject destSurface) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nGetPresentParameters
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DPresentParameters;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nGetPresentParameters
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jobject presentationParameters) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nGetRasterStatus
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DRasterStatus;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nGetRasterStatus
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jobject rasterStatus) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9
|
||||
* Method: nPresent
|
||||
* Signature: (JLorg/lwjgl/d3d/Rectangle;Lorg/lwjgl/d3d/Rectangle;JLorg/lwjgl/d3d/RegionData;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9_nPresent
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9, jobject sourceRect, jobject destRect, jlong destWindowOverride, jobject dirtyRegion, jlong flags) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DSwapChain9Ex.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9Ex
|
||||
* Method: nGetDisplayModeEx
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DDisplaymodeEx;I)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9Ex_nGetDisplayModeEx
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9Ex, jobject mode, jint rotation) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9Ex
|
||||
* Method: nGetLastPresentCount
|
||||
* Signature: (JLjava/nio/IntBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9Ex_nGetLastPresentCount
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9Ex, jobject lastPresentCount) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DSwapChain9Ex
|
||||
* Method: nGetPresentStatistics
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DPresentStats;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DSwapChain9Ex_nGetPresentStatistics
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DSwapChain9Ex, jobject presentationStatistics) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DTexture9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DTexture9
|
||||
* Method: nAddDirtyRect
|
||||
* Signature: (JLorg/lwjgl/d3d/Rectangle;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DTexture9_nAddDirtyRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DTexture9, jobject dirtyRect) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DTexture9
|
||||
* Method: nGetLevelDesc
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DSurfaceDesc;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DTexture9_nGetLevelDesc
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DTexture9, jint level, jobject desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DTexture9
|
||||
* Method: nGetSurfaceLevel
|
||||
* Signature: (JILorg/lwjgl/d3d/IDirect3DSurface9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DTexture9_nGetSurfaceLevel
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DTexture9, jint level, jobject surfaceLevel) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DTexture9
|
||||
* Method: nLockRect
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DLockedRect;Lorg/lwjgl/d3d/Rectangle;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DTexture9_nLockRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DTexture9, jint level, jobject lockedRect, jobject rect, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DTexture9
|
||||
* Method: nUnlockRect
|
||||
* Signature: (JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DTexture9_nUnlockRect
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DTexture9, jint level) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
#include <d3d9.h>
|
||||
#include "org_lwjgl_d3d_IDirect3DVertexBuffer9.h"
|
||||
|
||||
extern void setPointer(JNIEnv *env, jobject classInstance, const char* methodName, jlong pointer);
|
||||
//void setPointer(JNIEnv *env, jobject classInstance, const char* methodName, jlong pointer) {
|
||||
// jclass clazz = (*env)->GetObjectClass(env, classInstance);
|
||||
// jmethodID mid = (*env)->GetMethodID(env, clazz, methodName, "(J)V");
|
||||
// if (mid != NULL) {
|
||||
// (*env)->CallVoidMethod(env, classInstance, mid, pointer);
|
||||
// }
|
||||
//}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexBuffer9
|
||||
* Method: nGetDesc
|
||||
* Signature: (JLjava/nio/ByteBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexBuffer9_nGetDesc
|
||||
(JNIEnv *env, jobject obj, jlong iDirect3DVertexBuffer9, jobject descBuffer) {
|
||||
D3DVERTEXBUFFER_DESC *desc = (D3DVERTEXBUFFER_DESC*)((*env)->GetDirectBufferAddress(env, descBuffer));
|
||||
|
||||
return IDirect3DVertexBuffer9_GetDesc((IDirect3DVertexBuffer9*)iDirect3DVertexBuffer9, desc);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexBuffer9
|
||||
* Method: nLock
|
||||
* Signature: (JIILjava/nio/ByteBuffer;JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexBuffer9_nLock
|
||||
(JNIEnv *env, jobject obj, jlong iDirect3DVertexBuffer9, jint offsetToLock, jint sizeToLock, jobject ataBuffer, jlong flags, jint bufferSize) {
|
||||
void *ata;
|
||||
|
||||
HRESULT hResult = IDirect3DVertexBuffer9_Lock((IDirect3DVertexBuffer9*)iDirect3DVertexBuffer9, offsetToLock, sizeToLock, &ata, flags);
|
||||
|
||||
void *ataAddress = (void*)((*env)->GetDirectBufferAddress(env, ataBuffer));
|
||||
memcpy(ata, ataAddress, bufferSize);
|
||||
|
||||
return hResult;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexBuffer9
|
||||
* Method: nUnlock
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexBuffer9_nUnlock
|
||||
(JNIEnv *env, jobject obj, jlong iDirect3DVertexBuffer9) {
|
||||
return IDirect3DVertexBuffer9_Unlock((IDirect3DVertexBuffer9*)iDirect3DVertexBuffer9);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexBuffer9
|
||||
* Method: create
|
||||
* Signature: (Lorg/lwjgl/d3d/IDirect3DVertexBuffer9;)J
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_IDirect3DVertexBuffer9_create
|
||||
(JNIEnv *env, jobject obj, jobject iDirect3DVertexBuffer9) {
|
||||
IDirect3DVertexBuffer9 *buffer = NULL;
|
||||
|
||||
setPointer(env, iDirect3DVertexBuffer9, "setIDirect3DVertexBuffer9", (jlong)buffer);
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DVertexDeclaration9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexDeclaration9
|
||||
* Method: nGetDeclaration
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DVertexElement9;Ljava/nio/IntBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexDeclaration9_nGetDeclaration
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVertexDeclaration9, jobject decl, jobject numElements) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexDeclaration9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexDeclaration9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVertexDeclaration9, jobject device) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DVertexShader9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexShader9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexShader9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVertexShader9, jobject device) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVertexShader9
|
||||
* Method: nGetFunction
|
||||
* Signature: (JLjava/nio/ByteBuffer;Ljava/nio/IntBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVertexShader9_nGetFunction
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVertexShader9, jobject data, jobject sizeOfData) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DVolume9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nFreePrivateData
|
||||
* Signature: (JLorg/lwjgl/d3d/GUID;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nFreePrivateData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jobject refguid) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nGetContainer
|
||||
* Signature: (JJLjava/nio/ByteBuffer;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nGetContainer
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jlong riid, jobject container) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nGetDesc
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DVolumeDesc;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nGetDesc
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jobject desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nGetDevice
|
||||
* Signature: (JLorg/lwjgl/d3d/IDirect3DDevice9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nGetDevice
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jobject device) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nGetPrivateData
|
||||
* Signature: (JLorg/lwjgl/d3d/GUID;Ljava/nio/ByteBuffer;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nGetPrivateData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jobject refguid, jobject data, jlong sizeOfData) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nLockBox
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DLockedBox;Lorg/lwjgl/d3d/D3DBox;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nLockBox
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jobject lockedVolume, jobject box, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nSetPrivateData
|
||||
* Signature: (JLorg/lwjgl/d3d/GUID;Ljava/nio/ByteBuffer;JJ)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nSetPrivateData
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9, jobject refguid, jobject data, jlong sizeOfData, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolume9
|
||||
* Method: nUnlockBox
|
||||
* Signature: (J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolume9_nUnlockBox
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolume9) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
#include "org_lwjgl_d3d_IDirect3DVolumeTexture9.h"
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolumeTexture9
|
||||
* Method: nAddDirtyBox
|
||||
* Signature: (JLorg/lwjgl/d3d/D3DBox;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolumeTexture9_nAddDirtyBox
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolumeTexture9, jobject dirtyBox) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolumeTexture9
|
||||
* Method: nGetLevelDesc
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DVolumeDesc;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolumeTexture9_nGetLevelDesc
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolumeTexture9, jint level, jobject desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolumeTexture9
|
||||
* Method: nGetVolumeLevel
|
||||
* Signature: (JILorg/lwjgl/d3d/IDirect3DVolume9;)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolumeTexture9_nGetVolumeLevel
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolumeTexture9, jint level, jobject volumeLevel) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolumeTexture9
|
||||
* Method: nLockBox
|
||||
* Signature: (JILorg/lwjgl/d3d/D3DLockedBox;Lorg/lwjgl/d3d/D3DBox;J)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolumeTexture9_nLockBox
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolumeTexture9, jint level, jobject lockedVolume, jobject box, jlong flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_IDirect3DVolumeTexture9
|
||||
* Method: nUnlockBox
|
||||
* Signature: (JI)J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_IDirect3DVolumeTexture9_nUnlockBox
|
||||
(JNIEnv *env, jobject obj, jlong IDirect3DVolumeTexture9, jint level) {
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_d3d_WindowsContextImplementation.c 2832 2007-05-27 15:32:25Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2832 $
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsContextImplementation.h"
|
||||
#include "context.h"
|
||||
#include "common_tools.h"
|
||||
|
||||
typedef struct {
|
||||
HGLRC context;
|
||||
} WindowsContext;
|
||||
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nCreate
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle, jobject shared_context_handle) {
|
||||
WindowsPeerInfo *peer_info;
|
||||
WindowsContext *shared_context_info;
|
||||
WindowsContext *context_info;
|
||||
HGLRC context;
|
||||
HGLRC shared_context = NULL;
|
||||
HDC saved_hdc;
|
||||
HGLRC saved_context;
|
||||
jobject context_handle = newJavaManagedByteBuffer(env, sizeof(WindowsContext));
|
||||
if (context_handle == NULL) {
|
||||
throwException(env, "Could not create handle buffer");
|
||||
return NULL;
|
||||
}
|
||||
peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
context = wglCreateContext(peer_info->drawable_hdc);
|
||||
if (context == NULL) {
|
||||
throwException(env, "Could not create context");
|
||||
return NULL;
|
||||
}
|
||||
if (shared_context_handle != NULL) {
|
||||
shared_context_info = (WindowsContext *)(*env)->GetDirectBufferAddress(env, shared_context_handle);
|
||||
shared_context = shared_context_info->context;
|
||||
if (!wglShareLists(shared_context, context)) {
|
||||
wglDeleteContext(context);
|
||||
throwException(env, "Could not share contexts");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
context_info = (WindowsContext *)(*env)->GetDirectBufferAddress(env, context_handle);
|
||||
context_info->context = context;
|
||||
return context_handle;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nSwapBuffers
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
SwapBuffers(peer_info->drawable_hdc);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nReleaseCurrentContext
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
wglMakeCurrent(NULL, NULL);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nMakeCurrent
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle, jobject context_handle) {
|
||||
WindowsContext *context_info = (WindowsContext *)(*env)->GetDirectBufferAddress(env, context_handle);
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
if (!wglMakeCurrent(peer_info->drawable_hdc, context_info->context))
|
||||
throwException(env, "Could not make context current");
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nIsCurrent
|
||||
(JNIEnv *env, jclass clazz, jobject context_handle) {
|
||||
WindowsContext *context_info = (WindowsContext *)(*env)->GetDirectBufferAddress(env, context_handle);
|
||||
return wglGetCurrentContext() == context_info->context;
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nSetSwapInterval
|
||||
(JNIEnv *env, jclass clazz, jint value) {
|
||||
WGLExtensions extensions;
|
||||
extgl_InitWGL(&extensions);
|
||||
if (extensions.WGL_EXT_swap_control) {
|
||||
return extensions.wglSwapIntervalEXT(value) ? JNI_TRUE : JNI_FALSE;
|
||||
} else
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsContextImplementation_nDestroy
|
||||
(JNIEnv *env, jclass clazz, jobject context_handle) {
|
||||
WindowsContext *context_info = (WindowsContext *)(*env)->GetDirectBufferAddress(env, context_handle);
|
||||
wglDeleteContext(context_info->context);
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2385 $
|
||||
*/
|
||||
|
||||
#undef DIRECTINPUT_VERSION
|
||||
#define DIRECTINPUT_VERSION 0x0300
|
||||
#include "Window.h"
|
||||
#include <dinput.h>
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsDirectInput3.h"
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDirectInput3_createDirectInput(JNIEnv *env, jobject unused, jlong hinst_int) {
|
||||
HINSTANCE hinst = (HINSTANCE)(LONG_PTR)hinst_int;
|
||||
LPDIRECTINPUT lpdi;
|
||||
HRESULT ret;
|
||||
|
||||
ret = DirectInputCreate(hinst, DIRECTINPUT_VERSION, &lpdi, NULL);
|
||||
if (ret != DI_OK) {
|
||||
throwFormattedException(env, "Failed to create DirectInput (%x)", ret);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
return (LONG_PTR)lpdi;
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDirectInput3_nCreateDevice(JNIEnv *env, jclass unused, jlong di_interface, jint type) {
|
||||
LPDIRECTINPUT lpdi = (LPDIRECTINPUT)(LONG_PTR)di_interface;
|
||||
LPDIRECTINPUTDEVICE lpdevice;
|
||||
GUID device_guid;
|
||||
HRESULT ret;
|
||||
|
||||
switch (type) {
|
||||
case org_lwjgl_d3d_WindowsDirectInput3_KEYBOARD_TYPE:
|
||||
device_guid = GUID_SysKeyboard;
|
||||
break;
|
||||
case org_lwjgl_d3d_WindowsDirectInput3_MOUSE_TYPE:
|
||||
device_guid = GUID_SysMouse;
|
||||
break;
|
||||
default:
|
||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
ret = IDirectInput_CreateDevice(lpdi, &device_guid, &lpdevice, NULL);
|
||||
if (ret != DI_OK) {
|
||||
throwFormattedException(env, "Failed to create keyboard (%x).", ret);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
return (LONG_PTR)lpdevice;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDirectInput3_release(JNIEnv *env, jobject unused, jlong di_interface) {
|
||||
LPDIRECTINPUT lpdi = (LPDIRECTINPUT)(LONG_PTR)di_interface;
|
||||
IDirectInput_Release(lpdi);
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2385 $
|
||||
*/
|
||||
|
||||
#undef DIRECTINPUT_VERSION
|
||||
#define DIRECTINPUT_VERSION 0x0800
|
||||
#include "Window.h"
|
||||
#include <dinput.h>
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsDirectInput8.h"
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDirectInput8_createDirectInput(JNIEnv *env, jobject unused, jlong hinst_int) {
|
||||
HINSTANCE hinst = (HINSTANCE)(LONG_PTR)hinst_int;
|
||||
LPDIRECTINPUT8 lpdi;
|
||||
HRESULT ret;
|
||||
|
||||
ret = CoInitialize(NULL);
|
||||
if (ret != S_OK && ret != S_FALSE) {
|
||||
throwFormattedException(env, "CoInitialize failed (%x)", ret);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
ret = CoCreateInstance(&CLSID_DirectInput8, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectInput8, (void *)&lpdi);
|
||||
if (ret != DI_OK && ret != DIERR_BETADIRECTINPUTVERSION) {
|
||||
throwFormattedException(env, "Failed to create DirectInput (%x)", ret);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
|
||||
ret = IDirectInput8_Initialize(lpdi, hinst, DIRECTINPUT_VERSION);
|
||||
if (FAILED(ret)) {
|
||||
throwFormattedException(env, "Failed to initialize DirectInput (%x)", ret);
|
||||
IDirectInput8_Release(lpdi);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
return (LONG_PTR)lpdi;
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDirectInput8_nCreateDevice(JNIEnv *env, jclass unused, jlong di_interface, jint type) {
|
||||
LPDIRECTINPUT8 lpdi = (LPDIRECTINPUT8)(LONG_PTR)di_interface;
|
||||
LPDIRECTINPUTDEVICE8 lpdevice;
|
||||
GUID device_guid;
|
||||
HRESULT ret;
|
||||
|
||||
switch (type) {
|
||||
case org_lwjgl_d3d_WindowsDirectInput8_KEYBOARD_TYPE:
|
||||
device_guid = GUID_SysKeyboard;
|
||||
break;
|
||||
case org_lwjgl_d3d_WindowsDirectInput8_MOUSE_TYPE:
|
||||
device_guid = GUID_SysMouse;
|
||||
break;
|
||||
default:
|
||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
ret = IDirectInput8_CreateDevice(lpdi, &device_guid, &lpdevice, NULL);
|
||||
if (ret != DI_OK) {
|
||||
throwFormattedException(env, "Failed to create keyboard (%x).", ret);
|
||||
return (LONG_PTR)NULL;
|
||||
}
|
||||
return (LONG_PTR)lpdevice;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDirectInput8_release(JNIEnv *env, jobject unused, jlong di_interface) {
|
||||
LPDIRECTINPUT8 lpdi = (LPDIRECTINPUT8)(LONG_PTR)di_interface;
|
||||
IDirectInput8_Release(lpdi);
|
||||
CoUninitialize();
|
||||
}
|
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2385 $
|
||||
*/
|
||||
|
||||
#undef DIRECTINPUT_VERSION
|
||||
#define DIRECTINPUT_VERSION 0x0300
|
||||
#include "Window.h"
|
||||
#include "dinputhelper.h"
|
||||
#include <dinput.h>
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsDirectInput3.h"
|
||||
#include "org_lwjgl_d3d_WindowsDirectInputDevice3.h"
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_unacquire(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
return IDirectInputDevice_Unacquire(lpdevice);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_setDataFormat(JNIEnv *env, jobject unused, jlong di_device, jint type) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
LPCDIDATAFORMAT format;
|
||||
|
||||
switch (type) {
|
||||
case org_lwjgl_d3d_WindowsDirectInput3_KEYBOARD_TYPE:
|
||||
format = &c_dfDIKeyboard;
|
||||
break;
|
||||
case org_lwjgl_d3d_WindowsDirectInput3_MOUSE_TYPE:
|
||||
format = &c_dfDIMouse;
|
||||
break;
|
||||
default:
|
||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
||||
return DIERR_INVALIDPARAM;
|
||||
}
|
||||
return IDirectInputDevice_SetDataFormat(lpdevice, format);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_getDeviceState(JNIEnv *env, jobject unused, jlong di_device, jobject buffer_obj, jint pos, jint size) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
jbyte *buffer = pos + (jbyte *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
||||
return IDirectInputDevice_GetDeviceState(lpdevice, size, buffer);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_getEventSize(JNIEnv *env, jobject unused) {
|
||||
return sizeof(DIDEVICEOBJECTDATA);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_getDeviceData(JNIEnv *env, jobject unused, jlong di_device, jobject event_buffer_obj, jint event_buffer_size, jobject buffer_obj, jint buffer_pos, jint buffer_size) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
jint *buffer = buffer_pos + (jint *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
||||
DIDEVICEOBJECTDATA *event_buffer = (*env)->GetDirectBufferAddress(env, event_buffer_obj);
|
||||
DIDEVICEOBJECTDATA *current_event;
|
||||
DWORD num_events = event_buffer_size/sizeof(DIDEVICEOBJECTDATA);
|
||||
HRESULT ret = IDirectInputDevice_GetDeviceData(lpdevice, sizeof(DIDEVICEOBJECTDATA), event_buffer, &num_events, 0);
|
||||
jint num_buffer_events = buffer_size/org_lwjgl_d3d_WindowsDirectInputDevice3_DATA_SIZE;
|
||||
jint i;
|
||||
if (ret != DI_OK && ret != DI_BUFFEROVERFLOW)
|
||||
return ret;
|
||||
|
||||
if (num_buffer_events < num_events) {
|
||||
num_events = num_buffer_events;
|
||||
ret = DI_BUFFEROVERFLOW;
|
||||
}
|
||||
for (i = 0; i < num_events; i++) {
|
||||
current_event = event_buffer + i;
|
||||
buffer[buffer_pos++] = current_event->dwOfs;
|
||||
buffer[buffer_pos++] = current_event->dwData;
|
||||
buffer[buffer_pos++] = current_event->dwTimeStamp;
|
||||
}
|
||||
positionBuffer(env, buffer_obj, buffer_pos);
|
||||
return ret;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_acquire(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
return IDirectInputDevice_Acquire(lpdevice);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_setBufferSize(JNIEnv *env, jobject unused, jlong di_device, jint buffer_size) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
DIPROPDWORD dipropdw;
|
||||
dipropdw.diph.dwSize = sizeof(DIPROPDWORD);
|
||||
dipropdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
dipropdw.diph.dwObj = 0;
|
||||
dipropdw.diph.dwHow = DIPH_DEVICE;
|
||||
dipropdw.dwData = buffer_size;
|
||||
return IDirectInputDevice_SetProperty(lpdevice, DIPROP_BUFFERSIZE, &dipropdw.diph);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_setCooperativeLevel(JNIEnv *env, jobject unused, jlong di_device, jlong hwnd_int, jint flags) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
HWND hwnd = (HWND)(LONG_PTR)hwnd_int;
|
||||
return IDirectInputDevice_SetCooperativeLevel(lpdevice, hwnd, flags);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_release(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
IDirectInputDevice_Release(lpdevice);
|
||||
}
|
||||
|
||||
static BOOL CALLBACK EnumMouseObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef) {
|
||||
enum_context_t *enum_context = (enum_context_t *)pvRef;
|
||||
jint object_type;
|
||||
|
||||
if (IsEqualGUID(&lpddoi->guidType, &GUID_Button)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice3_GUID_Button;
|
||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_XAxis)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice3_GUID_XAxis;
|
||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_YAxis)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice3_GUID_YAxis;
|
||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_ZAxis)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice3_GUID_ZAxis;
|
||||
} else {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice3_GUID_Unknown;
|
||||
}
|
||||
|
||||
return objectCallback(enum_context->env, enum_context->enumerator, object_type, lpddoi->tszName) ? DIENUM_CONTINUE : DIENUM_STOP;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice3_enumObjects(JNIEnv *env, jobject unused, jlong di_device, jobject enumerator) {
|
||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
||||
enum_context_t enum_context;
|
||||
enum_context.env = env;
|
||||
enum_context.enumerator = enumerator;
|
||||
return IDirectInputDevice_EnumObjects(lpdevice, EnumMouseObjectsCallback, &enum_context, DIDFT_ALL);
|
||||
}
|
|
@ -0,0 +1,165 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2385 $
|
||||
*/
|
||||
|
||||
#undef DIRECTINPUT_VERSION
|
||||
#define DIRECTINPUT_VERSION 0x0800
|
||||
#include "Window.h"
|
||||
#include "dinputhelper.h"
|
||||
#include <dinput.h>
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsDirectInput8.h"
|
||||
#include "org_lwjgl_d3d_WindowsDirectInputDevice8.h"
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_unacquire(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
return IDirectInputDevice8_Unacquire(lpdevice);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_poll(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
return IDirectInputDevice8_Poll(lpdevice);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_setDataFormat(JNIEnv *env, jobject unused, jlong di_device, jint type) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
LPCDIDATAFORMAT format;
|
||||
|
||||
switch (type) {
|
||||
case org_lwjgl_d3d_WindowsDirectInput8_KEYBOARD_TYPE:
|
||||
format = &c_dfDIKeyboard;
|
||||
break;
|
||||
case org_lwjgl_d3d_WindowsDirectInput8_MOUSE_TYPE:
|
||||
format = &c_dfDIMouse;
|
||||
break;
|
||||
default:
|
||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
||||
return DIERR_INVALIDPARAM;
|
||||
}
|
||||
return IDirectInputDevice8_SetDataFormat(lpdevice, format);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_getDeviceState(JNIEnv *env, jobject unused, jlong di_device, jobject buffer_obj, jint pos, jint size) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
jbyte *buffer = pos + (jbyte *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
||||
return IDirectInputDevice8_GetDeviceState(lpdevice, size, buffer);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_getEventSize(JNIEnv *env, jobject unused) {
|
||||
return sizeof(DIDEVICEOBJECTDATA);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_getDeviceData(JNIEnv *env, jobject unused, jlong di_device, jobject event_buffer_obj, jint event_buffer_size, jobject buffer_obj, jint buffer_pos, jint buffer_size) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
jint *buffer = buffer_pos + (jint *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
||||
DIDEVICEOBJECTDATA *event_buffer = (*env)->GetDirectBufferAddress(env, event_buffer_obj);
|
||||
DIDEVICEOBJECTDATA *current_event;
|
||||
DWORD num_events = event_buffer_size/sizeof(DIDEVICEOBJECTDATA);
|
||||
HRESULT ret = IDirectInputDevice8_GetDeviceData(lpdevice, sizeof(DIDEVICEOBJECTDATA), event_buffer, &num_events, 0);
|
||||
jint num_buffer_events = buffer_size/org_lwjgl_d3d_WindowsDirectInputDevice8_DATA_SIZE;
|
||||
jint i;
|
||||
if (ret != DI_OK && ret != DI_BUFFEROVERFLOW)
|
||||
return ret;
|
||||
|
||||
if (num_buffer_events < num_events) {
|
||||
num_events = num_buffer_events;
|
||||
ret = DI_BUFFEROVERFLOW;
|
||||
}
|
||||
for (i = 0; i < num_events; i++) {
|
||||
current_event = event_buffer + i;
|
||||
buffer[buffer_pos++] = current_event->dwOfs;
|
||||
buffer[buffer_pos++] = current_event->dwData;
|
||||
buffer[buffer_pos++] = current_event->dwTimeStamp;
|
||||
}
|
||||
positionBuffer(env, buffer_obj, buffer_pos);
|
||||
return ret;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_acquire(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
return IDirectInputDevice8_Acquire(lpdevice);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_setBufferSize(JNIEnv *env, jobject unused, jlong di_device, jint buffer_size) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
DIPROPDWORD dipropdw;
|
||||
dipropdw.diph.dwSize = sizeof(DIPROPDWORD);
|
||||
dipropdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
dipropdw.diph.dwObj = 0;
|
||||
dipropdw.diph.dwHow = DIPH_DEVICE;
|
||||
dipropdw.dwData = buffer_size;
|
||||
return IDirectInputDevice8_SetProperty(lpdevice, DIPROP_BUFFERSIZE, &dipropdw.diph);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_setCooperativeLevel(JNIEnv *env, jobject unused, jlong di_device, jlong hwnd_int, jint flags) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
HWND hwnd = (HWND)(LONG_PTR)hwnd_int;
|
||||
return IDirectInputDevice8_SetCooperativeLevel(lpdevice, hwnd, flags);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_release(JNIEnv *env, jobject unused, jlong di_device) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
IDirectInputDevice8_Release(lpdevice);
|
||||
}
|
||||
|
||||
static BOOL CALLBACK EnumMouseObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef) {
|
||||
enum_context_t *enum_context = (enum_context_t *)pvRef;
|
||||
jint object_type;
|
||||
|
||||
if (IsEqualGUID(&lpddoi->guidType, &GUID_Button)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice8_GUID_Button;
|
||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_XAxis)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice8_GUID_XAxis;
|
||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_YAxis)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice8_GUID_YAxis;
|
||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_ZAxis)) {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice8_GUID_ZAxis;
|
||||
} else {
|
||||
object_type = org_lwjgl_d3d_WindowsDirectInputDevice8_GUID_Unknown;
|
||||
}
|
||||
|
||||
return objectCallback(enum_context->env, enum_context->enumerator, object_type, lpddoi->tszName) ? DIENUM_CONTINUE : DIENUM_STOP;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDirectInputDevice8_enumObjects(JNIEnv *env, jobject unused, jlong di_device, jobject enumerator) {
|
||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
||||
enum_context_t enum_context;
|
||||
enum_context.env = env;
|
||||
enum_context.enumerator = enumerator;
|
||||
return IDirectInputDevice8_EnumObjects(lpdevice, EnumMouseObjectsCallback, &enum_context, DIDFT_ALL);
|
||||
}
|
|
@ -0,0 +1,682 @@
|
|||
#include <jni.h>
|
||||
#include <windows.h>
|
||||
#include "common_tools.h"
|
||||
#include "org_lwjgl_d3d_WindowsDisplay.h"
|
||||
|
||||
|
||||
#define WINDOWCLASSNAME "LWJGL"
|
||||
|
||||
static HICON small_icon = NULL;
|
||||
static HICON large_icon = NULL;
|
||||
static HWND displayHwnd = NULL; // Handle to the window
|
||||
static HDC displayHdc = NULL; // Device context
|
||||
extern HINSTANCE dll_handle; // Handle to the LWJGL dll
|
||||
|
||||
HDC getD3DHDC() {
|
||||
return displayHdc;
|
||||
}
|
||||
|
||||
HWND getD3DHWND() {
|
||||
return displayHwnd;
|
||||
}
|
||||
|
||||
static void freeLargeIcon() {
|
||||
if (large_icon != NULL) {
|
||||
DestroyIcon(large_icon);
|
||||
large_icon = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void freeSmallIcon() {
|
||||
if (small_icon != NULL) {
|
||||
DestroyIcon(small_icon);
|
||||
small_icon = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void copyBufferToRect(JNIEnv *env, jobject buffer_handle, RECT *rect) {
|
||||
jint *buffer = (jint *)(*env)->GetDirectBufferAddress(env, buffer_handle);
|
||||
jlong size = (*env)->GetDirectBufferCapacity(env, buffer_handle);
|
||||
if (size < 4) {
|
||||
throwFormattedRuntimeException(env, "Buffer size < 4", size);
|
||||
return;
|
||||
}
|
||||
rect->top = buffer[0];
|
||||
rect->bottom = buffer[1];
|
||||
rect->left = buffer[2];
|
||||
rect->right = buffer[3];
|
||||
}
|
||||
void d3dSetGammaRamp(JNIEnv * env, jobject gammaRampBuffer) {
|
||||
HDC screenDC;
|
||||
WORD *gammaRamp = (WORD *)(*env)->GetDirectBufferAddress(env, gammaRampBuffer);
|
||||
|
||||
screenDC = GetDC(NULL);
|
||||
if (SetDeviceGammaRamp(screenDC, gammaRamp) == FALSE) {
|
||||
throwException(env, "Failed to set device gamma.");
|
||||
}
|
||||
ReleaseDC(NULL, screenDC);
|
||||
}
|
||||
/*
|
||||
* Create a window with the specified title, position, size, and
|
||||
* fullscreen attribute. The window will have DirectInput associated
|
||||
* with it.
|
||||
*
|
||||
* Returns true for success, or false for failure
|
||||
*/
|
||||
HWND d3dCreateWindow(LPCTSTR window_class_name, int x, int y, int width, int height, bool fullscreen, bool undecorated)
|
||||
{
|
||||
RECT clientSize;
|
||||
DWORD exstyle, windowflags;
|
||||
HWND new_hwnd;
|
||||
|
||||
getWindowFlags(&windowflags, &exstyle, fullscreen, undecorated);
|
||||
|
||||
// If we're not a fullscreen window, adjust the height to account for the
|
||||
// height of the title bar (unless undecorated)
|
||||
clientSize.bottom = height;
|
||||
clientSize.left = 0;
|
||||
clientSize.right = width;
|
||||
clientSize.top = 0;
|
||||
|
||||
AdjustWindowRectEx(
|
||||
&clientSize, // client-rectangle structure
|
||||
windowflags, // window styles
|
||||
FALSE, // menu-present option
|
||||
exstyle // extended window style
|
||||
);
|
||||
// Create the window now, using that class:
|
||||
new_hwnd = CreateWindowEx (
|
||||
exstyle,
|
||||
window_class_name,
|
||||
"",
|
||||
windowflags,
|
||||
x, y, clientSize.right - clientSize.left, clientSize.bottom - clientSize.top,
|
||||
NULL,
|
||||
NULL,
|
||||
dll_handle,
|
||||
NULL);
|
||||
|
||||
return new_hwnd;
|
||||
}
|
||||
static HICON createWindowIcon(JNIEnv *env, jint *pixels, jint width, jint height) {
|
||||
unsigned char col;
|
||||
unsigned char mask;
|
||||
BITMAPINFO bitmapInfo;
|
||||
HBITMAP cursorMask;
|
||||
HBITMAP colorBitmap;
|
||||
ICONINFO iconInfo;
|
||||
HICON icon;
|
||||
char *ptrCursorImage;
|
||||
int x, y;
|
||||
char *dstPtr;
|
||||
int wordAlignedWidth;
|
||||
int imageSize;
|
||||
unsigned char *maskPixels;
|
||||
int widthInBytes;
|
||||
int leftShift;
|
||||
int maskPixelsOff;
|
||||
int scanlineWidth;
|
||||
HBITMAP colorDIB;
|
||||
|
||||
memset(&bitmapInfo, 0, sizeof(BITMAPINFO));
|
||||
bitmapInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bitmapInfo.bmiHeader.biWidth = width;
|
||||
bitmapInfo.bmiHeader.biHeight = -height;
|
||||
bitmapInfo.bmiHeader.biPlanes = 1;
|
||||
bitmapInfo.bmiHeader.biBitCount = 24;
|
||||
bitmapInfo.bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
colorDIB = CreateDIBSection(GetDC(NULL), (BITMAPINFO*)&(bitmapInfo),
|
||||
DIB_RGB_COLORS, (void*)&(ptrCursorImage), NULL, 0);
|
||||
if (!ptrCursorImage) {
|
||||
throwException(env, "Could not allocate DIB section.");
|
||||
}
|
||||
|
||||
wordAlignedWidth = width * 3;
|
||||
if (wordAlignedWidth % sizeof(long) != 0) {
|
||||
wordAlignedWidth = (wordAlignedWidth / sizeof(long)) * sizeof(long) + sizeof(long);
|
||||
}
|
||||
for (y = 0; y < height; y++ ) {
|
||||
dstPtr = ptrCursorImage + wordAlignedWidth*y;;
|
||||
for (x = 0; x < width; x++ ) {
|
||||
if ((pixels[y*width+x] & 0xFF000000) != 0)
|
||||
{
|
||||
dstPtr[0] = (pixels[y*width+x] >> 0x10) & 0xFF;
|
||||
dstPtr[1] = (pixels[y*width+x] >> 0x08) & 0xFF;
|
||||
dstPtr[2] = pixels[y*width+x] & 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
dstPtr[0] = 0;
|
||||
dstPtr[1] = 0;
|
||||
dstPtr[2] = 0;
|
||||
}
|
||||
|
||||
dstPtr += 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
colorBitmap = CreateDIBitmap(GetDC(NULL),
|
||||
(BITMAPINFOHEADER*)&bitmapInfo.bmiHeader,
|
||||
CBM_INIT,
|
||||
(void *)ptrCursorImage,
|
||||
(BITMAPINFO*)&bitmapInfo,
|
||||
DIB_RGB_COLORS);
|
||||
|
||||
DeleteObject(colorDIB);
|
||||
|
||||
// Convert alpha map to pixel packed mask
|
||||
|
||||
// number of bytes it takes to fit a bit packed scan line.
|
||||
widthInBytes = (width & 0x7) != 0 ? (width >> 3) + 1 : (width >> 3);
|
||||
|
||||
// number of bytes it takes to fit WORD padded scan line.
|
||||
scanlineWidth = widthInBytes;
|
||||
if (scanlineWidth % sizeof(WORD) != 0) {
|
||||
scanlineWidth = (scanlineWidth / sizeof(WORD)) * sizeof(WORD) + sizeof(WORD);
|
||||
}
|
||||
imageSize = scanlineWidth*height;
|
||||
maskPixels = (unsigned char*)malloc(sizeof(unsigned char)*imageSize);
|
||||
memset(maskPixels, 0, imageSize);
|
||||
|
||||
for (y = 0; y < height; y++) {
|
||||
leftShift = 7;
|
||||
mask = 0;
|
||||
maskPixelsOff = scanlineWidth*y;
|
||||
for (x = 0; x < width; x++) {
|
||||
col = (((pixels[(width*y)+x] & 0xFF000000) != 0) ? 1 : 0) << leftShift;
|
||||
mask = mask | col;
|
||||
leftShift--;
|
||||
if (leftShift == -1) {
|
||||
maskPixels[maskPixelsOff++] = ~mask;
|
||||
leftShift = 7;
|
||||
mask = 0;
|
||||
}
|
||||
}
|
||||
// write what is left over
|
||||
if (leftShift != 7) {
|
||||
maskPixels[maskPixelsOff++] = ~mask;
|
||||
}
|
||||
}
|
||||
|
||||
cursorMask = CreateBitmap(width, height, 1, 1, maskPixels);
|
||||
|
||||
memset(&iconInfo, 0, sizeof(ICONINFO));
|
||||
iconInfo.hbmMask = cursorMask;
|
||||
iconInfo.hbmColor = colorBitmap;
|
||||
iconInfo.fIcon = TRUE;
|
||||
iconInfo.xHotspot = 0;
|
||||
iconInfo.yHotspot = 0;
|
||||
icon = CreateIconIndirect(&iconInfo);
|
||||
DeleteObject(colorBitmap);
|
||||
DeleteObject(cursorMask);
|
||||
free(maskPixels);
|
||||
|
||||
return icon;
|
||||
}
|
||||
/*
|
||||
* WindowProc for the GL window.
|
||||
*/
|
||||
static LRESULT CALLBACK lwjglWindowProc(HWND hWnd,
|
||||
UINT msg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
jclass display_class;
|
||||
jclass display_class_global;
|
||||
jmethodID handleMessage_method;
|
||||
LONG message_time;
|
||||
JNIEnv *env = getThreadEnv();
|
||||
if (env != NULL && !(*env)->ExceptionOccurred(env)) {
|
||||
/*
|
||||
* We'll cache a global reference to the WindowsDisplay class in the window's user data.
|
||||
* This is not so much to avoid lookup overhead as it is to avoid problems
|
||||
* with AWT. Specifically, awt code can indirectly call this message handler
|
||||
* when it does a SendMessage on the main thread to the currently focused window,
|
||||
* which could be a LWJGL window. The FindClass will then fail because the calling
|
||||
* internal awt class is using the system class loader, not the application loader
|
||||
* where lwjgl is found.
|
||||
*
|
||||
* The very first message sent to this handler is sent when
|
||||
* a window is created, where we are sure that the calling class' classloader has
|
||||
* LWJGL classes in it.
|
||||
*/
|
||||
display_class_global = (jclass)(LONG_PTR)GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
||||
if (display_class_global == NULL) {
|
||||
display_class = (*env)->FindClass(env, "org/lwjgl/d3d/WindowsDisplay");
|
||||
if (display_class != NULL) {
|
||||
display_class_global = (*env)->NewGlobalRef(env, display_class);
|
||||
if (display_class_global != NULL)
|
||||
SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)display_class_global);
|
||||
}
|
||||
}
|
||||
if (display_class_global != NULL) {
|
||||
message_time = GetMessageTime();
|
||||
handleMessage_method = (*env)->GetStaticMethodID(env, display_class_global, "handleMessage", "(JIJJJ)Z");
|
||||
if (handleMessage_method != NULL)
|
||||
if ((*env)->CallStaticBooleanMethod(env, display_class_global, handleMessage_method, (jlong)(intptr_t)hWnd, (jint)msg, (jlong)wParam, (jlong)lParam, (jlong)message_time))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// default action
|
||||
return DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle native Windows messages
|
||||
*/
|
||||
static void handleMessages(JNIEnv *env) {
|
||||
/*
|
||||
* Now's our chance to deal with Windows messages that are
|
||||
* otherwise just piling up and causing everything not to
|
||||
* work properly
|
||||
*/
|
||||
MSG msg;
|
||||
if (displayHwnd != NULL) {
|
||||
while (!(*env)->ExceptionOccurred(env) && PeekMessage(
|
||||
&msg, // message information
|
||||
NULL, // handle to window
|
||||
0, // first message
|
||||
0, // last message
|
||||
PM_REMOVE // removal options
|
||||
))
|
||||
{
|
||||
DispatchMessage(&msg);
|
||||
TranslateMessage(&msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
static jobject createDisplayMode(JNIEnv *env, DEVMODE *devmode) {
|
||||
jclass displayModeClass;
|
||||
|
||||
jmethodID displayModeConstructor;
|
||||
|
||||
displayModeClass = (*env)->FindClass(env, "org/lwjgl/d3d/DisplayMode");
|
||||
|
||||
if (displayModeClass == NULL)
|
||||
return NULL;
|
||||
displayModeConstructor = (*env)->GetMethodID(env, displayModeClass, "<init>", "(IIII)V");
|
||||
if (displayModeConstructor == NULL)
|
||||
return NULL;
|
||||
|
||||
return (*env)->NewObject(env, displayModeClass, displayModeConstructor,
|
||||
devmode->dmPelsWidth, devmode->dmPelsHeight,
|
||||
devmode->dmBitsPerPel, devmode->dmDisplayFrequency);
|
||||
}
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nCreateWindow
|
||||
* Signature: (Lorg/lwjgl/d3d/DisplayMode;ZII)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nCreateWindow
|
||||
(JNIEnv *env, jobject obj, jobject mode, jboolean fullscreen, jint x, jint y) {
|
||||
jclass cls_displayMode = (*env)->GetObjectClass(env, mode);
|
||||
jfieldID fid_width = (*env)->GetFieldID(env, cls_displayMode, "width", "I");
|
||||
jfieldID fid_height = (*env)->GetFieldID(env, cls_displayMode, "height", "I");
|
||||
int width = (*env)->GetIntField(env, mode, fid_width);
|
||||
int height = (*env)->GetIntField(env, mode, fid_height);
|
||||
bool isUndecorated; // Whether we're undecorated or not
|
||||
static bool oneShotInitialised = false;
|
||||
if (!oneShotInitialised) {
|
||||
if (!registerWindow(lwjglWindowProc, WINDOWCLASSNAME)) {
|
||||
throwException(env, "Could not register window class");
|
||||
return;
|
||||
}
|
||||
oneShotInitialised = true;
|
||||
}
|
||||
|
||||
isUndecorated = getBooleanProperty(env, "org.lwjgl.opengl.Window.undecorated");
|
||||
displayHwnd = d3dCreateWindow(WINDOWCLASSNAME, x, y, width, height, fullscreen, isUndecorated);
|
||||
if (displayHwnd == NULL) {
|
||||
throwException(env, "Failed to create the window.");
|
||||
return;
|
||||
}
|
||||
displayHdc = GetDC(displayHwnd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nDestroyWindow
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nDestroyWindow
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
jclass display_class_global = (jclass)(LONG_PTR)GetWindowLongPtr(displayHwnd, GWLP_USERDATA);
|
||||
closeWindow(&displayHwnd, &displayHdc);
|
||||
if (display_class_global != NULL) {
|
||||
(*env)->DeleteGlobalRef(env, display_class_global);
|
||||
}
|
||||
freeLargeIcon();
|
||||
freeSmallIcon();
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: clipCursor
|
||||
* Signature: (JLjava/nio/IntBuffer;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_clipCursor
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr, jobject handleBuffer) {
|
||||
HWND hwnd = (HWND)(INT_PTR)hwndPtr;
|
||||
RECT clip_rect;
|
||||
LPRECT clip_rect_ptr;
|
||||
if (handleBuffer != NULL) {
|
||||
copyBufferToRect(env, handleBuffer, &clip_rect);
|
||||
clip_rect_ptr = &clip_rect;
|
||||
} else
|
||||
clip_rect_ptr = NULL;
|
||||
if (ClipCursor(clip_rect_ptr) == 0)
|
||||
throwFormattedException(env, "ClipCursor failed (%d)", GetLastError());
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nSwitchDisplayMode
|
||||
* Signature: (Lorg/lwjgl/d3d/DisplayMode;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nSwitchDisplayMode
|
||||
(JNIEnv *env, jclass clazz, jobject mode) {
|
||||
DEVMODE devmode;
|
||||
|
||||
jclass cls_displayMode = (*env)->GetObjectClass(env, mode);
|
||||
jfieldID fid_width = (*env)->GetFieldID(env, cls_displayMode, "width", "I");
|
||||
jfieldID fid_height = (*env)->GetFieldID(env, cls_displayMode, "height", "I");
|
||||
jfieldID fid_bpp = (*env)->GetFieldID(env, cls_displayMode, "bpp", "I");
|
||||
jfieldID fid_freq = (*env)->GetFieldID(env, cls_displayMode, "freq", "I");
|
||||
|
||||
int width = (*env)->GetIntField(env, mode, fid_width);
|
||||
int height = (*env)->GetIntField(env, mode, fid_height);
|
||||
int bpp = (*env)->GetIntField(env, mode, fid_bpp);
|
||||
int freq = (*env)->GetIntField(env, mode, fid_freq);
|
||||
LONG cdsret;
|
||||
|
||||
ZeroMemory(&devmode, sizeof(DEVMODE));
|
||||
devmode.dmSize = sizeof(DEVMODE);
|
||||
devmode.dmBitsPerPel = bpp;
|
||||
devmode.dmPelsWidth = width;
|
||||
devmode.dmPelsHeight = height;
|
||||
devmode.dmDisplayFrequency = freq;
|
||||
devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
|
||||
if (freq != 0)
|
||||
devmode.dmFields |= DM_DISPLAYFREQUENCY;
|
||||
cdsret = ChangeDisplaySettings(&devmode, CDS_FULLSCREEN);
|
||||
|
||||
if (cdsret != DISP_CHANGE_SUCCESSFUL) {
|
||||
throwFormattedException(env, "Failed to set display mode (%ld).", cdsret);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: showWindow
|
||||
* Signature: (JI)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_showWindow
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr, jint mode) {
|
||||
HWND hwnd = (HWND)(INT_PTR)hwndPtr;
|
||||
ShowWindow(hwnd, mode);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: setForegroundWindow
|
||||
* Signature: (J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_setForegroundWindow
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr) {
|
||||
HWND hwnd = (HWND)(INT_PTR)hwndPtr;
|
||||
SetForegroundWindow(hwnd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: setFocus
|
||||
* Signature: (J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_setFocus
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr) {
|
||||
HWND hwnd = (HWND)(INT_PTR)hwndPtr;
|
||||
SetFocus(hwnd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nResetDisplayMode
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nResetDisplayMode
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
ChangeDisplaySettings(NULL, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: convertToNativeRamp
|
||||
* Signature: (Ljava/nio/FloatBuffer;)Ljava/nio/ByteBuffer;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_WindowsDisplay_convertToNativeRamp
|
||||
(JNIEnv *env, jclass clazz, jobject gammaRamp) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getCurrentGammaRamp
|
||||
* Signature: ()Ljava/nio/ByteBuffer;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getCurrentGammaRamp
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nSetGammaRamp
|
||||
* Signature: (Ljava/nio/ByteBuffer;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nSetGammaRamp
|
||||
(JNIEnv *env, jclass clazz, jobject nativeRamp) {
|
||||
d3dSetGammaRamp(env, nativeRamp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nGetVersion
|
||||
* Signature: (Ljava/lang/String;)Lorg/lwjgl/d3d/WindowsFileVersion;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nGetVersion
|
||||
(JNIEnv *env, jobject obj, jstring driver) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getCurrentDisplayMode
|
||||
* Signature: ()Lorg/lwjgl/d3d/DisplayMode;
|
||||
*/
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getCurrentDisplayMode
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
DEVMODE devmode;
|
||||
if (!EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode)) {
|
||||
throwFormattedException(env, "Couldn't get current display settings (%ld)", GetLastError());
|
||||
return NULL;
|
||||
}
|
||||
return createDisplayMode(env, &devmode);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: setTitle
|
||||
* Signature: (Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_setTitle
|
||||
(JNIEnv *env, jobject obj, jstring title_obj) {
|
||||
char * title = GetStringNativeChars(env, title_obj);
|
||||
SetWindowText(displayHwnd, title);
|
||||
free(title);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nUpdate
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nUpdate
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
handleMessages(env);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nReshape
|
||||
* Signature: (JIIII)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nReshape
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr, jint x, jint y, jint width, jint height) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getAvailableDisplayModes
|
||||
* Signature: ()[Lorg/lwjgl/d3d/DisplayMode;
|
||||
*/
|
||||
JNIEXPORT jobjectArray JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getAvailableDisplayModes
|
||||
(JNIEnv *env, jobject obj) {
|
||||
int i = 0, j = 0, n = 0;
|
||||
|
||||
DEVMODE DevMode;
|
||||
jobject *display_mode_objects = NULL;
|
||||
int list_size = 0;
|
||||
|
||||
jclass displayModeClass;
|
||||
jobjectArray ret;
|
||||
displayModeClass = (*env)->FindClass(env, "org/lwjgl/d3d/DisplayMode");
|
||||
|
||||
ZeroMemory(&DevMode, sizeof(DEVMODE));
|
||||
|
||||
DevMode.dmSize = sizeof(DEVMODE);
|
||||
|
||||
while(EnumDisplaySettings(NULL, j++, &DevMode) != 0) {
|
||||
// Filter out indexed modes
|
||||
if (DevMode.dmBitsPerPel > 8 && ChangeDisplaySettings(&DevMode, CDS_FULLSCREEN | CDS_TEST) == DISP_CHANGE_SUCCESSFUL) {
|
||||
jobject displayMode;
|
||||
if (list_size <= n) {
|
||||
list_size += 1;
|
||||
display_mode_objects = (jobject *)realloc(display_mode_objects, sizeof(jobject)*list_size);
|
||||
if (display_mode_objects == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
displayMode = createDisplayMode(env, &DevMode);
|
||||
display_mode_objects[n++] = displayMode;
|
||||
}
|
||||
}
|
||||
printfDebugJava(env, "Found %d displaymodes", n);
|
||||
|
||||
ret = (*env)->NewObjectArray(env, n, displayModeClass, NULL);
|
||||
for (i = 0; i < n; i++) {
|
||||
(*env)->SetObjectArrayElement(env, ret, i, display_mode_objects[i]);
|
||||
}
|
||||
free(display_mode_objects);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nSetCursorPosition
|
||||
* Signature: (II)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nSetCursorPosition
|
||||
(JNIEnv *env, jclass clazz, jint x, jint y) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nSetNativeCursor
|
||||
* Signature: (JLjava/lang/Object;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nSetNativeCursor
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr, jobject handle) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getSystemMetrics
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getSystemMetrics
|
||||
(JNIEnv *env, jclass clazz, jint index) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getDllInstance
|
||||
* Signature: ()J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getDllInstance
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getHwnd
|
||||
* Signature: ()J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getHwnd
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
return (jlong)getD3DHWND();
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getDesktopWindow
|
||||
* Signature: ()J
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getDesktopWindow
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nSetWindowIcon16
|
||||
* Signature: (Ljava/nio/IntBuffer;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nSetWindowIcon16
|
||||
(JNIEnv *env, jclass clazz, jobject icon) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: nSetWindowIcon32
|
||||
* Signature: (Ljava/nio/IntBuffer;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsDisplay_nSetWindowIcon32
|
||||
(JNIEnv *env, jclass clazz, jobject icon) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: getClientRect
|
||||
* Signature: (JLjava/nio/IntBuffer;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_getClientRect
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr, jobject rect) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_lwjgl_d3d_WindowsDisplay
|
||||
* Method: clientToScreen
|
||||
* Signature: (JLjava/nio/IntBuffer;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplay_clientToScreen
|
||||
(JNIEnv *env, jclass clazz, jlong hwndPtr, jobject point) {
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_d3d_WindowsDisplayPeerInfo.c 2618 2006-10-30 15:46:42Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2618 $
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include "Window.h"
|
||||
#include "org_lwjgl_d3d_WindowsDisplayPeerInfo.h"
|
||||
#include "context.h"
|
||||
#include "common_tools.h"
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsDisplayPeerInfo_nInitDC
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
peer_info->drawable_hdc = getCurrentHDC();
|
||||
peer_info->u.hwnd = getCurrentHWND();
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
||||
*
|
||||
* @author elias_naue <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2385 $
|
||||
*/
|
||||
|
||||
#include "Window.h"
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsKeyboard.h"
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsKeyboard_GetKeyState(JNIEnv *env, jclass unused, jint virt_key) {
|
||||
return GetKeyState(virt_key);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsKeyboard_MapVirtualKey(JNIEnv *env, jclass unused, jint uCode, jint uMapType) {
|
||||
return MapVirtualKey(uCode, uMapType);
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_d3d_WindowsKeyboard_isWindowsNT(JNIEnv *env, jclass unused) {
|
||||
OSVERSIONINFO osvi;
|
||||
|
||||
osvi.dwOSVersionInfoSize = sizeof(osvi);
|
||||
GetVersionEx(&osvi);
|
||||
return osvi.dwPlatformId == VER_PLATFORM_WIN32_NT ? JNI_TRUE : JNI_FALSE;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsKeyboard_ToUnicode(JNIEnv *env, jclass unused, jint wVirtKey, jint wScanCode, jobject lpKeyState_obj, jobject pwszBuff_obj, jint cchBuff, jint flags) {
|
||||
const PBYTE lpKeyState = (*env)->GetDirectBufferAddress(env, lpKeyState_obj);
|
||||
LPWSTR pwszBuff = (*env)->GetDirectBufferAddress(env, pwszBuff_obj);
|
||||
return ToUnicode(wVirtKey, wScanCode, lpKeyState, pwszBuff, cchBuff, flags);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsKeyboard_ToAscii(JNIEnv *env, jclass unused, jint wVirtKey, jint wScanCode, jobject lpKeyState_obj, jobject lpChar_obj, jint flags) {
|
||||
const PBYTE lpKeyState = (*env)->GetDirectBufferAddress(env, lpKeyState_obj);
|
||||
LPWORD lpChar = (*env)->GetDirectBufferAddress(env, lpChar_obj);
|
||||
return ToAscii(wVirtKey, wScanCode, lpKeyState, lpChar, flags);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_lwjgl_d3d_WindowsKeyboard_GetKeyboardState(JNIEnv *env, jclass unused, jobject lpKeyState_obj) {
|
||||
PBYTE lpKeyState = (*env)->GetDirectBufferAddress(env, lpKeyState_obj);
|
||||
return GetKeyboardState(lpKeyState);
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_d3d_WindowsPeerInfo.c 2619 2006-10-30 15:49:02Z elias_naur $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2619 $
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include "org_lwjgl_d3d_WindowsPeerInfo.h"
|
||||
#include "context.h"
|
||||
#include "common_tools.h"
|
||||
|
||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_d3d_WindowsPeerInfo_createHandle
|
||||
(JNIEnv *env, jclass clazz) {
|
||||
return newJavaManagedByteBuffer(env, sizeof(WindowsPeerInfo));
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_d3d_WindowsPeerInfo_nChoosePixelFormat
|
||||
(JNIEnv *env, jclass clazz, jobject peer_info_handle, jint origin_x, jint origin_y, jobject pixel_format, jobject pixel_format_caps, jboolean use_hdc_bpp, jboolean window, jboolean pbuffer, jboolean double_buffer) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
jclass cls_pixel_format = (*env)->GetObjectClass(env, pixel_format);
|
||||
bool floating_point = (bool)(*env)->GetBooleanField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "floating_point", "Z"));
|
||||
int pixel_format_id = findPixelFormatOnDC(env, peer_info->drawable_hdc, origin_x, origin_y, pixel_format, pixel_format_caps, use_hdc_bpp, window, pbuffer, double_buffer, floating_point);
|
||||
if (pixel_format_id == -1)
|
||||
return;
|
||||
// Let it throw
|
||||
applyPixelFormat(env, peer_info->drawable_hdc, pixel_format_id);
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_d3d_WindowsPeerInfo_nGetHwnd(JNIEnv *env, jclass unused, jobject peer_info_handle) {
|
||||
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
||||
return (intptr_t)peer_info->u.hwnd;
|
||||
}
|
|
@ -0,0 +1,145 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2004 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* $Id: org_lwjgl_d3d_WindowsRegistry.c 2775 2007-04-19 22:21:04Z matzon $
|
||||
*
|
||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
||||
* @version $Revision: 2775 $
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include <windows.h>
|
||||
#include "org_lwjgl_d3d_WindowsRegistry.h"
|
||||
#include "common_tools.h"
|
||||
|
||||
/*
|
||||
* Return a string containing the queried value, or NULL of the method fails.
|
||||
* In that case, a java exception is thrown.
|
||||
*/
|
||||
static jstring queryRegistrationKey(JNIEnv *env, HKEY root_key, LPCTSTR subkey, LPCTSTR value) {
|
||||
DWORD buf_size = 1;
|
||||
char *result;
|
||||
HKEY hKey;
|
||||
LONG lRet;
|
||||
jstring java_result;
|
||||
|
||||
|
||||
if(RegOpenKeyEx(root_key,
|
||||
TEXT(subkey),
|
||||
0,
|
||||
KEY_QUERY_VALUE,
|
||||
&hKey) != ERROR_SUCCESS) {
|
||||
throwException(env, "Failed to open registry key");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
result = (char *)malloc(buf_size);
|
||||
if (result == NULL) {
|
||||
RegCloseKey(hKey);
|
||||
throwException(env, "Failed to allocate buffer");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
lRet = RegQueryValueEx(hKey,
|
||||
TEXT(value),
|
||||
NULL,
|
||||
NULL,
|
||||
(LPBYTE)result,
|
||||
&buf_size);
|
||||
if (lRet != ERROR_SUCCESS && lRet != ERROR_MORE_DATA) {
|
||||
RegCloseKey(hKey);
|
||||
free(result);
|
||||
throwException(env, "Failed query key value");
|
||||
return NULL;
|
||||
}
|
||||
if (lRet == ERROR_SUCCESS) {
|
||||
RegCloseKey(hKey);
|
||||
// make sure the result has a terminating null
|
||||
buf_size += 1;
|
||||
result = (char *)realloc(result, buf_size);
|
||||
if (result == NULL) {
|
||||
throwException(env, "Failed to resize buffer");
|
||||
return NULL;
|
||||
}
|
||||
result[buf_size - 1] = '\0';
|
||||
java_result = NewStringNativeWithLength(env, result, strlen(result));
|
||||
free(result);
|
||||
return java_result;
|
||||
}
|
||||
result = (char *)realloc(result, buf_size);
|
||||
if (result == NULL) {
|
||||
RegCloseKey(hKey);
|
||||
throwException(env, "Failed to resize buffer");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static HKEY enumToRootKey(jint root_key_enum) {
|
||||
switch (root_key_enum) {
|
||||
case org_lwjgl_d3d_WindowsRegistry_HKEY_CLASSES_ROOT:
|
||||
return HKEY_CLASSES_ROOT;
|
||||
case org_lwjgl_d3d_WindowsRegistry_HKEY_CURRENT_USER:
|
||||
return HKEY_CURRENT_USER;
|
||||
case org_lwjgl_d3d_WindowsRegistry_HKEY_LOCAL_MACHINE:
|
||||
return HKEY_LOCAL_MACHINE;
|
||||
case org_lwjgl_d3d_WindowsRegistry_HKEY_USERS:
|
||||
return HKEY_USERS;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_lwjgl_d3d_WindowsRegistry_nQueryRegistrationKey (JNIEnv *env, jclass unused, jint root_key, jstring subkey, jstring value) {
|
||||
HKEY root = enumToRootKey(root_key);
|
||||
char *subkey_native;
|
||||
char *value_native;
|
||||
jstring result;
|
||||
|
||||
subkey_native = GetStringNativeChars(env, subkey);
|
||||
if (subkey_native == NULL) {
|
||||
throwException(env, "Failed to fetch the native string");
|
||||
return NULL;
|
||||
}
|
||||
value_native = GetStringNativeChars(env, value);
|
||||
if (value_native == NULL) {
|
||||
free(subkey_native);
|
||||
throwException(env, "Failed to fetch the native string");
|
||||
return NULL;
|
||||
}
|
||||
result = queryRegistrationKey(env, root, subkey_native, value_native);
|
||||
free(subkey_native);
|
||||
free(value_native);
|
||||
return result;
|
||||
}
|
Loading…
Reference in New Issue