]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/opengl/isosurf/isosurf.h
Set brush origin for hatch brushes too.
[wxWidgets.git] / samples / opengl / isosurf / isosurf.h
index a3dba1907a36a6a0faefd7dc0e9fcf57e59ab319..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
-{ public:
-    bool OnInit(void);
+class MyApp : public wxApp
+{
+public:
+    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, const wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
-      const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = _T("TestGLCanvas"),
-      int* gl_attrib = NULL);
-   ~TestGLCanvas(void);
-
-   void OnPaint(wxPaintEvent& event);
-   void OnSize(wxSizeEvent& event);
-   void OnEraseBackground(wxEraseEvent& event);
-   void OnChar(wxKeyEvent& event);
-   void OnMouseEvent(wxMouseEvent& event);
-
-DECLARE_EVENT_TABLE()
+public:
+    TestGLCanvas(wxWindow *parent,
+                 wxWindowID id = wxID_ANY,
+                 int *gl_attrib = NULL);
+
+    virtual ~TestGLCanvas();
+
+    void OnPaint(wxPaintEvent& event);
+    void OnSize(wxSizeEvent& 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
 
-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();
+
+    TestGLCanvas *m_canvas;
+
+private :
     void OnExit(wxCommandEvent& event);
-public:
-#if wxUSE_GLCANVAS
-    TestGLCanvas*    m_canvas;
-#endif
 
-DECLARE_EVENT_TABLE()
+    DECLARE_EVENT_TABLE()
 };
 
-#endif
+
+#endif // _WX_ISOSURF_H_