shithub: npe

ref: fd731d3c833d9241fdff618b6c949453fb5c0f31
dir: /SDL2/SDL.h/

View raw version
#ifndef _SDL_h_
#define _SDL_h_

#include "plan9.h"
#include <keyboard.h>

typedef int SDL_AudioDeviceID;
typedef struct SDL_AudioSpec SDL_AudioSpec;
typedef struct SDL_Window SDL_Window;
typedef struct SDL_Renderer SDL_Renderer;
typedef struct SDL_Texture SDL_Texture;
typedef struct SDL_Surface SDL_Surface;
typedef struct SDL_Rect SDL_Rect;
typedef int SDL_Keycode;
typedef int SDL_Scancode;
typedef int SDL_Keymod;
typedef struct SDL_Event SDL_Event;
typedef u8int Uint8;
typedef u16int Uint16;
typedef u32int Uint32;
typedef int SDL_BlendMode;
typedef struct SDL_Thread SDL_Thread;
typedef int (*SDL_ThreadFunction)(void *);
typedef struct SDL_Cursor SDL_Cursor;
typedef struct SDL_PixelFormat SDL_PixelFormat;
typedef struct SDL_Point SDL_Point;
typedef int SDL_RendererFlip;
typedef struct SDL_DisplayMode SDL_DisplayMode;

#pragma incomplete SDL_Cursor
#pragma incomplete SDL_PixelFormat
#pragma incomplete SDL_Renderer
#pragma incomplete SDL_Texture
#pragma incomplete SDL_Thread
#pragma incomplete SDL_Window

typedef enum {SDL_FALSE, SDL_TRUE} SDL_bool;
#define SDLCALL

