Types - arabasso/tinywm GitHub Wiki

twm_window

Win32

typedef HWND twm_window;

Xlib

typedef Window twm_window;

Cocoa

C++

typedef NS::Window * twm_window;

Objective-C

typedef NSWindow * twm_window;

Structs and Enums

typedef struct twm_rect {
	int x, y;
	int width, height;
} twm_rect;

typedef struct twm_screen_mode {
	int width, height;
	int bpp;
	int hz;
} twm_screen_mode;

typedef struct twm_screen {
	int x, y, width, height;
	char name[128];
	struct {
		int count;
		int current;
		twm_screen_mode* mode;
	} modes;
} twm_screen;

typedef enum twm_window_flags {
	TWM_WINDOW_DIALOG = 0,
	TWM_WINDOW_RESIZABLE = 1 << 0,
	TWM_WINDOW_BORDERLESS = 1 << 1,
	TWM_WINDOW_FULLSCREEN = 1 << 2,
	TWM_WINDOW_DEFAULT = (TWM_WINDOW_DIALOG | TWM_WINDOW_RESIZABLE),
} twm_window_flags;

typedef enum twm_key
{
	TWM_KEY_UNKNOWN,

	TWM_KEY_A, TWM_KEY_B, TWM_KEY_C, TWM_KEY_D,
	TWM_KEY_E, TWM_KEY_F, TWM_KEY_G, TWM_KEY_H,
	TWM_KEY_I, TWM_KEY_J, TWM_KEY_K, TWM_KEY_L,
	TWM_KEY_M, TWM_KEY_N, TWM_KEY_O, TWM_KEY_P,
	TWM_KEY_Q, TWM_KEY_R, TWM_KEY_S, TWM_KEY_T,
	TWM_KEY_U, TWM_KEY_V, TWM_KEY_W, TWM_KEY_X,
	TWM_KEY_Y, TWM_KEY_Z,

	TWM_KEY_0, TWM_KEY_1, TWM_KEY_2, TWM_KEY_3,
	TWM_KEY_4, TWM_KEY_5, TWM_KEY_6, TWM_KEY_7,
	TWM_KEY_8, TWM_KEY_9,

	TWM_KEY_ESCAPE,
	TWM_KEY_TAB,
	TWM_KEY_CAPSLOCK,
	TWM_KEY_SHIFT,
	TWM_KEY_LSHIFT,
	TWM_KEY_RSHIFT,
	TWM_KEY_CONTROL,
	TWM_KEY_LCONTROL,
	TWM_KEY_RCONTROL,
	TWM_KEY_MENU,
	TWM_KEY_LALT,
	TWM_KEY_RALT,
	TWM_KEY_SPACE,
	TWM_KEY_ENTER,
	TWM_KEY_BACKSPACE,
	TWM_KEY_INSERT,
	TWM_KEY_DELETE,
	TWM_KEY_HOME,
	TWM_KEY_END,
	TWM_KEY_PAGEUP,
	TWM_KEY_PAGEDOWN,
	TWM_KEY_PRINTSCREEN,
	TWM_KEY_SCROLLLOCK,
	TWM_KEY_PAUSE,

	TWM_KEY_LEFT,
	TWM_KEY_RIGHT,
	TWM_KEY_UP,
	TWM_KEY_DOWN,

	TWM_KEY_F1, TWM_KEY_F2, TWM_KEY_F3, TWM_KEY_F4,
	TWM_KEY_F5, TWM_KEY_F6, TWM_KEY_F7, TWM_KEY_F8,
	TWM_KEY_F9, TWM_KEY_F10, TWM_KEY_F11, TWM_KEY_F12,

	TWM_KEY_NUMLOCK,
	TWM_KEY_NUMPAD0,
	TWM_KEY_NUMPAD1,
	TWM_KEY_NUMPAD2,
	TWM_KEY_NUMPAD3,
	TWM_KEY_NUMPAD4,
	TWM_KEY_NUMPAD5,
	TWM_KEY_NUMPAD6,
	TWM_KEY_NUMPAD7,
	TWM_KEY_NUMPAD8,
	TWM_KEY_NUMPAD9,
	TWM_KEY_NUMPAD_ADD,
	TWM_KEY_NUMPAD_SUBTRACT,
	TWM_KEY_NUMPAD_MULTIPLY,
	TWM_KEY_NUMPAD_DIVIDE,
	TWM_KEY_NUMPAD_DECIMAL,
	TWM_KEY_NUMPAD_ENTER,

	TWM_KEY_LSUPER,
	TWM_KEY_RSUPER,
	TWM_KEY_BROWSER_BACK,
	TWM_KEY_BROWSER_FORWARD,
	TWM_KEY_VOLUME_MUTE,
	TWM_KEY_VOLUME_DOWN,
	TWM_KEY_VOLUME_UP,

	TWM_KEY_SEMICOLON,
	TWM_KEY_EQUAL,
	TWM_KEY_COMMA,
	TWM_KEY_MINUS,
	TWM_KEY_PERIOD,
	TWM_KEY_SLASH,
	TWM_KEY_GRAVE,
	TWM_KEY_LEFT_BRACKET,
	TWM_KEY_BACKSLASH,
	TWM_KEY_RIGHT_BRACKET,
	TWM_KEY_APOSTROPHE

} twm_key;

