]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/opengl/cube/cube.h
forwarding mouse moved events to the view under the mouse, not the firstResponder
[wxWidgets.git] / samples / opengl / cube / cube.h
index 66732f2453e5eb7339fe9156d35cc78a4cd78d86..3aa6539ebe1931d6dda5c84abb0fcdec2ac6eb13 100644 (file)
@@ -6,88 +6,78 @@
 // Created:     04/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_CUBE_H_
 #define _WX_CUBE_H_
 
-#include <wx/glcanvas.h>
+#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
+class MyApp : public wxApp
 {
 public:
-    bool OnInit(void);
+    MyApp() { m_glContext = NULL; }
+
+    // Returns the shared context used by all frames and sets it as current for
+    // the given canvas.
+    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
+class MyFrame : public wxFrame
 {
 public:
-    MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos,
-            const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
-
-    void OnExit(wxCommandEvent& event);
-    void OnNewWindow();
-    void OnDefRotateLeftKey();
-    void OnDefRotateRightKey();
-    
-public:
-    TestGLCanvas*    m_canvas;
+    MyFrame();
 
-DECLARE_EVENT_TABLE()
+private:
+    void OnClose(wxCommandEvent& event);
+    void OnNewWindow(wxCommandEvent& event);
+
+    DECLARE_EVENT_TABLE()
 };
 
-class TestGLCanvas: public wxGLCanvas
+class TestGLCanvas : public wxGLCanvas
 {
-  friend class MyFrame;
 public:
- TestGLCanvas(wxWindow *parent, const wxWindowID id = -1, 
-    const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-    long style = 0, const wxString& name = "TestGLCanvas");
- TestGLCanvas(wxWindow *parent, const TestGLCanvas &other,
-          const wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
-          const wxSize& size = wxDefaultSize, long style = 0,
-          const wxString& name = "TestGLCanvas" );
-   
- ~TestGLCanvas(void);
-
- 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 );
- void InitGL(void);
- 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 );
-   
+    TestGLCanvas(wxWindow *parent);
+
 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()
-};
+    void OnPaint(wxPaintEvent& event);
+    void Spin(float xSpin, float ySpin);
+    void OnKeyDown(wxKeyEvent& event);
+    void OnSpinTimer(wxTimerEvent& WXUNUSED(event));
+
+    // angles of rotation around x- and y- axis
+    float m_xangle,
+          m_yangle;
 
-#endif
+    wxTimer m_spinTimer;
+
+    DECLARE_EVENT_TABLE()
+};
 
+#endif // _WX_CUBE_H_