#ifndef _WX_GLCANVAS_H_
#define _WX_GLCANVAS_H_
-#include <wx/defs.h>
-
-#if wxUSE_GLCANVAS
-
-#include <wx/scrolwin.h>
+#include "wx/scrolwin.h"
+#include "wx/app.h"
extern "C" {
-#include "GL/gl.h"
-#include "GL/glx.h"
-#include "GL/glu.h"
+#include <GL/gl.h>
+#include <GL/glx.h>
+#include <GL/glu.h>
}
//---------------------------------------------------------------------------
enum
{
WX_GL_RGBA=1, /* use true color palette */
- WX_GL_DEPTH_SIZE, /* bits for Z-buffer (0,16,32) */
+ WX_GL_BUFFER_SIZE, /* bits for buffer if not WX_GL_RGBA */
+ WX_GL_LEVEL, /* 0 for main buffer, >0 for overlay, <0 for underlay */
WX_GL_DOUBLEBUFFER, /* use doublebuffer */
+ WX_GL_STEREO, /* use stereoscopic display */
+ WX_GL_AUX_BUFFERS, /* number of auxiliary buffers */
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 */
+ WX_GL_MIN_BLUE, /* use blue buffer with most bits (> MIN_BLUE bits) */
+ WX_GL_MIN_ALPHA, /* use blue buffer with most bits (> MIN_ALPHA bits) */
+ WX_GL_DEPTH_SIZE, /* bits for Z-buffer (0,16,32) */
+ WX_GL_STENCIL_SIZE, /* bits for stencil buffer */
+ WX_GL_MIN_ACCUM_RED, /* use red accum buffer with most bits (> MIN_ACCUM_RED bits) */
+ WX_GL_MIN_ACCUM_GREEN, /* use green buffer with most bits (> MIN_ACCUM_GREEN bits) */
+ WX_GL_MIN_ACCUM_BLUE, /* use blue buffer with most bits (> MIN_ACCUM_BLUE bits) */
+ WX_GL_MIN_ACCUM_ALPHA /* use blue buffer with most bits (> MIN_ACCUM_ALPHA bits) */
};
//---------------------------------------------------------------------------
};
//---------------------------------------------------------------------------
-// wxGLContext
+// wxGLCanvas
//---------------------------------------------------------------------------
-class WXDLLEXPORT wxGLCanvas: public wxScrolledWindow
+class WXDLLEXPORT wxGLCanvas: public wxWindow
{
public:
inline wxGLCanvas() {
wxGLContext *m_glContext,
*m_sharedContext;
wxGLCanvas *m_sharedContextOf;
- void *m_vi;
+ void *m_vi; // actually an XVisualInfo*
+ bool m_canFreeVi;
GtkWidget *m_glWidget;
bool m_exposed;
+
+ // returns an XVisualInfo* based on desired GL attributes;
+ // returns NULL if an appropriate visual is not found. The
+ // caller is reponsible for using XFree() to deallocate
+ // the returned structure.
+ static void* ChooseGLVisual(int *attribList);
private:
DECLARE_EVENT_TABLE()
DECLARE_CLASS(wxGLCanvas)
};
-#endif
- // wxUSE_GLCANVAS
-
#endif
// _WX_GLCANVAS_H_