typedef enum twm_keymod
{
	TWM_KEYMOD_NONE = 0,
	TWM_KEYMOD_SHIFT = 1 << 0,
	TWM_KEYMOD_CTRL = 1 << 1,
	TWM_KEYMOD_ALT = 1 << 2,
	TWM_KEYMOD_LSHIFT = 1 << 3,
	TWM_KEYMOD_RSHIFT = 1 << 4,
	TWM_KEYMOD_LCTRL = 1 << 5,
	TWM_KEYMOD_RCTRL = 1 << 6,
	TWM_KEYMOD_LALT = 1 << 7,
	TWM_KEYMOD_RALT = 1 << 8,
	TWM_KEYMOD_LWIN = 1 << 9,
	TWM_KEYMOD_RWIN = 1 << 10,
	TWM_KEYMOD_MENU = 1 << 11,
	TWM_KEYMOD_NUMLOCK = 1 << 12,
	TWM_KEYMOD_SCROLLLOCK = 1 << 13,
	TWM_KEYMOD_CAPSLOCK = 1 << 14,

} twm_keymod;

typedef enum twm_event_type {
	TWM_EVENT_NONE,

	TWM_EVENT_WINDOW_CLOSE,
	TWM_EVENT_WINDOW_SIZE,
	TWM_EVENT_WINDOW_MOVE,
	TWM_EVENT_WINDOW_MAXIMIZE,
	TWM_EVENT_WINDOW_MINIMIZE,
	TWM_EVENT_WINDOW_RESTORE,
	TWM_EVENT_WINDOW_ACTIVE,
	TWM_EVENT_WINDOW_INACTIVE,

	TWM_EVENT_KEY_DOWN,
	TWM_EVENT_KEY_UP,
	TWM_EVENT_KEY_CHAR,

	TWM_EVENT_RAWMOUSE_MOVE,
	TWM_EVENT_MOUSE_MOVE,
	TWM_EVENT_MOUSE_ENTER,
	TWM_EVENT_MOUSE_LEAVE,
	TWM_EVENT_MOUSE_WHEEL,
	TWM_EVENT_MOUSE_DOWN,
	TWM_EVENT_MOUSE_UP,

} twm_event_type;

typedef struct twm_window_event {
	twm_event_type type;
	twm_window window;
	int x;
	int y;
	int width;
	int height;

} twm_window_event;

typedef struct twm_keyboard_event {
	twm_event_type type;
	twm_window window;
	unsigned short key;
	char chr[5];
	twm_keymod modifiers;
} twm_keyboard_event;

typedef enum twm_mouse_button {
	TWM_MB_LEFT,
	TWM_MB_MIDDLE,
	TWM_MB_RIGHT,
	TWM_MB_X1,
	TWM_MB_X2,
} twm_mouse_button;

typedef struct twm_rawmouse_event {
	twm_event_type type;
	twm_window window;
	int dx;
	int dy;
} twm_rawmouse_event;

typedef struct twm_mouse_event {
	twm_event_type type;
	twm_window window;
	twm_mouse_button button;
	int x;
	int y;
	int z;
	int w;
} twm_mouse_event;

typedef union twm_event {
	twm_event_type type;
	twm_window_event window;
	twm_mouse_event mouse;
	twm_rawmouse_event rawmouse;
	twm_keyboard_event keyboard;
} twm_event;