Windows JNA now uses JnaHelper

This commit is contained in:
nathan 2017-07-14 01:31:37 +02:00
parent 713837cf4c
commit 8cbc753baa
6 changed files with 22 additions and 20 deletions

View File

@ -17,10 +17,14 @@ package dorkbox.util.jna;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.win32.W32APIOptions;
import dorkbox.util.OS;
/**
* Helper method to get the library info from JNA when registering via direct map
@ -33,6 +37,13 @@ class JnaHelper {
final Map<String, Object> options = new HashMap<String, Object>();
options.put(Library.OPTION_CLASSLOADER, clazz.getClassLoader());
if (OS.isWindows()) {
Set<Map.Entry<String, Object>> entries = W32APIOptions.DEFAULT_OPTIONS.entrySet();
for (Map.Entry<String, Object> entry : entries) {
options.put(entry.getKey(), entry.getValue());
}
}
final NativeLibrary library = NativeLibrary.getInstance(libraryName, options);
if (library == null) {
throw new IllegalArgumentException(libraryName + " doesn't exist or cannot be loaded.");

View File

@ -20,16 +20,15 @@ import static com.sun.jna.platform.win32.WinDef.HDC;
import static com.sun.jna.platform.win32.WinGDI.BITMAPINFO;
import static com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.W32APIOptions;
import dorkbox.util.jna.JnaHelper;
public
class GDI32 {
static {
Native.register(NativeLibrary.getInstance("GDI32", W32APIOptions.DEFAULT_OPTIONS));
JnaHelper.register("GDI32", GDI32.class);
}
/**

View File

@ -19,12 +19,11 @@ import static com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.W32APIOptions;
import dorkbox.util.jna.JnaHelper;
import dorkbox.util.jna.windows.structs.CONSOLE_SCREEN_BUFFER_INFO;
import dorkbox.util.jna.windows.structs.COORD;
import dorkbox.util.jna.windows.structs.INPUT_RECORD;
@ -33,7 +32,7 @@ import dorkbox.util.jna.windows.structs.SMALL_RECT;
public
class Kernel32 {
static {
Native.register(NativeLibrary.getInstance("kernel32", W32APIOptions.DEFAULT_OPTIONS));
JnaHelper.register("kernel32", Kernel32.class);
}
// see: http://msdn.microsoft.com/en-us/library/ms682013%28VS.85%29.aspx

View File

@ -15,16 +15,13 @@
*/
package dorkbox.util.jna.windows;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.win32.W32APIOptions;
import dorkbox.util.jna.JnaHelper;
import dorkbox.util.jna.windows.structs.NOTIFYICONDATA;
public
class Shell32 {
static {
Native.register(NativeLibrary.getInstance("shell32", W32APIOptions.DEFAULT_OPTIONS));
JnaHelper.register("shell32", Shell32.class);
}
static public final int NIM_ADD = 0x0;

View File

@ -26,13 +26,11 @@ import static com.sun.jna.platform.win32.WinDef.POINT;
import static com.sun.jna.platform.win32.WinDef.WPARAM;
import com.sun.jna.Callback;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.Pointer;
import com.sun.jna.WString;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.win32.W32APIOptions;
import dorkbox.util.jna.JnaHelper;
import dorkbox.util.jna.windows.structs.ICONINFO;
/**
@ -45,7 +43,7 @@ import dorkbox.util.jna.windows.structs.ICONINFO;
public
class User32_32 implements User32 {
static {
Native.register(NativeLibrary.getInstance("user32", W32APIOptions.DEFAULT_OPTIONS));
JnaHelper.register("user32", User32_32.class);
}
// is replaced by the 64bit version

View File

@ -26,13 +26,11 @@ import static com.sun.jna.platform.win32.WinDef.POINT;
import static com.sun.jna.platform.win32.WinDef.WPARAM;
import com.sun.jna.Callback;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.Pointer;
import com.sun.jna.WString;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.win32.W32APIOptions;
import dorkbox.util.jna.JnaHelper;
import dorkbox.util.jna.windows.structs.ICONINFO;
/**
@ -45,7 +43,7 @@ import dorkbox.util.jna.windows.structs.ICONINFO;
public
class User32_64 implements User32 {
static {
Native.register(NativeLibrary.getInstance("user32", W32APIOptions.DEFAULT_OPTIONS));
JnaHelper.register("user32", User32_64.class);
}
@Override