X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5fa399c9e241e99132733b09673cbcb76c9f77e1..841f23e18a9d9e3d987b60422c3a220571868337:/samples/opengl/penguin/penguin.h diff --git a/samples/opengl/penguin/penguin.h b/samples/opengl/penguin/penguin.h index 5c71de8ed7..63efc497f4 100644 --- a/samples/opengl/penguin/penguin.h +++ b/samples/opengl/penguin/penguin.h @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_PENGUIN_H_ @@ -17,67 +17,91 @@ #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" +extern "C" +{ #include "trackball.h" } -/* information needed to display lightwave mesh */ -typedef struct -{ -// gint do_init; /* true if initgl not yet called */ - int 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; +#include "dxfrenderer.h" +// OpenGL view data +struct GLData +{ + 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 */ +// Define a new application type class MyApp: public wxApp { public: - bool OnInit(void); + bool OnInit(); }; -/* Define a new frame type */ +// 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(wxFrame *frame, const wxString& title, const wxPoint& pos, + const wxSize& size, long style = wxDEFAULT_FRAME_STYLE); - void OnExit(wxCommandEvent& event); -public: - TestGLCanvas* m_canvas; + void OnMenuFileOpen(wxCommandEvent& event); + void OnMenuFileExit(wxCommandEvent& event); + void OnMenuHelpAbout(wxCommandEvent& event); + +#if wxUSE_GLCANVAS + void SetCanvas( TestGLCanvas *canvas ) { m_canvas = canvas; } + TestGLCanvas *GetCanvas() { return m_canvas; } + +private: + TestGLCanvas *m_canvas; +#endif -DECLARE_EVENT_TABLE() + DECLARE_EVENT_TABLE() }; +#if wxUSE_GLCANVAS + class TestGLCanvas: public wxGLCanvas { - public: - TestGLCanvas(wxWindow *parent, 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 LoadLWO( const wxString &filename); - void OnMouse( wxMouseEvent& event ); - void InitGL(void); - - mesh_info info; - bool block; - -DECLARE_EVENT_TABLE() +public: + TestGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, + const wxString& name = wxT("TestGLCanvas")); + + ~TestGLCanvas(); + + void LoadDXF(const wxString& filename); + +protected: + void OnPaint(wxPaintEvent& event); + void OnSize(wxSizeEvent& event); + void OnEraseBackground(wxEraseEvent& event); + void OnMouse(wxMouseEvent& event); + +private: + void InitGL(); + void ResetProjectionMode(); + + GLData m_gldata; + DXFRenderer m_renderer; + + DECLARE_EVENT_TABLE() }; -#endif +#endif // #if wxUSE_GLCANVAS + +#endif // #ifndef _WX_PENGUIN_H_