]> 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 15f6dc2164677b1c012e58965ab28a556be4f682..75e6c48d528523be7cfd0a79bca8392515c7dd8e 100644 (file)
 #ifndef _WX_ISOSURF_H_
 #define _WX_ISOSURF_H_
 
 #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
 {
 public:
     virtual bool OnInit();
 // Define a new application type
 class MyApp : public wxApp
 {
 public:
     virtual bool OnInit();
+
+    virtual void OnInitCmdLine(wxCmdLineParser& parser);
+    virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
 };
 
 
 };
 
 
+// The OpenGL-enabled canvas
 class TestGLCanvas : public wxGLCanvas
 {
 public:
     TestGLCanvas(wxWindow *parent,
                  wxWindowID id = wxID_ANY,
 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);
 
     virtual ~TestGLCanvas();
                  int *gl_attrib = NULL);
 
     virtual ~TestGLCanvas();
@@ -38,22 +56,33 @@ public:
     void OnChar(wxKeyEvent& event);
     void OnMouseEvent(wxMouseEvent& event);
 
     void OnChar(wxKeyEvent& event);
     void OnMouseEvent(wxMouseEvent& event);
 
+    void LoadSurface(const wxString& filename);
+    void InitMaterials();
+    void InitGL();
 
 private:
     wxGLContext* m_glRC;
 
 
 private:
     wxGLContext* m_glRC;
 
-    DECLARE_NO_COPY_CLASS(TestGLCanvas)
+    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()
 };
 
 
     DECLARE_EVENT_TABLE()
 };
 
 
+// The frame containing the GL canvas
 class MyFrame : public wxFrame
 {
 public:
     MyFrame(wxFrame *frame,
             const wxString& title,
 class MyFrame : public wxFrame
 {
 public:
     MyFrame(wxFrame *frame,
             const wxString& title,
-            const wxPoint& pos,
-            const wxSize& size,
+            const wxPoint& pos = wxDefaultPosition,
+            const wxSize& size = wxDefaultSize,
             long style = wxDEFAULT_FRAME_STYLE);
 
     virtual ~MyFrame();
             long style = wxDEFAULT_FRAME_STYLE);
 
     virtual ~MyFrame();
@@ -66,5 +95,6 @@ private :
     DECLARE_EVENT_TABLE()
 };
 
     DECLARE_EVENT_TABLE()
 };
 
+
 #endif // _WX_ISOSURF_H_
 
 #endif // _WX_ISOSURF_H_