void SDL_StopTextInput(void);
SDL_bool SDL_HasSSE(void);
SDL_bool SDL_HasSSE2(void);
int SDL_Init(int);
int SDL_EventState(Uint32, int);
SDL_Keymod SDL_GetModState(void);
char *SDL_GetAudioDeviceName(int, SDL_bool);
int SDL_GetNumAudioDevices(int iscapture);
int SDL_ShowCursor(int toggle);
void SDL_LockAudioDevice(SDL_AudioDeviceID);
void SDL_UnlockAudioDevice(SDL_AudioDeviceID);
void SDL_PauseAudioDevice(SDL_AudioDeviceID, SDL_bool);
void SDL_CloseAudioDevice(SDL_AudioDeviceID);
SDL_AudioDeviceID SDL_OpenAudioDevice(char *, int, SDL_AudioSpec *, SDL_AudioSpec *, u32int);
u64int SDL_GetPerformanceFrequency(void);
u64int SDL_GetPerformanceCounter(void);
char *SDL_GetError(void);
SDL_Thread *SDL_CreateThread(SDL_ThreadFunction, char *, void *);
void SDL_DetachThread(SDL_Thread *);
char *SDL_GetClipboardText(void);
int SDL_SetClipboardText(char *);
void SDL_SetThreadPriority(int);
SDL_bool SDL_HasClipboardText(void);
int SDL_PollEvent(SDL_Event *event);
void SDL_RestoreWindow(SDL_Window *window);
void SDL_RaiseWindow(SDL_Window *window);
int SDL_UpdateTexture(SDL_Texture *texture, SDL_Rect *rect, void *pixels, int pitch);
int SDL_RenderClear(SDL_Renderer *renderer);
int SDL_GetWindowDisplayIndex(SDL_Window *window);
void SDL_FreeSurface(SDL_Surface *surface);
Uint32 SDL_GetGlobalMouseState(int *x, int *y);
void SDL_Quit(void);
void SDL_free(void *);
SDL_Cursor *SDL_GetDefaultCursor(void);
void SDL_SetCursor(SDL_Cursor *cursor);
void SDL_FreeCursor(SDL_Cursor *cursor);
SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 rm, Uint32 gm, Uint32 bm, Uint32 am);
SDL_Surface *SDL_CreateRGBSurfaceFrom(Uint32 *pixels, int w, int h, int bpp, int pitch, Uint32 rm, Uint32 gm, Uint32 bm, Uint32 am);
Uint32 SDL_MapRGB(SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b);
int SDL_SetColorKey(SDL_Surface *surface, int flag, Uint32 key);
int SDL_SetSurfaceRLE(SDL_Surface *surface, int flag);
int SDL_LockSurface(SDL_Surface *surface);
int SDL_UnlockSurface(SDL_Surface *surface);
int SDL_SetSurfaceBlendMode(SDL_Surface *surface, SDL_BlendMode blendMode);
SDL_Cursor *SDL_CreateColorCursor(SDL_Surface *surface, int hot_x, int hot_y);
int SDL_PushEvent(SDL_Event *event);
void SDL_WarpMouseInWindow(SDL_Window *window, int x, int y);
void SDL_RenderGetScale(SDL_Renderer *renderer, float *scaleX, float *scaleY);
void SDL_GetWindowSize(SDL_Window *window, int *w, int *h);
void SDL_GetWindowPosition(SDL_Window *window, int *x, int *y);
Uint32 SDL_GetMouseState(int *x, int *y);
SDL_bool SDL_IsTextInputActive(void);
void SDL_StartTextInput(void);
void SDL_Delay(Uint32 ms);
int SDL_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, SDL_Rect *srcrect, SDL_Rect *dstrect);
void SDL_RenderPresent(SDL_Renderer *renderer);
Uint32 SDL_GetWindowFlags(SDL_Window *window);
int SDL_RenderSetLogicalSize(SDL_Renderer *renderer, int w, int h);
void SDL_SetWindowSize(SDL_Window *window, int w, int h);
int SDL_ShowSimpleMessageBox(Uint32 flags, char *title, char *message, SDL_Window *window);
int SDL_SetWindowFullscreen(SDL_Window *window, Uint32 flags);
void SDL_SetWindowGrab(SDL_Window *window, SDL_bool grabbed);
void SDL_SetWindowPosition(SDL_Window *window, int x, int y);
void SDL_DestroyTexture(SDL_Texture *texture);
void SDL_DestroyRenderer(SDL_Renderer *renderer);
void SDL_DestroyWindow(SDL_Window *window);
int SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode *mode);
void SDL_SetWindowTitle(SDL_Window *window, char *title);
int SDL_SetTextureBlendMode(SDL_Texture *texture, SDL_BlendMode blendMode);
SDL_bool SDL_SetHint(char *name, char *value);
SDL_Window *SDL_CreateWindow(char *title, int x, int y, int w, int h, Uint32 flags);
SDL_Renderer *SDL_CreateRenderer(SDL_Window *window, int index, Uint32 flags);
int SDL_SetRenderDrawBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode);
char *SDL_GetCurrentVideoDriver(void);
SDL_Texture *SDL_CreateTexture(SDL_Renderer *renderer, Uint32 format, int access, int w, int h);
void SDL_EnableScreenSaver(void);
Uint32 SDL_GetTicks(void);
int SDL_GetRendererOutputSize(SDL_Renderer *renderer, int *w, int *h);
int SDL_SaveBMP(SDL_Surface *s, const char *file);

enum {
	AUDIO_S16,
	AUDIO_F32,

	SDL_AUDIO_ALLOW_ANY_CHANGE = ~0,

	SDL_THREAD_PRIORITY_HIGH = 1,

	SDL_QUERY = -1,
	SDL_DISABLE,
	SDL_ENABLE,

	SDL_MESSAGEBOX_ERROR = 0,

	SDL_WINDOW_MINIMIZED = 1<<0,
	SDL_WINDOW_FULLSCREEN_DESKTOP = 1<<1,
	SDL_WINDOW_INPUT_FOCUS = 1<<2,
	SDL_WINDOW_ALLOW_HIGHDPI = 1<<3,
	SDL_WINDOW_SHOWN = 1<<4,

	SDL_WINDOWPOS_CENTERED = -1,
	SDL_WINDOWPOS_UNDEFINED = -2,

	SDL_INIT_AUDIO = 1<<0,
	SDL_INIT_VIDEO = 1<<1,
	SDL_INIT_JOYSTICK = 1<<2,

	SDL_BLENDMODE_NONE = 0,

	SDL_FLIP_NONE = 0,
	SDL_FLIP_HORIZONTAL,
	SDL_FLIP_VERTICAL,

	SDL_PIXELFORMAT_ARGB8888 = 0x30128888,

	/* shit no one cares about */
	SDL_TEXTUREACCESS_STREAMING = 0,
	SDL_TEXTUREACCESS_STATIC = 0,
	SDL_RENDERER_ACCELERATED = 0,
	SDL_RENDERER_PRESENTVSYNC = 0,
};

