GG: Base.h Source File

GG

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List
- File Members

Base.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /* GG is a GUI for SDL and OpenGL.
3 Copyright (C) 2003-2008 T. Zachary Laine
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public License
7 as published by the Free Software Foundation; either version 2.1
8 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18 02111-1307 USA
19
20 If you do not wish to comply with the terms of the LGPL please
21 contact the author as other terms are available for a fee.
22
23 Zach Laine
24 whatwasthataddress@gmail.com */
25
29 #ifndef _GG_Base_h_
30 #define _GG_Base_h_
31
32 #include <GG/Export.h>
33
34 // include OpenGL headers
35 #if defined(__APPLE__) && defined(__MACH__)
36 # include <OpenGL/gl.h>
37 # include <OpenGL/glu.h>
38 #else
39 # include <GL/gl.h>
40 # include <GL/glu.h>
41 #endif
42 #include <GG/glext.h>
43
44 // include useful boost headers
45 #include <boost/cstdint.hpp>
46 #include <boost/signal.hpp>
47
48 // other headers
49 #include <GG/Enum.h>
50 #include <GG/Clr.h>
51 #include <GG/PtRect.h>
52 #include <GG/SignalsAndSlots.h>
53
54
57 namespace GG {
58
59 extern GG_API const bool INSTRUMENT_ALL_SIGNALS;
60
61 template <class FlagType>
62 class Flags;
63 class ModKey;
64
65 template <class T>
66 class ScopedAssign
67 {
68 public:
69 ScopedAssign(T& t, T val) :
70 m_old_val(t),
71 m_t(t)
72 { m_t = val; }
73 ~ScopedAssign()
74 { m_t = m_old_val; }
75
76 private:
77 T m_old_val;
78 T& m_t;
79 };
80
83 enum WndRegion {
84 WR_NONE = -1,
85 WR_TOPLEFT = 0,
86 WR_TOP,
87 WR_TOPRIGHT,
88 WR_MIDLEFT,
89 WR_MIDDLE,
90 WR_MIDRIGHT,
91 WR_BOTTOMLEFT,
92 WR_BOTTOM,
93 WR_BOTTOMRIGHT
94 };
95
97 enum Orientation {
98 VERTICAL,
99 HORIZONTAL
100 };
101
103 enum StateButtonStyle {
104 SBSTYLE_3D_XBOX,
105 SBSTYLE_3D_CHECKBOX,
106 SBSTYLE_3D_RADIO,
107 SBSTYLE_3D_BUTTON,
108 SBSTYLE_3D_ROUND_BUTTON,
109
112 SBSTYLE_3D_TOP_ATTACHED_TAB,
113
116 SBSTYLE_3D_TOP_DETACHED_TAB
117 };
118
120 enum SliderLineStyle {
121 FLAT,
122 RAISED,
123 GROOVED
124 };
125
127 enum TabBarStyle {
130 TAB_BAR_ATTACHED,
131
134 TAB_BAR_DETACHED
135 };
136
137
140 enum Key {
141 // The keyboard symbols have been cleverly chosen to map to ASCII
142 GGK_UNKNOWN = 0,
143 GGK_FIRST = 0,
144 GGK_BACKSPACE = 8,
145 GGK_TAB = 9,
146 GGK_CLEAR = 12,
147 GGK_RETURN = 13,
148 GGK_PAUSE = 19,
149 GGK_ESCAPE = 27,
150 GGK_SPACE = 32,
151 GGK_EXCLAIM = 33,
152 GGK_QUOTEDBL = 34,
153 GGK_HASH = 35,
154 GGK_DOLLAR = 36,
155 GGK_AMPERSAND = 38,
156 GGK_QUOTE = 39,
157 GGK_LEFTPAREN = 40,
158 GGK_RIGHTPAREN = 41,
159 GGK_ASTERISK = 42,
160 GGK_PLUS = 43,
161 GGK_COMMA = 44,
162 GGK_MINUS = 45,
163 GGK_PERIOD = 46,
164 GGK_SLASH = 47,
165 GGK_0 = 48,
166 GGK_1 = 49,
167 GGK_2 = 50,
168 GGK_3 = 51,
169 GGK_4 = 52,
170 GGK_5 = 53,
171 GGK_6 = 54,
172 GGK_7 = 55,
173 GGK_8 = 56,
174 GGK_9 = 57,
175 GGK_COLON = 58,
176 GGK_SEMICOLON = 59,
177 GGK_LESS = 60,
178 GGK_EQUALS = 61,
179 GGK_GREATER = 62,
180 GGK_QUESTION = 63,
181 GGK_AT = 64,
182 GGK_A = 65,
183 GGK_B = 66,
184 GGK_C = 67,
185 GGK_D = 68,
186 GGK_E = 69,
187 GGK_F = 70,
188 GGK_G = 71,
189 GGK_H = 72,
190 GGK_I = 73,
191 GGK_J = 74,
192 GGK_K = 75,
193 GGK_L = 76,
194 GGK_M = 77,
195 GGK_N = 78,
196 GGK_O = 79,
197 GGK_P = 80,
198 GGK_Q = 81,
199 GGK_R = 82,
200 GGK_S = 83,
201 GGK_T = 84,
202 GGK_U = 85,
203 GGK_V = 86,
204 GGK_W = 87,
205 GGK_X = 88,
206 GGK_Y = 89,
207 GGK_Z = 90,
208 GGK_LEFTBRACKET = 91,
209 GGK_BACKSLASH = 92,
210 GGK_RIGHTBRACKET = 93,
211 GGK_CARET = 94,
212 GGK_UNDERSCORE = 95,
213 GGK_BACKQUOTE = 96,
214 GGK_a = 97,
215 GGK_b = 98,
216 GGK_c = 99,
217 GGK_d = 100,
218 GGK_e = 101,
219 GGK_f = 102,
220 GGK_g = 103,
221 GGK_h = 104,
222 GGK_i = 105,
223 GGK_j = 106,
224 GGK_k = 107,
225 GGK_l = 108,
226 GGK_m = 109,
227 GGK_n = 110,
228 GGK_o = 111,
229 GGK_p = 112,
230 GGK_q = 113,
231 GGK_r = 114,
232 GGK_s = 115,
233 GGK_t = 116,
234 GGK_u = 117,
235 GGK_v = 118,
236 GGK_w = 119,
237 GGK_x = 120,
238 GGK_y = 121,
239 GGK_z = 122,
240 GGK_DELETE = 127,
241 // End of ASCII mapped keysyms
242
243 // International keyboard syms
244 GGK_WORLD_0 = 160, // 0xA0
245 GGK_WORLD_1 = 161,
246 GGK_WORLD_2 = 162,
247 GGK_WORLD_3 = 163,
248 GGK_WORLD_4 = 164,
249 GGK_WORLD_5 = 165,
250 GGK_WORLD_6 = 166,
251 GGK_WORLD_7 = 167,
252 GGK_WORLD_8 = 168,
253 GGK_WORLD_9 = 169,
254 GGK_WORLD_10 = 170,
255 GGK_WORLD_11 = 171,
256 GGK_WORLD_12 = 172,
257 GGK_WORLD_13 = 173,
258 GGK_WORLD_14 = 174,
259 GGK_WORLD_15 = 175,
260 GGK_WORLD_16 = 176,
261 GGK_WORLD_17 = 177,
262 GGK_WORLD_18 = 178,
263 GGK_WORLD_19 = 179,
264 GGK_WORLD_20 = 180,
265 GGK_WORLD_21 = 181,
266 GGK_WORLD_22 = 182,
267 GGK_WORLD_23 = 183,
268 GGK_WORLD_24 = 184,
269 GGK_WORLD_25 = 185,
270 GGK_WORLD_26 = 186,
271 GGK_WORLD_27 = 187,
272 GGK_WORLD_28 = 188,
273 GGK_WORLD_29 = 189,
274 GGK_WORLD_30 = 190,
275 GGK_WORLD_31 = 191,
276 GGK_WORLD_32 = 192,
277 GGK_WORLD_33 = 193,
278 GGK_WORLD_34 = 194,
279 GGK_WORLD_35 = 195,
280 GGK_WORLD_36 = 196,
281 GGK_WORLD_37 = 197,
282 GGK_WORLD_38 = 198,
283 GGK_WORLD_39 = 199,
284 GGK_WORLD_40 = 200,
285 GGK_WORLD_41 = 201,
286 GGK_WORLD_42 = 202,
287 GGK_WORLD_43 = 203,
288 GGK_WORLD_44 = 204,
289 GGK_WORLD_45 = 205,
290 GGK_WORLD_46 = 206,
291 GGK_WORLD_47 = 207,
292 GGK_WORLD_48 = 208,
293 GGK_WORLD_49 = 209,
294 GGK_WORLD_50 = 210,
295 GGK_WORLD_51 = 211,
296 GGK_WORLD_52 = 212,
297 GGK_WORLD_53 = 213,
298 GGK_WORLD_54 = 214,
299 GGK_WORLD_55 = 215,
300 GGK_WORLD_56 = 216,
301 GGK_WORLD_57 = 217,
302 GGK_WORLD_58 = 218,
303 GGK_WORLD_59 = 219,
304 GGK_WORLD_60 = 220,
305 GGK_WORLD_61 = 221,
306 GGK_WORLD_62 = 222,
307 GGK_WORLD_63 = 223,
308 GGK_WORLD_64 = 224,
309 GGK_WORLD_65 = 225,
310 GGK_WORLD_66 = 226,
311 GGK_WORLD_67 = 227,
312 GGK_WORLD_68 = 228,
313 GGK_WORLD_69 = 229,
314 GGK_WORLD_70 = 230,
315 GGK_WORLD_71 = 231,
316 GGK_WORLD_72 = 232,
317 GGK_WORLD_73 = 233,
318 GGK_WORLD_74 = 234,
319 GGK_WORLD_75 = 235,
320 GGK_WORLD_76 = 236,
321 GGK_WORLD_77 = 237,
322 GGK_WORLD_78 = 238,
323 GGK_WORLD_79 = 239,
324 GGK_WORLD_80 = 240,
325 GGK_WORLD_81 = 241,
326 GGK_WORLD_82 = 242,
327 GGK_WORLD_83 = 243,
328 GGK_WORLD_84 = 244,
329 GGK_WORLD_85 = 245,
330 GGK_WORLD_86 = 246,
331 GGK_WORLD_87 = 247,
332 GGK_WORLD_88 = 248,
333 GGK_WORLD_89 = 249,
334 GGK_WORLD_90 = 250,
335 GGK_WORLD_91 = 251,
336 GGK_WORLD_92 = 252,
337 GGK_WORLD_93 = 253,
338 GGK_WORLD_94 = 254,
339 GGK_WORLD_95 = 255, // 0xFF
340
341 // Numeric keypad
342 GGK_KP0 = 256,
343 GGK_KP1 = 257,
344 GGK_KP2 = 258,
345 GGK_KP3 = 259,
346 GGK_KP4 = 260,
347 GGK_KP5 = 261,
348 GGK_KP6 = 262,
349 GGK_KP7 = 263,
350 GGK_KP8 = 264,
351 GGK_KP9 = 265,
352 GGK_KP_PERIOD = 266,
353 GGK_KP_DIVIDE = 267,
354 GGK_KP_MULTIPLY = 268,
355 GGK_KP_MINUS = 269,
356 GGK_KP_PLUS = 270,
357 GGK_KP_ENTER = 271,
358 GGK_KP_EQUALS = 272,
359
360 // Arrows + Home/End pad
361 GGK_UP = 273,
362 GGK_DOWN = 274,
363 GGK_RIGHT = 275,
364 GGK_LEFT = 276,
365 GGK_INSERT = 277,
366 GGK_HOME = 278,
367 GGK_END = 279,
368 GGK_PAGEUP = 280,
369 GGK_PAGEDOWN = 281,
370
371 // Function keys
372 GGK_F1 = 282,
373 GGK_F2 = 283,
374 GGK_F3 = 284,
375 GGK_F4 = 285,
376 GGK_F5 = 286,
377 GGK_F6 = 287,
378 GGK_F7 = 288,
379 GGK_F8 = 289,
380 GGK_F9 = 290,
381 GGK_F10 = 291,
382 GGK_F11 = 292,
383 GGK_F12 = 293,
384 GGK_F13 = 294,
385 GGK_F14 = 295,
386 GGK_F15 = 296,
387
388 // Key state modifier keys
389 GGK_NUMLOCK = 300,
390 GGK_CAPSLOCK = 301,
391 GGK_SCROLLOCK = 302,
392 GGK_RSHIFT = 303,
393 GGK_LSHIFT = 304,
394 GGK_RCTRL = 305,
395 GGK_LCTRL = 306,
396 GGK_RALT = 307,
397 GGK_LALT = 308,
398 GGK_RMETA = 309,
399 GGK_LMETA = 310,
400 GGK_LSUPER = 311, // Left "Windows" key
401 GGK_RSUPER = 312, // Right "Windows" key
402 GGK_MODE = 313, // "Alt Gr" key
403 GGK_COMPOSE = 314, // Multi-key compose key
404
405 // Miscellaneous function keys
406 GGK_HELP = 315,
407 GGK_PRINT = 316,
408 GGK_SYSREQ = 317,
409 GGK_BREAK = 318,
410 GGK_MENU = 319,
411 GGK_POWER = 320, // Power Macintosh power key
412 GGK_EURO = 321, // Some european keyboards
413 GGK_UNDO = 322, // Atari keyboard has Undo
414
415 // Add any other keys here
416
417 GGK_LAST
418 };
419
425 void KeypadKeyToPrintable(Key& key, Flags<ModKey> mod_keys);
426
427
429 // EnumMaps and stream operators
431
432 // define EnumMap and stream operators for Slider::LineStyleType
433 GG_ENUM_MAP_BEGIN(SliderLineStyle)
434 GG_ENUM_MAP_INSERT(FLAT)
435 GG_ENUM_MAP_INSERT(RAISED)
436 GG_ENUM_MAP_INSERT(GROOVED)
437 GG_ENUM_MAP_END
438
439 GG_ENUM_STREAM_IN(SliderLineStyle)
440 GG_ENUM_STREAM_OUT(SliderLineStyle)
441
442 // define EnumMap and stream operators for Orientation
443 GG_ENUM_MAP_BEGIN(Orientation)
444 GG_ENUM_MAP_INSERT(VERTICAL)
445 GG_ENUM_MAP_INSERT(HORIZONTAL)
446 GG_ENUM_MAP_END
447
448 GG_ENUM_STREAM_IN(Orientation)
449 GG_ENUM_STREAM_OUT(Orientation)
450
451 // define EnumMap and stream operators for StateButtonStyle
452 GG_ENUM_MAP_BEGIN(StateButtonStyle)
453 GG_ENUM_MAP_INSERT(SBSTYLE_3D_XBOX)
454 GG_ENUM_MAP_INSERT(SBSTYLE_3D_CHECKBOX)
455 GG_ENUM_MAP_INSERT(SBSTYLE_3D_RADIO)
456 GG_ENUM_MAP_INSERT(SBSTYLE_3D_BUTTON)
457 GG_ENUM_MAP_INSERT(SBSTYLE_3D_ROUND_BUTTON)
458 GG_ENUM_MAP_INSERT(SBSTYLE_3D_TOP_ATTACHED_TAB)
459 GG_ENUM_MAP_INSERT(SBSTYLE_3D_TOP_DETACHED_TAB)
460 GG_ENUM_MAP_END
461
462 GG_ENUM_STREAM_IN(StateButtonStyle)
463 GG_ENUM_STREAM_OUT(StateButtonStyle)
464
465 // define EnumMap and stream operators for TabBarStyle
466 GG_ENUM_MAP_BEGIN(TabBarStyle)
467 GG_ENUM_MAP_INSERT(TAB_BAR_ATTACHED)
468 GG_ENUM_MAP_INSERT(TAB_BAR_DETACHED)
469 GG_ENUM_MAP_END
470
471 GG_ENUM_STREAM_IN(TabBarStyle)
472 GG_ENUM_STREAM_OUT(TabBarStyle)
473
474 // define EnumMap and stream operators for Mod
475 GG_ENUM_MAP_BEGIN(Key)
476 GG_ENUM_MAP_INSERT(GGK_UNKNOWN)
477 GG_ENUM_MAP_INSERT(GGK_FIRST)
478 GG_ENUM_MAP_INSERT(GGK_BACKSPACE)
479 GG_ENUM_MAP_INSERT(GGK_TAB)
480 GG_ENUM_MAP_INSERT(GGK_CLEAR)
481 GG_ENUM_MAP_INSERT(GGK_RETURN)
482 GG_ENUM_MAP_INSERT(GGK_PAUSE)
483 GG_ENUM_MAP_INSERT(GGK_ESCAPE)
484 GG_ENUM_MAP_INSERT(GGK_SPACE)
485 GG_ENUM_MAP_INSERT(GGK_EXCLAIM)
486 GG_ENUM_MAP_INSERT(GGK_QUOTEDBL)
487 GG_ENUM_MAP_INSERT(GGK_HASH)
488 GG_ENUM_MAP_INSERT(GGK_DOLLAR)
489 GG_ENUM_MAP_INSERT(GGK_AMPERSAND)
490 GG_ENUM_MAP_INSERT(GGK_QUOTE)
491 GG_ENUM_MAP_INSERT(GGK_LEFTPAREN)
492 GG_ENUM_MAP_INSERT(GGK_RIGHTPAREN)
493 GG_ENUM_MAP_INSERT(GGK_ASTERISK)
494 GG_ENUM_MAP_INSERT(GGK_PLUS)
495 GG_ENUM_MAP_INSERT(GGK_COMMA)
496 GG_ENUM_MAP_INSERT(GGK_MINUS)
497 GG_ENUM_MAP_INSERT(GGK_PERIOD)
498 GG_ENUM_MAP_INSERT(GGK_SLASH)
499 GG_ENUM_MAP_INSERT(GGK_0)
500 GG_ENUM_MAP_INSERT(GGK_1)
501 GG_ENUM_MAP_INSERT(GGK_2)
502 GG_ENUM_MAP_INSERT(GGK_3)
503 GG_ENUM_MAP_INSERT(GGK_4)
504 GG_ENUM_MAP_INSERT(GGK_5)
505 GG_ENUM_MAP_INSERT(GGK_6)
506 GG_ENUM_MAP_INSERT(GGK_7)
507 GG_ENUM_MAP_INSERT(GGK_8)
508 GG_ENUM_MAP_INSERT(GGK_9)
509 GG_ENUM_MAP_INSERT(GGK_COLON)
510 GG_ENUM_MAP_INSERT(GGK_SEMICOLON)
511 GG_ENUM_MAP_INSERT(GGK_LESS)
512 GG_ENUM_MAP_INSERT(GGK_EQUALS)
513 GG_ENUM_MAP_INSERT(GGK_GREATER)
514 GG_ENUM_MAP_INSERT(GGK_QUESTION)
515 GG_ENUM_MAP_INSERT(GGK_AT)
516 GG_ENUM_MAP_INSERT(GGK_A)
517 GG_ENUM_MAP_INSERT(GGK_B)
518 GG_ENUM_MAP_INSERT(GGK_C)
519 GG_ENUM_MAP_INSERT(GGK_D)
520 GG_ENUM_MAP_INSERT(GGK_E)
521 GG_ENUM_MAP_INSERT(GGK_F)
522 GG_ENUM_MAP_INSERT(GGK_G)
523 GG_ENUM_MAP_INSERT(GGK_H)
524 GG_ENUM_MAP_INSERT(GGK_I)
525 GG_ENUM_MAP_INSERT(GGK_J)
526 GG_ENUM_MAP_INSERT(GGK_K)
527 GG_ENUM_MAP_INSERT(GGK_L)
528 GG_ENUM_MAP_INSERT(GGK_M)
529 GG_ENUM_MAP_INSERT(GGK_N)
530 GG_ENUM_MAP_INSERT(GGK_O)
531 GG_ENUM_MAP_INSERT(GGK_P)
532 GG_ENUM_MAP_INSERT(GGK_Q)
533 GG_ENUM_MAP_INSERT(GGK_R)
534 GG_ENUM_MAP_INSERT(GGK_S)
535 GG_ENUM_MAP_INSERT(GGK_T)
536 GG_ENUM_MAP_INSERT(GGK_U)
537 GG_ENUM_MAP_INSERT(GGK_V)
538 GG_ENUM_MAP_INSERT(GGK_W)
539 GG_ENUM_MAP_INSERT(GGK_X)
540 GG_ENUM_MAP_INSERT(GGK_Y)
541 GG_ENUM_MAP_INSERT(GGK_Z)
542 GG_ENUM_MAP_INSERT(GGK_LEFTBRACKET)
543 GG_ENUM_MAP_INSERT(GGK_BACKSLASH)
544 GG_ENUM_MAP_INSERT(GGK_RIGHTBRACKET)
545 GG_ENUM_MAP_INSERT(GGK_CARET)
546 GG_ENUM_MAP_INSERT(GGK_UNDERSCORE)
547 GG_ENUM_MAP_INSERT(GGK_BACKQUOTE)
548 GG_ENUM_MAP_INSERT(GGK_a)
549 GG_ENUM_MAP_INSERT(GGK_b)
550 GG_ENUM_MAP_INSERT(GGK_c)
551 GG_ENUM_MAP_INSERT(GGK_d)
552 GG_ENUM_MAP_INSERT(GGK_e)
553 GG_ENUM_MAP_INSERT(GGK_f)
554 GG_ENUM_MAP_INSERT(GGK_g)
555 GG_ENUM_MAP_INSERT(GGK_h)
556 GG_ENUM_MAP_INSERT(GGK_i)
557 GG_ENUM_MAP_INSERT(GGK_j)
558 GG_ENUM_MAP_INSERT(GGK_k)
559 GG_ENUM_MAP_INSERT(GGK_l)
560 GG_ENUM_MAP_INSERT(GGK_m)
561 GG_ENUM_MAP_INSERT(GGK_n)
562 GG_ENUM_MAP_INSERT(GGK_o)
563 GG_ENUM_MAP_INSERT(GGK_p)
564 GG_ENUM_MAP_INSERT(GGK_q)
565 GG_ENUM_MAP_INSERT(GGK_r)
566 GG_ENUM_MAP_INSERT(GGK_s)
567 GG_ENUM_MAP_INSERT(GGK_t)
568 GG_ENUM_MAP_INSERT(GGK_u)
569 GG_ENUM_MAP_INSERT(GGK_v)
570 GG_ENUM_MAP_INSERT(GGK_w)
571 GG_ENUM_MAP_INSERT(GGK_x)
572 GG_ENUM_MAP_INSERT(GGK_y)
573 GG_ENUM_MAP_INSERT(GGK_z)
574 GG_ENUM_MAP_INSERT(GGK_DELETE)
575
576 GG_ENUM_MAP_INSERT(GGK_WORLD_0)
577 GG_ENUM_MAP_INSERT(GGK_WORLD_1)
578 GG_ENUM_MAP_INSERT(GGK_WORLD_2)
579 GG_ENUM_MAP_INSERT(GGK_WORLD_3)
580 GG_ENUM_MAP_INSERT(GGK_WORLD_4)
581 GG_ENUM_MAP_INSERT(GGK_WORLD_5)
582 GG_ENUM_MAP_INSERT(GGK_WORLD_6)
583 GG_ENUM_MAP_INSERT(GGK_WORLD_7)
584 GG_ENUM_MAP_INSERT(GGK_WORLD_8)
585 GG_ENUM_MAP_INSERT(GGK_WORLD_9)
586 GG_ENUM_MAP_INSERT(GGK_WORLD_10)
587 GG_ENUM_MAP_INSERT(GGK_WORLD_11)
588 GG_ENUM_MAP_INSERT(GGK_WORLD_12)
589 GG_ENUM_MAP_INSERT(GGK_WORLD_13)
590 GG_ENUM_MAP_INSERT(GGK_WORLD_14)
591 GG_ENUM_MAP_INSERT(GGK_WORLD_15)
592 GG_ENUM_MAP_INSERT(GGK_WORLD_16)
593 GG_ENUM_MAP_INSERT(GGK_WORLD_17)
594 GG_ENUM_MAP_INSERT(GGK_WORLD_18)
595 GG_ENUM_MAP_INSERT(GGK_WORLD_19)
596 GG_ENUM_MAP_INSERT(GGK_WORLD_20)
597 GG_ENUM_MAP_INSERT(GGK_WORLD_21)
598 GG_ENUM_MAP_INSERT(GGK_WORLD_22)
599 GG_ENUM_MAP_INSERT(GGK_WORLD_23)
600 GG_ENUM_MAP_INSERT(GGK_WORLD_24)
601 GG_ENUM_MAP_INSERT(GGK_WORLD_25)
602 GG_ENUM_MAP_INSERT(GGK_WORLD_26)
603 GG_ENUM_MAP_INSERT(GGK_WORLD_27)
604 GG_ENUM_MAP_INSERT(GGK_WORLD_28)
605 GG_ENUM_MAP_INSERT(GGK_WORLD_29)
606 GG_ENUM_MAP_INSERT(GGK_WORLD_30)
607 GG_ENUM_MAP_INSERT(GGK_WORLD_31)
608 GG_ENUM_MAP_INSERT(GGK_WORLD_32)
609 GG_ENUM_MAP_INSERT(GGK_WORLD_33)
610 GG_ENUM_MAP_INSERT(GGK_WORLD_34)
611 GG_ENUM_MAP_INSERT(GGK_WORLD_35)
612 GG_ENUM_MAP_INSERT(GGK_WORLD_36)
613 GG_ENUM_MAP_INSERT(GGK_WORLD_37)
614 GG_ENUM_MAP_INSERT(GGK_WORLD_38)
615 GG_ENUM_MAP_INSERT(GGK_WORLD_39)
616 GG_ENUM_MAP_INSERT(GGK_WORLD_40)
617 GG_ENUM_MAP_INSERT(GGK_WORLD_41)
618 GG_ENUM_MAP_INSERT(GGK_WORLD_42)
619 GG_ENUM_MAP_INSERT(GGK_WORLD_43)
620 GG_ENUM_MAP_INSERT(GGK_WORLD_44)
621 GG_ENUM_MAP_INSERT(GGK_WORLD_45)
622 GG_ENUM_MAP_INSERT(GGK_WORLD_46)
623 GG_ENUM_MAP_INSERT(GGK_WORLD_47)
624 GG_ENUM_MAP_INSERT(GGK_WORLD_48)
625 GG_ENUM_MAP_INSERT(GGK_WORLD_49)
626 GG_ENUM_MAP_INSERT(GGK_WORLD_50)
627 GG_ENUM_MAP_INSERT(GGK_WORLD_51)
628 GG_ENUM_MAP_INSERT(GGK_WORLD_52)
629 GG_ENUM_MAP_INSERT(GGK_WORLD_53)
630 GG_ENUM_MAP_INSERT(GGK_WORLD_54)
631 GG_ENUM_MAP_INSERT(GGK_WORLD_55)
632 GG_ENUM_MAP_INSERT(GGK_WORLD_56)
633 GG_ENUM_MAP_INSERT(GGK_WORLD_57)
634 GG_ENUM_MAP_INSERT(GGK_WORLD_58)
635 GG_ENUM_MAP_INSERT(GGK_WORLD_59)
636 GG_ENUM_MAP_INSERT(GGK_WORLD_60)
637 GG_ENUM_MAP_INSERT(GGK_WORLD_61)
638 GG_ENUM_MAP_INSERT(GGK_WORLD_62)
639 GG_ENUM_MAP_INSERT(GGK_WORLD_63)
640 GG_ENUM_MAP_INSERT(GGK_WORLD_64)
641 GG_ENUM_MAP_INSERT(GGK_WORLD_65)
642 GG_ENUM_MAP_INSERT(GGK_WORLD_66)
643 GG_ENUM_MAP_INSERT(GGK_WORLD_67)
644 GG_ENUM_MAP_INSERT(GGK_WORLD_68)
645 GG_ENUM_MAP_INSERT(GGK_WORLD_69)
646 GG_ENUM_MAP_INSERT(GGK_WORLD_70)
647 GG_ENUM_MAP_INSERT(GGK_WORLD_71)
648 GG_ENUM_MAP_INSERT(GGK_WORLD_72)
649 GG_ENUM_MAP_INSERT(GGK_WORLD_73)
650 GG_ENUM_MAP_INSERT(GGK_WORLD_74)
651 GG_ENUM_MAP_INSERT(GGK_WORLD_75)
652 GG_ENUM_MAP_INSERT(GGK_WORLD_76)
653 GG_ENUM_MAP_INSERT(GGK_WORLD_77)
654 GG_ENUM_MAP_INSERT(GGK_WORLD_78)
655 GG_ENUM_MAP_INSERT(GGK_WORLD_79)
656 GG_ENUM_MAP_INSERT(GGK_WORLD_80)
657 GG_ENUM_MAP_INSERT(GGK_WORLD_81)
658 GG_ENUM_MAP_INSERT(GGK_WORLD_82)
659 GG_ENUM_MAP_INSERT(GGK_WORLD_83)
660 GG_ENUM_MAP_INSERT(GGK_WORLD_84)
661 GG_ENUM_MAP_INSERT(GGK_WORLD_85)
662 GG_ENUM_MAP_INSERT(GGK_WORLD_86)
663 GG_ENUM_MAP_INSERT(GGK_WORLD_87)
664 GG_ENUM_MAP_INSERT(GGK_WORLD_88)
665 GG_ENUM_MAP_INSERT(GGK_WORLD_89)
666 GG_ENUM_MAP_INSERT(GGK_WORLD_90)
667 GG_ENUM_MAP_INSERT(GGK_WORLD_91)
668 GG_ENUM_MAP_INSERT(GGK_WORLD_92)
669 GG_ENUM_MAP_INSERT(GGK_WORLD_93)
670 GG_ENUM_MAP_INSERT(GGK_WORLD_94)
671 GG_ENUM_MAP_INSERT(GGK_WORLD_95)
672
673 GG_ENUM_MAP_INSERT(GGK_KP0)
674 GG_ENUM_MAP_INSERT(GGK_KP1)
675 GG_ENUM_MAP_INSERT(GGK_KP2)
676 GG_ENUM_MAP_INSERT(GGK_KP3)
677 GG_ENUM_MAP_INSERT(GGK_KP4)
678 GG_ENUM_MAP_INSERT(GGK_KP5)
679 GG_ENUM_MAP_INSERT(GGK_KP6)
680 GG_ENUM_MAP_INSERT(GGK_KP7)
681 GG_ENUM_MAP_INSERT(GGK_KP8)
682 GG_ENUM_MAP_INSERT(GGK_KP9)
683 GG_ENUM_MAP_INSERT(GGK_KP_PERIOD)
684 GG_ENUM_MAP_INSERT(GGK_KP_DIVIDE)
685 GG_ENUM_MAP_INSERT(GGK_KP_MULTIPLY)
686 GG_ENUM_MAP_INSERT(GGK_KP_MINUS)
687 GG_ENUM_MAP_INSERT(GGK_KP_PLUS)
688 GG_ENUM_MAP_INSERT(GGK_KP_ENTER)
689 GG_ENUM_MAP_INSERT(GGK_KP_EQUALS)
690
691 GG_ENUM_MAP_INSERT(GGK_UP)
692 GG_ENUM_MAP_INSERT(GGK_DOWN)
693 GG_ENUM_MAP_INSERT(GGK_RIGHT)
694 GG_ENUM_MAP_INSERT(GGK_LEFT)
695 GG_ENUM_MAP_INSERT(GGK_INSERT)
696 GG_ENUM_MAP_INSERT(GGK_HOME)
697 GG_ENUM_MAP_INSERT(GGK_END)
698 GG_ENUM_MAP_INSERT(GGK_PAGEUP)
699 GG_ENUM_MAP_INSERT(GGK_PAGEDOWN)
700
701 GG_ENUM_MAP_INSERT(GGK_F1)
702 GG_ENUM_MAP_INSERT(GGK_F2)
703 GG_ENUM_MAP_INSERT(GGK_F3)
704 GG_ENUM_MAP_INSERT(GGK_F4)
705 GG_ENUM_MAP_INSERT(GGK_F5)
706 GG_ENUM_MAP_INSERT(GGK_F6)
707 GG_ENUM_MAP_INSERT(GGK_F7)
708 GG_ENUM_MAP_INSERT(GGK_F8)
709 GG_ENUM_MAP_INSERT(GGK_F9)
710 GG_ENUM_MAP_INSERT(GGK_F10)
711 GG_ENUM_MAP_INSERT(GGK_F11)
712 GG_ENUM_MAP_INSERT(GGK_F12)
713 GG_ENUM_MAP_INSERT(GGK_F13)
714 GG_ENUM_MAP_INSERT(GGK_F14)
715 GG_ENUM_MAP_INSERT(GGK_F15)
716
717 GG_ENUM_MAP_INSERT(GGK_NUMLOCK)
718 GG_ENUM_MAP_INSERT(GGK_CAPSLOCK)
719 GG_ENUM_MAP_INSERT(GGK_SCROLLOCK)
720 GG_ENUM_MAP_INSERT(GGK_RSHIFT)
721 GG_ENUM_MAP_INSERT(GGK_LSHIFT)
722 GG_ENUM_MAP_INSERT(GGK_RCTRL)
723 GG_ENUM_MAP_INSERT(GGK_LCTRL)
724 GG_ENUM_MAP_INSERT(GGK_RALT)
725 GG_ENUM_MAP_INSERT(GGK_LALT)
726 GG_ENUM_MAP_INSERT(GGK_RMETA)
727 GG_ENUM_MAP_INSERT(GGK_LMETA)
728 GG_ENUM_MAP_INSERT(GGK_LSUPER)
729 GG_ENUM_MAP_INSERT(GGK_RSUPER)
730 GG_ENUM_MAP_INSERT(GGK_MODE)
731 GG_ENUM_MAP_INSERT(GGK_COMPOSE)
732
733 GG_ENUM_MAP_INSERT(GGK_HELP)
734 GG_ENUM_MAP_INSERT(GGK_PRINT)
735 GG_ENUM_MAP_INSERT(GGK_SYSREQ)
736 GG_ENUM_MAP_INSERT(GGK_BREAK)
737 GG_ENUM_MAP_INSERT(GGK_MENU)
738 GG_ENUM_MAP_INSERT(GGK_POWER)
739 GG_ENUM_MAP_INSERT(GGK_EURO)
740 GG_ENUM_MAP_INSERT(GGK_UNDO)
741
742 GG_ENUM_MAP_INSERT(GGK_LAST)
743 GG_ENUM_MAP_END
744
745 GG_ENUM_STREAM_IN(Key)
746 GG_ENUM_STREAM_OUT(Key)
747
748 } // namespace GG
749
750 #endif
751