00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00025 00026 #ifndef _WINDOW_H_ 00027 #define _WINDOW_H_ 00028 00029 #include <string> 00030 #include <vector> 00031 #include "MenuEntry.h" 00032 #include "MouseState.h" 00033 00034 namespace GlutWrapper 00035 { 00036 00037 class IRunner; 00038 class IMouseListener; 00039 class IKeyboardListener; 00040 class IMenuListener; 00041 00042 class Window 00043 { 00044 public: 00060 Window(int argc, char** argv, int positionX, int positionY, 00061 int width, int height, const std::string& windowName, 00062 IRunner* runner, const std::vector<MenuEntry>& menuEntries, 00063 IMenuListener* menuListener, 00064 IMouseListener* mouseListener, 00065 IKeyboardListener* keyboardListener, bool idleRunning); 00066 00068 ~Window(void); 00069 00070 private: 00072 static IRunner* m_runner; 00073 00075 static IMenuListener* m_menuListener; 00076 00078 static IKeyboardListener* m_keyboardListener; 00079 00081 static IMouseListener* m_mouseListener; 00082 00084 static MouseState m_mouseState; 00085 00087 Window(const Window&); 00088 00090 Window& operator=(const Window&); 00091 00103 void InitializeGlut(int argc, char** argv, int positionX, int positionY, 00104 int width, int height, const std::string& windowName, 00105 IRunner* runner, const std::vector<MenuEntry>& menuEntries, 00106 IMenuListener* menuListener, 00107 IMouseListener* mouseListener, 00108 IKeyboardListener* keyboardListener, bool idleRunning); 00109 00111 static void DisplayFunc(void); 00112 00116 static void ReshapeFunc(int width, int height); 00117 00120 static void ProcessMenuEvents(int option); 00121 00126 static void ProcessNormalKeys(unsigned char key, int x, int y); 00127 00133 static void ProcessMouse(int button, int state, int x, int y); 00134 00138 static void ProcessMouseMotion(int x, int y); 00139 00143 static void ProcessMousePassiveMotion(int x, int y); 00144 }; 00145 00146 } 00147 00148 #endif