]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/opengl/penguin/penguin.h
Fix recreating of wxBitmapComboBox using untyped client data.
[wxWidgets.git] / samples / opengl / penguin / penguin.h
index a8e8550e65c06d233516f98c802f0006996009ea..6c8240e9f19b3b5ff0c9544780f453ddb5b1c153 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Robert Roebling
 // Modified by:
 // Created:     04/01/98
 // Author:      Robert Roebling
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 #include "wx/app.h"
 #include "wx/menu.h"
 #include "wx/dcclient.h"
 #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"
 
 
 #include "wx/glcanvas.h"
 
-extern "C" {
-#include "lw.h"
+extern "C"
+{
 #include "trackball.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 */
-  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;
+    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:
 {
 public:
-    bool OnInit(void);
+    virtual bool OnInit();
 };
 
 };
 
-/* Define a new frame type */
+
+// Define a new frame type
 class TestGLCanvas;
 class TestGLCanvas;
-class MyFrame: public wxFrame
+
+
+class MyFrame : public wxFrame
 {
 public:
 {
 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);
+
+    void SetCanvas(TestGLCanvas *canvas) { m_canvas = canvas; }
+    TestGLCanvas *GetCanvas() { return m_canvas; }
+
+private:
+    TestGLCanvas *m_canvas;
 
 
-DECLARE_EVENT_TABLE()
+    DECLARE_EVENT_TABLE()
 };
 
 };
 
-class TestGLCanvas: public wxGLCanvas
+
+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"));
 
 
-#endif
+    virtual ~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();
+
+    wxGLContext* m_glRC;
+    GLData       m_gldata;
+    DXFRenderer  m_renderer;
+
+    wxDECLARE_NO_COPY_CLASS(TestGLCanvas);
+    DECLARE_EVENT_TABLE()
+};
 
 
+#endif // #ifndef _WX_PENGUIN_H_