X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5cf036d017b19e9447e52e271c4afac2109ffcd3..8a31648287be0ef976f133de2786b137f1e98340:/samples/opengl/penguin/penguin.h diff --git a/samples/opengl/penguin/penguin.h b/samples/opengl/penguin/penguin.h index dae7ca35e9..3f25590907 100644 --- a/samples/opengl/penguin/penguin.h +++ b/samples/opengl/penguin/penguin.h @@ -17,59 +17,64 @@ #include "wx/app.h" #include "wx/menu.h" #include "wx/dcclient.h" +#include "wx/wfstream.h" +#if wxUSE_ZLIB +#include "wx/zstream.h" +#endif #include "wx/glcanvas.h" extern "C" { -#include "lw.h" #include "trackball.h" } -/* information needed to display lightwave mesh */ -typedef struct +#include "dxfrenderer.h" + + +// OpenGL view data +struct GLData { -// gint do_init; /* true if initgl not yet called */ - bool do_init; - lwObject *lwobject; /* lightwave object mesh */ - float beginx,beginy; /* position of mouse */ - float quat[4]; /* orientation of object */ - float zoom; /* field of view in degrees */ -} mesh_info; + bool initialized; // have OpenGL been initialized? + float beginx, beginy; // position of mouse + float quat[4]; // orientation of object + float zoom; // field of view in degrees +}; -/* Define a new application type */ -class MyApp: public wxApp +// Define a new application type +class MyApp : public wxApp { public: - bool OnInit(); + virtual bool OnInit(); }; -/* Define a new frame type */ + +// 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); + const wxSize& size, long style = wxDEFAULT_FRAME_STYLE); - void OnExit(wxCommandEvent& event); + void OnMenuFileOpen(wxCommandEvent& event); + void OnMenuFileExit(wxCommandEvent& event); + void OnMenuHelpAbout(wxCommandEvent& event); -#if wxUSE_GLCANVAS - void SetCanvas( TestGLCanvas *canvas ) { m_canvas = canvas; } + void SetCanvas(TestGLCanvas *canvas) { m_canvas = canvas; } TestGLCanvas *GetCanvas() { return m_canvas; } private: TestGLCanvas *m_canvas; -#endif DECLARE_EVENT_TABLE() }; -#if wxUSE_GLCANVAS -class TestGLCanvas: public wxGLCanvas +class TestGLCanvas : public wxGLCanvas { public: TestGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY, @@ -77,23 +82,26 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxT("TestGLCanvas")); - ~TestGLCanvas(); + virtual ~TestGLCanvas(); + void LoadDXF(const wxString& filename); + +protected: void OnPaint(wxPaintEvent& event); void OnSize(wxSizeEvent& event); void OnEraseBackground(wxEraseEvent& event); - void LoadLWO( const wxString &filename); - void OnMouse( wxMouseEvent& event ); + void OnMouse(wxMouseEvent& event); + +private: void InitGL(); + void ResetProjectionMode(); - mesh_info info; - bool block; + wxGLContext* m_glRC; + GLData m_gldata; + DXFRenderer m_renderer; -private: + wxDECLARE_NO_COPY_CLASS(TestGLCanvas); DECLARE_EVENT_TABLE() }; -#endif // #if wxUSE_GLCANVAS - #endif // #ifndef _WX_PENGUIN_H_ -