]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/opengl/isosurf/isosurf.h
implement wxTreeCtrl::GetFocusedItem() for wxMSW too (see #10859)
[wxWidgets.git] / samples / opengl / isosurf / isosurf.h
index 66c81485f09c0dec22b5f23f0be28bd5d8d884a3..75e6c48d528523be7cfd0a79bca8392515c7dd8e 100644 (file)
 #ifndef _WX_ISOSURF_H_
 #define _WX_ISOSURF_H_
 
+// we need OpenGL headers for GLfloat/GLint types used below
+#if defined(__WXMAC__) || defined(__WXCOCOA__)
+#   ifdef __DARWIN__
+#       include <OpenGL/gl.h>
+#       include <OpenGL/glu.h>
+#   else
+#       include <gl.h>
+#       include <glu.h>
+#   endif
+#else
+#   include <GL/gl.h>
+#   include <GL/glu.h>
+#endif
+
+// the maximum number of vertex in the loaded .dat file
+#define MAXVERTS     10000
+
+
 // Define a new application type
-class MyApp: public wxApp
+class MyApp : public wxApp
 {
 public:
-    bool OnInit();
+    virtual bool OnInit();
+
+    virtual void OnInitCmdLine(wxCmdLineParser& parser);
+    virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
 };
 
-#if wxUSE_GLCANVAS
 
-class TestGLCanvas: public wxGLCanvas
+// The OpenGL-enabled canvas
+class TestGLCanvas : public wxGLCanvas
 {
 public:
-    TestGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY,
-        const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize, long style = 0,
-        const wxString& name = _T("TestGLCanvas"), int *gl_attrib = NULL);
+    TestGLCanvas(wxWindow *parent,
+                 wxWindowID id = wxID_ANY,
+                 int *gl_attrib = NULL);
 
-   ~TestGLCanvas();
+    virtual ~TestGLCanvas();
 
     void OnPaint(wxPaintEvent& event);
     void OnSize(wxSizeEvent& event);
-    void OnEraseBackground(wxEraseEvent& event);
     void OnChar(wxKeyEvent& event);
     void OnMouseEvent(wxMouseEvent& event);
 
+    void LoadSurface(const wxString& filename);
+    void InitMaterials();
+    void InitGL();
+
+private:
+    wxGLContext* m_glRC;
+
+    GLfloat m_verts[MAXVERTS][3];
+    GLfloat m_norms[MAXVERTS][3];
+    GLint m_numverts;
+
+    GLfloat m_xrot;
+    GLfloat m_yrot;
+
+    wxDECLARE_NO_COPY_CLASS(TestGLCanvas);
     DECLARE_EVENT_TABLE()
 };
 
-#endif // #if wxUSE_GLCANVAS
 
-
-class MyFrame: public wxFrame
+// The frame containing the GL canvas
+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 = wxDefaultPosition,
+            const wxSize& size = wxDefaultSize,
+            long style = wxDEFAULT_FRAME_STYLE);
 
     virtual ~MyFrame();
 
-#if wxUSE_GLCANVAS
     TestGLCanvas *m_canvas;
-#endif
 
 private :
-
     void OnExit(wxCommandEvent& event);
 
-DECLARE_EVENT_TABLE()
+    DECLARE_EVENT_TABLE()
 };
 
-#endif // #ifndef _WX_ISOSURF_H_
+
+#endif // _WX_ISOSURF_H_