-added external bindbc.sdl import for WASM -working on demos (WIP, working simple demo with ECS and SDL2) -small change in ecs.std
140 lines
5.5 KiB
D
140 lines
5.5 KiB
D
|
|
// Copyright Michael D. Parker 2018.
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
module bindbc.sdl.bind.sdlmouse;
|
|
|
|
import bindbc.sdl.config;
|
|
import bindbc.sdl.bind.sdlstdinc : SDL_bool;
|
|
import bindbc.sdl.bind.sdlsurface : SDL_Surface;
|
|
import bindbc.sdl.bind.sdlvideo : SDL_Window;
|
|
|
|
struct SDL_Cursor;
|
|
|
|
enum SDL_SystemCursor {
|
|
SDL_SYSTEM_CURSOR_ARROW,
|
|
SDL_SYSTEM_CURSOR_IBEAM,
|
|
SDL_SYSTEM_CURSOR_WAIT,
|
|
SDL_SYSTEM_CURSOR_CROSSHAIR,
|
|
SDL_SYSTEM_CURSOR_WAITARROW,
|
|
SDL_SYSTEM_CURSOR_SIZENWSE,
|
|
SDL_SYSTEM_CURSOR_SIZENESW,
|
|
SDL_SYSTEM_CURSOR_SIZEWE,
|
|
SDL_SYSTEM_CURSOR_SIZENS,
|
|
SDL_SYSTEM_CURSOR_SIZEALL,
|
|
SDL_SYSTEM_CURSOR_NO,
|
|
SDL_SYSTEM_CURSOR_HAND,
|
|
SDL_NUM_SYSTEM_CURSORS
|
|
}
|
|
|
|
alias SDL_SYSTEM_CURSOR_ARROW = SDL_SystemCursor.SDL_SYSTEM_CURSOR_ARROW;
|
|
alias SDL_SYSTEM_CURSOR_IBEAM = SDL_SystemCursor.SDL_SYSTEM_CURSOR_IBEAM;
|
|
alias SDL_SYSTEM_CURSOR_WAIT = SDL_SystemCursor.SDL_SYSTEM_CURSOR_WAIT;
|
|
alias SDL_SYSTEM_CURSOR_CROSSHAIR = SDL_SystemCursor.SDL_SYSTEM_CURSOR_CROSSHAIR;
|
|
alias SDL_SYSTEM_CURSOR_WAITARROW = SDL_SystemCursor.SDL_SYSTEM_CURSOR_WAITARROW;
|
|
alias SDL_SYSTEM_CURSOR_SIZENWSE = SDL_SystemCursor.SDL_SYSTEM_CURSOR_SIZENWSE;
|
|
alias SDL_SYSTEM_CURSOR_SIZENESW = SDL_SystemCursor.SDL_SYSTEM_CURSOR_SIZENESW;
|
|
alias SDL_SYSTEM_CURSOR_SIZEWE = SDL_SystemCursor.SDL_SYSTEM_CURSOR_SIZEWE;
|
|
alias SDL_SYSTEM_CURSOR_SIZENS = SDL_SystemCursor.SDL_SYSTEM_CURSOR_SIZENS;
|
|
alias SDL_SYSTEM_CURSOR_SIZEALL = SDL_SystemCursor.SDL_SYSTEM_CURSOR_SIZEALL;
|
|
alias SDL_SYSTEM_CURSOR_NO = SDL_SystemCursor.SDL_SYSTEM_CURSOR_NO;
|
|
alias SDL_SYSTEM_CURSOR_HAND = SDL_SystemCursor.SDL_SYSTEM_CURSOR_HAND;
|
|
alias SDL_NUM_SYSTEM_CURSORS = SDL_SystemCursor.SDL_NUM_SYSTEM_CURSORS;
|
|
|
|
enum SDL_BUTTON(ubyte x) = 1 << (x-1);
|
|
|
|
enum : ubyte {
|
|
SDL_BUTTON_LEFT = 1,
|
|
SDL_BUTTON_MIDDLE = 2,
|
|
SDL_BUTTON_RIGHT = 3,
|
|
SDL_BUTTON_X1 = 4,
|
|
SDL_BUTTON_X2 = 5,
|
|
SDL_BUTTON_LMASK = SDL_BUTTON!(SDL_BUTTON_LEFT),
|
|
SDL_BUTTON_MMASK = SDL_BUTTON!(SDL_BUTTON_MIDDLE),
|
|
SDL_BUTTON_RMASK = SDL_BUTTON!(SDL_BUTTON_RIGHT),
|
|
SDL_BUTTON_X1MASK = SDL_BUTTON!(SDL_BUTTON_X1),
|
|
SDL_BUTTON_X2MASK = SDL_BUTTON!(SDL_BUTTON_X2),
|
|
}
|
|
|
|
static if(sdlSupport >= SDLSupport.sdl204) {
|
|
enum SDL_MouseWheelDirection {
|
|
SDL_MOUSEWHEEL_NORMAL,
|
|
SDL_MOUSEWHEEL_FLIPPED,
|
|
}
|
|
}
|
|
|
|
version(BindSDL_Static) {
|
|
extern(C) @nogc nothrow {
|
|
SDL_Window* SDL_GetMouseFocus();
|
|
uint SDL_GetMouseState(int*,int*);
|
|
uint SDL_GetRelativeMouseState(int*,int*);
|
|
void SDL_WarpMouseInWindow(SDL_Window*,int,int);
|
|
int SDL_SetRelativeMouseMode(SDL_bool);
|
|
SDL_bool SDL_GetRelativeMouseMode();
|
|
SDL_Cursor* SDL_CreateCursor(const(ubyte)*,const(ubyte)*,int,int,int,int);
|
|
SDL_Cursor* SDL_CreateColorCursor(SDL_Surface*,int,int);
|
|
SDL_Cursor* SDL_CreateSystemCursor(SDL_SystemCursor);
|
|
void SDL_SetCursor(SDL_Cursor*);
|
|
SDL_Cursor* SDL_GetCursor();
|
|
SDL_Cursor* SDL_GetDefaultCursor();
|
|
void SDL_FreeCursor(SDL_Cursor*);
|
|
int SDL_ShowCursor(int);
|
|
|
|
static if(sdlSupport >= SDLSupport.sdl204) {
|
|
int SDL_CaptureMouse(SDL_bool);
|
|
uint SDL_GetGlobalMouseState(int*,int*);
|
|
void SDL_WarpMouseGlobal(int,int);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
extern(C) @nogc nothrow {
|
|
alias pSDL_GetMouseFocus = SDL_Window* function();
|
|
alias pSDL_GetMouseState = uint function(int*,int*);
|
|
alias pSDL_GetRelativeMouseState = uint function(int*,int*);
|
|
alias pSDL_WarpMouseInWindow = void function(SDL_Window*,int,int);
|
|
alias pSDL_SetRelativeMouseMode = int function(SDL_bool);
|
|
alias pSDL_GetRelativeMouseMode = SDL_bool function();
|
|
alias pSDL_CreateCursor = SDL_Cursor* function(const(ubyte)*,const(ubyte)*,int,int,int,int);
|
|
alias pSDL_CreateColorCursor = SDL_Cursor* function(SDL_Surface*,int,int);
|
|
alias pSDL_CreateSystemCursor = SDL_Cursor* function(SDL_SystemCursor);
|
|
alias pSDL_SetCursor = void function(SDL_Cursor*);
|
|
alias pSDL_GetCursor = SDL_Cursor* function();
|
|
alias pSDL_GetDefaultCursor = SDL_Cursor* function();
|
|
alias pSDL_FreeCursor = void function(SDL_Cursor*);
|
|
alias pSDL_ShowCursor = int function(int);
|
|
}
|
|
|
|
__gshared {
|
|
pSDL_GetMouseFocus SDL_GetMouseFocus;
|
|
pSDL_GetMouseState SDL_GetMouseState;
|
|
pSDL_GetRelativeMouseState SDL_GetRelativeMouseState;
|
|
pSDL_WarpMouseInWindow SDL_WarpMouseInWindow;
|
|
pSDL_SetRelativeMouseMode SDL_SetRelativeMouseMode;
|
|
pSDL_GetRelativeMouseMode SDL_GetRelativeMouseMode;
|
|
pSDL_CreateCursor SDL_CreateCursor;
|
|
pSDL_CreateColorCursor SDL_CreateColorCursor;
|
|
pSDL_CreateSystemCursor SDL_CreateSystemCursor;
|
|
pSDL_SetCursor SDL_SetCursor;
|
|
pSDL_GetCursor SDL_GetCursor;
|
|
pSDL_GetDefaultCursor SDL_GetDefaultCursor;
|
|
pSDL_FreeCursor SDL_FreeCursor;
|
|
pSDL_ShowCursor SDL_ShowCursor;
|
|
}
|
|
|
|
static if(sdlSupport >= SDLSupport.sdl204) {
|
|
extern(C) @nogc nothrow {
|
|
alias pSDL_CaptureMouse = int function(SDL_bool);
|
|
alias pSDL_GetGlobalMouseState = uint function(int*,int*);
|
|
alias pSDL_WarpMouseGlobal = void function(int,int);
|
|
}
|
|
|
|
__gshared {
|
|
pSDL_CaptureMouse SDL_CaptureMouse;
|
|
pSDL_GetGlobalMouseState SDL_GetGlobalMouseState;
|
|
pSDL_WarpMouseGlobal SDL_WarpMouseGlobal;
|
|
}
|
|
}
|
|
}
|