1 /**
2 *	GLFW3 types.
3 *	See_Also:
4 *		$(LINK http://www.glfw.org/docs/latest/modules.html)
5 */
6 module glfw3d.glfw3.type;
7 
8 enum {
9 	GLFW_VERSION_MAJOR	= 3,
10 	GLFW_VERSION_MINOR	= 2,
11 	GLFW_VERSION_RELEASE	= 1
12 }
13 
14 enum {
15 	GLFW_TRUE	= 1,
16 	GLFW_FALSE	= 0
17 }
18 
19 enum {
20 	GLFW_RELEASE	= 0,
21 	GLFW_PRESS	= 1,
22 	GLFW_REPEAT	= 2
23 }
24 
25 enum {
26 	/* The unknown key */
27 	GLFW_KEY_UNKNOWN	= -1,
28 	/* Printable keys */
29 	GLFW_KEY_SPACE	= 32,
30 	GLFW_KEY_APOSTROPHE	= 39,	/* ' */
31 	GLFW_KEY_COMMA	= 44,	/* , */
32 	GLFW_KEY_MINUS	= 45,	/* - */
33 	GLFW_KEY_PERIOD	= 46,	/* . */
34 	GLFW_KEY_SLASH	= 47,	/* / */
35 	GLFW_KEY_0	= 48,
36 	GLFW_KEY_1	= 49,
37 	GLFW_KEY_2	= 50,
38 	GLFW_KEY_3	= 51,
39 	GLFW_KEY_4	= 52,
40 	GLFW_KEY_5	= 53,
41 	GLFW_KEY_6	= 54,
42 	GLFW_KEY_7	= 55,
43 	GLFW_KEY_8	= 56,
44 	GLFW_KEY_9	= 57,
45 	GLFW_KEY_SEMICOLON	= 59,	/* ; */
46 	GLFW_KEY_EQUAL	= 61,	/* = */
47 	GLFW_KEY_A	= 65,
48 	GLFW_KEY_B	= 66,
49 	GLFW_KEY_C	= 67,
50 	GLFW_KEY_D	= 68,
51 	GLFW_KEY_E	= 69,
52 	GLFW_KEY_F	= 70,
53 	GLFW_KEY_G	= 71,
54 	GLFW_KEY_H	= 72,
55 	GLFW_KEY_I	= 73,
56 	GLFW_KEY_J	= 74,
57 	GLFW_KEY_K	= 75,
58 	GLFW_KEY_L	= 76,
59 	GLFW_KEY_M	= 77,
60 	GLFW_KEY_N	= 78,
61 	GLFW_KEY_O	= 79,
62 	GLFW_KEY_P	= 80,
63 	GLFW_KEY_Q	= 81,
64 	GLFW_KEY_R	= 82,
65 	GLFW_KEY_S	= 83,
66 	GLFW_KEY_T	= 84,
67 	GLFW_KEY_U	= 85,
68 	GLFW_KEY_V	= 86,
69 	GLFW_KEY_W	= 87,
70 	GLFW_KEY_X	= 88,
71 	GLFW_KEY_Y	= 89,
72 	GLFW_KEY_Z	= 90,
73 	GLFW_KEY_LEFT_BRACKET	= 91,	/* [ */
74 	GLFW_KEY_BACKSLASH	= 92,	/* \ */
75 	GLFW_KEY_RIGHT_BRACKET	= 93,	/* ] */
76 	GLFW_KEY_GRAVE_ACCENT	= 96,	/* ` */
77 	GLFW_KEY_WORLD_1	= 161,	/* non-US #1 */
78 	GLFW_KEY_WORLD_2	= 162,	/* non-US #2 */
79 
80 	/* Function keys */
81 	GLFW_KEY_ESCAPE	= 256,
82 	GLFW_KEY_ENTER	= 257,
83 	GLFW_KEY_TAB	= 258,
84 	GLFW_KEY_BACKSPACE	= 259,
85 	GLFW_KEY_INSERT	= 260,
86 	GLFW_KEY_DELETE	= 261,
87 	GLFW_KEY_RIGHT	= 262,
88 	GLFW_KEY_LEFT	= 263,
89 	GLFW_KEY_DOWN	= 264,
90 	GLFW_KEY_UP	= 265,
91 	GLFW_KEY_PAGE_UP	= 266,
92 	GLFW_KEY_PAGE_DOWN	= 267,
93 	GLFW_KEY_HOME	= 268,
94 	GLFW_KEY_END	= 269,
95 	GLFW_KEY_CAPS_LOCK	= 280,
96 	GLFW_KEY_SCROLL_LOCK	= 281,
97 	GLFW_KEY_NUM_LOCK	= 282,
98 	GLFW_KEY_PRINT_SCREEN	= 283,
99 	GLFW_KEY_PAUSE	= 284,
100 	GLFW_KEY_F1	= 290,
101 	GLFW_KEY_F2	= 291,
102 	GLFW_KEY_F3	= 292,
103 	GLFW_KEY_F4	= 293,
104 	GLFW_KEY_F5	= 294,
105 	GLFW_KEY_F6	= 295,
106 	GLFW_KEY_F7	= 296,
107 	GLFW_KEY_F8	= 297,
108 	GLFW_KEY_F9	= 298,
109 	GLFW_KEY_F10	= 299,
110 	GLFW_KEY_F11	= 300,
111 	GLFW_KEY_F12	= 301,
112 	GLFW_KEY_F13	= 302,
113 	GLFW_KEY_F14	= 303,
114 	GLFW_KEY_F15	= 304,
115 	GLFW_KEY_F16	= 305,
116 	GLFW_KEY_F17	= 306,
117 	GLFW_KEY_F18	= 307,
118 	GLFW_KEY_F19	= 308,
119 	GLFW_KEY_F20	= 309,
120 	GLFW_KEY_F21	= 310,
121 	GLFW_KEY_F22	= 311,
122 	GLFW_KEY_F23	= 312,
123 	GLFW_KEY_F24	= 313,
124 	GLFW_KEY_F25	= 314,
125 	GLFW_KEY_KP_0	= 320,
126 	GLFW_KEY_KP_1	= 321,
127 	GLFW_KEY_KP_2	= 322,
128 	GLFW_KEY_KP_3	= 323,
129 	GLFW_KEY_KP_4	= 324,
130 	GLFW_KEY_KP_5	= 325,
131 	GLFW_KEY_KP_6	= 326,
132 	GLFW_KEY_KP_7	= 327,
133 	GLFW_KEY_KP_8	= 328,
134 	GLFW_KEY_KP_9	= 329,
135 	GLFW_KEY_KP_DECIMAL	= 330,
136 	GLFW_KEY_KP_DIVIDE	= 331,
137 	GLFW_KEY_KP_MULTIPLY	= 332,
138 	GLFW_KEY_KP_SUBTRACT	= 333,
139 	GLFW_KEY_KP_ADD	= 334,
140 	GLFW_KEY_KP_ENTER	= 335,
141 	GLFW_KEY_KP_EQUAL	= 336,
142 	GLFW_KEY_LEFT_SHIFT	= 340,
143 	GLFW_KEY_LEFT_CONTROL	= 341,
144 	GLFW_KEY_LEFT_ALT	= 342,
145 	GLFW_KEY_LEFT_SUPER	= 343,
146 	GLFW_KEY_RIGHT_SHIFT	= 344,
147 	GLFW_KEY_RIGHT_CONTROL	= 345,
148 	GLFW_KEY_RIGHT_ALT	= 346,
149 	GLFW_KEY_RIGHT_SUPER	= 347,
150 	GLFW_KEY_MENU	= 348,
151 	GLFW_KEY_LAST	= GLFW_KEY_MENU
152 }
153 
154 enum {
155 	GLFW_MOD_SHIFT	= 0x0001,
156 	GLFW_MOD_CONTROL	= 0x0002,
157 	GLFW_MOD_ALT	= 0x0004,
158 	GLFW_MOD_SUPER	= 0x0008,
159 }
160 
161 enum {
162 	GLFW_MOUSE_BUTTON_1	= 0,
163 	GLFW_MOUSE_BUTTON_2	= 1,
164 	GLFW_MOUSE_BUTTON_3	= 2,
165 	GLFW_MOUSE_BUTTON_4	= 3,
166 	GLFW_MOUSE_BUTTON_5	= 4,
167 	GLFW_MOUSE_BUTTON_6	= 5,
168 	GLFW_MOUSE_BUTTON_7	= 6,
169 	GLFW_MOUSE_BUTTON_8	= 7,
170 	GLFW_MOUSE_BUTTON_LAST	= GLFW_MOUSE_BUTTON_8,
171 	GLFW_MOUSE_BUTTON_LEFT	= GLFW_MOUSE_BUTTON_1,
172 	GLFW_MOUSE_BUTTON_RIGHT	= GLFW_MOUSE_BUTTON_2,
173 	GLFW_MOUSE_BUTTON_MIDDLE	= GLFW_MOUSE_BUTTON_3
174 }
175 
176 enum {
177 	GLFW_JOYSTICK_1	= 0,
178 	GLFW_JOYSTICK_2	= 1,
179 	GLFW_JOYSTICK_3	= 2,
180 	GLFW_JOYSTICK_4	= 3,
181 	GLFW_JOYSTICK_5	= 4,
182 	GLFW_JOYSTICK_6	= 5,
183 	GLFW_JOYSTICK_7	= 6,
184 	GLFW_JOYSTICK_8	= 7,
185 	GLFW_JOYSTICK_9	= 8,
186 	GLFW_JOYSTICK_10	= 9,
187 	GLFW_JOYSTICK_11	= 10,
188 	GLFW_JOYSTICK_12	= 11,
189 	GLFW_JOYSTICK_13	= 12,
190 	GLFW_JOYSTICK_14	= 13,
191 	GLFW_JOYSTICK_15	= 14,
192 	GLFW_JOYSTICK_16	= 15,
193 	GLFW_JOYSTICK_LAST	= GLFW_JOYSTICK_16
194 }
195 
196 enum {
197 	GLFW_NOT_INITIALIZED	= 0x00010001,
198 	GLFW_NO_CURRENT_CONTEXT	= 0x00010002,
199 	GLFW_INVALID_ENUM	= 0x00010003,
200 	GLFW_INVALID_VALUE	= 0x00010004,
201 	GLFW_OUT_OF_MEMORY	= 0x00010005,
202 	GLFW_API_UNAVAILABLE	= 0x00010006,
203 	GLFW_VERSION_UNAVAILABLE	= 0x00010007,
204 	GLFW_PLATFORM_ERROR	= 0x00010008,
205 	GLFW_FORMAT_UNAVAILABLE	= 0x00010009,
206 	GLFW_NO_WINDOW_CONTEXT	= 0x0001000A
207 }
208 
209 enum {
210 	GLFW_FOCUSED	= 0x00020001,
211 	GLFW_ICONIFIED	= 0x00020002,
212 	GLFW_RESIZABLE	= 0x00020003,
213 	GLFW_VISIBLE	= 0x00020004,
214 	GLFW_DECORATED	= 0x00020005,
215 	GLFW_AUTO_ICONIFY	= 0x00020006,
216 	GLFW_FLOATING	= 0x00020007,
217 	GLFW_MAXIMIZED	= 0x00020008,
218 }
219 
220 enum {
221 	GLFW_RED_BITS	= 0x00021001,
222 	GLFW_GREEN_BITS	= 0x00021002,
223 	GLFW_BLUE_BITS	= 0x00021003,
224 	GLFW_ALPHA_BITS	= 0x00021004,
225 	GLFW_DEPTH_BITS	= 0x00021005,
226 	GLFW_STENCIL_BITS	= 0x00021006,
227 	GLFW_ACCUM_RED_BITS	= 0x00021007,
228 	GLFW_ACCUM_GREEN_BITS	= 0x00021008,
229 	GLFW_ACCUM_BLUE_BITS	= 0x00021009,
230 	GLFW_ACCUM_ALPHA_BITS	= 0x0002100A,
231 	GLFW_AUX_BUFFERS	= 0x0002100B,
232 	GLFW_STEREO	= 0x0002100C,
233 	GLFW_SAMPLES	= 0x0002100D,
234 	GLFW_SRGB_CAPABLE	= 0x0002100E,
235 	GLFW_REFRESH_RATE	= 0x0002100F,
236 	GLFW_DOUBLEBUFFER	= 0x00021010,
237 }
238 
239 enum {
240 	GLFW_CLIENT_API	= 0x00022001,
241 	GLFW_CONTEXT_VERSION_MAJOR	= 0x00022002,
242 	GLFW_CONTEXT_VERSION_MINOR	= 0x00022003,
243 	GLFW_CONTEXT_REVISION	= 0x00022004,
244 	GLFW_CONTEXT_ROBUSTNESS	= 0x00022005,
245 	GLFW_OPENGL_FORWARD_COMPAT	= 0x00022006,
246 	GLFW_OPENGL_DEBUG_CONTEXT	= 0x00022007,
247 	GLFW_OPENGL_PROFILE	= 0x00022008,
248 	GLFW_CONTEXT_RELEASE_BEHAVIOR	= 0x00022009,
249 	GLFW_CONTEXT_NO_ERROR	= 0x0002200A,
250 	GLFW_CONTEXT_CREATION_API	= 0x0002200B,
251 }
252 
253 enum {
254 	GLFW_NO_API	= 0,
255 	GLFW_OPENGL_API	= 0x00030001,
256 	GLFW_OPENGL_ES_API	= 0x00030002,
257 }
258 
259 enum {
260 	GLFW_NO_ROBUSTNESS	= 0,
261 	GLFW_NO_RESET_NOTIFICATION	= 0x00031001,
262 	GLFW_LOSE_CONTEXT_ON_RESET	= 0x00031002,
263 }
264 
265 enum {
266 	GLFW_OPENGL_ANY_PROFILE	= 0,
267 	GLFW_OPENGL_CORE_PROFILE	= 0x00032001,
268 	GLFW_OPENGL_COMPAT_PROFILE	= 0x00032002,
269 }
270 
271 enum {
272 	GLFW_CURSOR	= 0x00033001,
273 	GLFW_STICKY_KEYS	= 0x00033002,
274 	GLFW_STICKY_MOUSE_BUTTONS	= 0x00033003,
275 }
276 
277 enum {
278 	GLFW_CURSOR_NORMAL	= 0x00034001,
279 	GLFW_CURSOR_HIDDEN	= 0x00034002,
280 	GLFW_CURSOR_DISABLED	= 0x00034003,
281 }
282 
283 enum {
284 	GLFW_ANY_RELEASE_BEHAVIOR	= 0,
285 	GLFW_RELEASE_BEHAVIOR_FLUSH	= 0x00035001,
286 	GLFW_RELEASE_BEHAVIOR_NONE	= 0x00035002,
287 }
288 
289 enum {
290 	GLFW_NATIVE_CONTEXT_API	= 0x00036001,
291 	GLFW_EGL_CONTEXT_API	= 0x00036002
292 }
293 
294 enum {
295 	GLFW_ARROW_CURSOR	= 0x00036001,
296 	GLFW_IBEAM_CURSOR	= 0x00036002,
297 	GLFW_CROSSHAIR_CURSOR	= 0x00036003,
298 	GLFW_HAND_CURSOR	= 0x00036004,
299 	GLFW_HRESIZE_CURSOR	= 0x00036005,
300 	GLFW_VRESIZE_CURSOR	= 0x00036006
301 }
302 
303 enum {
304 	GLFW_CONNECTED	= 0x00040001,
305 	GLFW_DISCONNECTED	= 0x00040002,
306 	GLFW_DONT_CARE	= -1
307 }
308 
309 extern(C) nothrow {
310 	alias GLFWglproc	= void function();
311 	alias GLFWvkproc	= void function();
312 }
313 
314 struct GLFWmonitor;
315 struct GLFWwindow;
316 struct GLFWcursor;
317 
318 extern(C) nothrow {
319 	alias GLFWerrorfun	= void function(int, const(char)*);
320 	alias GLFWwindowposfun	= void function(GLFWwindow*, int, int);
321 	alias GLFWwindowsizefun	= void function(GLFWwindow*, int, int);
322 	alias GLFWwindowclosefun	= void function(GLFWwindow*);
323 	alias GLFWwindowrefreshfun	= void function(GLFWwindow*);
324 	alias GLFWwindowfocusfun	= void function(GLFWwindow*, int);
325 	alias GLFWwindowiconifyfun	= void function(GLFWwindow*, int);
326 	alias GLFWframebuffersizefun	= void function(GLFWwindow*, int, int);
327 	alias GLFWmousebuttonfun	=
328 		void function(GLFWwindow*,int, int, int);
329 	alias GLFWcursorposfun	= void function(GLFWwindow*, double, double);
330 	alias GLFWcursorenterfun	= void function(GLFWwindow*, int);
331 	alias GLFWscrollfun	= void function(GLFWwindow*, double, double);
332 	alias GLFWkeyfun	=
333 		void function(GLFWwindow*, int, int, int, int);
334 	alias GLFWcharfun	= void function(GLFWwindow*, uint);
335 	alias GLFWcharmodsfun	= void function(GLFWwindow*, uint, int);
336 	alias GLFWdropfun	= void function(GLFWwindow*, int, const(char*)*);
337 	alias GLFWmonitorfun	= void function(GLFWmonitor*, int);
338 	alias GLFWjoystickfun	= void function(int, int);
339 }
340 
341 struct GLFWvidmode {
342 	int width;
343 	int height;
344 	int redBits;
345 	int greenBits;
346 	int blueBits;
347 	int refreshRate;
348 }
349 
350 struct GLFWgammaramp {
351 	ushort* red;
352 	ushort* green;
353 	ushort* blue;
354 	uint size;
355 }
356 
357 struct GLFWimage {
358 	int width;
359 	int height;
360 	ubyte* pixels;
361 }
362