enum {
	/* these HAVE to be in this order for notes to work in ft2-clone */
	SDL_SCANCODE_A = 0x04,
	SDL_SCANCODE_B,
	SDL_SCANCODE_C,
	SDL_SCANCODE_D,
	SDL_SCANCODE_E,
	SDL_SCANCODE_F,
	SDL_SCANCODE_G,
	SDL_SCANCODE_H,
	SDL_SCANCODE_I,
	SDL_SCANCODE_J,
	SDL_SCANCODE_K,
	SDL_SCANCODE_L,
	SDL_SCANCODE_M,
	SDL_SCANCODE_N,
	SDL_SCANCODE_O,
	SDL_SCANCODE_P,
	SDL_SCANCODE_Q,
	SDL_SCANCODE_R,
	SDL_SCANCODE_S,
	SDL_SCANCODE_T,
	SDL_SCANCODE_U,
	SDL_SCANCODE_V,
	SDL_SCANCODE_W,
	SDL_SCANCODE_X,
	SDL_SCANCODE_Y,
	SDL_SCANCODE_Z,
	SDL_SCANCODE_1,
	SDL_SCANCODE_2,
	SDL_SCANCODE_3,
	SDL_SCANCODE_4,
	SDL_SCANCODE_5,
	SDL_SCANCODE_6,
	SDL_SCANCODE_7,
	SDL_SCANCODE_8,
	SDL_SCANCODE_9,
	SDL_SCANCODE_0,
	SDL_SCANCODE_ENTER,
	SDL_SCANCODE_ESCAPE,
	SDL_SCANCODE_BACKSPACE,
	SDL_SCANCODE_TAB,
	SDL_SCANCODE_SPACE,
	SDL_SCANCODE_MINUS,
	SDL_SCANCODE_EQUALS,
	SDL_SCANCODE_LEFTBRACKET,
	SDL_SCANCODE_RIGHTBRACKET,
	SDL_SCANCODE_BACKSLASH,
	SDL_SCANCODE_NONUSHASH,
	SDL_SCANCODE_SEMICOLON,
	SDL_SCANCODE_APOSTROPHE,
	SDL_SCANCODE_GRAVE,
	SDL_SCANCODE_SLASH,
	SDL_SCANCODE_CAPSLOCK,

	SDL_SCANCODE_RIGHT = 0x4f,
	SDL_SCANCODE_LEFT,
	SDL_SCANCODE_DOWN,
	SDL_SCANCODE_UP,
	SDL_SCANCODE_NUMLOCKCLEAR,
	SDL_SCANCODE_KP_DIVIDE,
	SDL_SCANCODE_KP_MULTIPLY,
	SDL_SCANCODE_KP_MINUS,
	SDL_SCANCODE_KP_PLUS,
	SDL_SCANCODE_KP_ENTER,
	SDL_SCANCODE_KP_1,
	SDL_SCANCODE_KP_2,
	SDL_SCANCODE_KP_3,
	SDL_SCANCODE_KP_4,
	SDL_SCANCODE_KP_5,
	SDL_SCANCODE_KP_6,
	SDL_SCANCODE_KP_7,
	SDL_SCANCODE_KP_8,
	SDL_SCANCODE_KP_9,
	SDL_SCANCODE_KP_0,
	SDL_SCANCODE_KP_PERIOD,
	SDL_SCANCODE_NONUSBACKSLASH,

	SDL_SCANCODE_MUTE = 0x7f,
	SDL_SCANCODE_VOLUMEUP,
	SDL_SCANCODE_VOLUMEDOWN,

	SDL_SCANCODE_AUDIOMUTE = 0x106,

