00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00025 #ifndef _RUNNER_H_ 00026 #define _RUNNER_H_ 00027 00028 #include "IRunner.h" 00029 #include "IMenuListener.h" 00030 #include "IMouseListener.h" 00031 #include "MenuEntry.h" 00032 00033 #include "Render.h" 00034 #include "Logic.h" 00035 00036 namespace GpuQuadraticCurveRender 00037 { 00038 00039 enum Actions 00040 { 00041 ShowPoints, 00042 ShowLines, 00043 ShowTriangles 00044 }; 00045 00051 class Runner : 00052 public GlutWrapper::IRunner, public GlutWrapper::IMenuListener, public GlutWrapper::IMouseListener 00053 { 00054 public: 00056 Runner(void); 00057 00059 ~Runner(void); 00060 00066 void InitializeOpengl(int width, int height); 00067 00072 void Run(void); 00073 00079 void Reshape(int width, int height); 00080 00086 void ProcessMenuEvents(int option); 00087 00090 void ProcessMouse(const GlutWrapper::MouseState& mouseState); 00091 00096 const std::vector<GlutWrapper::MenuEntry>& GetMenuEntries(void) const; 00097 00098 private: 00100 std::vector<GlutWrapper::MenuEntry> m_entries; 00101 00103 Render m_render; 00104 00106 Logic m_logic; 00107 00109 int m_selectedPointIndex; 00110 00112 Runner(const Runner&); 00113 00115 Runner& operator=(const Runner&); 00116 00118 void Render(void); 00119 }; 00120 00121 } 00122 #endif