#include "wx/palette.h"
#include "wx/window.h"
-class WXDLLIMPEXP_GL wxGLCanvas;
-class WXDLLIMPEXP_GL wxGLContext;
+class WXDLLIMPEXP_FWD_GL wxGLCanvas;
+class WXDLLIMPEXP_FWD_GL wxGLContext;
// ----------------------------------------------------------------------------
// Constants for attributes list
// ----------------------------------------------------------------------------
-// The generic OpenGL implementation doesn't support most of these options,
-// such as stereo, auxiliary buffers, alpha channel, and accumulator buffer.
-// Other implementations may actually support them.
+// Notice that not all implementation support options such as stereo, auxiliary
+// buffers, alpha channel, and accumulator buffer, use IsDisplaySupported() to
+// check for individual attributes support.
enum
{
- WX_GL_RGBA=1, /* use true color palette */
- 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) */
- WX_GL_MIN_ALPHA, /* use alpha 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 alpha buffer with most bits (> MIN_ACCUM_ALPHA bits) */
+ WX_GL_RGBA = 1, // use true color palette (on if no attrs specified)
+ 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 double buffering (on if no attrs specified)
+ 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)
+ WX_GL_MIN_ALPHA, // use alpha 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 alpha buffer with most bits (> MIN_ACCUM_ALPHA bits)
};
#define wxGLCanvasName _T("GLCanvas")
*/
// set this context as the current one
- virtual void SetCurrent(const wxGLCanvas& win) const = 0;
+ virtual bool SetCurrent(const wxGLCanvas& win) const = 0;
};
// ----------------------------------------------------------------------------
// ----------
// set the given context associated with this window as the current one
- void SetCurrent(const wxGLContext& context) const;
+ bool SetCurrent(const wxGLContext& context) const;
// flush the back buffer (if we have it)
- virtual void SwapBuffers() = 0;
+ virtual bool SwapBuffers() = 0;
// accessors
// ---------
+ // check if the given attributes are supported without creating a canvas
+ static bool IsDisplaySupported(const int *attribList);
+
const wxPalette *GetPalette() const { return &m_palette; }
// miscellaneous helper functions
// call glcolor() for the colour with the given name, return false if
// colour not found
- bool SetColour(const wxChar *colour);
+ bool SetColour(const wxString& colour);