]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/opengl/cube/cube.h
compilation fix for 2.8 compat disabled
[wxWidgets.git] / samples / opengl / cube / cube.h
index f50ea2a0493d9b9f8f31baedfd7f47448cb63d26..af9e59d61f95daa7b8d242f945e1ecc5be1a61ac 100644 (file)
 
 #include "wx/glcanvas.h"
 
+// the rendering context used by all GL canvases
+class TestGLContext : public wxGLContext
+{
+public:
+    TestGLContext(wxGLCanvas *canvas);
+
+    // render the cube showing it at given angles
+    void DrawRotatedCube(float xangle, float yangle);
+
+private:
+    // textures for the cube faces
+    GLuint m_textures[6];
+};
+
 // Define a new application type
 class MyApp: public wxApp
 {
 public:
-    bool OnInit();
+    MyApp() { m_glContext = NULL; }
+
+    // get the context we use creating it on demand (and set it as current)
+    TestGLContext& GetContext(wxGLCanvas *canvas);
+
+    // virtual wxApp methods
+    virtual bool OnInit();
+    virtual int OnExit();
+
+private:
+    // the GL context we use for all our windows
+    TestGLContext *m_glContext;
 };
 
 // Define a new frame type
-class TestGLCanvas;
-
 class MyFrame: public wxFrame
 {
 public:
-    static MyFrame *Create(MyFrame *parentFrame, bool isCloneWindow = false);
+    MyFrame();
 
-    void OnExit(wxCommandEvent& event);
+private:
+    void OnClose(wxCommandEvent& event);
     void OnNewWindow(wxCommandEvent& event);
     void OnDefRotateLeftKey(wxCommandEvent& event);
     void OnDefRotateRightKey(wxCommandEvent& event);
 
-private:
-
-    MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos,
-            const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
-
-
-    TestGLCanvas *m_canvas;
-
     DECLARE_EVENT_TABLE()
 };
 
-#if wxUSE_GLCANVAS
-
-class TestGLCanvas: public wxGLCanvas
+class TestGLCanvas : public wxGLCanvas
 {
-    friend class MyFrame;
 public:
-    TestGLCanvas( wxWindow *parent, wxWindowID id = wxID_ANY,
-        const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize,
-        long style = 0, const wxString& name = _T("TestGLCanvas") );
-
-    TestGLCanvas( wxWindow *parent, const TestGLCanvas *other,
-        wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize, long style = 0,
-        const wxString& name = _T("TestGLCanvas") );
-
-    ~TestGLCanvas();
+    TestGLCanvas(wxWindow *parent);
 
+private:
     void OnPaint(wxPaintEvent& event);
     void OnSize(wxSizeEvent& event);
-    void OnEraseBackground(wxEraseEvent& event);
     void OnKeyDown(wxKeyEvent& event);
-    void OnKeyUp(wxKeyEvent& event);
-    void OnEnterWindow(wxMouseEvent& event);
-
-    void Render();
-    void InitGL();
-    void Rotate(GLfloat deg);
-    static GLfloat CalcRotateSpeed(unsigned long acceltime);
-    static GLfloat CalcRotateAngle( unsigned long lasttime,
-        unsigned long acceltime );
-    void Action( long code, unsigned long lasttime,
-        unsigned long acceltime );
 
-private:
-    bool   m_init;
-    GLuint m_gllist;
-    long   m_rleft;
-    long   m_rright;
-
-    static unsigned long  m_secbase;
-    static int            m_TimeInitialized;
-    static unsigned long  m_xsynct;
-    static unsigned long  m_gsynct;
-
-    long           m_Key;
-    unsigned long  m_StartTime;
-    unsigned long  m_LastTime;
-    unsigned long  m_LastRedraw;
-
-DECLARE_EVENT_TABLE()
-};
+    // angles of rotation around x- and y- axis
+    float m_xangle,
+          m_yangle;
 
-#endif // #if wxUSE_GLCANVAS
+    DECLARE_EVENT_TABLE()
+};
 
-#endif // #ifndef _WX_CUBE_H_
+#endif // _WX_CUBE_H_