]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/glcanvas/gtk/glcanvas.h
1. test for thr_setconcurrency() added to configure
[wxWidgets.git] / utils / glcanvas / gtk / glcanvas.h
index c407b70f63aa9042a2eb7b51f5d27aabf923dddc..f426e65ddaff34120aa59528aa6134ac4043a806 100644 (file)
@@ -25,6 +25,21 @@ extern "C" {
 #include "GL/glu.h"
 }
 
+//---------------------------------------------------------------------------
+// Constants for attriblist
+//---------------------------------------------------------------------------
+
+enum
+{
+  WX_GL_RGBA=1,          /* use true color palette */
+  WX_GL_DEPTH_SIZE,      /* bits for Z-buffer (0,16,32) */
+  WX_GL_DOUBLEBUFFER,    /* use doublebuffer */
+  WX_GL_MIN_RED,         /* use red buffer with most bits (> MIN_RED bits) */
+  WX_GL_MIN_GREEN,       /* use green buffer with most bits (> MIN_GREEN bits) */
+  WX_GL_MIN_BLUE         /* use blue buffer with most bits (> MIN_BLUE bits) */
+/* these are enough constants for now, the remaining will be added later */
+};
+
 //---------------------------------------------------------------------------
 // classes
 //---------------------------------------------------------------------------
@@ -39,11 +54,13 @@ class wxGLCanvas;
 
 class wxGLContext: public wxObject
 {
-  DECLARE_CLASS(wxGLContext)
-   
-  public:
-  
+public:
     wxGLContext( bool isRGB, wxWindow *win, const wxPalette& palette = wxNullPalette );
+    wxGLContext( 
+               bool WXUNUSED(isRGB), wxWindow *win, 
+               const wxPalette& WXUNUSED(palette),
+               const wxGLContext *other        /* for sharing display lists */
+    );
     ~wxGLContext();
 
     void SetCurrent();
@@ -59,13 +76,15 @@ class wxGLContext: public wxObject
     inline GtkWidget* GetWidget() const { return m_widget; }
     inline GLXContext GetContext() const { return m_glContext; }
 
- public:
-
+public:
    GLXContext       m_glContext;
 
    GtkWidget       *m_widget;
    wxPalette        m_palette;
    wxWindow*        m_window;
+   
+private:
+  DECLARE_CLASS(wxGLContext)
 };
 
 //---------------------------------------------------------------------------
@@ -74,17 +93,23 @@ class wxGLContext: public wxObject
 
 class wxGLCanvas: public wxScrolledWindow
 {
-   DECLARE_CLASS(wxGLCanvas)
-   
- public:
+public:
    wxGLCanvas( wxWindow *parent, wxWindowID id = -1, 
         const wxPoint& pos = wxDefaultPosition,
         const wxSize& size = wxDefaultSize, 
-       long style = 0, const wxString& name = "GLCanvas", 
-       int *attribList = (int*) NULL, 
-       const wxPalette& palette = wxNullPalette );
-       
-   bool Create( wxWindow *parent, wxWindowID id = -1, 
+        long style = 0, const wxString& name = "GLCanvas", 
+        int *attribList = (int*) NULL, 
+        const wxPalette& palette = wxNullPalette );
+   wxGLCanvas( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL,
+        wxWindowID id = -1, 
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, 
+        long style = 0, const wxString& name = "GLCanvas", 
+        int *attribList = (int*) NULL, 
+        const wxPalette& palette = wxNullPalette );
+
+   bool Create( wxWindow *parent, const wxGLContext *shared = (wxGLContext *)NULL,
+        wxWindowID id = -1, 
         const wxPoint& pos = wxDefaultPosition,
         const wxSize& size = wxDefaultSize, 
        long style = 0, const wxString& name = "GLCanvas", 
@@ -98,21 +123,22 @@ class wxGLCanvas: public wxScrolledWindow
    void SwapBuffers();
 
    void OnSize(wxSizeEvent& event);
+   
+   void OnInternalIdle();
 
    inline wxGLContext* GetContext() const { return m_glContext; } 
 
  // implementation
   
-    virtual void DoSetSize( int x, int y, int width, int height,
-      int sizeFlags = wxSIZE_AUTO );
-    
-    virtual GtkWidget *GetConnectWidget();
-    bool IsOwnGtkWindow( GdkWindow *window );
-  
-    wxGLContext      *m_glContext; 
+    wxGLContext      *m_glContext,
+                     *m_sharedContext;
+    void             *m_vi;
     GtkWidget        *m_glWidget;
+    bool              m_exposed;
 
-  DECLARE_EVENT_TABLE()
+private:
+    DECLARE_EVENT_TABLE()
+    DECLARE_CLASS(wxGLCanvas)
 };
 
 #endif