	SDLK_a = 'a',
	SDLK_b,
	SDLK_c,
	SDLK_d,
	SDLK_e,
	SDLK_f,
	SDLK_g,
	SDLK_h,
	SDLK_i,
	SDLK_j,
	SDLK_k,
	SDLK_l,
	SDLK_m,
	SDLK_n,
	SDLK_o,
	SDLK_p,
	SDLK_q,
	SDLK_r,
	SDLK_s,
	SDLK_t,
	SDLK_u,
	SDLK_v,
	SDLK_w,
	SDLK_x,
	SDLK_y,
	SDLK_z,
	SDLK_0 = '0',
	SDLK_1,
	SDLK_2,
	SDLK_3,
	SDLK_4,
	SDLK_5,
	SDLK_6,
	SDLK_7,
	SDLK_8,
	SDLK_9,
	SDLK_DELETE = Kdel,
	SDLK_RETURN = '\n',
	SDLK_ESCAPE = Kesc,
	SDLK_LESS = '<',
	SDLK_SPACE = ' ',
	SDLK_TAB = '\t',
	SDLK_LEFT = Kleft,
	SDLK_RIGHT = Kright,
	SDLK_DOWN = Kdown,
	SDLK_UP = Kup,
	SDLK_F1 = KF|1,
	SDLK_F2,
	SDLK_F3,
	SDLK_F4,
	SDLK_F5,
	SDLK_F6,
	SDLK_F7,
	SDLK_F8,
	SDLK_F9,
	SDLK_F10,
	SDLK_F11,
	SDLK_F12,
	SDLK_INSERT = Kins,
	SDLK_PAGEUP = Kpgup,
	SDLK_PAGEDOWN = Kpgdown,
	SDLK_HOME = Khome,
	SDLK_END = Kend,
	SDLK_BACKSPACE = Kbs,
	SDLK_MINUS = '-',
	SDLK_PLUS = '+',
	SDLK_EQUALS = '=',
	SDLK_UNDERSCORE = '_',

	SDLK_LALT = Kalt,
	SDLK_RALT = Kaltgr, /* FIXME what about keyboards without it? */
	/* FIXME no distinction */
	SDLK_LSHIFT = Kshift,
	SDLK_RSHIFT = SDLK_LSHIFT,
	SDLK_LCTRL = Kctl,
	SDLK_RCTRL = '>', /* FIXME this is a hack */

	/* FIXME not bound to anything */
	SDLK_UNKNOWN = -99999,
	SDLK_CAPSLOCK,
	SDLK_KP_ENTER,

	/* FIXME no distinction */
	KMOD_LSHIFT = 1<<0,
	KMOD_RSHIFT = KMOD_LSHIFT,
	KMOD_LCTRL = 1<<1,
	KMOD_RCTRL = KMOD_LCTRL,
	KMOD_LALT = 1<<2,
	KMOD_RALT = KMOD_LALT,
	KMOD_LGUI = 1<<3,
	KMOD_RGUI = KMOD_LGUI,

	SDL_KEYDOWN = 0,
	SDL_KEYUP,
	SDL_MOUSEBUTTONDOWN,
	SDL_MOUSEBUTTONUP,
	SDL_MOUSEWHEEL,
	SDL_MOUSEMOTION,
	SDL_QUIT,
	SDL_DROPFILE,
	SDL_TEXTINPUT,
	SDL_WINDOWEVENT,
	SDL_WINDOWEVENT_HIDDEN,
	SDL_WINDOWEVENT_SHOWN,
	SDL_WINDOWEVENT_MINIMIZED,
	SDL_WINDOWEVENT_FOCUS_LOST,
	SDL_WINDOWEVENT_EXPOSED,

	SDL_BUTTON_LEFT = 0,
	SDL_BUTTON_MIDDLE = 1,
	SDL_BUTTON_RIGHT = 2,

	SDL_BUTTON_LMASK = 1<<SDL_BUTTON_LEFT,
	SDL_BUTTON_MMASK = 1<<SDL_BUTTON_MIDDLE,
	SDL_BUTTON_RMASK = 1<<SDL_BUTTON_RIGHT,
};

struct SDL_AudioSpec {
	void (*callback)(void *, Uint8 *, int);
	void *userdata;
	int freq;
	int format;
	int channels;
	int samples;
};

struct SDL_Point {
	int x, y;
};

struct SDL_Rect {
	int x, y, w, h;
};

struct SDL_Surface {
	SDL_PixelFormat *format;
	SDL_Rect clip_rect;
	Uint32 flags;
	Uint32 key;
	int keyset;
	int w, h;
	int pitch;
	uchar pixels[];
};

struct SDL_Event {
	int type;
	union {
		struct {
			int event;
		}window;
		struct {
			struct {
				SDL_Scancode scancode;
				SDL_Keycode sym;
			}keysym;
			int repeat;
		}key;
		struct {
			int x, y;
			int button;
		}button;
		struct {
			int x, y;
		}motion;
		struct {
			char text[UTFmax+1];
		}text;
		struct {
			int x, y;
		}wheel;
		struct {
			char *file;
		}drop;
	};
};

struct SDL_DisplayMode
{
	int format;
	int w;
	int h;
	int refresh_rate;
};

#endif