SDLGUI.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00029 #ifndef _GG_SDLGUI_h_
00030 #define _GG_SDLGUI_h_
00031
00032 #include <GG/GUI.h>
00033
00034 #include <SDL/SDL.h>
00035
00036
00037 #ifdef _MSC_VER
00038 # ifdef GiGiSDL_EXPORTS
00039 # define GG_SDL_API __declspec(dllexport)
00040 # else
00041 # define GG_SDL_API __declspec(dllimport)
00042 # endif
00043 #else
00044 # define GG_SDL_API
00045 #endif
00046
00047 namespace GG {
00048
00082 class GG_SDL_API SDLGUI : public GG::GUI
00083 {
00084 public:
00086 explicit SDLGUI(int w = 1024, int h = 768, bool calc_FPS = false, const std::string& app_name = "GG");
00087 virtual ~SDLGUI();
00089
00091 virtual X AppWidth() const;
00092 virtual Y AppHeight() const;
00093 virtual unsigned int Ticks() const;
00095
00097 void operator()();
00098 virtual void Exit(int code);
00099
00100 virtual void Enter2DMode() = 0;
00101 virtual void Exit2DMode() = 0;
00103
00104 static SDLGUI* GetGUI();
00105 static GG::Key GGKeyFromSDLKey(const SDL_keysym& key);
00106
00107 protected:
00108 void SetAppSize(const GG::Pt& size);
00109
00110
00111 virtual void SDLInit();
00112 virtual void GLInit();
00113 virtual void Initialize() = 0;
00114
00115 virtual void HandleSystemEvents();
00116 virtual void HandleNonGGEvent(const SDL_Event& event);
00117
00118 virtual void RenderBegin();
00119 virtual void RenderEnd();
00120
00121
00122 virtual void FinalCleanup();
00123 virtual void SDLQuit();
00124
00125 virtual void Run();
00126
00127 private:
00128 X m_app_width;
00129 Y m_app_height;
00130 };
00131
00132 }
00133
00134 #endif // _GG_SDLGUI_h_
00135