00001 /* 00002 * $Id: glwindow.h 557 2008-12-08 19:41:28Z kybav1 $ 00003 * 00004 * Description : GL canvas class with OpenGL contents. 00005 * Author : Vaclav Kyba <mail/Jabber: vaseo1@gmail.com> <ICQ: 98576293> 00006 * 00007 * Purpose : 00008 * GLWindow is associated with certain RenderModule and uses its interface 00009 * for rendering. 00010 */ 00011 00012 00013 #ifndef __GLWINDOW__H__ 00014 #define __GLWINDOW__H__ 00015 00016 #include <wx/glcanvas.h> 00017 #include "rendermodule.h" 00018 #include "framerate.h" 00019 00020 00021 namespace VRUT 00022 { 00023 class RenderManager; 00024 00026 class GLWindow : public wxGLCanvas 00027 { 00028 // DECLARE_DYNAMIC_CLASS(GLWindow); 00029 00030 private: 00032 RenderManager * renderManager; 00033 00034 protected: 00036 RENDER_WINDOW_ID windowID; 00038 RenderModule * module; 00040 wxWindow * fsWindow; 00042 wxGLContext * glContext; 00044 FrameRate frameRate; 00046 int nbPageIndex; 00048 unsigned beingReparented; 00049 00051 GLWindow(); 00053 void draw(); 00055 void toggleFullscreen(); 00057 void setFullscreen(bool fullscreen); 00059 void onPaint(wxPaintEvent & WXUNUSED(evt)); 00061 void onResize(wxSizeEvent & evt); 00063 void onKeyEvent(wxKeyEvent & evt); 00065 void onMouseEvent(wxMouseEvent & evt); 00067 void onCommandEvent(wxCommandEvent & evt); 00068 00069 public: 00071 GLWindow(wxWindow * parent, 00072 RenderModule * _module, 00073 RENDER_WINDOW_ID winID, 00074 wxPoint position = wxDefaultPosition, 00075 wxSize size = wxDefaultSize, 00076 int * attribList = (int *)NULL, 00077 wxString title = wxT("GLWindow")); 00079 virtual ~GLWindow(); 00080 00082 RENDER_WINDOW_ID GetID() const 00083 { 00084 return windowID; 00085 } 00087 void Deinitialize(); 00089 void SetRenderManager(RenderManager * _renderManager) 00090 { 00091 renderManager = _renderManager; 00092 } 00094 RenderModule * GetRenderModule() const 00095 { 00096 return module; 00097 } 00098 00100 bool CreateGLContext(); 00101 00103 wxGLContext * GetGLContext() const 00104 { 00105 return glContext; 00106 } 00107 00108 friend class RenderManager; 00109 }; 00110 }; 00111 00112 #endif