]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - include/igl.h
set eol-style
[xonotic/netradiant.git] / include / igl.h
index 99e4141fbf94e722610868b342e94d69cf94ccf7..630d3d34f85ca661b659b7e19859faa527abc57c 100644 (file)
-/*\r
-Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
-For a list of contributors, see the accompanying CONTRIBUTORS file.\r
-\r
-This file is part of GtkRadiant.\r
-\r
-GtkRadiant is free software; you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published by\r
-the Free Software Foundation; either version 2 of the License, or\r
-(at your option) any later version.\r
-\r
-GtkRadiant is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License\r
-along with GtkRadiant; if not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
-*/\r
-\r
-//-----------------------------------------------------------------------------\r
-//\r
-//\r
-// DESCRIPTION:\r
-// all purpose OpenGL interface for Q3Radiant plugins\r
-//\r
-\r
-#ifndef __IGL_H__\r
-#define __IGL_H__\r
-\r
-#if defined (__linux__) || defined (__APPLE__)\r
-#include <GL/glx.h>\r
-#endif\r
-\r
-// we use these classes to let plugins draw inside the Radiant windows\r
-// 2D window like YZ XZ XY\r
-class IGL2DWindow\r
-{\r
-public:\r
-       // Increment the number of references to this object\r
-       virtual void IncRef () = 0;\r
-       // Decrement the reference count\r
-       virtual void DecRef () = 0;\r
-       virtual void Draw2D( VIEWTYPE vt ) = 0;\r
-};\r
-\r
-// 3D window\r
-class IGL3DWindow\r
-{\r
-public:\r
-  // Increment the number of references to this object\r
-  virtual void IncRef () = 0;\r
-  // Decrement the reference count\r
-  virtual void DecRef () = 0;\r
-  virtual void Draw3D() = 0;\r
-};\r
-\r
-#define QGL_MAJOR "qgl"\r
-\r
-#include <GL/gl.h>\r
-\r
-typedef void (APIENTRY* PFN_QGLALPHAFUNC) (GLenum func, GLclampf ref);\r
-typedef void (APIENTRY* PFN_QGLBEGIN) (GLenum);\r
-typedef void (APIENTRY* PFN_QGLBINDTEXTURE) (GLenum target, GLuint texture);\r
-typedef void (APIENTRY* PFN_QGLBLENDFUNC) (GLenum sfactor, GLenum dfactor);\r
-typedef void (APIENTRY* PFN_QGLCALLLIST) (GLuint list);\r
-typedef void (APIENTRY* PFN_QGLCALLLISTS) (GLsizei n, GLenum type, const GLvoid *lists);\r
-typedef void (APIENTRY* PFN_QGLCLEAR) (GLbitfield mask);\r
-typedef void (APIENTRY* PFN_QGLCLEARCOLOR) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);\r
-typedef void (APIENTRY* PFN_QGLCLEARDEPTH) (GLclampd depth);\r
-typedef void (APIENTRY* PFN_QGLCOLOR3F)        (GLfloat red, GLfloat green, GLfloat blue);\r
-typedef void (APIENTRY* PFN_QGLCOLOR3FV) (const GLfloat *v);\r
-typedef void (APIENTRY* PFN_QGLCOLOR4F) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\r
-typedef void (APIENTRY* PFN_QGLCOLOR4FV) (const GLfloat *v);\r
-typedef void (APIENTRY* PFN_QGLCOLOR4UBV) (const GLubyte *v);\r
-typedef void (APIENTRY* PFN_QGLCOLORPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);\r
-typedef void (APIENTRY* PFN_QGLCULLFACE) (GLenum mode);\r
-typedef void (APIENTRY* PFN_QGLDELETELISTS) (GLuint list, GLsizei range);\r
-typedef void (APIENTRY* PFN_QGLDELETETEXTURES)  (GLsizei n, const GLuint *textures);\r
-typedef void (APIENTRY* PFN_QGLDEPTHFUNC) (GLenum func);\r
-typedef void (APIENTRY* PFN_QGLDEPTHMASK) (GLboolean flag);\r
-typedef void (APIENTRY* PFN_QGLDISABLE) (GLenum cap);\r
-typedef void (APIENTRY* PFN_QGLDISABLECLIENTSTATE) (GLenum array);\r
-typedef void (APIENTRY* PFN_QGLDRAWELEMENTS) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);\r
-typedef void (APIENTRY* PFN_QGLENABLE) (GLenum cap);\r
-typedef void (APIENTRY* PFN_QGLENABLECLIENTSTATE) (GLenum array);\r
-typedef void (APIENTRY* PFN_QGLEND) ();\r
-typedef void (APIENTRY* PFN_QGLENDLIST) ();\r
-typedef void (APIENTRY* PFN_QGLFOGF) (GLenum pname, GLfloat param);\r
-typedef void (APIENTRY* PFN_QGLFOGFV) (GLenum pname, const GLfloat *params);\r
-typedef void (APIENTRY* PFN_QGLFOGFI) (GLenum pname, GLint param);\r
-typedef GLuint (APIENTRY* PFN_QGLGENLISTS) (GLsizei range);\r
-typedef void (APIENTRY *PFN_QGLGENTEXTURES) (GLsizei n, GLuint *textures);\r
-typedef void (APIENTRY* PFN_QGLGETDOUBLEV) (GLenum pname, GLdouble *params);\r
-typedef void (APIENTRY* PFN_QGLHINT) (GLenum target, GLenum mode);\r
-typedef void (APIENTRY* PFN_QGLGETINTEGERV) (GLenum pname, GLint *params);\r
-typedef void (APIENTRY* PFN_QGLLIGHTFV) (GLenum light, GLenum pname, const GLfloat *params);\r
-typedef void (APIENTRY* PFN_QGLLINEWIDTH) (GLfloat size);\r
-typedef void (APIENTRY* PFN_QGLLINESTIPPLE) (GLint factor, GLushort pattern);\r
-typedef void (APIENTRY* PFN_QGLLINEWIDTH)       (GLfloat size);\r
-typedef void (APIENTRY* PFN_QGLLISTBASE) (GLuint base);\r
-typedef void (APIENTRY* PFN_QGLLOADIDENTITY) ();\r
-typedef void (APIENTRY* PFN_QGLMATERIALF) (GLenum face, GLenum pname, GLfloat param);\r
-typedef void (APIENTRY* PFN_QGLMATERIALFV) (GLenum face, GLenum pname, const GLfloat *params);\r
-typedef void (APIENTRY* PFN_QGLMATRIXMODE) (GLenum mode);\r
-typedef void (APIENTRY* PFN_QGLMULTMATRIXF)    (const GLfloat *m);\r
-typedef void (APIENTRY* PFN_QGLNEWLIST) (GLuint list, GLenum mode);\r
-typedef void (APIENTRY* PFN_QGLNORMAL3F) (GLfloat nx, GLfloat ny, GLfloat nz);\r
-typedef void (APIENTRY* PFN_QGLNORMAL3FV) (const GLfloat *n);\r
-typedef void (APIENTRY* PFN_QGLNORMALPOINTER) (GLenum type, GLsizei stride, const GLvoid *pointer);\r
-typedef void (APIENTRY* PFN_QGLORTHO) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\r
-typedef void (APIENTRY*        PFN_QGLPOINTSIZE) (GLfloat size);\r
-typedef void (APIENTRY* PFN_QGLPOLYGONMODE) (GLenum face, GLenum mode);\r
-typedef void (APIENTRY* PFN_QGLPOPATTRIB) ();\r
-typedef void (APIENTRY* PFN_QGLPOPMATRIX) ();\r
-typedef void (APIENTRY* PFN_QGLPUSHATTRIB) (GLbitfield mask);\r
-typedef void (APIENTRY* PFN_QGLPUSHMATRIX) ();\r
-typedef void (APIENTRY* PFN_QGLRASTERPOS3FV) (const GLfloat *v);\r
-typedef void (APIENTRY* PFN_QGLROTATED) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);\r
-typedef void (APIENTRY* PFN_QGLROTATEF)        (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);\r
-typedef void (APIENTRY* PFN_QGLSCALEF)                 (GLfloat x, GLfloat y, GLfloat z);\r
-typedef void (APIENTRY* PFN_QGLSCISSOR) (GLint x, GLint y, GLsizei width, GLsizei height);\r
-typedef void (APIENTRY* PFN_QGLSCALEF) (GLfloat x, GLfloat y, GLfloat z);\r
-typedef void (APIENTRY* PFN_QGLSHADEMODEL) (GLenum mode);\r
-typedef void (APIENTRY* PFN_QGLTEXCOORD2F) (GLfloat s, GLfloat t);\r
-typedef void (APIENTRY* PFN_QGLTEXCOORD2FV) (const GLfloat *v);\r
-typedef void (APIENTRY* PFN_QGLTEXCOORDPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);\r
-typedef void (APIENTRY* PFN_QGLTEXENVF) (GLenum target, GLenum pname, GLfloat param);\r
-typedef void (APIENTRY* PFN_QGLTEXGENF) (GLenum coord, GLenum pname, GLfloat param);\r
-typedef void (APIENTRY* PFN_QGLTEXIMAGE1D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);\r
-typedef void (APIENTRY* PFN_QGLTEXIMAGE2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);\r
-typedef void (APIENTRY* PFN_QGLTEXPARAMETERF) (GLenum target, GLenum pname, GLfloat param);\r
-typedef void (APIENTRY* PFN_QGLTEXPARAMETERFV) (GLenum target, GLenum pname, const GLfloat *params);\r
-typedef void (APIENTRY* PFN_QGLTEXPARAMETERI) (GLenum target, GLenum pname, GLint param);\r
-typedef void (APIENTRY* PFN_QGLTEXPARAMETERIV) (GLenum target, GLenum pname, const GLint *params);\r
-typedef void (APIENTRY* PFN_QGLTEXSUBIMAGE1D) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);\r
-typedef void (APIENTRY* PFN_QGLTEXSUBIMAGE2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);\r
-typedef void (APIENTRY* PFN_QGLTRANSLATED) (GLdouble x, GLdouble y, GLdouble z);\r
-typedef void (APIENTRY* PFN_QGLTRANSLATEF) (GLfloat x, GLfloat y, GLfloat z);\r
-typedef void (APIENTRY* PFN_QGLVERTEX2F) (GLfloat x, GLfloat y);\r
-typedef void (APIENTRY* PFN_QGLVERTEX3F) (GLfloat x, GLfloat y, GLfloat z);\r
-typedef void (APIENTRY* PFN_QGLVERTEX3FV) (const GLfloat *v);\r
-typedef void (APIENTRY* PFN_QGLVERTEXPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);\r
-typedef void (APIENTRY* PFN_QGLVIEWPORT) (GLint x, GLint y, GLsizei width, GLsizei height);\r
-\r
-typedef void (WINAPI* PFN_QE_CHECKOPENGLFORERRORS)     ();\r
-\r
-// glu stuff\r
-// TTimo: NOTE: relying on glu might not be such a good idea. On many systems, the GLU lib is outdated, misversioned etc.\r
-typedef void (APIENTRY * PFN_QGLUPERSPECTIVE) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);\r
-typedef void (APIENTRY * PFN_QGLULOOKAT) (GLdouble eyex, GLdouble eyey, GLdouble eyez,\r
-                                          GLdouble centerx, GLdouble centery, GLdouble centerz,\r
-                                          GLdouble upx, GLdouble upy, GLdouble upz);\r
-//++timo gluErrorString is defined but not exposed in the IGL interface\r
-\r
-\r
-// plugins drawing inside the GL windows\r
-//++timo TODO: add hooking into other windows (Z and .. texture??)\r
-//+timo NOTE: this could be moved to the messaging system instead of having a dedicated interface <- yet I don't know how\r
-typedef void (WINAPI* PFN_QERAPP_HOOKGL2DWINDOW) (IGL2DWindow *);\r
-typedef void (WINAPI* PFN_QERAPP_UNHOOKGL2DWINDOW) (IGL2DWindow *);\r
-typedef void (WINAPI* PFN_QERAPP_HOOKGL3DWINDOW) (IGL3DWindow *);\r
-typedef void (WINAPI* PFN_QERAPP_UNHOOKGL3DWINDOW) (IGL3DWindow *);\r
-\r
-struct _QERQglTable\r
-{\r
-  //++timo do we really wanna play with versions ?\r
-  //   float m_fVersion;\r
-  int m_nSize;\r
-  PFN_QGLALPHAFUNC             m_pfn_qglAlphaFunc;\r
-  PFN_QGLBEGIN                 m_pfn_qglBegin;\r
-  PFN_QGLBINDTEXTURE           m_pfn_qglBindTexture;\r
-  PFN_QGLBLENDFUNC             m_pfn_qglBlendFunc;\r
-  PFN_QGLCALLLIST                      m_pfn_qglCallList;\r
-  PFN_QGLCLEAR                 m_pfn_qglClear;\r
-  PFN_QGLCLEARCOLOR            m_pfn_qglClearColor;\r
-  PFN_QGLCALLLISTS             m_pfn_qglCallLists;\r
-  PFN_QGLCLEARDEPTH            m_pfn_qglClearDepth;\r
-  PFN_QGLCOLOR3F                       m_pfn_qglColor3f;\r
-  PFN_QGLCOLOR3FV         m_pfn_qglColor3fv;\r
-  PFN_QGLCOLOR4F                       m_pfn_qglColor4f;\r
-  PFN_QGLCOLOR4FV         m_pfn_qglColor4fv;\r
-  PFN_QGLCOLOR4UBV        m_pfn_qglColor4ubv;  // ydnar\r
-  PFN_QGLCOLORPOINTER     m_pfn_qglColorPointer;\r
-  PFN_QGLCULLFACE                      m_pfn_qglCullFace;\r
-  PFN_QGLDELETELISTS           m_pfn_qglDeleteLists;\r
-  PFN_QGLDELETETEXTURES  m_pfn_qglDeleteTextures;\r
-  PFN_QGLDEPTHFUNC        m_pfn_qglDepthFunc;\r
-  PFN_QGLDEPTHMASK        m_pfn_qglDepthMask;\r
-  PFN_QGLDISABLE                       m_pfn_qglDisable;\r
-  PFN_QGLDISABLECLIENTSTATE m_pfn_qglDisableClientState;\r
-  PFN_QGLDRAWELEMENTS                  m_pfn_qglDrawElements;\r
-  PFN_QGLENABLE                        m_pfn_qglEnable;\r
-  PFN_QGLENABLECLIENTSTATE  m_pfn_qglEnableClientState;\r
-  PFN_QGLEND                           m_pfn_qglEnd;\r
-  PFN_QGLENDLIST                       m_pfn_qglEndList;\r
-  PFN_QGLFOGF              m_pfn_qglFogf;\r
-  PFN_QGLFOGFV             m_pfn_qglFogfv;\r
-  PFN_QGLFOGFI             m_pfn_qglFogi;\r
-  PFN_QGLGENLISTS                      m_pfn_qglGenLists;\r
-  PFN_QGLGENTEXTURES  m_pfn_qglGenTextures;\r
-  PFN_QGLGETDOUBLEV                    m_pfn_qglGetDoublev;\r
-  PFN_QGLGETINTEGERV      m_pfn_qglGetIntegerv;\r
-  PFN_QGLHINT             m_pfn_qglHint;\r
-  PFN_QGLLIGHTFV          m_pfn_qglLightfv;\r
-  PFN_QGLLINESTIPPLE      m_pfn_qglLineStipple;\r
-  PFN_QGLLINEWIDTH        m_pfn_qglLineWidth;\r
-  PFN_QGLLISTBASE                      m_pfn_qglListBase;\r
-  PFN_QGLLOADIDENTITY          m_pfn_qglLoadIdentity;\r
-  PFN_QGLMATERIALF             m_pfn_qglMaterialf;\r
-  PFN_QGLMATERIALFV       m_pfn_qglMaterialfv;\r
-  PFN_QGLMATRIXMODE            m_pfn_qglMatrixMode;\r
-  PFN_QGLMULTMATRIXF  m_pfn_qglMultMatrixf;\r
-  PFN_QGLNEWLIST                       m_pfn_qglNewList;\r
-  PFN_QGLNORMAL3F                      m_pfn_qglNormal3f;\r
-  PFN_QGLNORMAL3FV                     m_pfn_qglNormal3fv;\r
-       PFN_QGLNORMALPOINTER            m_pfn_qglNormalPointer;\r
-  PFN_QGLORTHO                 m_pfn_qglOrtho;\r
-  PFN_QGLPOINTSIZE             m_pfn_qglPointSize;\r
-  PFN_QGLPOLYGONMODE           m_pfn_qglPolygonMode;\r
-  PFN_QGLPOPATTRIB             m_pfn_qglPopAttrib;\r
-  PFN_QGLPOPMATRIX             m_pfn_qglPopMatrix;\r
-  PFN_QGLPUSHATTRIB            m_pfn_qglPushAttrib;\r
-  PFN_QGLPUSHMATRIX            m_pfn_qglPushMatrix;\r
-       PFN_QGLRASTERPOS3FV     m_pfn_qglRasterPos3fv;\r
-  PFN_QGLROTATED                       m_pfn_qglRotated;\r
-  PFN_QGLROTATEF                       m_pfn_qglRotatef;\r
-  PFN_QGLSCALEF                        m_pfn_qglScalef;\r
-  PFN_QGLSCISSOR        m_pfn_qglScissor;\r
-  PFN_QGLSHADEMODEL            m_pfn_qglShadeModel;\r
-  PFN_QGLTEXCOORD2F            m_pfn_qglTexCoord2f;\r
-  PFN_QGLTEXCOORD2FV      m_pfn_qglTexCoord2fv;\r
-       PFN_QGLTEXCOORDPOINTER          m_pfn_qglTexCoordPointer;\r
-  PFN_QGLTEXENVF                       m_pfn_qglTexEnvf;\r
-  PFN_QGLTEXGENF                       m_pfn_qglTexGenf;\r
-  PFN_QGLTEXIMAGE1D     m_pfn_qglTexImage1D;\r
-  PFN_QGLTEXIMAGE2D     m_pfn_qglTexImage2D;\r
-  PFN_QGLTEXPARAMETERF  m_pfn_qglTexParameterf;\r
-  PFN_QGLTEXPARAMETERFV m_pfn_qglTexParameterfv;\r
-  PFN_QGLTEXPARAMETERI  m_pfn_qglTexParameteri;\r
-  PFN_QGLTEXPARAMETERIV m_pfn_qglTexParameteriv;\r
-  PFN_QGLTEXSUBIMAGE1D  m_pfn_qglTexSubImage1D;\r
-  PFN_QGLTEXSUBIMAGE2D  m_pfn_qglTexSubImage2D;\r
-  PFN_QGLTRANSLATED            m_pfn_qglTranslated;\r
-  PFN_QGLTRANSLATEF            m_pfn_qglTranslatef;\r
-  PFN_QGLVERTEX2F                      m_pfn_qglVertex2f;\r
-  PFN_QGLVERTEX3F                      m_pfn_qglVertex3f;\r
-  PFN_QGLVERTEX3FV        m_pfn_qglVertex3fv;\r
-       PFN_QGLVERTEXPOINTER            m_pfn_qglVertexPointer;\r
-  PFN_QGLVIEWPORT                      m_pfn_qglViewport;\r
-\r
-  PFN_QE_CHECKOPENGLFORERRORS  m_pfn_QE_CheckOpenGLForErrors;\r
-\r
-  // glu stuff\r
-  PFN_QGLUPERSPECTIVE                  m_pfn_qgluPerspective;\r
-  PFN_QGLULOOKAT                               m_pfn_qgluLookAt;\r
-\r
-  // plugin entities drawing inside Radiant windows\r
-  PFN_QERAPP_HOOKGL2DWINDOW    m_pfnHookGL2DWindow;\r
-  PFN_QERAPP_UNHOOKGL2DWINDOW  m_pfnUnHookGL2DWindow;\r
-  PFN_QERAPP_HOOKGL3DWINDOW m_pfnHookGL3DWindow;\r
-  PFN_QERAPP_UNHOOKGL3DWINDOW m_pfnUnHookGL3DWindow;\r
-};\r
-\r
-#endif\r
+/*
+Copyright (C) 1999-2007 id Software, Inc. and contributors.
+For a list of contributors, see the accompanying CONTRIBUTORS file.
+
+This file is part of GtkRadiant.
+
+GtkRadiant is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+GtkRadiant is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GtkRadiant; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+//-----------------------------------------------------------------------------
+//
+//
+// DESCRIPTION:
+// all purpose OpenGL interface for Q3Radiant plugins
+//
+
+#ifndef __IGL_H__
+#define __IGL_H__
+
+#if defined (__linux__) || defined (__APPLE__)
+#include <GL/glx.h>
+#endif
+
+// we use these classes to let plugins draw inside the Radiant windows
+// 2D window like YZ XZ XY
+class IGL2DWindow
+{
+public:
+       // Increment the number of references to this object
+       virtual void IncRef () = 0;
+       // Decrement the reference count
+       virtual void DecRef () = 0;
+       virtual void Draw2D( VIEWTYPE vt ) = 0;
+};
+
+// 3D window
+class IGL3DWindow
+{
+public:
+  // Increment the number of references to this object
+  virtual void IncRef () = 0;
+  // Decrement the reference count
+  virtual void DecRef () = 0;
+  virtual void Draw3D() = 0;
+};
+
+#define QGL_MAJOR "qgl"
+
+#include <GL/gl.h>
+
+typedef void (APIENTRY* PFN_QGLALPHAFUNC) (GLenum func, GLclampf ref);
+typedef void (APIENTRY* PFN_QGLBEGIN) (GLenum);
+typedef void (APIENTRY* PFN_QGLBINDTEXTURE) (GLenum target, GLuint texture);
+typedef void (APIENTRY* PFN_QGLBLENDFUNC) (GLenum sfactor, GLenum dfactor);
+typedef void (APIENTRY* PFN_QGLCALLLIST) (GLuint list);
+typedef void (APIENTRY* PFN_QGLCALLLISTS) (GLsizei n, GLenum type, const GLvoid *lists);
+typedef void (APIENTRY* PFN_QGLCLEAR) (GLbitfield mask);
+typedef void (APIENTRY* PFN_QGLCLEARCOLOR) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRY* PFN_QGLCLEARDEPTH) (GLclampd depth);
+typedef void (APIENTRY* PFN_QGLCOLOR3F)        (GLfloat red, GLfloat green, GLfloat blue);
+typedef void (APIENTRY* PFN_QGLCOLOR3FV) (const GLfloat *v);
+typedef void (APIENTRY* PFN_QGLCOLOR4F) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (APIENTRY* PFN_QGLCOLOR4FV) (const GLfloat *v);
+typedef void (APIENTRY* PFN_QGLCOLOR4UBV) (const GLubyte *v);
+typedef void (APIENTRY* PFN_QGLCOLORPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY* PFN_QGLCULLFACE) (GLenum mode);
+typedef void (APIENTRY* PFN_QGLDELETELISTS) (GLuint list, GLsizei range);
+typedef void (APIENTRY* PFN_QGLDELETETEXTURES)  (GLsizei n, const GLuint *textures);
+typedef void (APIENTRY* PFN_QGLDEPTHFUNC) (GLenum func);
+typedef void (APIENTRY* PFN_QGLDEPTHMASK) (GLboolean flag);
+typedef void (APIENTRY* PFN_QGLDISABLE) (GLenum cap);
+typedef void (APIENTRY* PFN_QGLDISABLECLIENTSTATE) (GLenum array);
+typedef void (APIENTRY* PFN_QGLDRAWELEMENTS) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRY* PFN_QGLENABLE) (GLenum cap);
+typedef void (APIENTRY* PFN_QGLENABLECLIENTSTATE) (GLenum array);
+typedef void (APIENTRY* PFN_QGLEND) ();
+typedef void (APIENTRY* PFN_QGLENDLIST) ();
+typedef void (APIENTRY* PFN_QGLFOGF) (GLenum pname, GLfloat param);
+typedef void (APIENTRY* PFN_QGLFOGFV) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRY* PFN_QGLFOGFI) (GLenum pname, GLint param);
+typedef GLuint (APIENTRY* PFN_QGLGENLISTS) (GLsizei range);
+typedef void (APIENTRY *PFN_QGLGENTEXTURES) (GLsizei n, GLuint *textures);
+typedef void (APIENTRY* PFN_QGLGETDOUBLEV) (GLenum pname, GLdouble *params);
+typedef void (APIENTRY* PFN_QGLHINT) (GLenum target, GLenum mode);
+typedef void (APIENTRY* PFN_QGLGETINTEGERV) (GLenum pname, GLint *params);
+typedef void (APIENTRY* PFN_QGLLIGHTFV) (GLenum light, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY* PFN_QGLLINEWIDTH) (GLfloat size);
+typedef void (APIENTRY* PFN_QGLLINESTIPPLE) (GLint factor, GLushort pattern);
+typedef void (APIENTRY* PFN_QGLLINEWIDTH)       (GLfloat size);
+typedef void (APIENTRY* PFN_QGLLISTBASE) (GLuint base);
+typedef void (APIENTRY* PFN_QGLLOADIDENTITY) ();
+typedef void (APIENTRY* PFN_QGLMATERIALF) (GLenum face, GLenum pname, GLfloat param);
+typedef void (APIENTRY* PFN_QGLMATERIALFV) (GLenum face, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY* PFN_QGLMATRIXMODE) (GLenum mode);
+typedef void (APIENTRY* PFN_QGLMULTMATRIXF)    (const GLfloat *m);
+typedef void (APIENTRY* PFN_QGLNEWLIST) (GLuint list, GLenum mode);
+typedef void (APIENTRY* PFN_QGLNORMAL3F) (GLfloat nx, GLfloat ny, GLfloat nz);
+typedef void (APIENTRY* PFN_QGLNORMAL3FV) (const GLfloat *n);
+typedef void (APIENTRY* PFN_QGLNORMALPOINTER) (GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY* PFN_QGLORTHO) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRY*        PFN_QGLPOINTSIZE) (GLfloat size);
+typedef void (APIENTRY* PFN_QGLPOLYGONMODE) (GLenum face, GLenum mode);
+typedef void (APIENTRY* PFN_QGLPOPATTRIB) ();
+typedef void (APIENTRY* PFN_QGLPOPMATRIX) ();
+typedef void (APIENTRY* PFN_QGLPUSHATTRIB) (GLbitfield mask);
+typedef void (APIENTRY* PFN_QGLPUSHMATRIX) ();
+typedef void (APIENTRY* PFN_QGLRASTERPOS3FV) (const GLfloat *v);
+typedef void (APIENTRY* PFN_QGLROTATED) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRY* PFN_QGLROTATEF)        (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY* PFN_QGLSCALEF)                 (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY* PFN_QGLSCISSOR) (GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRY* PFN_QGLSCALEF) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY* PFN_QGLSHADEMODEL) (GLenum mode);
+typedef void (APIENTRY* PFN_QGLTEXCOORD2F) (GLfloat s, GLfloat t);
+typedef void (APIENTRY* PFN_QGLTEXCOORD2FV) (const GLfloat *v);
+typedef void (APIENTRY* PFN_QGLTEXCOORDPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY* PFN_QGLTEXENVF) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRY* PFN_QGLTEXGENF) (GLenum coord, GLenum pname, GLfloat param);
+typedef void (APIENTRY* PFN_QGLTEXIMAGE1D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY* PFN_QGLTEXIMAGE2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY* PFN_QGLTEXPARAMETERF) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRY* PFN_QGLTEXPARAMETERFV) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRY* PFN_QGLTEXPARAMETERI) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRY* PFN_QGLTEXPARAMETERIV) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRY* PFN_QGLTEXSUBIMAGE1D) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY* PFN_QGLTEXSUBIMAGE2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRY* PFN_QGLTRANSLATED) (GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRY* PFN_QGLTRANSLATEF) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY* PFN_QGLVERTEX2F) (GLfloat x, GLfloat y);
+typedef void (APIENTRY* PFN_QGLVERTEX3F) (GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRY* PFN_QGLVERTEX3FV) (const GLfloat *v);
+typedef void (APIENTRY* PFN_QGLVERTEXPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRY* PFN_QGLVIEWPORT) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+typedef void (WINAPI* PFN_QE_CHECKOPENGLFORERRORS)     ();
+
+// glu stuff
+// TTimo: NOTE: relying on glu might not be such a good idea. On many systems, the GLU lib is outdated, misversioned etc.
+typedef void (APIENTRY * PFN_QGLUPERSPECTIVE) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRY * PFN_QGLULOOKAT) (GLdouble eyex, GLdouble eyey, GLdouble eyez,
+                                          GLdouble centerx, GLdouble centery, GLdouble centerz,
+                                          GLdouble upx, GLdouble upy, GLdouble upz);
+//++timo gluErrorString is defined but not exposed in the IGL interface
+
+
+// plugins drawing inside the GL windows
+//++timo TODO: add hooking into other windows (Z and .. texture??)
+//+timo NOTE: this could be moved to the messaging system instead of having a dedicated interface <- yet I don't know how
+typedef void (WINAPI* PFN_QERAPP_HOOKGL2DWINDOW) (IGL2DWindow *);
+typedef void (WINAPI* PFN_QERAPP_UNHOOKGL2DWINDOW) (IGL2DWindow *);
+typedef void (WINAPI* PFN_QERAPP_HOOKGL3DWINDOW) (IGL3DWindow *);
+typedef void (WINAPI* PFN_QERAPP_UNHOOKGL3DWINDOW) (IGL3DWindow *);
+
+struct _QERQglTable
+{
+  //++timo do we really wanna play with versions ?
+  //   float m_fVersion;
+  int m_nSize;
+  PFN_QGLALPHAFUNC             m_pfn_qglAlphaFunc;
+  PFN_QGLBEGIN                 m_pfn_qglBegin;
+  PFN_QGLBINDTEXTURE           m_pfn_qglBindTexture;
+  PFN_QGLBLENDFUNC             m_pfn_qglBlendFunc;
+  PFN_QGLCALLLIST                      m_pfn_qglCallList;
+  PFN_QGLCLEAR                 m_pfn_qglClear;
+  PFN_QGLCLEARCOLOR            m_pfn_qglClearColor;
+  PFN_QGLCALLLISTS             m_pfn_qglCallLists;
+  PFN_QGLCLEARDEPTH            m_pfn_qglClearDepth;
+  PFN_QGLCOLOR3F                       m_pfn_qglColor3f;
+  PFN_QGLCOLOR3FV         m_pfn_qglColor3fv;
+  PFN_QGLCOLOR4F                       m_pfn_qglColor4f;
+  PFN_QGLCOLOR4FV         m_pfn_qglColor4fv;
+  PFN_QGLCOLOR4UBV        m_pfn_qglColor4ubv;  // ydnar
+  PFN_QGLCOLORPOINTER     m_pfn_qglColorPointer;
+  PFN_QGLCULLFACE                      m_pfn_qglCullFace;
+  PFN_QGLDELETELISTS           m_pfn_qglDeleteLists;
+  PFN_QGLDELETETEXTURES  m_pfn_qglDeleteTextures;
+  PFN_QGLDEPTHFUNC        m_pfn_qglDepthFunc;
+  PFN_QGLDEPTHMASK        m_pfn_qglDepthMask;
+  PFN_QGLDISABLE                       m_pfn_qglDisable;
+  PFN_QGLDISABLECLIENTSTATE m_pfn_qglDisableClientState;
+  PFN_QGLDRAWELEMENTS                  m_pfn_qglDrawElements;
+  PFN_QGLENABLE                        m_pfn_qglEnable;
+  PFN_QGLENABLECLIENTSTATE  m_pfn_qglEnableClientState;
+  PFN_QGLEND                           m_pfn_qglEnd;
+  PFN_QGLENDLIST                       m_pfn_qglEndList;
+  PFN_QGLFOGF              m_pfn_qglFogf;
+  PFN_QGLFOGFV             m_pfn_qglFogfv;
+  PFN_QGLFOGFI             m_pfn_qglFogi;
+  PFN_QGLGENLISTS                      m_pfn_qglGenLists;
+  PFN_QGLGENTEXTURES  m_pfn_qglGenTextures;
+  PFN_QGLGETDOUBLEV                    m_pfn_qglGetDoublev;
+  PFN_QGLGETINTEGERV      m_pfn_qglGetIntegerv;
+  PFN_QGLHINT             m_pfn_qglHint;
+  PFN_QGLLIGHTFV          m_pfn_qglLightfv;
+  PFN_QGLLINESTIPPLE      m_pfn_qglLineStipple;
+  PFN_QGLLINEWIDTH        m_pfn_qglLineWidth;
+  PFN_QGLLISTBASE                      m_pfn_qglListBase;
+  PFN_QGLLOADIDENTITY          m_pfn_qglLoadIdentity;
+  PFN_QGLMATERIALF             m_pfn_qglMaterialf;
+  PFN_QGLMATERIALFV       m_pfn_qglMaterialfv;
+  PFN_QGLMATRIXMODE            m_pfn_qglMatrixMode;
+  PFN_QGLMULTMATRIXF  m_pfn_qglMultMatrixf;
+  PFN_QGLNEWLIST                       m_pfn_qglNewList;
+  PFN_QGLNORMAL3F                      m_pfn_qglNormal3f;
+  PFN_QGLNORMAL3FV                     m_pfn_qglNormal3fv;
+       PFN_QGLNORMALPOINTER            m_pfn_qglNormalPointer;
+  PFN_QGLORTHO                 m_pfn_qglOrtho;
+  PFN_QGLPOINTSIZE             m_pfn_qglPointSize;
+  PFN_QGLPOLYGONMODE           m_pfn_qglPolygonMode;
+  PFN_QGLPOPATTRIB             m_pfn_qglPopAttrib;
+  PFN_QGLPOPMATRIX             m_pfn_qglPopMatrix;
+  PFN_QGLPUSHATTRIB            m_pfn_qglPushAttrib;
+  PFN_QGLPUSHMATRIX            m_pfn_qglPushMatrix;
+       PFN_QGLRASTERPOS3FV     m_pfn_qglRasterPos3fv;
+  PFN_QGLROTATED                       m_pfn_qglRotated;
+  PFN_QGLROTATEF                       m_pfn_qglRotatef;
+  PFN_QGLSCALEF                        m_pfn_qglScalef;
+  PFN_QGLSCISSOR        m_pfn_qglScissor;
+  PFN_QGLSHADEMODEL            m_pfn_qglShadeModel;
+  PFN_QGLTEXCOORD2F            m_pfn_qglTexCoord2f;
+  PFN_QGLTEXCOORD2FV      m_pfn_qglTexCoord2fv;
+       PFN_QGLTEXCOORDPOINTER          m_pfn_qglTexCoordPointer;
+  PFN_QGLTEXENVF                       m_pfn_qglTexEnvf;
+  PFN_QGLTEXGENF                       m_pfn_qglTexGenf;
+  PFN_QGLTEXIMAGE1D     m_pfn_qglTexImage1D;
+  PFN_QGLTEXIMAGE2D     m_pfn_qglTexImage2D;
+  PFN_QGLTEXPARAMETERF  m_pfn_qglTexParameterf;
+  PFN_QGLTEXPARAMETERFV m_pfn_qglTexParameterfv;
+  PFN_QGLTEXPARAMETERI  m_pfn_qglTexParameteri;
+  PFN_QGLTEXPARAMETERIV m_pfn_qglTexParameteriv;
+  PFN_QGLTEXSUBIMAGE1D  m_pfn_qglTexSubImage1D;
+  PFN_QGLTEXSUBIMAGE2D  m_pfn_qglTexSubImage2D;
+  PFN_QGLTRANSLATED            m_pfn_qglTranslated;
+  PFN_QGLTRANSLATEF            m_pfn_qglTranslatef;
+  PFN_QGLVERTEX2F                      m_pfn_qglVertex2f;
+  PFN_QGLVERTEX3F                      m_pfn_qglVertex3f;
+  PFN_QGLVERTEX3FV        m_pfn_qglVertex3fv;
+       PFN_QGLVERTEXPOINTER            m_pfn_qglVertexPointer;
+  PFN_QGLVIEWPORT                      m_pfn_qglViewport;
+
+  PFN_QE_CHECKOPENGLFORERRORS  m_pfn_QE_CheckOpenGLForErrors;
+
+  // glu stuff
+  PFN_QGLUPERSPECTIVE                  m_pfn_qgluPerspective;
+  PFN_QGLULOOKAT                               m_pfn_qgluLookAt;
+
+  // plugin entities drawing inside Radiant windows
+  PFN_QERAPP_HOOKGL2DWINDOW    m_pfnHookGL2DWindow;
+  PFN_QERAPP_UNHOOKGL2DWINDOW  m_pfnUnHookGL2DWindow;
+  PFN_QERAPP_HOOKGL3DWINDOW m_pfnHookGL3DWindow;
+  PFN_QERAPP_UNHOOKGL3DWINDOW m_pfnUnHookGL3DWindow;
+};
+
+#endif