X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec2995088d9a232a1c79e91aa0f08b2c7912c7b8..26ee65c723cf55822c540506f064ec11d9b26858:/samples/opengl/cube/cube.h diff --git a/samples/opengl/cube/cube.h b/samples/opengl/cube/cube.h index b7af99ee0e..a67e7b0a34 100644 --- a/samples/opengl/cube/cube.h +++ b/samples/opengl/cube/cube.h @@ -6,88 +6,80 @@ // 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 +#include "wx/glcanvas.h" // Define a new application type class MyApp: public wxApp { public: - bool OnInit(void); + MyApp() { m_glContext = NULL; } + + // set the specified canvas for current output + void SetCurrent(wxGLCanvas *canvas); + + // virtual wxApp methods + virtual bool OnInit(); + virtual int OnExit(); + +private: + // the GL context we use for all our windows + wxGLContext *m_glContext; }; // Define a new frame type class TestGLCanvas; + class MyFrame: public wxFrame { public: - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, - const wxSize& size, long style = wxDEFAULT_FRAME_STYLE); + MyFrame(); + + // update the image shown on the canvas (after the shared wxGLContext was + // updated, presumably) + void RefreshCanvas(); - void OnExit(wxCommandEvent& event); +private: + void OnClose(wxCommandEvent& event); void OnNewWindow(wxCommandEvent& event); void OnDefRotateLeftKey(wxCommandEvent& event); void OnDefRotateRightKey(wxCommandEvent& event); - -public: - TestGLCanvas* m_canvas; -DECLARE_EVENT_TABLE() + TestGLCanvas *m_canvas; + + 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 OnSize(wxSizeEvent& event); + void OnKeyDown(wxKeyEvent& event); + + // OpenGL calls can't be done until we're initialized + bool IsInitialized() const { return m_gllist != 0; } + + // one-time OpenGL initialization, only does something if !IsInitialized() + void InitGL(); + + // render to window + void Render(); + + + // the list of commands to draw the cube + GLuint m_gllist; + + DECLARE_EVENT_TABLE() }; -#endif +#endif // _WX_CUBE_H_