It's generally wxWidgets policy not to include platform-specific headers from our own to avoid namespace pollution issues, in this case with names like "None" and "Window".
		
			
				
	
	
		
			130 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/unix/glx11.h
 | |
| // Purpose:     class common for all X11-based wxGLCanvas implementations
 | |
| // Author:      Vadim Zeitlin
 | |
| // Created:     2007-04-15
 | |
| // Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwidgets.org>
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_UNIX_GLX11_H_
 | |
| #define _WX_UNIX_GLX11_H_
 | |
| 
 | |
| #include <GL/gl.h>
 | |
| 
 | |
| typedef struct __GLXcontextRec* GLXContext;
 | |
| typedef struct __GLXFBConfigRec* GLXFBConfig;
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxGLContext
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLIMPEXP_GL wxGLContext : public wxGLContextBase
 | |
| {
 | |
| public:
 | |
|     wxGLContext(wxGLCanvas *win,
 | |
|                 const wxGLContext *other = NULL,
 | |
|                 const wxGLContextAttrs *ctxAttrs = NULL);
 | |
|     virtual ~wxGLContext();
 | |
| 
 | |
|     virtual bool SetCurrent(const wxGLCanvas& win) const wxOVERRIDE;
 | |
| 
 | |
| private:
 | |
|     GLXContext m_glContext;
 | |
| 
 | |
|     wxDECLARE_CLASS(wxGLContext);
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxGLCanvasX11
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLIMPEXP_GL wxGLCanvasX11 : public wxGLCanvasBase
 | |
| {
 | |
| public:
 | |
|     // initialization and dtor
 | |
|     // -----------------------
 | |
| 
 | |
|     // default ctor doesn't do anything, InitVisual() must be called
 | |
|     wxGLCanvasX11();
 | |
| 
 | |
|     // initializes GLXFBConfig and XVisualInfo corresponding to the given attributes
 | |
|     bool InitVisual(const wxGLAttributes& dispAttrs);
 | |
| 
 | |
|     // frees XVisualInfo info
 | |
|     virtual ~wxGLCanvasX11();
 | |
| 
 | |
| 
 | |
|     // implement wxGLCanvasBase methods
 | |
|     // --------------------------------
 | |
| 
 | |
|     virtual bool SwapBuffers() wxOVERRIDE;
 | |
| 
 | |
| 
 | |
|     // X11-specific methods
 | |
|     // --------------------
 | |
| 
 | |
|     // return GLX version: 13 means 1.3 &c
 | |
|     static int GetGLXVersion();
 | |
| 
 | |
|     // return true if multisample extension is available
 | |
|     static bool IsGLXMultiSampleAvailable();
 | |
| 
 | |
|     // get the X11 handle of this window
 | |
|     virtual unsigned long GetXWindow() const = 0;
 | |
| 
 | |
| 
 | |
|     // GLX-specific methods
 | |
|     // --------------------
 | |
| 
 | |
|     // override some wxWindow methods
 | |
|     // ------------------------------
 | |
| 
 | |
|     // return true only if the window is realized: OpenGL context can't be
 | |
|     // created until we are
 | |
|     virtual bool IsShownOnScreen() const wxOVERRIDE;
 | |
| 
 | |
| 
 | |
|     // implementation only from now on
 | |
|     // -------------------------------
 | |
| 
 | |
|     // get the GLXFBConfig/XVisualInfo we use
 | |
|     GLXFBConfig *GetGLXFBConfig() const { return m_fbc; }
 | |
|     void* GetXVisualInfo() const { return m_vi; }
 | |
| 
 | |
|     // initialize the global default GL visual, return false if matching visual
 | |
|     // not found
 | |
|     static bool InitDefaultVisualInfo(const int *attribList);
 | |
| 
 | |
| private:
 | |
|     GLXFBConfig *m_fbc;
 | |
|     void* m_vi;
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxGLApp
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| // this is used in wx/glcanvas.h, prevent it from defining a generic wxGLApp
 | |
| #define wxGL_APP_DEFINED
 | |
| 
 | |
| class WXDLLIMPEXP_GL wxGLApp : public wxGLAppBase
 | |
| {
 | |
| public:
 | |
|     virtual bool InitGLVisual(const int *attribList) wxOVERRIDE;
 | |
| 
 | |
|     // This method is not currently used by the library itself, but remains for
 | |
|     // backwards compatibility and also because wxGTK has it we could start
 | |
|     // using it for the same purpose in wxX11 too some day.
 | |
|     virtual void* GetXVisualInfo() wxOVERRIDE;
 | |
| 
 | |
|     // and override this wxApp method to clean up
 | |
|     virtual int OnExit() wxOVERRIDE;
 | |
| 
 | |
| private:
 | |
|     wxDECLARE_DYNAMIC_CLASS(wxGLApp);
 | |
| };
 | |
| 
 | |
| #endif // _WX_UNIX_GLX11_H_
 | |
| 
 |