aboutsummaryrefslogtreecommitdiffstats
path: root/q3radiant/igl.h
diff options
context:
space:
mode:
Diffstat (limited to 'q3radiant/igl.h')
-rwxr-xr-xq3radiant/igl.h261
1 files changed, 261 insertions, 0 deletions
diff --git a/q3radiant/igl.h b/q3radiant/igl.h
new file mode 100755
index 0000000..035cb77
--- /dev/null
+++ b/q3radiant/igl.h
@@ -0,0 +1,261 @@
+/*
+===========================================================================
+Copyright (C) 1999-2005 Id Software, Inc.
+
+This file is part of Quake III Arena source code.
+
+Quake III Arena source code 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.
+
+Quake III Arena source code 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 Foobar; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+===========================================================================
+*/
+//-----------------------------------------------------------------------------
+//
+// $LogFile$
+// $Revision: 1.7.2.3 $
+// $Author: ttimo $
+// $Date: 2000/02/16 15:43:14 $
+// $Log: igl.h,v $
+// Revision 1.7.2.3 2000/02/16 15:43:14 ttimo
+// Curry bug #101996: added glTexParameterf and glNormal3f
+//
+// Revision 1.7.2.2 2000/02/13 17:48:07 ttimo
+// Curry bug #101874 - added glTexGenf to GL interface
+//
+// Revision 1.7.2.1 2000/02/04 22:59:34 ttimo
+// messaging API preview
+//
+// Revision 1.7 2000/01/18 00:43:59 ttimo
+// RC
+//
+// Revision 1.6 2000/01/13 00:46:41 ttimo
+// Merged in patches in / out
+// Revision 1.1.1.4 2000/01/18 00:17:12 ttimo
+// merging in for RC
+//
+// Revision 1.5 2000/01/11 22:14:48 ttimo
+// cleaning up after merging and thinks badly fucked up
+//
+// Revision 1.2 2000/01/09 04:39:14 ttimo
+// added some bindings to the GL table
+//
+// Revision 1.1.1.3 2000/01/11 16:43:15 ttimo
+// merged version from old reposit and Robert update
+//
+// Revision 1.1.1.1 2000/01/07 17:17:30 ttimo
+// initial import of Q3Radiant module
+//
+// Revision 1.1.1.1 2000/01/07 17:17:30 ttimo
+// initial import of Q3Radiant module
+//
+// Revision 1.3 2000/01/17 23:53:44 TBesset
+// ready for merge in sourceforge (RC candidate)
+//
+// Revision 1.2 2000/01/07 16:40:13 TBesset
+// merged from BSP frontend
+//
+// Revision 1.1.1.3 1999/12/29 18:31:27 TBesset
+// Q3Radiant public version
+//
+// Revision 1.1.1.1.2.1 1999/12/29 21:39:45 TBesset
+// updated to update3 from Robert
+//
+// Revision 1.1.1.3 1999/12/29 18:31:27 TBesset
+// Q3Radiant public version
+// Revision 1.1.1.3 1999/12/29 18:31:27 TBesset
+// Q3Radiant public version
+//
+// Revision 1.2 1999/11/22 17:46:48 Timo & Christine
+// merged EARadiant into the main tree
+// bug fixes for Q3Plugin / EAPlugin
+// export for Robert
+//
+// Revision 1.1.2.2 1999/11/03 20:38:04 Timo & Christine
+// MEAN plugin for Q3Radiant, alpha version
+//
+// Revision 1.1.2.1.2.1 1999/10/27 08:34:29 Timo & Christine
+// preview version of the texture tools plugin is ready
+// ( TexTool.dll plugin is in Q3Plugin module )
+// plugins can draw in their own window using Radiant's qgl bindings
+//
+// Revision 1.1.2.1 1999/10/08 16:28:14 Timo & Christine
+// started plugin extensions for EA features support in Q3Radiant
+// MEAN files plugin, and Surface Properties plugin
+//
+//
+// DESCRIPTION:
+// all purpose OpenGL interface for Q3Radiant plugins
+//
+
+#ifndef __IGL_H__
+#define __IGL_H__
+
+// we use this class to let plugins draw inside the Radiant windows
+class IGLWindow
+{
+public:
+ // Increment the number of references to this object
+ virtual void IncRef () = 0;
+ // Decrement the reference count
+ virtual void DecRef () = 0;
+ virtual void Draw( VIEWTYPE vt ) = 0;
+};
+
+// define a GUID for this interface so plugins can access and reference it
+// {0F237620-854B-11d3-8EF3-A2DFBD53251B}
+static const GUID QERQglTable_GUID =
+{ 0xf237620, 0x854b, 0x11d3, { 0x8e, 0xf3, 0xa2, 0xdf, 0xbd, 0x53, 0x25, 0x1b } };
+
+#include <gl/gl.h>
+#include <gl/glu.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_QGLCOLOR4F) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+typedef void (APIENTRY* PFN_QGLCULLFACE) (GLenum mode);
+typedef void (APIENTRY* PFN_QGLDELETELISTS) (GLuint list, GLsizei range);
+typedef void (APIENTRY* PFN_QGLDISABLE) (GLenum cap);
+typedef void (APIENTRY* PFN_QGLENABLE) (GLenum cap);
+typedef void (APIENTRY* PFN_QGLEND) ();
+typedef void (APIENTRY* PFN_QGLENDLIST) (void);
+typedef GLuint (APIENTRY* PFN_QGLGENLISTS) (GLsizei range);
+typedef void (APIENTRY* PFN_QGLLISTBASE) (GLuint base);
+typedef void (APIENTRY* PFN_QGLLOADIDENTITY) ();
+typedef void (APIENTRY* PFN_QGLMATRIXMODE) (GLenum mode);
+typedef void (APIENTRY* PFN_QGLNEWLIST) (GLuint list, GLenum mode);
+typedef void (APIENTRY* PFN_QGLNORMAL3F) (GLfloat nx, GLfloat ny, GLfloat nz);
+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_QGLPOPMATRIX) ();
+typedef void (APIENTRY* PFN_QGLPUSHMATRIX) ();
+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_QGLTEXCOORD2F) (GLfloat s, GLfloat t);
+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_QGLTEXPARAMETERF) (GLenum target, GLenum pname, GLfloat param);
+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_QGLVIEWPORT) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+typedef void (WINAPI* PFN_QE_CHECKOPENGLFORERRORS) ();
+typedef int (WINAPI* PFN_QEW_SETUPPIXELFORMAT) (HDC hDC, qboolean zbuffer );
+typedef HGLRC (WINAPI* PFN_QWGL_CREATECONTEXT) (HDC);
+typedef BOOL (WINAPI* PFN_QWGL_DELETECONTEXT) (HGLRC);
+typedef BOOL (WINAPI* PFN_QWGL_MAKECURRENT) (HDC, HGLRC);
+typedef BOOL (WINAPI* PFN_QWGL_SHARELISTS) (HGLRC, HGLRC);
+typedef BOOL (WINAPI* PFN_QWGL_SWAPBUFFERS) (HDC);
+typedef BOOL (WINAPI* PFN_QWGL_USEFONTBITMAPS) (HDC, DWORD, DWORD, DWORD);
+
+// glu stuff
+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);
+
+
+// specially provided by the editor for plugins
+typedef HGLRC (WINAPI* PFN_QERAPP_GETQEGLOBALSHGLRC) ();
+
+// plugins drawing inside the GL windows
+//++timo TODO: add hooking into other windows
+//+timo NOTE: this could be moved to the messaging system instead of having a dedicated interface
+typedef void (WINAPI* PFN_QERAPP_HOOKXYGLWINDOW) (IGLWindow *);
+typedef void (WINAPI* PFN_QERAPP_UNHOOKGLWINDOW) (IGLWindow *);
+
+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_QGLCOLOR4F m_pfn_qglColor4f;
+ PFN_QGLCULLFACE m_pfn_qglCullFace;
+ PFN_QGLDELETELISTS m_pfn_qglDeleteLists;
+ PFN_QGLDISABLE m_pfn_qglDisable;
+ PFN_QGLENABLE m_pfn_qglEnable;
+ PFN_QGLEND m_pfn_qglEnd;
+ PFN_QGLENDLIST m_pfn_qglEndList;
+ PFN_QGLGENLISTS m_pfn_qglGenLists;
+ PFN_QGLLISTBASE m_pfn_qglListBase;
+ PFN_QGLLOADIDENTITY m_pfn_qglLoadIdentity;
+ PFN_QGLMATRIXMODE m_pfn_qglMatrixMode;
+ PFN_QGLNEWLIST m_pfn_qglNewList;
+ PFN_QGLNORMAL3F m_pfn_qglNormal3f;
+ PFN_QGLORTHO m_pfn_qglOrtho;
+ PFN_QGLPOINTSIZE m_pfn_qglPointSize;
+ PFN_QGLPOLYGONMODE m_pfn_qglPolygonMode;
+ PFN_QGLPOPMATRIX m_pfn_qglPopMatrix;
+ PFN_QGLPUSHMATRIX m_pfn_qglPushMatrix;
+ PFN_QGLROTATED m_pfn_qglRotated;
+ PFN_QGLROTATEF m_pfn_qglRotatef;
+ PFN_QGLSCALEF m_pfn_qglScalef;
+ PFN_QGLTEXCOORD2F m_pfn_qglTexCoord2f;
+ PFN_QGLTEXENVF m_pfn_qglTexEnvf;
+ PFN_QGLTEXGENF m_pfn_qglTexGenf;
+ PFN_QGLTEXPARAMETERF m_pfn_qglTexParameterf;
+ PFN_QGLTRANSLATED m_pfn_qglTranslated;
+ PFN_QGLTRANSLATEF m_pfn_qglTranslatef;
+ PFN_QGLVERTEX2F m_pfn_qglVertex2f;
+ PFN_QGLVERTEX3F m_pfn_qglVertex3f;
+ PFN_QGLVIEWPORT m_pfn_qglViewport;
+
+ PFN_QE_CHECKOPENGLFORERRORS m_pfn_QE_CheckOpenGLForErrors;
+ PFN_QEW_SETUPPIXELFORMAT m_pfn_QEW_SetupPixelFormat;
+ PFN_QWGL_CREATECONTEXT m_pfn_qwglCreateContext;
+ PFN_QWGL_DELETECONTEXT m_pfn_qwglDeleteContext;
+ PFN_QWGL_MAKECURRENT m_pfn_qwglMakeCurrent;
+ PFN_QWGL_SHARELISTS m_pfn_qwglShareLists;
+ PFN_QWGL_SWAPBUFFERS m_pfn_qwglSwapBuffers;
+ PFN_QWGL_USEFONTBITMAPS m_pfn_qwglUseFontBitmaps;
+
+ PFN_QERAPP_GETQEGLOBALSHGLRC m_pfnGetQeglobalsHGLRC;
+
+ // glu stuff
+ PFN_QGLUPERSPECTIVE m_pfn_qgluPerspective;
+ PFN_QGLULOOKAT m_pfn_qgluLookAt;
+
+ // plugin entities drawing inside Radiant windows
+ PFN_QERAPP_HOOKXYGLWINDOW m_pfnHookXYGLWindow;
+ PFN_QERAPP_UNHOOKGLWINDOW m_pfnUnHookGLWindow;
+};
+
+#endif \ No newline at end of file