1 /****************************************************************************
2 ** $Id: qt/qgl_x11_p.h   3.3.8   edited Jan 11 14:38 $
3 **
4 ** Definitions needed for resolving GL/GLX symbols using dlopen()
5 ** under X11.
6 **
7 ** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
8 **
9 ** This file is part of the OpenGL module of the Qt GUI Toolkit.
10 **
11 ** This file may be distributed and/or modified under the terms of the
12 ** GNU General Public License version 2 as published by the Free Software
13 ** Foundation and appearing in the file LICENSE.GPL included in the
14 ** packaging of this file.
15 **
16 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
17 ** licenses for Qt/Embedded may use this file in accordance with the
18 ** Qt Embedded Commercial License Agreement provided with the Software.
19 **
20 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
21 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22 **
23 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
24 **   information about Qt Commercial License Agreements.
25 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
26 **
27 ** Contact info@trolltech.com if any conditions of this licensing are
28 ** not clear to you.
29 **
30 **********************************************************************/
31 
32 #ifndef QGL_P_H
33 #define QGL_P_H
34 
35 //
36 //  W A R N I N G
37 //  -------------
38 //
39 // This file is not part of the Qt API.  This header file may
40 // change from version to version without notice, or even be
41 // removed.
42 //
43 // We mean it.
44 //
45 //
46 
47 #ifdef QT_DLOPEN_OPENGL
48 // resolve the GL symbols we use ourselves
49 bool qt_resolve_gl_symbols(bool = TRUE);
50 extern "C" {
51 // GL symbols
52 typedef void (*_glCallLists)( GLsizei n, GLenum type, const GLvoid *lists );
53 typedef void (*_glClearColor)( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
54 typedef void (*_glClearIndex)( GLfloat c );
55 typedef void (*_glColor3ub)( GLubyte red, GLubyte green, GLubyte blue );
56 typedef void (*_glDeleteLists)( GLuint list, GLsizei range );
57 typedef void (*_glDrawBuffer)( GLenum mode );
58 typedef void (*_glFlush)( void );
59 typedef void (*_glIndexi)( GLint c );
60 typedef void (*_glListBase)( GLuint base );
61 typedef void (*_glLoadIdentity)( void );
62 typedef void (*_glMatrixMode)( GLenum mode );
63 typedef void (*_glOrtho)( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
64 typedef void (*_glPopAttrib)( void );
65 typedef void (*_glPopMatrix)( void );
66 typedef void (*_glPushAttrib)( GLbitfield mask );
67 typedef void (*_glPushMatrix)( void );
68 typedef void (*_glRasterPos2i)( GLint x, GLint y );
69 typedef void (*_glRasterPos3d)( GLdouble x, GLdouble y, GLdouble z );
70 typedef void (*_glReadPixels)( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
71 typedef void (*_glViewport)( GLint x, GLint y, GLsizei width, GLsizei height );
72 typedef void (*_glPixelStorei)( GLenum pname, GLint param );
73 typedef void (*_glBitmap)( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove,
74 			   const GLubyte *bitmap );
75 typedef void (*_glDrawPixels)( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
76 typedef void (*_glNewList)( GLuint list, GLenum mode );
77 typedef void (*_glGetFloatv)( GLenum pname, GLfloat *params );
78 typedef void (*_glGetIntegerv)( GLenum pname, GLint *params );
79 typedef void (*_glEndList)( void );
80 
81 
82 // GLX symbols - should be in the GL lib as well
83 typedef XVisualInfo* (*_glXChooseVisual)(Display *dpy, int screen, int *attribList);
84 typedef GLXContext (*_glXCreateContext)(Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
85 typedef GLXPixmap (*_glXCreateGLXPixmap)(Display *dpy, XVisualInfo *vis, Pixmap pixmap);
86 typedef void (*_glXDestroyContext)(Display *dpy, GLXContext ctx);
87 typedef void (*_glXDestroyGLXPixmap)(Display *dpy, GLXPixmap pix);
88 typedef const char* (*_glXGetClientString)(Display *dpy, int name );
89 typedef int (*_glXGetConfig)(Display *dpy, XVisualInfo *vis, int attrib, int *value);
90 typedef Bool (*_glXIsDirect)(Display *dpy, GLXContext ctx);
91 typedef Bool (*_glXMakeCurrent)(Display *dpy, GLXDrawable drawable, GLXContext ctx);
92 typedef Bool (*_glXQueryExtension)(Display *dpy, int *errorBase, int *eventBase);
93 typedef const char* (*_glXQueryExtensionsString)(Display *dpy, int screen);
94 typedef const char* (*_glXQueryServerString)(Display *dpy, int screen, int name);
95 typedef void (*_glXSwapBuffers)(Display *dpy, GLXDrawable drawable);
96 typedef void (*_glXUseXFont)(Font font, int first, int count, int listBase);
97 typedef void (*_glXWaitX)(void);
98 
99 extern _glCallLists qt_glCallLists;
100 extern _glClearColor qt_glClearColor;
101 extern _glClearIndex qt_glClearIndex;
102 extern _glColor3ub qt_glColor3ub;
103 extern _glDeleteLists qt_glDeleteLists;
104 extern _glDrawBuffer qt_glDrawBuffer;
105 extern _glFlush qt_glFlush;
106 extern _glIndexi qt_glIndexi;
107 extern _glListBase qt_glListBase;
108 extern _glLoadIdentity qt_glLoadIdentity;
109 extern _glMatrixMode qt_glMatrixMode;
110 extern _glOrtho qt_glOrtho;
111 extern _glPopAttrib qt_glPopAttrib;
112 extern _glPopMatrix qt_glPopMatrix;
113 extern _glPushAttrib qt_glPushAttrib;
114 extern _glPushMatrix qt_glPushMatrix;
115 extern _glRasterPos2i qt_glRasterPos2i;
116 extern _glRasterPos3d qt_glRasterPos3d;
117 extern _glReadPixels qt_glReadPixels;
118 extern _glViewport qt_glViewport;
119 extern _glPixelStorei qt_glPixelStorei;
120 extern _glBitmap qt_glBitmap;
121 extern _glDrawPixels qt_glDrawPixels;
122 extern _glNewList qt_glNewList;
123 extern _glGetFloatv qt_glGetFloatv;
124 extern _glGetIntegerv qt_glGetIntegerv;
125 extern _glEndList qt_glEndList;
126 
127 extern _glXChooseVisual qt_glXChooseVisual;
128 extern _glXCreateContext qt_glXCreateContext;
129 extern _glXCreateGLXPixmap qt_glXCreateGLXPixmap;
130 extern _glXDestroyContext qt_glXDestroyContext;
131 extern _glXDestroyGLXPixmap qt_glXDestroyGLXPixmap;
132 extern _glXGetClientString qt_glXGetClientString;
133 extern _glXGetConfig qt_glXGetConfig;
134 extern _glXIsDirect qt_glXIsDirect;
135 extern _glXMakeCurrent qt_glXMakeCurrent;
136 extern _glXQueryExtension qt_glXQueryExtension;
137 extern _glXQueryExtensionsString qt_glXQueryExtensionsString;
138 extern _glXQueryServerString qt_glXQueryServerString;
139 extern _glXSwapBuffers qt_glXSwapBuffers;
140 extern _glXUseXFont qt_glXUseXFont;
141 extern _glXWaitX qt_glXWaitX;
142 }; // extern "C"
143 
144 #define glCallLists qt_glCallLists
145 #define glClearColor qt_glClearColor
146 #define glClearIndex qt_glClearIndex
147 #define glColor3ub qt_glColor3ub
148 #define glDeleteLists qt_glDeleteLists
149 #define glDrawBuffer qt_glDrawBuffer
150 #define glFlush qt_glFlush
151 #define glIndexi qt_glIndexi
152 #define glListBase qt_glListBase
153 #define glLoadIdentity qt_glLoadIdentity
154 #define glMatrixMode qt_glMatrixMode
155 #define glOrtho qt_glOrtho
156 #define glPopAttrib qt_glPopAttrib
157 #define glPopMatrix qt_glPopMatrix
158 #define glPushAttrib qt_glPushAttrib
159 #define glPushMatrix qt_glPushMatrix
160 #define glRasterPos2i qt_glRasterPos2i
161 #define glRasterPos3d qt_glRasterPos3d
162 #define glReadPixels qt_glReadPixels
163 #define glViewport qt_glViewport
164 #define glPixelStorei qt_glPixelStorei
165 #define glBitmap qt_glBitmap
166 #define glDrawPixels qt_glDrawPixels
167 #define glNewList qt_glNewList
168 #define glGetFloatv qt_glGetFloatv
169 #define glGetIntegerv qt_glGetIntegerv
170 #define glEndList qt_glEndList
171 
172 #define glXChooseVisual qt_glXChooseVisual
173 #define glXCreateContext qt_glXCreateContext
174 #define glXCreateGLXPixmap qt_glXCreateGLXPixmap
175 #define glXDestroyContext qt_glXDestroyContext
176 #define glXDestroyGLXPixmap qt_glXDestroyGLXPixmap
177 #define glXGetClientString qt_glXGetClientString
178 #define glXGetConfig qt_glXGetConfig
179 #define glXIsDirect qt_glXIsDirect
180 #define glXMakeCurrent qt_glXMakeCurrent
181 #define glXQueryExtension qt_glXQueryExtension
182 #define glXQueryExtensionsString qt_glXQueryExtensionsString
183 #define glXQueryServerString qt_glXQueryServerString
184 #define glXSwapBuffers qt_glXSwapBuffers
185 #define glXUseXFont qt_glXUseXFont
186 #define glXWaitX qt_glXWaitX
187 
188 #else
189 inline bool qt_resolve_gl_symbols(bool = TRUE) { return TRUE; }
190 #endif // QT_DLOPEN_OPENGL
191 #endif // QGL_P_H
192