Files
LuaCsForBarotraumaEP/Libraries/MonoGame.Framework/Src/MonoGame.Framework/SDL/SDL2.cs
T
Markus Isberg 9d2f160314 Build 0.20.10.0
2022-12-05 19:48:59 +02:00

1203 lines
50 KiB
C#

// MonoGame - Copyright (C) The MonoGame Team
// This file is subject to the terms and conditions defined in
// file 'LICENSE.txt', which is part of this source code package.
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;
using MonoGame.Utilities;
internal static class Sdl
{
public static IntPtr NativeLibrary = GetNativeLibrary();
private static IntPtr GetNativeLibrary()
{
var ret = IntPtr.Zero;
// Load bundled library
var assemblyLocation = Path.GetDirectoryName(typeof(Sdl).Assembly.Location);
if (CurrentPlatform.OS == OS.Windows && Environment.Is64BitProcess)
ret = FuncLoader.LoadLibrary(Path.Combine(assemblyLocation, "x64/SDL2.dll"));
else if (CurrentPlatform.OS == OS.Windows && !Environment.Is64BitProcess)
ret = FuncLoader.LoadLibrary(Path.Combine(assemblyLocation, "x86/SDL2.dll"));
else if (CurrentPlatform.OS == OS.Linux && Environment.Is64BitProcess)
ret = FuncLoader.LoadLibrary(Path.Combine(assemblyLocation, "x64/libSDL2-2.0.so.0"));
else if (CurrentPlatform.OS == OS.Linux && !Environment.Is64BitProcess)
ret = FuncLoader.LoadLibrary(Path.Combine(assemblyLocation, "x86/libSDL2-2.0.so.0"));
else if (CurrentPlatform.OS == OS.MacOSX)
ret = FuncLoader.LoadLibrary(Path.Combine(assemblyLocation, "libSDL2-2.0.0.dylib"));
// Load system library
if (ret == IntPtr.Zero)
{
if (CurrentPlatform.OS == OS.Windows)
ret = FuncLoader.LoadLibrary("SDL2.dll");
else if (CurrentPlatform.OS == OS.Linux)
ret = FuncLoader.LoadLibrary("libSDL2-2.0.so.0");
else
ret = FuncLoader.LoadLibrary("libSDL2-2.0.0.dylib");
}
// Welp, all failed, PANIC!!!
if (ret == IntPtr.Zero)
throw new Exception("Failed to load SDL library.");
return ret;
}
public static int Major;
public static int Minor;
public static int Patch;
[Flags]
public enum InitFlags
{
Video = 0x00000020,
Joystick = 0x00000200,
Haptic = 0x00001000,
GameController = 0x00002000,
}
public enum EventType : uint
{
First = 0,
Quit = 0x100,
WindowEvent = 0x200,
SysWM = 0x201,
KeyDown = 0x300,
KeyUp = 0x301,
TextEditing = 0x302,
TextInput = 0x303,
TextEditingExt = 0x305,
MouseMotion = 0x400,
MouseButtonDown = 0x401,
MouseButtonup = 0x402,
MouseWheel = 0x403,
JoyAxisMotion = 0x600,
JoyBallMotion = 0x601,
JoyHatMotion = 0x602,
JoyButtonDown = 0x603,
JoyButtonUp = 0x604,
JoyDeviceAdded = 0x605,
JoyDeviceRemoved = 0x606,
ControllerAxisMotion = 0x650,
ControllerButtonDown = 0x651,
ControllerButtonUp = 0x652,
ControllerDeviceAdded = 0x653,
ControllerDeviceRemoved = 0x654,
ControllerDeviceRemapped = 0x654,
FingerDown = 0x700,
FingerUp = 0x701,
FingerMotion = 0x702,
DollarGesture = 0x800,
DollarRecord = 0x801,
MultiGesture = 0x802,
ClipboardUpdate = 0x900,
DropFile = 0x1000,
AudioDeviceAdded = 0x1100,
AudioDeviceRemoved = 0x1101,
RenderTargetsReset = 0x2000,
RenderDeviceReset = 0x2001,
UserEvent = 0x8000,
Last = 0xFFFF
}
public enum EventAction
{
AddEvent = 0x0,
PeekEvent = 0x1,
GetEvent = 0x2,
}
[StructLayout(LayoutKind.Explicit, Size = 56)]
public struct Event
{
[FieldOffset(0)]
public EventType Type;
[FieldOffset(0)]
public Window.Event Window;
[FieldOffset(0)]
public Keyboard.Event Key;
[FieldOffset(0)]
public Mouse.MotionEvent Motion;
[FieldOffset(0)]
public Keyboard.TextEditingEvent Edit;
[FieldOffset(0)]
public Keyboard.TextEditingExtEvent EditExt;
[FieldOffset(0)]
public Keyboard.TextInputEvent Text;
[FieldOffset(0)]
public Mouse.WheelEvent Wheel;
[FieldOffset(0)]
public Joystick.DeviceEvent JoystickDevice;
[FieldOffset(0)]
public GameController.DeviceEvent ControllerDevice;
[FieldOffset(0)]
public DropEvent DropEvent;
}
public struct Rectangle
{
public int X;
public int Y;
public int Width;
public int Height;
}
public struct Version
{
public byte Major;
public byte Minor;
public byte Patch;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_init(int flags);
public static d_sdl_init SDL_Init = FuncLoader.LoadFunction<d_sdl_init>(NativeLibrary, "SDL_Init");
public static void Init(int flags)
{
GetError(SDL_Init(flags));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_free(IntPtr ptr);
public static d_sdl_free Free = FuncLoader.LoadFunction<d_sdl_free>(NativeLibrary, "SDL_free");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_disablescreensaver();
public static d_sdl_disablescreensaver DisableScreenSaver = FuncLoader.LoadFunction<d_sdl_disablescreensaver>(NativeLibrary, "SDL_DisableScreenSaver");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_getversion(out Version version);
public static d_sdl_getversion GetVersion = FuncLoader.LoadFunction<d_sdl_getversion>(NativeLibrary, "SDL_GetVersion");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_pollevent([Out] out Event _event);
public static d_sdl_pollevent PollEvent = FuncLoader.LoadFunction<d_sdl_pollevent>(NativeLibrary, "SDL_PollEvent");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_pumpevents();
public static d_sdl_pumpevents PumpEvents = FuncLoader.LoadFunction<d_sdl_pumpevents>(NativeLibrary, "SDL_PumpEvents");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_creatergbsurfacefrom(IntPtr pixels, int width, int height, int depth, int pitch, uint rMask, uint gMask, uint bMask, uint aMask);
private static d_sdl_creatergbsurfacefrom SDL_CreateRGBSurfaceFrom = FuncLoader.LoadFunction<d_sdl_creatergbsurfacefrom>(NativeLibrary, "SDL_CreateRGBSurfaceFrom");
public static IntPtr CreateRGBSurfaceFrom(byte[] pixels, int width, int height, int depth, int pitch, uint rMask, uint gMask, uint bMask, uint aMask)
{
var handle = GCHandle.Alloc(pixels, GCHandleType.Pinned);
try
{
return SDL_CreateRGBSurfaceFrom(handle.AddrOfPinnedObject(), width, height, depth, pitch, rMask, gMask, bMask, aMask);
}
finally
{
handle.Free();
}
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_freesurface(IntPtr surface);
public static d_sdl_freesurface FreeSurface = FuncLoader.LoadFunction<d_sdl_freesurface>(NativeLibrary, "SDL_FreeSurface");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_geterror();
private static d_sdl_geterror SDL_GetError = FuncLoader.LoadFunction<d_sdl_geterror>(NativeLibrary, "SDL_GetError");
public static string GetError()
{
return InteropHelpers.Utf8ToString(SDL_GetError());
}
public static int GetError(int value)
{
if (value < 0)
Debug.WriteLine(GetError());
return value;
}
public static IntPtr GetError(IntPtr pointer)
{
if (pointer == IntPtr.Zero)
Debug.WriteLine(GetError());
return pointer;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate bool d_sdl_istextinputshown();
public static d_sdl_istextinputshown SDL_IsTextInputShown = FuncLoader.LoadFunction<d_sdl_istextinputshown>(NativeLibrary, "SDL_IsTextInputShown");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_starttextinput();
public static d_sdl_starttextinput SDL_StartTextInput = FuncLoader.LoadFunction<d_sdl_starttextinput>(NativeLibrary, "SDL_StartTextInput");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_stoptextinput();
public static d_sdl_stoptextinput SDL_StopTextInput = FuncLoader.LoadFunction<d_sdl_stoptextinput>(NativeLibrary, "SDL_StopTextInput");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_settextinputrect(ref Rectangle rect);
public static d_sdl_settextinputrect SDL_SetTextInputRect = FuncLoader.LoadFunction<d_sdl_settextinputrect>(NativeLibrary, "SDL_SetTextInputRect");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_clearerror();
public static d_sdl_clearerror ClearError = FuncLoader.LoadFunction<d_sdl_clearerror>(NativeLibrary, "SDL_ClearError");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr d_sdl_getclipboardtext();
public static d_sdl_getclipboardtext SDL_GetClipboardText = FuncLoader.LoadFunction<d_sdl_getclipboardtext>(NativeLibrary, "SDL_GetClipboardText");
public static string GetClipboardText()
{
IntPtr ptr = GetError(SDL_GetClipboardText());
if (ptr == IntPtr.Zero) { return string.Empty; }
return InteropHelpers.Utf8ToString(ptr);
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_setclipboardtext(IntPtr text);
public static d_sdl_setclipboardtext SDL_SetClipboardText = FuncLoader.LoadFunction<d_sdl_setclipboardtext>(NativeLibrary, "SDL_SetClipboardText");
public static void SetClipboardText(string text)
{
byte[] bytes = Encoding.UTF8.GetBytes(text+"\0");
GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
GetError(SDL_SetClipboardText(handle.AddrOfPinnedObject()));
handle.Free();
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_showsimplemessagebox(uint flags, IntPtr title, IntPtr msg, IntPtr window);
public static d_sdl_showsimplemessagebox SDL_ShowSimpleMessageBox = FuncLoader.LoadFunction<d_sdl_showsimplemessagebox>(NativeLibrary, "SDL_ShowSimpleMessageBox");
public static void ShowSimpleMessageBox(uint flags, string title, string message, IntPtr window)
{
byte[] bytesTitle = Encoding.UTF8.GetBytes(title + "\0");
GCHandle handleTitle = GCHandle.Alloc(bytesTitle, GCHandleType.Pinned);
byte[] bytesMessage = Encoding.UTF8.GetBytes(message + "\0");
GCHandle handleMessage = GCHandle.Alloc(bytesMessage, GCHandleType.Pinned);
GetError(SDL_ShowSimpleMessageBox(flags, handleTitle.AddrOfPinnedObject(), handleMessage.AddrOfPinnedObject(), window));
handleTitle.Free();
handleMessage.Free();
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr d_sdl_gethint(string name);
public static d_sdl_gethint SDL_GetHint = FuncLoader.LoadFunction<d_sdl_gethint>(NativeLibrary, "SDL_GetHint");
public static string GetHint(string name)
{
return InteropHelpers.Utf8ToString(SDL_GetHint(name));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_loadbmp_rw(IntPtr src, int freesrc);
private static d_sdl_loadbmp_rw SDL_LoadBMP_RW = FuncLoader.LoadFunction<d_sdl_loadbmp_rw>(NativeLibrary, "SDL_LoadBMP_RW");
public static IntPtr LoadBMP_RW(IntPtr src, int freesrc)
{
return GetError(SDL_LoadBMP_RW(src, freesrc));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_quit();
public static d_sdl_quit Quit = FuncLoader.LoadFunction<d_sdl_quit>(NativeLibrary, "SDL_Quit");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_rwfrommem(byte[] mem, int size);
private static d_sdl_rwfrommem SDL_RWFromMem = FuncLoader.LoadFunction<d_sdl_rwfrommem>(NativeLibrary, "SDL_RWFromMem");
public static IntPtr RwFromMem(byte[] mem, int size)
{
return GetError(SDL_RWFromMem(mem, size));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_sethint(string name, string value);
public static d_sdl_sethint SetHint = FuncLoader.LoadFunction<d_sdl_sethint>(NativeLibrary, "SDL_SetHint");
[StructLayout(LayoutKind.Sequential)]
public struct DropEvent
{
public EventType Type;
public uint Timestamp;
public IntPtr File;
public uint WndowID;
}
public static class Window
{
public const int PosUndefined = 0x1FFF0000;
public const int PosCentered = 0x2FFF0000;
public enum EventId : byte
{
None,
Shown,
Hidden,
Exposed,
Moved,
Resized,
SizeChanged,
Minimized,
Maximized,
Restored,
Enter,
Leave,
FocusGained,
FocusLost,
Close,
}
public static class State
{
public const int Fullscreen = 0x00000001;
public const int OpenGL = 0x00000002;
public const int Shown = 0x00000004;
public const int Hidden = 0x00000008;
public const int Borderless = 0x00000010;
public const int Resizable = 0x00000020;
public const int Minimized = 0x00000040;
public const int Maximized = 0x00000080;
public const int Grabbed = 0x00000100;
public const int InputFocus = 0x00000200;
public const int MouseFocus = 0x00000400;
public const int FullscreenDesktop = 0x00001001;
public const int Foreign = 0x00000800;
public const int AllowHighDPI = 0x00002000;
public const int MouseCapture = 0x00004000;
}
[StructLayout(LayoutKind.Sequential)]
public struct Event
{
public EventType Type;
public uint TimeStamp;
public uint WindowID;
public EventId EventID;
private byte padding1;
private byte padding2;
private byte padding3;
public int Data1;
public int Data2;
}
public enum SysWMType
{
Unknow,
Windows,
X11,
Directfb,
Cocoa,
UiKit,
Wayland,
Mir,
WinRt,
Android
}
[StructLayout(LayoutKind.Sequential)]
public struct SDL_SysWMinfo
{
public Version version;
public SysWMType subsystem;
public IntPtr window;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_createwindow(string title, int x, int y, int w, int h, int flags);
private static d_sdl_createwindow SDL_CreateWindow = FuncLoader.LoadFunction<d_sdl_createwindow>(NativeLibrary, "SDL_CreateWindow");
public static IntPtr Create(string title, int x, int y, int w, int h, int flags)
{
return GetError(SDL_CreateWindow(title, x, y, w, h, flags));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_destroywindow(IntPtr window);
public static d_sdl_destroywindow Destroy = FuncLoader.LoadFunction<d_sdl_destroywindow>(NativeLibrary, "SDL_DestroyWindow");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate uint d_sdl_getwindowid(IntPtr window);
public static d_sdl_getwindowid GetWindowId = FuncLoader.LoadFunction<d_sdl_getwindowid>(NativeLibrary, "SDL_GetWindowID");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getwindowdisplayindex(IntPtr window);
private static d_sdl_getwindowdisplayindex SDL_GetWindowDisplayIndex = FuncLoader.LoadFunction<d_sdl_getwindowdisplayindex>(NativeLibrary, "SDL_GetWindowDisplayIndex");
public static int GetDisplayIndex(IntPtr window)
{
return GetError(SDL_GetWindowDisplayIndex(window));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_getwindowflags(IntPtr window);
public static d_sdl_getwindowflags GetWindowFlags = FuncLoader.LoadFunction<d_sdl_getwindowflags>(NativeLibrary, "SDL_GetWindowFlags");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setwindowicon(IntPtr window, IntPtr icon);
public static d_sdl_setwindowicon SetIcon = FuncLoader.LoadFunction<d_sdl_setwindowicon>(NativeLibrary, "SDL_SetWindowIcon");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_getwindowposition(IntPtr window, out int x, out int y);
public static d_sdl_getwindowposition GetPosition = FuncLoader.LoadFunction<d_sdl_getwindowposition>(NativeLibrary, "SDL_GetWindowPosition");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_getwindowsize(IntPtr window, out int w, out int h);
public static d_sdl_getwindowsize GetSize = FuncLoader.LoadFunction<d_sdl_getwindowsize>(NativeLibrary, "SDL_GetWindowSize");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setwindowbordered(IntPtr window, int bordered);
public static d_sdl_setwindowbordered SetBordered = FuncLoader.LoadFunction<d_sdl_setwindowbordered>(NativeLibrary, "SDL_SetWindowBordered");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_setwindowfullscreen(IntPtr window, int flags);
private static d_sdl_setwindowfullscreen SDL_SetWindowFullscreen = FuncLoader.LoadFunction<d_sdl_setwindowfullscreen>(NativeLibrary, "SDL_SetWindowFullscreen");
public static void SetFullscreen(IntPtr window, int flags)
{
GetError(SDL_SetWindowFullscreen(window, flags));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setwindowposition(IntPtr window, int x, int y);
public static d_sdl_setwindowposition SetPosition = FuncLoader.LoadFunction<d_sdl_setwindowposition>(NativeLibrary, "SDL_SetWindowPosition");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setwindowresizable(IntPtr window, bool resizable);
public static d_sdl_setwindowresizable SetResizable = FuncLoader.LoadFunction<d_sdl_setwindowresizable>(NativeLibrary, "SDL_SetWindowResizable");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setwindowsize(IntPtr window, int w, int h);
public static d_sdl_setwindowsize SetSize = FuncLoader.LoadFunction<d_sdl_setwindowsize>(NativeLibrary, "SDL_SetWindowSize");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void d_sdl_setwindowtitle(IntPtr window, ref byte value);
private static d_sdl_setwindowtitle SDL_SetWindowTitle = FuncLoader.LoadFunction<d_sdl_setwindowtitle>(NativeLibrary, "SDL_SetWindowTitle");
public static void SetTitle(IntPtr handle, string title)
{
var bytes = Encoding.UTF8.GetBytes(title);
SDL_SetWindowTitle(handle, ref bytes[0]);
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_showwindow(IntPtr window);
public static d_sdl_showwindow Show = FuncLoader.LoadFunction<d_sdl_showwindow>(NativeLibrary, "SDL_ShowWindow");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_raisewindow(IntPtr window);
public static d_sdl_raisewindow Raise = FuncLoader.LoadFunction<d_sdl_raisewindow>(NativeLibrary, "SDL_RaiseWindow");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setwindowgrab(IntPtr window, bool grabbed);
public static d_sdl_setwindowgrab SetGrab = FuncLoader.LoadFunction<d_sdl_setwindowgrab>(NativeLibrary, "SDL_SetWindowGrab");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate bool d_sdl_getwindowwminfo(IntPtr window, ref SDL_SysWMinfo sysWMinfo);
public static d_sdl_getwindowwminfo GetWindowWMInfo = FuncLoader.LoadFunction<d_sdl_getwindowwminfo>(NativeLibrary, "SDL_GetWindowWMInfo");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_getwindowborderssize(IntPtr window, out int top, out int left, out int right, out int bottom);
public static d_sdl_getwindowborderssize GetBorderSize = FuncLoader.LoadFunction<d_sdl_getwindowborderssize>(NativeLibrary, "SDL_GetWindowBordersSize");
}
public static class Display
{
public struct Mode
{
public uint Format;
public int Width;
public int Height;
public int RefreshRate;
public IntPtr DriverData;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getdisplaybounds(int displayIndex, out Rectangle rect);
private static d_sdl_getdisplaybounds SDL_GetDisplayBounds = FuncLoader.LoadFunction<d_sdl_getdisplaybounds>(NativeLibrary, "SDL_GetDisplayBounds");
public static void GetBounds(int displayIndex, out Rectangle rect)
{
GetError(SDL_GetDisplayBounds(displayIndex, out rect));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getcurrentdisplaymode(int displayIndex, out Mode mode);
private static d_sdl_getcurrentdisplaymode SDL_GetCurrentDisplayMode = FuncLoader.LoadFunction<d_sdl_getcurrentdisplaymode>(NativeLibrary, "SDL_GetCurrentDisplayMode");
public static void GetCurrentDisplayMode(int displayIndex, out Mode mode)
{
GetError(SDL_GetCurrentDisplayMode(displayIndex, out mode));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getdisplaymode(int displayIndex, int modeIndex, out Mode mode);
private static d_sdl_getdisplaymode SDL_GetDisplayMode = FuncLoader.LoadFunction<d_sdl_getdisplaymode>(NativeLibrary, "SDL_GetDisplayMode");
public static void GetDisplayMode(int displayIndex, int modeIndex, out Mode mode)
{
GetError(SDL_GetDisplayMode(displayIndex, modeIndex, out mode));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getclosestdisplaymode(int displayIndex, Mode mode, out Mode closest);
private static d_sdl_getclosestdisplaymode SDL_GetClosestDisplayMode = FuncLoader.LoadFunction<d_sdl_getclosestdisplaymode>(NativeLibrary, "SDL_GetClosestDisplayMode");
public static void GetClosestDisplayMode(int displayIndex, Mode mode, out Mode closest)
{
GetError(SDL_GetClosestDisplayMode(displayIndex, mode, out closest));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_getdisplayname(int index);
private static d_sdl_getdisplayname SDL_GetDisplayName = FuncLoader.LoadFunction<d_sdl_getdisplayname>(NativeLibrary, "SDL_GetDisplayName");
public static string GetDisplayName(int index)
{
return InteropHelpers.Utf8ToString(GetError(SDL_GetDisplayName(index)));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getnumdisplaymodes(int displayIndex);
private static d_sdl_getnumdisplaymodes SDL_GetNumDisplayModes = FuncLoader.LoadFunction<d_sdl_getnumdisplaymodes>(NativeLibrary, "SDL_GetNumDisplayModes");
public static int GetNumDisplayModes(int displayIndex)
{
return GetError(SDL_GetNumDisplayModes(displayIndex));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getnumvideodisplays();
private static d_sdl_getnumvideodisplays SDL_GetNumVideoDisplays = FuncLoader.LoadFunction<d_sdl_getnumvideodisplays>(NativeLibrary, "SDL_GetNumVideoDisplays");
public static int GetNumVideoDisplays()
{
return GetError(SDL_GetNumVideoDisplays());
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_getwindowdisplayindex(IntPtr window);
private static d_sdl_getwindowdisplayindex SDL_GetWindowDisplayIndex = FuncLoader.LoadFunction<d_sdl_getwindowdisplayindex>(NativeLibrary, "SDL_GetWindowDisplayIndex");
public static int GetWindowDisplayIndex(IntPtr window)
{
return GetError(SDL_GetWindowDisplayIndex(window));
}
}
public static class GL
{
public enum Attribute
{
RedSize,
GreenSize,
BlueSize,
AlphaSize,
BufferSize,
DoubleBuffer,
DepthSize,
StencilSize,
AccumRedSize,
AccumGreenSize,
AccumBlueSize,
AccumAlphaSize,
Stereo,
MultiSampleBuffers,
MultiSampleSamples,
AcceleratedVisual,
RetainedBacking,
ContextMajorVersion,
ContextMinorVersion,
ContextEgl,
ContextFlags,
ContextProfileMAsl,
ShareWithCurrentContext,
FramebufferSRGBCapable,
ContextReleaseBehaviour,
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_gl_createcontext(IntPtr window);
private static d_sdl_gl_createcontext SDL_GL_CreateContext = FuncLoader.LoadFunction<d_sdl_gl_createcontext>(NativeLibrary, "SDL_GL_CreateContext");
public static IntPtr CreateContext(IntPtr window)
{
return GetError(SDL_GL_CreateContext(window));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_gl_deletecontext(IntPtr context);
public static d_sdl_gl_deletecontext DeleteContext = FuncLoader.LoadFunction<d_sdl_gl_deletecontext>(NativeLibrary, "SDL_GL_DeleteContext");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_gl_getcurrentcontext();
private static d_sdl_gl_getcurrentcontext SDL_GL_GetCurrentContext = FuncLoader.LoadFunction<d_sdl_gl_getcurrentcontext>(NativeLibrary, "SDL_GL_GetCurrentContext");
public static IntPtr GetCurrentContext()
{
return GetError(SDL_GL_GetCurrentContext());
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr d_sdl_gl_getprocaddress(string proc);
public static d_sdl_gl_getprocaddress GetProcAddress = FuncLoader.LoadFunction<d_sdl_gl_getprocaddress>(NativeLibrary, "SDL_GL_GetProcAddress");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_gl_getswapinterval();
public static d_sdl_gl_getswapinterval GetSwapInterval = FuncLoader.LoadFunction<d_sdl_gl_getswapinterval>(NativeLibrary, "SDL_GL_GetSwapInterval");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_gl_makecurrent(IntPtr window, IntPtr context);
public static d_sdl_gl_makecurrent MakeCurrent = FuncLoader.LoadFunction<d_sdl_gl_makecurrent>(NativeLibrary, "SDL_GL_MakeCurrent");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_gl_setattribute(Attribute attr, int value);
private static d_sdl_gl_setattribute SDL_GL_SetAttribute = FuncLoader.LoadFunction<d_sdl_gl_setattribute>(NativeLibrary, "SDL_GL_SetAttribute");
public static int SetAttribute(Attribute attr, int value)
{
return GetError(SDL_GL_SetAttribute(attr, value));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_gl_setswapinterval(int interval);
public static d_sdl_gl_setswapinterval SetSwapInterval = FuncLoader.LoadFunction<d_sdl_gl_setswapinterval>(NativeLibrary, "SDL_GL_SetSwapInterval");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_gl_swapwindow(IntPtr window);
public static d_sdl_gl_swapwindow SwapWindow = FuncLoader.LoadFunction<d_sdl_gl_swapwindow>(NativeLibrary, "SDL_GL_SwapWindow");
}
public static class Mouse
{
[Flags]
public enum Button
{
Left = 1 << 0,
Middle = 1 << 1,
Right = 1 << 2,
X1Mask = 1 << 3,
X2Mask = 1 << 4
}
public enum SystemCursor
{
Arrow,
IBeam,
Wait,
Crosshair,
WaitArrow,
SizeNWSE,
SizeNESW,
SizeWE,
SizeNS,
SizeAll,
No,
Hand
}
[StructLayout(LayoutKind.Sequential)]
public struct MotionEvent
{
public EventType Type;
public uint Timestamp;
public uint WindowID;
public uint Which;
public byte State;
private byte _padding1;
private byte _padding2;
private byte _padding3;
public int X;
public int Y;
public int Xrel;
public int Yrel;
}
[StructLayout(LayoutKind.Sequential)]
public struct WheelEvent
{
public EventType Type;
public uint TimeStamp;
public uint WindowId;
public uint Which;
public int X;
public int Y;
public uint Direction;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_createcolorcursor(IntPtr surface, int x, int y);
private static d_sdl_createcolorcursor SDL_CreateColorCursor = FuncLoader.LoadFunction<d_sdl_createcolorcursor>(NativeLibrary, "SDL_CreateColorCursor");
public static IntPtr CreateColorCursor(IntPtr surface, int x, int y)
{
return GetError(SDL_CreateColorCursor(surface, x, y));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_createsystemcursor(SystemCursor id);
private static d_sdl_createsystemcursor SDL_CreateSystemCursor = FuncLoader.LoadFunction<d_sdl_createsystemcursor>(NativeLibrary, "SDL_CreateSystemCursor");
public static IntPtr CreateSystemCursor(SystemCursor id)
{
return GetError(SDL_CreateSystemCursor(id));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_freecursor(IntPtr cursor);
public static d_sdl_freecursor FreeCursor = FuncLoader.LoadFunction<d_sdl_freecursor>(NativeLibrary, "SDL_FreeCursor");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate Button d_sdl_getglobalmousestate(out int x, out int y);
public static d_sdl_getglobalmousestate GetGlobalState = FuncLoader.LoadFunction<d_sdl_getglobalmousestate>(NativeLibrary, "SDL_GetGlobalMouseState");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate Button d_sdl_getmousestate(out int x, out int y);
public static d_sdl_getmousestate GetState = FuncLoader.LoadFunction<d_sdl_getmousestate>(NativeLibrary, "SDL_GetMouseState");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_setcursor(IntPtr cursor);
public static d_sdl_setcursor SetCursor = FuncLoader.LoadFunction<d_sdl_setcursor>(NativeLibrary, "SDL_SetCursor");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_showcursor(int toggle);
public static d_sdl_showcursor ShowCursor = FuncLoader.LoadFunction<d_sdl_showcursor>(NativeLibrary, "SDL_ShowCursor");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_warpmouseinwindow(IntPtr window, int x, int y);
public static d_sdl_warpmouseinwindow WarpInWindow = FuncLoader.LoadFunction<d_sdl_warpmouseinwindow>(NativeLibrary, "SDL_WarpMouseInWindow");
}
public static class Keyboard
{
public struct Keysym
{
public int Scancode;
public int Sym;
public Keymod Mod;
public uint Unicode;
}
[Flags]
public enum Keymod : ushort
{
None = 0x0000,
LeftShift = 0x0001,
RightShift = 0x0002,
LeftCtrl = 0x0040,
RightCtrl = 0x0080,
LeftAlt = 0x0100,
RightAlt = 0x0200,
LeftGui = 0x0400,
RightGui = 0x0800,
NumLock = 0x1000,
CapsLock = 0x2000,
AltGr = 0x4000,
Reserved = 0x8000,
Ctrl = (LeftCtrl | RightCtrl),
Shift = (LeftShift | RightShift),
Alt = (LeftAlt | RightAlt),
Gui = (LeftGui | RightGui)
}
[StructLayout(LayoutKind.Sequential)]
public struct Event
{
public EventType Type;
public uint TimeStamp;
public uint WindowId;
public byte State;
public byte Repeat;
private byte padding2;
private byte padding3;
public Keysym Keysym;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct TextEditingEvent
{
public EventType Type;
public uint Timestamp;
public uint WindowId;
public fixed byte Text[32];
public int Start;
public int Length;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct TextEditingExtEvent
{
public EventType Type;
public uint Timestamp;
public uint WindowId;
public byte* Text;
public int Start;
public int Length;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct TextInputEvent
{
public EventType Type;
public uint Timestamp;
public uint WindowId;
public fixed byte Text[32];
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate Keymod d_sdl_getmodstate();
public static d_sdl_getmodstate GetModState = FuncLoader.LoadFunction<d_sdl_getmodstate>(NativeLibrary, "SDL_GetModState");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_getkeyfromscancode(int scancode);
public static d_sdl_getkeyfromscancode GetKeyFromScancode = FuncLoader.LoadFunction<d_sdl_getkeyfromscancode>(NativeLibrary, "SDL_GetKeyFromScancode");
}
public static class Joystick
{
[Flags]
public enum Hat : byte
{
Centered = 0,
Up = 1 << 0,
Right = 1 << 1,
Down = 1 << 2,
Left = 1 << 3
}
[StructLayout(LayoutKind.Sequential)]
public struct DeviceEvent
{
public EventType Type;
public uint TimeStamp;
public int Which;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_joystickclose(IntPtr joystick);
public static d_sdl_joystickclose Close = FuncLoader.LoadFunction<d_sdl_joystickclose>(NativeLibrary, "SDL_JoystickClose");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_joystickfrominstanceid(int joyid);
private static d_sdl_joystickfrominstanceid SDL_JoystickFromInstanceID = FuncLoader.LoadFunction<d_sdl_joystickfrominstanceid>(NativeLibrary, "SDL_JoystickFromInstanceID");
public static IntPtr FromInstanceID(int joyid)
{
return GetError(SDL_JoystickFromInstanceID(joyid));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate short d_sdl_joystickgetaxis(IntPtr joystick, int axis);
public static d_sdl_joystickgetaxis GetAxis = FuncLoader.LoadFunction<d_sdl_joystickgetaxis>(NativeLibrary, "SDL_JoystickGetAxis");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate byte d_sdl_joystickgetbutton(IntPtr joystick, int button);
public static d_sdl_joystickgetbutton GetButton = FuncLoader.LoadFunction<d_sdl_joystickgetbutton>(NativeLibrary, "SDL_JoystickGetButton");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate Guid d_sdl_joystickgetguid(IntPtr joystick);
public static d_sdl_joystickgetguid GetGUID = FuncLoader.LoadFunction<d_sdl_joystickgetguid>(NativeLibrary, "SDL_JoystickGetGUID");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate Hat d_sdl_joystickgethat(IntPtr joystick, int hat);
public static d_sdl_joystickgethat GetHat = FuncLoader.LoadFunction<d_sdl_joystickgethat>(NativeLibrary, "SDL_JoystickGetHat");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_joystickinstanceid(IntPtr joystick);
public static d_sdl_joystickinstanceid InstanceID = FuncLoader.LoadFunction<d_sdl_joystickinstanceid>(NativeLibrary, "SDL_JoystickInstanceID");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_joystickopen(int deviceIndex);
private static d_sdl_joystickopen SDL_JoystickOpen = FuncLoader.LoadFunction<d_sdl_joystickopen>(NativeLibrary, "SDL_JoystickOpen");
public static IntPtr Open(int deviceIndex)
{
return GetError(SDL_JoystickOpen(deviceIndex));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_joysticknumaxes(IntPtr joystick);
private static d_sdl_joysticknumaxes SDL_JoystickNumAxes = FuncLoader.LoadFunction<d_sdl_joysticknumaxes>(NativeLibrary, "SDL_JoystickNumAxes");
public static int NumAxes(IntPtr joystick)
{
return GetError(SDL_JoystickNumAxes(joystick));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_joysticknumbuttons(IntPtr joystick);
private static d_sdl_joysticknumbuttons SDL_JoystickNumButtons = FuncLoader.LoadFunction<d_sdl_joysticknumbuttons>(NativeLibrary, "SDL_JoystickNumButtons");
public static int NumButtons(IntPtr joystick)
{
return GetError(SDL_JoystickNumButtons(joystick));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_joysticknumhats(IntPtr joystick);
private static d_sdl_joysticknumhats SDL_JoystickNumHats = FuncLoader.LoadFunction<d_sdl_joysticknumhats>(NativeLibrary, "SDL_JoystickNumHats");
public static int NumHats(IntPtr joystick)
{
return GetError(SDL_JoystickNumHats(joystick));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_numjoysticks();
private static d_sdl_numjoysticks SDL_NumJoysticks = FuncLoader.LoadFunction<d_sdl_numjoysticks>(NativeLibrary, "SDL_NumJoysticks");
public static int NumJoysticks()
{
return GetError(SDL_NumJoysticks());
}
}
public static class GameController
{
public enum Axis
{
Invalid = -1,
LeftX,
LeftY,
RightX,
RightY,
TriggerLeft,
TriggerRight,
Max,
}
public enum Button
{
Invalid = -1,
A,
B,
X,
Y,
Back,
Guide,
Start,
LeftStick,
RightStick,
LeftShoulder,
RightShoulder,
DpadUp,
DpadDown,
DpadLeft,
DpadRight,
Max,
}
[StructLayout(LayoutKind.Sequential)]
public struct DeviceEvent
{
public EventType Type;
public uint TimeStamp;
public int Which;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_gamecontrolleraddmapping(string mappingString);
public static d_sdl_gamecontrolleraddmapping AddMapping = FuncLoader.LoadFunction<d_sdl_gamecontrolleraddmapping>(NativeLibrary, "SDL_GameControllerAddMapping");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_gamecontrolleraddmappingsfromrw(IntPtr rw, int freew);
public static d_sdl_gamecontrolleraddmappingsfromrw AddMappingFromRw = FuncLoader.LoadFunction<d_sdl_gamecontrolleraddmappingsfromrw>(NativeLibrary, "SDL_GameControllerAddMappingsFromRW");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_gamecontrollerclose(IntPtr gamecontroller);
public static d_sdl_gamecontrollerclose Close = FuncLoader.LoadFunction<d_sdl_gamecontrollerclose>(NativeLibrary, "SDL_GameControllerClose");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_joystickfrominstanceid(int joyid);
private static d_sdl_joystickfrominstanceid SDL_GameControllerFromInstanceID = FuncLoader.LoadFunction<d_sdl_joystickfrominstanceid>(NativeLibrary, "SDL_JoystickFromInstanceID");
public static IntPtr FromInstanceID(int joyid)
{
return GetError(SDL_GameControllerFromInstanceID(joyid));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate short d_sdl_gamecontrollergetaxis(IntPtr gamecontroller, Axis axis);
public static d_sdl_gamecontrollergetaxis GetAxis = FuncLoader.LoadFunction<d_sdl_gamecontrollergetaxis>(NativeLibrary, "SDL_GameControllerGetAxis");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate byte d_sdl_gamecontrollergetbutton(IntPtr gamecontroller, Button button);
public static d_sdl_gamecontrollergetbutton GetButton = FuncLoader.LoadFunction<d_sdl_gamecontrollergetbutton>(NativeLibrary, "SDL_GameControllerGetButton");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_gamecontrollergetjoystick(IntPtr gamecontroller);
private static d_sdl_gamecontrollergetjoystick SDL_GameControllerGetJoystick = FuncLoader.LoadFunction<d_sdl_gamecontrollergetjoystick>(NativeLibrary, "SDL_GameControllerGetJoystick");
public static IntPtr GetJoystick(IntPtr gamecontroller)
{
return GetError(SDL_GameControllerGetJoystick(gamecontroller));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate byte d_sdl_isgamecontroller(int joystickIndex);
public static d_sdl_isgamecontroller IsGameController = FuncLoader.LoadFunction<d_sdl_isgamecontroller>(NativeLibrary, "SDL_IsGameController");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_gamecontrollermapping(IntPtr gamecontroller);
private static d_sdl_gamecontrollermapping SDL_GameControllerMapping = FuncLoader.LoadFunction<d_sdl_gamecontrollermapping>(NativeLibrary, "SDL_GameControllerMapping");
public static string GetMapping(IntPtr gamecontroller)
{
return InteropHelpers.Utf8ToString(SDL_GameControllerMapping(gamecontroller));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_gamecontrolleropen(int joystickIndex);
private static d_sdl_gamecontrolleropen SDL_GameControllerOpen = FuncLoader.LoadFunction<d_sdl_gamecontrolleropen>(NativeLibrary, "SDL_GameControllerOpen");
public static IntPtr Open(int joystickIndex)
{
return GetError(SDL_GameControllerOpen(joystickIndex));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_gamecontrollername(IntPtr gamecontroller);
private static d_sdl_gamecontrollername SDL_GameControllerName = FuncLoader.LoadFunction<d_sdl_gamecontrollername>(NativeLibrary, "SDL_GameControllerName");
public static string GetName(IntPtr gamecontroller)
{
return InteropHelpers.Utf8ToString(SDL_GameControllerName(gamecontroller));
}
}
public static class Haptic
{
public const uint Infinity = 4292967295U;
public enum EffectId : ushort
{
LeftRight = (1 << 2),
}
[StructLayout(LayoutKind.Sequential)]
public struct LeftRight
{
public EffectId Type;
public uint Length;
public ushort LargeMagnitude;
public ushort SmallMagnitude;
}
[StructLayout(LayoutKind.Explicit)]
public struct Effect
{
[FieldOffset(0)] public EffectId type;
[FieldOffset(0)] public LeftRight leftright;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void d_sdl_hapticclose(IntPtr haptic);
public static d_sdl_hapticclose Close = FuncLoader.LoadFunction<d_sdl_hapticclose>(NativeLibrary, "SDL_HapticClose");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_hapticeffectsupported(IntPtr haptic, ref Effect effect);
public static d_sdl_hapticeffectsupported EffectSupported = FuncLoader.LoadFunction<d_sdl_hapticeffectsupported>(NativeLibrary, "SDL_HapticEffectSupported");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int d_sdl_joystickishaptic(IntPtr joystick);
public static d_sdl_joystickishaptic IsHaptic = FuncLoader.LoadFunction<d_sdl_joystickishaptic>(NativeLibrary, "SDL_JoystickIsHaptic");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticneweffect(IntPtr haptic, ref Effect effect);
private static d_sdl_hapticneweffect SDL_HapticNewEffect = FuncLoader.LoadFunction<d_sdl_hapticneweffect>(NativeLibrary, "SDL_HapticNewEffect");
public static void NewEffect(IntPtr haptic, ref Effect effect)
{
GetError(SDL_HapticNewEffect(haptic, ref effect));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr d_sdl_hapticopen(int device_index);
public static d_sdl_hapticopen Open = FuncLoader.LoadFunction<d_sdl_hapticopen>(NativeLibrary, "SDL_HapticOpen");
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr d_sdl_hapticopenfromjoystick(IntPtr joystick);
private static d_sdl_hapticopenfromjoystick SDL_HapticOpenFromJoystick = FuncLoader.LoadFunction<d_sdl_hapticopenfromjoystick>(NativeLibrary, "SDL_HapticOpenFromJoystick");
public static IntPtr OpenFromJoystick(IntPtr joystick)
{
return GetError(SDL_HapticOpenFromJoystick(joystick));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticrumbleinit(IntPtr haptic);
private static d_sdl_hapticrumbleinit SDL_HapticRumbleInit = FuncLoader.LoadFunction<d_sdl_hapticrumbleinit>(NativeLibrary, "SDL_HapticRumbleInit");
public static void RumbleInit(IntPtr haptic)
{
GetError(SDL_HapticRumbleInit(haptic));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticrumbleplay(IntPtr haptic, float strength, uint length);
private static d_sdl_hapticrumbleplay SDL_HapticRumblePlay = FuncLoader.LoadFunction<d_sdl_hapticrumbleplay>(NativeLibrary, "SDL_HapticRumblePlay");
public static void RumblePlay(IntPtr haptic, float strength, uint length)
{
GetError(SDL_HapticRumblePlay(haptic, strength, length));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticrumblesupported(IntPtr haptic);
private static d_sdl_hapticrumblesupported SDL_HapticRumbleSupported = FuncLoader.LoadFunction<d_sdl_hapticrumblesupported>(NativeLibrary, "SDL_HapticRumbleSupported");
public static int RumbleSupported(IntPtr haptic)
{
return GetError(SDL_HapticRumbleSupported(haptic));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticruneffect(IntPtr haptic, int effect, uint iterations);
private static d_sdl_hapticruneffect SDL_HapticRunEffect = FuncLoader.LoadFunction<d_sdl_hapticruneffect>(NativeLibrary, "SDL_HapticRunEffect");
public static void RunEffect(IntPtr haptic, int effect, uint iterations)
{
GetError(SDL_HapticRunEffect(haptic, effect, iterations));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticstopall(IntPtr haptic);
private static d_sdl_hapticstopall SDL_HapticStopAll = FuncLoader.LoadFunction<d_sdl_hapticstopall>(NativeLibrary, "SDL_HapticStopAll");
public static void StopAll(IntPtr haptic)
{
GetError(SDL_HapticStopAll(haptic));
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int d_sdl_hapticupdateeffect(IntPtr haptic, int effect, ref Effect data);
private static d_sdl_hapticupdateeffect SDL_HapticUpdateEffect = FuncLoader.LoadFunction<d_sdl_hapticupdateeffect>(NativeLibrary, "SDL_HapticUpdateEffect");
public static void UpdateEffect(IntPtr haptic, int effect, ref Effect data)
{
GetError(SDL_HapticUpdateEffect(haptic, effect, ref data));
}
}
}