GG

Base.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 /* GG is a GUI for SDL and OpenGL.
00003    Copyright (C) 2003-2008 T. Zachary Laine
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public License
00007    as published by the Free Software Foundation; either version 2.1
00008    of the License, or (at your option) any later version.
00009    
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014     
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with this library; if not, write to the Free
00017    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018    02111-1307 USA
00019 
00020    If you do not wish to comply with the terms of the LGPL please
00021    contact the author as other terms are available for a fee.
00022     
00023    Zach Laine
00024    whatwasthataddress@gmail.com */
00025 
00029 #ifndef _GG_Base_h_
00030 #define _GG_Base_h_
00031 
00032 #include <GG/Export.h>
00033 
00034 // include OpenGL headers
00035 #if defined(__APPLE__) && defined(__MACH__)
00036 # include <OpenGL/gl.h>
00037 # include <OpenGL/glu.h>
00038 #else
00039 # include <GL/gl.h>
00040 # include <GL/glu.h>
00041 #endif
00042 #include <GG/glext.h>
00043 
00044 // include useful boost headers
00045 #include <boost/cstdint.hpp>
00046 #include <boost/signal.hpp>
00047 
00048 // other headers
00049 #include <GG/Enum.h>
00050 #include <GG/Clr.h>
00051 #include <GG/PtRect.h>
00052 #include <GG/SignalsAndSlots.h>
00053 
00054 
00057 namespace GG {
00058 
00059 extern GG_API const bool INSTRUMENT_ALL_SIGNALS;
00060 
00061 template <class FlagType>
00062 class Flags;
00063 class ModKey;
00064 
00065 template <class T>
00066 class ScopedAssign
00067 {
00068 public:
00069     ScopedAssign(T& t, T val) :
00070         m_old_val(t),
00071         m_t(t)
00072         { m_t = val; }
00073     ~ScopedAssign()
00074         { m_t = m_old_val; }
00075 
00076 private:
00077     T m_old_val;
00078     T& m_t;
00079 };
00080 
00083 enum WndRegion {
00084     WR_NONE = -1, 
00085     WR_TOPLEFT = 0, 
00086     WR_TOP, 
00087     WR_TOPRIGHT, 
00088     WR_MIDLEFT, 
00089     WR_MIDDLE, 
00090     WR_MIDRIGHT, 
00091     WR_BOTTOMLEFT, 
00092     WR_BOTTOM, 
00093     WR_BOTTOMRIGHT
00094 };
00095 
00097 enum Orientation {
00098     VERTICAL,  
00099     HORIZONTAL 
00100 };
00101 
00103 enum StateButtonStyle {
00104     SBSTYLE_3D_XBOX,         
00105     SBSTYLE_3D_CHECKBOX,     
00106     SBSTYLE_3D_RADIO,        
00107     SBSTYLE_3D_BUTTON,       
00108     SBSTYLE_3D_ROUND_BUTTON, 
00109 
00112     SBSTYLE_3D_TOP_ATTACHED_TAB,
00113 
00116     SBSTYLE_3D_TOP_DETACHED_TAB
00117 };
00118 
00120 enum SliderLineStyle {
00121     FLAT,
00122     RAISED,
00123     GROOVED
00124 };
00125 
00127 enum TabBarStyle {
00130     TAB_BAR_ATTACHED,
00131 
00134     TAB_BAR_DETACHED
00135 };
00136 
00137 
00140 enum Key {
00141     // The keyboard symbols have been cleverly chosen to map to ASCII
00142     GGK_UNKNOWN      = 0,
00143     GGK_FIRST        = 0,
00144     GGK_BACKSPACE    = 8,
00145     GGK_TAB          = 9,
00146     GGK_CLEAR        = 12,
00147     GGK_RETURN       = 13,
00148     GGK_PAUSE        = 19,
00149     GGK_ESCAPE       = 27,
00150     GGK_SPACE        = 32,
00151     GGK_EXCLAIM      = 33,
00152     GGK_QUOTEDBL     = 34,
00153     GGK_HASH         = 35,
00154     GGK_DOLLAR       = 36,
00155     GGK_AMPERSAND    = 38,
00156     GGK_QUOTE        = 39,
00157     GGK_LEFTPAREN    = 40,
00158     GGK_RIGHTPAREN   = 41,
00159     GGK_ASTERISK     = 42,
00160     GGK_PLUS         = 43,
00161     GGK_COMMA        = 44,
00162     GGK_MINUS        = 45,
00163     GGK_PERIOD       = 46,
00164     GGK_SLASH        = 47,
00165     GGK_0            = 48,
00166     GGK_1            = 49,
00167     GGK_2            = 50,
00168     GGK_3            = 51,
00169     GGK_4            = 52,
00170     GGK_5            = 53,
00171     GGK_6            = 54,
00172     GGK_7            = 55,
00173     GGK_8            = 56,
00174     GGK_9            = 57,
00175     GGK_COLON        = 58,
00176     GGK_SEMICOLON    = 59,
00177     GGK_LESS         = 60,
00178     GGK_EQUALS       = 61,
00179     GGK_GREATER      = 62,
00180     GGK_QUESTION     = 63,
00181     GGK_AT           = 64,
00182     GGK_A            = 65,
00183     GGK_B            = 66,
00184     GGK_C            = 67,
00185     GGK_D            = 68,
00186     GGK_E            = 69,
00187     GGK_F            = 70,
00188     GGK_G            = 71,
00189     GGK_H            = 72,
00190     GGK_I            = 73,
00191     GGK_J            = 74,
00192     GGK_K            = 75,
00193     GGK_L            = 76,
00194     GGK_M            = 77,
00195     GGK_N            = 78,
00196     GGK_O            = 79,
00197     GGK_P            = 80,
00198     GGK_Q            = 81,
00199     GGK_R            = 82,
00200     GGK_S            = 83,
00201     GGK_T            = 84,
00202     GGK_U            = 85,
00203     GGK_V            = 86,
00204     GGK_W            = 87,
00205     GGK_X            = 88,
00206     GGK_Y            = 89,
00207     GGK_Z            = 90,
00208     GGK_LEFTBRACKET  = 91,
00209     GGK_BACKSLASH    = 92,
00210     GGK_RIGHTBRACKET = 93,
00211     GGK_CARET        = 94,
00212     GGK_UNDERSCORE   = 95,
00213     GGK_BACKQUOTE    = 96,
00214     GGK_a            = 97,
00215     GGK_b            = 98,
00216     GGK_c            = 99,
00217     GGK_d            = 100,
00218     GGK_e            = 101,
00219     GGK_f            = 102,
00220     GGK_g            = 103,
00221     GGK_h            = 104,
00222     GGK_i            = 105,
00223     GGK_j            = 106,
00224     GGK_k            = 107,
00225     GGK_l            = 108,
00226     GGK_m            = 109,
00227     GGK_n            = 110,
00228     GGK_o            = 111,
00229     GGK_p            = 112,
00230     GGK_q            = 113,
00231     GGK_r            = 114,
00232     GGK_s            = 115,
00233     GGK_t            = 116,
00234     GGK_u            = 117,
00235     GGK_v            = 118,
00236     GGK_w            = 119,
00237     GGK_x            = 120,
00238     GGK_y            = 121,
00239     GGK_z            = 122,
00240     GGK_DELETE       = 127,
00241     // End of ASCII mapped keysyms
00242 
00243     // International keyboard syms
00244     GGK_WORLD_0      = 160,      // 0xA0
00245     GGK_WORLD_1      = 161,
00246     GGK_WORLD_2      = 162,
00247     GGK_WORLD_3      = 163,
00248     GGK_WORLD_4      = 164,
00249     GGK_WORLD_5      = 165,
00250     GGK_WORLD_6      = 166,
00251     GGK_WORLD_7      = 167,
00252     GGK_WORLD_8      = 168,
00253     GGK_WORLD_9      = 169,
00254     GGK_WORLD_10     = 170,
00255     GGK_WORLD_11     = 171,
00256     GGK_WORLD_12     = 172,
00257     GGK_WORLD_13     = 173,
00258     GGK_WORLD_14     = 174,
00259     GGK_WORLD_15     = 175,
00260     GGK_WORLD_16     = 176,
00261     GGK_WORLD_17     = 177,
00262     GGK_WORLD_18     = 178,
00263     GGK_WORLD_19     = 179,
00264     GGK_WORLD_20     = 180,
00265     GGK_WORLD_21     = 181,
00266     GGK_WORLD_22     = 182,
00267     GGK_WORLD_23     = 183,
00268     GGK_WORLD_24     = 184,
00269     GGK_WORLD_25     = 185,
00270     GGK_WORLD_26     = 186,
00271     GGK_WORLD_27     = 187,
00272     GGK_WORLD_28     = 188,
00273     GGK_WORLD_29     = 189,
00274     GGK_WORLD_30     = 190,
00275     GGK_WORLD_31     = 191,
00276     GGK_WORLD_32     = 192,
00277     GGK_WORLD_33     = 193,
00278     GGK_WORLD_34     = 194,
00279     GGK_WORLD_35     = 195,
00280     GGK_WORLD_36     = 196,
00281     GGK_WORLD_37     = 197,
00282     GGK_WORLD_38     = 198,
00283     GGK_WORLD_39     = 199,
00284     GGK_WORLD_40     = 200,
00285     GGK_WORLD_41     = 201,
00286     GGK_WORLD_42     = 202,
00287     GGK_WORLD_43     = 203,
00288     GGK_WORLD_44     = 204,
00289     GGK_WORLD_45     = 205,
00290     GGK_WORLD_46     = 206,
00291     GGK_WORLD_47     = 207,
00292     GGK_WORLD_48     = 208,
00293     GGK_WORLD_49     = 209,
00294     GGK_WORLD_50     = 210,
00295     GGK_WORLD_51     = 211,
00296     GGK_WORLD_52     = 212,
00297     GGK_WORLD_53     = 213,
00298     GGK_WORLD_54     = 214,
00299     GGK_WORLD_55     = 215,
00300     GGK_WORLD_56     = 216,
00301     GGK_WORLD_57     = 217,
00302     GGK_WORLD_58     = 218,
00303     GGK_WORLD_59     = 219,
00304     GGK_WORLD_60     = 220,
00305     GGK_WORLD_61     = 221,
00306     GGK_WORLD_62     = 222,
00307     GGK_WORLD_63     = 223,
00308     GGK_WORLD_64     = 224,
00309     GGK_WORLD_65     = 225,
00310     GGK_WORLD_66     = 226,
00311     GGK_WORLD_67     = 227,
00312     GGK_WORLD_68     = 228,
00313     GGK_WORLD_69     = 229,
00314     GGK_WORLD_70     = 230,
00315     GGK_WORLD_71     = 231,
00316     GGK_WORLD_72     = 232,
00317     GGK_WORLD_73     = 233,
00318     GGK_WORLD_74     = 234,
00319     GGK_WORLD_75     = 235,
00320     GGK_WORLD_76     = 236,
00321     GGK_WORLD_77     = 237,
00322     GGK_WORLD_78     = 238,
00323     GGK_WORLD_79     = 239,
00324     GGK_WORLD_80     = 240,
00325     GGK_WORLD_81     = 241,
00326     GGK_WORLD_82     = 242,
00327     GGK_WORLD_83     = 243,
00328     GGK_WORLD_84     = 244,
00329     GGK_WORLD_85     = 245,
00330     GGK_WORLD_86     = 246,
00331     GGK_WORLD_87     = 247,
00332     GGK_WORLD_88     = 248,
00333     GGK_WORLD_89     = 249,
00334     GGK_WORLD_90     = 250,
00335     GGK_WORLD_91     = 251,
00336     GGK_WORLD_92     = 252,
00337     GGK_WORLD_93     = 253,
00338     GGK_WORLD_94     = 254,
00339     GGK_WORLD_95     = 255,      // 0xFF
00340 
00341     // Numeric keypad
00342     GGK_KP0          = 256,
00343     GGK_KP1          = 257,
00344     GGK_KP2          = 258,
00345     GGK_KP3          = 259,
00346     GGK_KP4          = 260,
00347     GGK_KP5          = 261,
00348     GGK_KP6          = 262,
00349     GGK_KP7          = 263,
00350     GGK_KP8          = 264,
00351     GGK_KP9          = 265,
00352     GGK_KP_PERIOD    = 266,
00353     GGK_KP_DIVIDE    = 267,
00354     GGK_KP_MULTIPLY  = 268,
00355     GGK_KP_MINUS     = 269,
00356     GGK_KP_PLUS      = 270,
00357     GGK_KP_ENTER     = 271,
00358     GGK_KP_EQUALS    = 272,
00359 
00360     // Arrows + Home/End pad
00361     GGK_UP           = 273,
00362     GGK_DOWN         = 274,
00363     GGK_RIGHT        = 275,
00364     GGK_LEFT         = 276,
00365     GGK_INSERT       = 277,
00366     GGK_HOME         = 278,
00367     GGK_END          = 279,
00368     GGK_PAGEUP       = 280,
00369     GGK_PAGEDOWN     = 281,
00370 
00371     // Function keys
00372     GGK_F1           = 282,
00373     GGK_F2           = 283,
00374     GGK_F3           = 284,
00375     GGK_F4           = 285,
00376     GGK_F5           = 286,
00377     GGK_F6           = 287,
00378     GGK_F7           = 288,
00379     GGK_F8           = 289,
00380     GGK_F9           = 290,
00381     GGK_F10          = 291,
00382     GGK_F11          = 292,
00383     GGK_F12          = 293,
00384     GGK_F13          = 294,
00385     GGK_F14          = 295,
00386     GGK_F15          = 296,
00387 
00388     // Key state modifier keys
00389     GGK_NUMLOCK      = 300,
00390     GGK_CAPSLOCK     = 301,
00391     GGK_SCROLLOCK    = 302,
00392     GGK_RSHIFT       = 303,
00393     GGK_LSHIFT       = 304,
00394     GGK_RCTRL        = 305,
00395     GGK_LCTRL        = 306,
00396     GGK_RALT         = 307,
00397     GGK_LALT         = 308,
00398     GGK_RMETA        = 309,
00399     GGK_LMETA        = 310,
00400     GGK_LSUPER       = 311,      // Left "Windows" key
00401     GGK_RSUPER       = 312,      // Right "Windows" key
00402     GGK_MODE         = 313,      // "Alt Gr" key
00403     GGK_COMPOSE      = 314,      // Multi-key compose key
00404 
00405     // Miscellaneous function keys
00406     GGK_HELP         = 315,
00407     GGK_PRINT        = 316,
00408     GGK_SYSREQ       = 317,
00409     GGK_BREAK        = 318,
00410     GGK_MENU         = 319,
00411     GGK_POWER        = 320,      // Power Macintosh power key
00412     GGK_EURO         = 321,      // Some european keyboards
00413     GGK_UNDO         = 322,      // Atari keyboard has Undo
00414 
00415     // Add any other keys here
00416 
00417     GGK_LAST
00418 };
00419 
00425 void KeypadKeyToPrintable(Key& key, Flags<ModKey> mod_keys);
00426 
00427 
00429 // EnumMaps and stream operators
00431 
00432 // define EnumMap and stream operators for Slider::LineStyleType
00433 GG_ENUM_MAP_BEGIN(SliderLineStyle)
00434     GG_ENUM_MAP_INSERT(FLAT)
00435     GG_ENUM_MAP_INSERT(RAISED)
00436     GG_ENUM_MAP_INSERT(GROOVED)
00437 GG_ENUM_MAP_END
00438 
00439 GG_ENUM_STREAM_IN(SliderLineStyle)
00440 GG_ENUM_STREAM_OUT(SliderLineStyle)
00441 
00442 // define EnumMap and stream operators for Orientation
00443 GG_ENUM_MAP_BEGIN(Orientation)
00444     GG_ENUM_MAP_INSERT(VERTICAL)
00445     GG_ENUM_MAP_INSERT(HORIZONTAL)
00446 GG_ENUM_MAP_END
00447 
00448 GG_ENUM_STREAM_IN(Orientation)
00449 GG_ENUM_STREAM_OUT(Orientation)
00450 
00451 // define EnumMap and stream operators for StateButtonStyle
00452 GG_ENUM_MAP_BEGIN(StateButtonStyle)
00453     GG_ENUM_MAP_INSERT(SBSTYLE_3D_XBOX)
00454     GG_ENUM_MAP_INSERT(SBSTYLE_3D_CHECKBOX)
00455     GG_ENUM_MAP_INSERT(SBSTYLE_3D_RADIO)
00456     GG_ENUM_MAP_INSERT(SBSTYLE_3D_BUTTON)
00457     GG_ENUM_MAP_INSERT(SBSTYLE_3D_ROUND_BUTTON)
00458     GG_ENUM_MAP_INSERT(SBSTYLE_3D_TOP_ATTACHED_TAB)
00459     GG_ENUM_MAP_INSERT(SBSTYLE_3D_TOP_DETACHED_TAB)
00460 GG_ENUM_MAP_END
00461 
00462 GG_ENUM_STREAM_IN(StateButtonStyle)
00463 GG_ENUM_STREAM_OUT(StateButtonStyle)
00464 
00465 // define EnumMap and stream operators for TabBarStyle
00466 GG_ENUM_MAP_BEGIN(TabBarStyle)
00467     GG_ENUM_MAP_INSERT(TAB_BAR_ATTACHED)
00468     GG_ENUM_MAP_INSERT(TAB_BAR_DETACHED)
00469 GG_ENUM_MAP_END
00470 
00471 GG_ENUM_STREAM_IN(TabBarStyle)
00472 GG_ENUM_STREAM_OUT(TabBarStyle)
00473 
00474 // define EnumMap and stream operators for Mod
00475 GG_ENUM_MAP_BEGIN(Key)
00476     GG_ENUM_MAP_INSERT(GGK_UNKNOWN)
00477     GG_ENUM_MAP_INSERT(GGK_FIRST)
00478     GG_ENUM_MAP_INSERT(GGK_BACKSPACE)
00479     GG_ENUM_MAP_INSERT(GGK_TAB)
00480     GG_ENUM_MAP_INSERT(GGK_CLEAR)
00481     GG_ENUM_MAP_INSERT(GGK_RETURN)
00482     GG_ENUM_MAP_INSERT(GGK_PAUSE)
00483     GG_ENUM_MAP_INSERT(GGK_ESCAPE)
00484     GG_ENUM_MAP_INSERT(GGK_SPACE)
00485     GG_ENUM_MAP_INSERT(GGK_EXCLAIM)
00486     GG_ENUM_MAP_INSERT(GGK_QUOTEDBL)
00487     GG_ENUM_MAP_INSERT(GGK_HASH)
00488     GG_ENUM_MAP_INSERT(GGK_DOLLAR)
00489     GG_ENUM_MAP_INSERT(GGK_AMPERSAND)
00490     GG_ENUM_MAP_INSERT(GGK_QUOTE)
00491     GG_ENUM_MAP_INSERT(GGK_LEFTPAREN)
00492     GG_ENUM_MAP_INSERT(GGK_RIGHTPAREN)
00493     GG_ENUM_MAP_INSERT(GGK_ASTERISK)
00494     GG_ENUM_MAP_INSERT(GGK_PLUS)
00495     GG_ENUM_MAP_INSERT(GGK_COMMA)
00496     GG_ENUM_MAP_INSERT(GGK_MINUS)
00497     GG_ENUM_MAP_INSERT(GGK_PERIOD)
00498     GG_ENUM_MAP_INSERT(GGK_SLASH)
00499     GG_ENUM_MAP_INSERT(GGK_0)
00500     GG_ENUM_MAP_INSERT(GGK_1)
00501     GG_ENUM_MAP_INSERT(GGK_2)
00502     GG_ENUM_MAP_INSERT(GGK_3)
00503     GG_ENUM_MAP_INSERT(GGK_4)
00504     GG_ENUM_MAP_INSERT(GGK_5)
00505     GG_ENUM_MAP_INSERT(GGK_6)
00506     GG_ENUM_MAP_INSERT(GGK_7)
00507     GG_ENUM_MAP_INSERT(GGK_8)
00508     GG_ENUM_MAP_INSERT(GGK_9)
00509     GG_ENUM_MAP_INSERT(GGK_COLON)
00510     GG_ENUM_MAP_INSERT(GGK_SEMICOLON)
00511     GG_ENUM_MAP_INSERT(GGK_LESS)
00512     GG_ENUM_MAP_INSERT(GGK_EQUALS)
00513     GG_ENUM_MAP_INSERT(GGK_GREATER)
00514     GG_ENUM_MAP_INSERT(GGK_QUESTION)
00515     GG_ENUM_MAP_INSERT(GGK_AT)
00516     GG_ENUM_MAP_INSERT(GGK_A)
00517     GG_ENUM_MAP_INSERT(GGK_B)
00518     GG_ENUM_MAP_INSERT(GGK_C)
00519     GG_ENUM_MAP_INSERT(GGK_D)
00520     GG_ENUM_MAP_INSERT(GGK_E)
00521     GG_ENUM_MAP_INSERT(GGK_F)
00522     GG_ENUM_MAP_INSERT(GGK_G)
00523     GG_ENUM_MAP_INSERT(GGK_H)
00524     GG_ENUM_MAP_INSERT(GGK_I)
00525     GG_ENUM_MAP_INSERT(GGK_J)
00526     GG_ENUM_MAP_INSERT(GGK_K)
00527     GG_ENUM_MAP_INSERT(GGK_L)
00528     GG_ENUM_MAP_INSERT(GGK_M)
00529     GG_ENUM_MAP_INSERT(GGK_N)
00530     GG_ENUM_MAP_INSERT(GGK_O)
00531     GG_ENUM_MAP_INSERT(GGK_P)
00532     GG_ENUM_MAP_INSERT(GGK_Q)
00533     GG_ENUM_MAP_INSERT(GGK_R)
00534     GG_ENUM_MAP_INSERT(GGK_S)
00535     GG_ENUM_MAP_INSERT(GGK_T)
00536     GG_ENUM_MAP_INSERT(GGK_U)
00537     GG_ENUM_MAP_INSERT(GGK_V)
00538     GG_ENUM_MAP_INSERT(GGK_W)
00539     GG_ENUM_MAP_INSERT(GGK_X)
00540     GG_ENUM_MAP_INSERT(GGK_Y)
00541     GG_ENUM_MAP_INSERT(GGK_Z)
00542     GG_ENUM_MAP_INSERT(GGK_LEFTBRACKET)
00543     GG_ENUM_MAP_INSERT(GGK_BACKSLASH)
00544     GG_ENUM_MAP_INSERT(GGK_RIGHTBRACKET)
00545     GG_ENUM_MAP_INSERT(GGK_CARET)
00546     GG_ENUM_MAP_INSERT(GGK_UNDERSCORE)
00547     GG_ENUM_MAP_INSERT(GGK_BACKQUOTE)
00548     GG_ENUM_MAP_INSERT(GGK_a)
00549     GG_ENUM_MAP_INSERT(GGK_b)
00550     GG_ENUM_MAP_INSERT(GGK_c)
00551     GG_ENUM_MAP_INSERT(GGK_d)
00552     GG_ENUM_MAP_INSERT(GGK_e)
00553     GG_ENUM_MAP_INSERT(GGK_f)
00554     GG_ENUM_MAP_INSERT(GGK_g)
00555     GG_ENUM_MAP_INSERT(GGK_h)
00556     GG_ENUM_MAP_INSERT(GGK_i)
00557     GG_ENUM_MAP_INSERT(GGK_j)
00558     GG_ENUM_MAP_INSERT(GGK_k)
00559     GG_ENUM_MAP_INSERT(GGK_l)
00560     GG_ENUM_MAP_INSERT(GGK_m)
00561     GG_ENUM_MAP_INSERT(GGK_n)
00562     GG_ENUM_MAP_INSERT(GGK_o)
00563     GG_ENUM_MAP_INSERT(GGK_p)
00564     GG_ENUM_MAP_INSERT(GGK_q)
00565     GG_ENUM_MAP_INSERT(GGK_r)
00566     GG_ENUM_MAP_INSERT(GGK_s)
00567     GG_ENUM_MAP_INSERT(GGK_t)
00568     GG_ENUM_MAP_INSERT(GGK_u)
00569     GG_ENUM_MAP_INSERT(GGK_v)
00570     GG_ENUM_MAP_INSERT(GGK_w)
00571     GG_ENUM_MAP_INSERT(GGK_x)
00572     GG_ENUM_MAP_INSERT(GGK_y)
00573     GG_ENUM_MAP_INSERT(GGK_z)
00574     GG_ENUM_MAP_INSERT(GGK_DELETE)
00575 
00576     GG_ENUM_MAP_INSERT(GGK_WORLD_0)
00577     GG_ENUM_MAP_INSERT(GGK_WORLD_1)
00578     GG_ENUM_MAP_INSERT(GGK_WORLD_2)
00579     GG_ENUM_MAP_INSERT(GGK_WORLD_3)
00580     GG_ENUM_MAP_INSERT(GGK_WORLD_4)
00581     GG_ENUM_MAP_INSERT(GGK_WORLD_5)
00582     GG_ENUM_MAP_INSERT(GGK_WORLD_6)
00583     GG_ENUM_MAP_INSERT(GGK_WORLD_7)
00584     GG_ENUM_MAP_INSERT(GGK_WORLD_8)
00585     GG_ENUM_MAP_INSERT(GGK_WORLD_9)
00586     GG_ENUM_MAP_INSERT(GGK_WORLD_10)
00587     GG_ENUM_MAP_INSERT(GGK_WORLD_11)
00588     GG_ENUM_MAP_INSERT(GGK_WORLD_12)
00589     GG_ENUM_MAP_INSERT(GGK_WORLD_13)
00590     GG_ENUM_MAP_INSERT(GGK_WORLD_14)
00591     GG_ENUM_MAP_INSERT(GGK_WORLD_15)
00592     GG_ENUM_MAP_INSERT(GGK_WORLD_16)
00593     GG_ENUM_MAP_INSERT(GGK_WORLD_17)
00594     GG_ENUM_MAP_INSERT(GGK_WORLD_18)
00595     GG_ENUM_MAP_INSERT(GGK_WORLD_19)
00596     GG_ENUM_MAP_INSERT(GGK_WORLD_20)
00597     GG_ENUM_MAP_INSERT(GGK_WORLD_21)
00598     GG_ENUM_MAP_INSERT(GGK_WORLD_22)
00599     GG_ENUM_MAP_INSERT(GGK_WORLD_23)
00600     GG_ENUM_MAP_INSERT(GGK_WORLD_24)
00601     GG_ENUM_MAP_INSERT(GGK_WORLD_25)
00602     GG_ENUM_MAP_INSERT(GGK_WORLD_26)
00603     GG_ENUM_MAP_INSERT(GGK_WORLD_27)
00604     GG_ENUM_MAP_INSERT(GGK_WORLD_28)
00605     GG_ENUM_MAP_INSERT(GGK_WORLD_29)
00606     GG_ENUM_MAP_INSERT(GGK_WORLD_30)
00607     GG_ENUM_MAP_INSERT(GGK_WORLD_31)
00608     GG_ENUM_MAP_INSERT(GGK_WORLD_32)
00609     GG_ENUM_MAP_INSERT(GGK_WORLD_33)
00610     GG_ENUM_MAP_INSERT(GGK_WORLD_34)
00611     GG_ENUM_MAP_INSERT(GGK_WORLD_35)
00612     GG_ENUM_MAP_INSERT(GGK_WORLD_36)
00613     GG_ENUM_MAP_INSERT(GGK_WORLD_37)
00614     GG_ENUM_MAP_INSERT(GGK_WORLD_38)
00615     GG_ENUM_MAP_INSERT(GGK_WORLD_39)
00616     GG_ENUM_MAP_INSERT(GGK_WORLD_40)
00617     GG_ENUM_MAP_INSERT(GGK_WORLD_41)
00618     GG_ENUM_MAP_INSERT(GGK_WORLD_42)
00619     GG_ENUM_MAP_INSERT(GGK_WORLD_43)
00620     GG_ENUM_MAP_INSERT(GGK_WORLD_44)
00621     GG_ENUM_MAP_INSERT(GGK_WORLD_45)
00622     GG_ENUM_MAP_INSERT(GGK_WORLD_46)
00623     GG_ENUM_MAP_INSERT(GGK_WORLD_47)
00624     GG_ENUM_MAP_INSERT(GGK_WORLD_48)
00625     GG_ENUM_MAP_INSERT(GGK_WORLD_49)
00626     GG_ENUM_MAP_INSERT(GGK_WORLD_50)
00627     GG_ENUM_MAP_INSERT(GGK_WORLD_51)
00628     GG_ENUM_MAP_INSERT(GGK_WORLD_52)
00629     GG_ENUM_MAP_INSERT(GGK_WORLD_53)
00630     GG_ENUM_MAP_INSERT(GGK_WORLD_54)
00631     GG_ENUM_MAP_INSERT(GGK_WORLD_55)
00632     GG_ENUM_MAP_INSERT(GGK_WORLD_56)
00633     GG_ENUM_MAP_INSERT(GGK_WORLD_57)
00634     GG_ENUM_MAP_INSERT(GGK_WORLD_58)
00635     GG_ENUM_MAP_INSERT(GGK_WORLD_59)
00636     GG_ENUM_MAP_INSERT(GGK_WORLD_60)
00637     GG_ENUM_MAP_INSERT(GGK_WORLD_61)
00638     GG_ENUM_MAP_INSERT(GGK_WORLD_62)
00639     GG_ENUM_MAP_INSERT(GGK_WORLD_63)
00640     GG_ENUM_MAP_INSERT(GGK_WORLD_64)
00641     GG_ENUM_MAP_INSERT(GGK_WORLD_65)
00642     GG_ENUM_MAP_INSERT(GGK_WORLD_66)
00643     GG_ENUM_MAP_INSERT(GGK_WORLD_67)
00644     GG_ENUM_MAP_INSERT(GGK_WORLD_68)
00645     GG_ENUM_MAP_INSERT(GGK_WORLD_69)
00646     GG_ENUM_MAP_INSERT(GGK_WORLD_70)
00647     GG_ENUM_MAP_INSERT(GGK_WORLD_71)
00648     GG_ENUM_MAP_INSERT(GGK_WORLD_72)
00649     GG_ENUM_MAP_INSERT(GGK_WORLD_73)
00650     GG_ENUM_MAP_INSERT(GGK_WORLD_74)
00651     GG_ENUM_MAP_INSERT(GGK_WORLD_75)
00652     GG_ENUM_MAP_INSERT(GGK_WORLD_76)
00653     GG_ENUM_MAP_INSERT(GGK_WORLD_77)
00654     GG_ENUM_MAP_INSERT(GGK_WORLD_78)
00655     GG_ENUM_MAP_INSERT(GGK_WORLD_79)
00656     GG_ENUM_MAP_INSERT(GGK_WORLD_80)
00657     GG_ENUM_MAP_INSERT(GGK_WORLD_81)
00658     GG_ENUM_MAP_INSERT(GGK_WORLD_82)
00659     GG_ENUM_MAP_INSERT(GGK_WORLD_83)
00660     GG_ENUM_MAP_INSERT(GGK_WORLD_84)
00661     GG_ENUM_MAP_INSERT(GGK_WORLD_85)
00662     GG_ENUM_MAP_INSERT(GGK_WORLD_86)
00663     GG_ENUM_MAP_INSERT(GGK_WORLD_87)
00664     GG_ENUM_MAP_INSERT(GGK_WORLD_88)
00665     GG_ENUM_MAP_INSERT(GGK_WORLD_89)
00666     GG_ENUM_MAP_INSERT(GGK_WORLD_90)
00667     GG_ENUM_MAP_INSERT(GGK_WORLD_91)
00668     GG_ENUM_MAP_INSERT(GGK_WORLD_92)
00669     GG_ENUM_MAP_INSERT(GGK_WORLD_93)
00670     GG_ENUM_MAP_INSERT(GGK_WORLD_94)
00671     GG_ENUM_MAP_INSERT(GGK_WORLD_95)
00672 
00673     GG_ENUM_MAP_INSERT(GGK_KP0)
00674     GG_ENUM_MAP_INSERT(GGK_KP1)
00675     GG_ENUM_MAP_INSERT(GGK_KP2)
00676     GG_ENUM_MAP_INSERT(GGK_KP3)
00677     GG_ENUM_MAP_INSERT(GGK_KP4)
00678     GG_ENUM_MAP_INSERT(GGK_KP5)
00679     GG_ENUM_MAP_INSERT(GGK_KP6)
00680     GG_ENUM_MAP_INSERT(GGK_KP7)
00681     GG_ENUM_MAP_INSERT(GGK_KP8)
00682     GG_ENUM_MAP_INSERT(GGK_KP9)
00683     GG_ENUM_MAP_INSERT(GGK_KP_PERIOD)
00684     GG_ENUM_MAP_INSERT(GGK_KP_DIVIDE)
00685     GG_ENUM_MAP_INSERT(GGK_KP_MULTIPLY)
00686     GG_ENUM_MAP_INSERT(GGK_KP_MINUS)
00687     GG_ENUM_MAP_INSERT(GGK_KP_PLUS)
00688     GG_ENUM_MAP_INSERT(GGK_KP_ENTER)
00689     GG_ENUM_MAP_INSERT(GGK_KP_EQUALS)
00690 
00691     GG_ENUM_MAP_INSERT(GGK_UP)
00692     GG_ENUM_MAP_INSERT(GGK_DOWN)
00693     GG_ENUM_MAP_INSERT(GGK_RIGHT)
00694     GG_ENUM_MAP_INSERT(GGK_LEFT)
00695     GG_ENUM_MAP_INSERT(GGK_INSERT)
00696     GG_ENUM_MAP_INSERT(GGK_HOME)
00697     GG_ENUM_MAP_INSERT(GGK_END)
00698     GG_ENUM_MAP_INSERT(GGK_PAGEUP)
00699     GG_ENUM_MAP_INSERT(GGK_PAGEDOWN)
00700 
00701     GG_ENUM_MAP_INSERT(GGK_F1)
00702     GG_ENUM_MAP_INSERT(GGK_F2)
00703     GG_ENUM_MAP_INSERT(GGK_F3)
00704     GG_ENUM_MAP_INSERT(GGK_F4)
00705     GG_ENUM_MAP_INSERT(GGK_F5)
00706     GG_ENUM_MAP_INSERT(GGK_F6)
00707     GG_ENUM_MAP_INSERT(GGK_F7)
00708     GG_ENUM_MAP_INSERT(GGK_F8)
00709     GG_ENUM_MAP_INSERT(GGK_F9)
00710     GG_ENUM_MAP_INSERT(GGK_F10)
00711     GG_ENUM_MAP_INSERT(GGK_F11)
00712     GG_ENUM_MAP_INSERT(GGK_F12)
00713     GG_ENUM_MAP_INSERT(GGK_F13)
00714     GG_ENUM_MAP_INSERT(GGK_F14)
00715     GG_ENUM_MAP_INSERT(GGK_F15)
00716 
00717     GG_ENUM_MAP_INSERT(GGK_NUMLOCK)
00718     GG_ENUM_MAP_INSERT(GGK_CAPSLOCK)
00719     GG_ENUM_MAP_INSERT(GGK_SCROLLOCK)
00720     GG_ENUM_MAP_INSERT(GGK_RSHIFT)
00721     GG_ENUM_MAP_INSERT(GGK_LSHIFT)
00722     GG_ENUM_MAP_INSERT(GGK_RCTRL)
00723     GG_ENUM_MAP_INSERT(GGK_LCTRL)
00724     GG_ENUM_MAP_INSERT(GGK_RALT)
00725     GG_ENUM_MAP_INSERT(GGK_LALT)
00726     GG_ENUM_MAP_INSERT(GGK_RMETA)
00727     GG_ENUM_MAP_INSERT(GGK_LMETA)
00728     GG_ENUM_MAP_INSERT(GGK_LSUPER)
00729     GG_ENUM_MAP_INSERT(GGK_RSUPER)
00730     GG_ENUM_MAP_INSERT(GGK_MODE)
00731     GG_ENUM_MAP_INSERT(GGK_COMPOSE)
00732 
00733     GG_ENUM_MAP_INSERT(GGK_HELP)
00734     GG_ENUM_MAP_INSERT(GGK_PRINT)
00735     GG_ENUM_MAP_INSERT(GGK_SYSREQ)
00736     GG_ENUM_MAP_INSERT(GGK_BREAK)
00737     GG_ENUM_MAP_INSERT(GGK_MENU)
00738     GG_ENUM_MAP_INSERT(GGK_POWER)
00739     GG_ENUM_MAP_INSERT(GGK_EURO)
00740     GG_ENUM_MAP_INSERT(GGK_UNDO)
00741 
00742     GG_ENUM_MAP_INSERT(GGK_LAST)
00743 GG_ENUM_MAP_END
00744 
00745 GG_ENUM_STREAM_IN(Key)
00746 GG_ENUM_STREAM_OUT(Key)
00747 
00748 } // namespace GG
00749 
00750 #endif // _GG_Base_h_
00751