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