aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/libraries/include
diff options
context:
space:
mode:
authorJacek Antonelli2008-09-06 18:24:57 -0500
committerJacek Antonelli2008-09-06 18:25:07 -0500
commit798d367d54a6c6379ad355bd8345fa40e31e7fe9 (patch)
tree1921f1708cd0240648c97bc02df2c2ab5f2fc41e /linden/libraries/include
parentSecond Life viewer sources 1.20.15 (diff)
downloadmeta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.zip
meta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.tar.gz
meta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.tar.bz2
meta-impy-798d367d54a6c6379ad355bd8345fa40e31e7fe9.tar.xz
Second Life viewer sources 1.21.0-RC
Diffstat (limited to 'linden/libraries/include')
-rw-r--r--linden/libraries/include/GL/glh_extensions.h207
-rw-r--r--linden/libraries/include/GL/glh_genext.h1671
-rwxr-xr-xlinden/libraries/include/glh/glh_linear.h1621
-rw-r--r--linden/libraries/include/llmozlib2.h383
4 files changed, 0 insertions, 3882 deletions
diff --git a/linden/libraries/include/GL/glh_extensions.h b/linden/libraries/include/GL/glh_extensions.h
deleted file mode 100644
index b936b5d..0000000
--- a/linden/libraries/include/GL/glh_extensions.h
+++ /dev/null
@@ -1,207 +0,0 @@
1/*
2 * glh_extensions.h
3 * From nVidia Corporation, downloaded 2006-12-18 from:
4 * http://developer.nvidia.com/attach/8196
5 * ("NVParse Library with Source (.zip) (2390 KB)")
6 *
7 * License (quoted from license_info.txt in aforementioned file):
8 * "The files bison.exe, bison.simple, and flex.exe are covered by
9 * the GPL. All other files in this distribution can be used however
10 * you want."
11 */
12
13#ifndef GLH_EXTENSIONS
14#define GLH_EXTENSIONS
15
16#include <string.h>
17#include <stdio.h>
18
19#ifdef _WIN32
20# include <windows.h>
21#endif
22
23#ifndef __APPLE__
24#include <GL/gl.h>
25#endif
26
27#ifdef _WIN32
28# include "GL/wglext.h"
29#endif
30
31#define CHECK_MEMORY(ptr) \
32 if (NULL == ptr) { \
33 printf("Error allocating memory in file %s, line %d\n", __FILE__, __LINE__); \
34 exit(-1); \
35 }
36
37#ifdef GLH_EXT_SINGLE_FILE
38# define GLH_EXTENSIONS_SINGLE_FILE // have to do this because glh_genext.h unsets GLH_EXT_SINGLE_FILE
39#endif
40
41#include "glh_genext.h"
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47#ifdef GLH_EXTENSIONS_SINGLE_FILE
48
49class GLHExts
50{
51public:
52 GLHExts()
53 {
54 mSysExts = NULL;
55// mUnsupportedExts = NULL;
56 }
57 ~GLHExts()
58 {
59 if (mSysExts)
60 {
61 free(mSysExts);
62 }
63// if (mUnsupportedExts)
64// {
65// free(mUnsupportedExts);
66// }
67 }
68 char *mSysExts;
69// char *mUnsupportedExts;
70};
71
72GLHExts gGLHExts;
73
74static int ExtensionExists(const char* extName, const char* sysExts)
75{
76 char *padExtName = (char*)malloc(strlen(extName) + 2);
77 strcat(strcpy(padExtName, extName), " ");
78
79 if (0 == strcmp(extName, "GL_VERSION_1_2")) {
80 const char *version = (const char*)glGetString(GL_VERSION);
81 if (strstr(version, "1.0") == version || strstr(version, "1.1") == version) {
82 return FALSE;
83 } else {
84 return TRUE;
85 }
86 }
87 if (strstr(sysExts, padExtName)) {
88 free(padExtName);
89 return TRUE;
90 } else {
91 free(padExtName);
92 return FALSE;
93 }
94}
95
96static const char* EatWhiteSpace(const char *str)
97{
98 for (; *str && (' ' == *str || '\t' == *str || '\n' == *str); str++);
99 return str;
100}
101
102static const char* EatNonWhiteSpace(const char *str)
103{
104 for (; *str && (' ' != *str && '\t' != *str && '\n' != *str); str++);
105 return str;
106}
107
108
109int glh_init_extensions(const char *origReqExts)
110{
111 // Length of requested extensions string
112 unsigned reqExtsLen;
113 char *reqExts;
114 // Ptr for individual extensions within reqExts
115 char *reqExt;
116 int success = TRUE;
117
118 // build space-padded extension string
119 if (NULL == gGLHExts.mSysExts) {
120 const char *extensions = (const char*)glGetString(GL_EXTENSIONS);
121 int sysExtsLen = (int)strlen(extensions);
122 const char *winsys_extensions = 0;
123 int winsysExtsLen = 0;
124#ifdef _WIN32
125 {
126 PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = 0;
127 wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB");
128 if(wglGetExtensionsStringARB)
129 {
130 winsys_extensions = wglGetExtensionsStringARB(wglGetCurrentDC());
131 winsysExtsLen = (S32)strlen(winsys_extensions);
132 }
133 }
134#endif
135 // Add 2 bytes, one for padding space, one for terminating NULL
136 gGLHExts.mSysExts = (char*)malloc(sysExtsLen + winsysExtsLen + 3);
137 CHECK_MEMORY(gGLHExts.mSysExts);
138 strcpy(gGLHExts.mSysExts, extensions);
139 gGLHExts.mSysExts[sysExtsLen] = ' ';
140 gGLHExts.mSysExts[sysExtsLen + 1] = 0;
141 if (winsysExtsLen)
142 {
143 strcat(gGLHExts.mSysExts, winsys_extensions);
144 }
145 gGLHExts.mSysExts[sysExtsLen + 1 + winsysExtsLen] = ' ';
146 gGLHExts.mSysExts[sysExtsLen + 1 + winsysExtsLen + 1] = 0;
147 }
148
149 if (NULL == origReqExts)
150 {
151 return TRUE;
152 }
153 reqExts = strdup(origReqExts);
154 reqExtsLen = (S32)strlen(reqExts);
155 /*
156 if (NULL == gGLHExts.mUnsupportedExts)
157 {
158 gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1);
159 }
160 else if (reqExtsLen > strlen(gGLHExts.mUnsupportedExts))
161 {
162 gGLHExts.mUnsupportedExts = (char*)realloc(gGLHExts.mUnsupportedExts, reqExtsLen + 1);
163 }
164 CHECK_MEMORY(gGLHExts.mUnsupportedExts);
165 *gGLHExts.mUnsupportedExts = 0;
166 */
167
168 // Parse requested extension list
169 for (reqExt = reqExts;
170 (reqExt = (char*)EatWhiteSpace(reqExt)) && *reqExt;
171 reqExt = (char*)EatNonWhiteSpace(reqExt))
172 {
173 char *extEnd = (char*)EatNonWhiteSpace(reqExt);
174 char saveChar = *extEnd;
175 *extEnd = (char)0;
176
177 if (!ExtensionExists(reqExt, gGLHExts.mSysExts) ||
178 !glh_init_extension(reqExt)) {
179 /*
180 // add reqExt to end of unsupportedExts
181 strcat(gGLHExts.mUnsupportedExts, reqExt);
182 strcat(gGLHExts.mUnsupportedExts, " ");
183 */
184 success = FALSE;
185 }
186 *extEnd = saveChar;
187 }
188 free(reqExts);
189 return success;
190}
191
192const char* glh_get_unsupported_extensions()
193{
194 return "";
195// return (const char*)gGLHExts.mUnsupportedExts;
196}
197
198#else
199int glh_init_extensions(const char *origReqExts);
200const char* glh_get_unsupported_extensions();
201#endif /* GLH_EXT_SINGLE_FILE */
202
203#ifdef __cplusplus
204}
205#endif
206
207#endif /* GLH_EXTENSIONS */
diff --git a/linden/libraries/include/GL/glh_genext.h b/linden/libraries/include/GL/glh_genext.h
deleted file mode 100644
index 8d42025..0000000
--- a/linden/libraries/include/GL/glh_genext.h
+++ /dev/null
@@ -1,1671 +0,0 @@
1/*
2 * glh_genext.h
3 * From nVidia Corporation, downloaded 2006-12-18 from:
4 * http://developer.nvidia.com/attach/8196
5 * ("NVParse Library with Source (.zip) (2390 KB)")
6 *
7 * License (quoted from license_info.txt in aforementioned file):
8 * "The files bison.exe, bison.simple, and flex.exe are covered by
9 * the GPL. All other files in this distribution can be used however
10 * you want."
11 */
12
13/* File generated by extgen.cpp -- do not modify */
14#ifndef GLH_GENEXT_H
15#define GLH_GENEXT_H
16
17// MBW -- None of this is necessary on Mac OS.
18#ifndef __APPLE__
19
20#include <GL/gl.h>
21#include <GL/glext.h>
22
23#ifdef _WIN32 /* supports windows, x -- need to generalize */
24# include <GL/wglext.h>
25# define GLH_EXT_GET_PROC_ADDRESS(p) wglGetProcAddress(p)
26#else if GLX_VERSION_1_3
27# include <GL/glxext.h>
28# define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB(p)
29#endif
30
31#ifdef GLH_EXT_SINGLE_FILE
32 #define GLH_EXTERN
33 #define GLH_INITIALIZER = 0
34#else
35 #define GLH_EXTERN extern
36 #define GLH_INITIALIZER
37#endif
38
39#define GLH__PREPROCESSOR_GYMNASTICS2(a,b) a##b
40#define GLH__PREPROCESSOR_GYMNASTICS(a,b) GLH__PREPROCESSOR_GYMNASTICS2(a,b)
41
42#ifndef GLH_EXT_PREFIX
43# define GLH_EXT_NAME(a) a
44#else
45# define GLH_EXT_NAME(a) GLH__PREPROCESSOR_GYMNASTICS(GLH_EXT_PREFIX,a)
46#endif
47
48#ifndef _WIN32
49# ifndef GLH_CORE_1_2_PREFIX
50# define GLH_CORE_1_2_PREFIX _
51# endif
52#endif
53
54#ifndef GLH_CORE_1_2_PREFIX
55# define GLH_CORE_1_2_NAME(a) a
56#else
57# define GLH_CORE_1_2_NAME(a) GLH__PREPROCESSOR_GYMNASTICS(GLH_CORE_1_2_PREFIX,a)
58#endif
59
60#ifdef GL_ARB_multitexture
61 GLH_EXTERN PFNGLMULTITEXCOORD1DARBPROC GLH_EXT_NAME(glMultiTexCoord1dARB) GLH_INITIALIZER;
62 GLH_EXTERN PFNGLMULTITEXCOORD1DVARBPROC GLH_EXT_NAME(glMultiTexCoord1dvARB) GLH_INITIALIZER;
63 GLH_EXTERN PFNGLMULTITEXCOORD1FARBPROC GLH_EXT_NAME(glMultiTexCoord1fARB) GLH_INITIALIZER;
64 GLH_EXTERN PFNGLMULTITEXCOORD1FVARBPROC GLH_EXT_NAME(glMultiTexCoord1fvARB) GLH_INITIALIZER;
65 GLH_EXTERN PFNGLMULTITEXCOORD1IARBPROC GLH_EXT_NAME(glMultiTexCoord1iARB) GLH_INITIALIZER;
66 GLH_EXTERN PFNGLMULTITEXCOORD1IVARBPROC GLH_EXT_NAME(glMultiTexCoord1ivARB) GLH_INITIALIZER;
67 GLH_EXTERN PFNGLMULTITEXCOORD1SARBPROC GLH_EXT_NAME(glMultiTexCoord1sARB) GLH_INITIALIZER;
68 GLH_EXTERN PFNGLMULTITEXCOORD1SVARBPROC GLH_EXT_NAME(glMultiTexCoord1svARB) GLH_INITIALIZER;
69 GLH_EXTERN PFNGLMULTITEXCOORD2DARBPROC GLH_EXT_NAME(glMultiTexCoord2dARB) GLH_INITIALIZER;
70 GLH_EXTERN PFNGLMULTITEXCOORD2DVARBPROC GLH_EXT_NAME(glMultiTexCoord2dvARB) GLH_INITIALIZER;
71 GLH_EXTERN PFNGLMULTITEXCOORD2FARBPROC GLH_EXT_NAME(glMultiTexCoord2fARB) GLH_INITIALIZER;
72 GLH_EXTERN PFNGLMULTITEXCOORD2FVARBPROC GLH_EXT_NAME(glMultiTexCoord2fvARB) GLH_INITIALIZER;
73 GLH_EXTERN PFNGLMULTITEXCOORD2IARBPROC GLH_EXT_NAME(glMultiTexCoord2iARB) GLH_INITIALIZER;
74 GLH_EXTERN PFNGLMULTITEXCOORD2IVARBPROC GLH_EXT_NAME(glMultiTexCoord2ivARB) GLH_INITIALIZER;
75 GLH_EXTERN PFNGLMULTITEXCOORD2SARBPROC GLH_EXT_NAME(glMultiTexCoord2sARB) GLH_INITIALIZER;
76 GLH_EXTERN PFNGLMULTITEXCOORD2SVARBPROC GLH_EXT_NAME(glMultiTexCoord2svARB) GLH_INITIALIZER;
77 GLH_EXTERN PFNGLMULTITEXCOORD3DARBPROC GLH_EXT_NAME(glMultiTexCoord3dARB) GLH_INITIALIZER;
78 GLH_EXTERN PFNGLMULTITEXCOORD3DVARBPROC GLH_EXT_NAME(glMultiTexCoord3dvARB) GLH_INITIALIZER;
79 GLH_EXTERN PFNGLMULTITEXCOORD3FARBPROC GLH_EXT_NAME(glMultiTexCoord3fARB) GLH_INITIALIZER;
80 GLH_EXTERN PFNGLMULTITEXCOORD3FVARBPROC GLH_EXT_NAME(glMultiTexCoord3fvARB) GLH_INITIALIZER;
81 GLH_EXTERN PFNGLMULTITEXCOORD3IARBPROC GLH_EXT_NAME(glMultiTexCoord3iARB) GLH_INITIALIZER;
82 GLH_EXTERN PFNGLMULTITEXCOORD3IVARBPROC GLH_EXT_NAME(glMultiTexCoord3ivARB) GLH_INITIALIZER;
83 GLH_EXTERN PFNGLMULTITEXCOORD3SARBPROC GLH_EXT_NAME(glMultiTexCoord3sARB) GLH_INITIALIZER;
84 GLH_EXTERN PFNGLMULTITEXCOORD3SVARBPROC GLH_EXT_NAME(glMultiTexCoord3svARB) GLH_INITIALIZER;
85 GLH_EXTERN PFNGLMULTITEXCOORD4DARBPROC GLH_EXT_NAME(glMultiTexCoord4dARB) GLH_INITIALIZER;
86 GLH_EXTERN PFNGLMULTITEXCOORD4DVARBPROC GLH_EXT_NAME(glMultiTexCoord4dvARB) GLH_INITIALIZER;
87 GLH_EXTERN PFNGLMULTITEXCOORD4FARBPROC GLH_EXT_NAME(glMultiTexCoord4fARB) GLH_INITIALIZER;
88 GLH_EXTERN PFNGLMULTITEXCOORD4FVARBPROC GLH_EXT_NAME(glMultiTexCoord4fvARB) GLH_INITIALIZER;
89 GLH_EXTERN PFNGLMULTITEXCOORD4IARBPROC GLH_EXT_NAME(glMultiTexCoord4iARB) GLH_INITIALIZER;
90 GLH_EXTERN PFNGLMULTITEXCOORD4IVARBPROC GLH_EXT_NAME(glMultiTexCoord4ivARB) GLH_INITIALIZER;
91 GLH_EXTERN PFNGLMULTITEXCOORD4SARBPROC GLH_EXT_NAME(glMultiTexCoord4sARB) GLH_INITIALIZER;
92 GLH_EXTERN PFNGLMULTITEXCOORD4SVARBPROC GLH_EXT_NAME(glMultiTexCoord4svARB) GLH_INITIALIZER;
93 GLH_EXTERN PFNGLACTIVETEXTUREARBPROC GLH_EXT_NAME(glActiveTextureARB) GLH_INITIALIZER;
94 GLH_EXTERN PFNGLCLIENTACTIVETEXTUREARBPROC GLH_EXT_NAME(glClientActiveTextureARB) GLH_INITIALIZER;
95#endif
96
97#ifdef GL_ARB_texture_border_clamp
98#endif
99
100#ifdef GL_ARB_texture_compression
101 GLH_EXTERN PFNGLCOMPRESSEDTEXIMAGE3DARBPROC GLH_EXT_NAME(glCompressedTexImage3DARB) GLH_INITIALIZER;
102 GLH_EXTERN PFNGLCOMPRESSEDTEXIMAGE2DARBPROC GLH_EXT_NAME(glCompressedTexImage2DARB) GLH_INITIALIZER;
103 GLH_EXTERN PFNGLCOMPRESSEDTEXIMAGE1DARBPROC GLH_EXT_NAME(glCompressedTexImage1DARB) GLH_INITIALIZER;
104 GLH_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC GLH_EXT_NAME(glCompressedTexSubImage3DARB) GLH_INITIALIZER;
105 GLH_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC GLH_EXT_NAME(glCompressedTexSubImage2DARB) GLH_INITIALIZER;
106 GLH_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC GLH_EXT_NAME(glCompressedTexSubImage1DARB) GLH_INITIALIZER;
107 GLH_EXTERN PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GLH_EXT_NAME(glGetCompressedTexImageARB) GLH_INITIALIZER;
108#endif
109
110#ifdef GL_ARB_texture_cube_map
111#endif
112
113#ifdef GL_ARB_transpose_matrix
114 GLH_EXTERN PFNGLLOADTRANSPOSEMATRIXFARBPROC GLH_EXT_NAME(glLoadTransposeMatrixfARB) GLH_INITIALIZER;
115 GLH_EXTERN PFNGLLOADTRANSPOSEMATRIXDARBPROC GLH_EXT_NAME(glLoadTransposeMatrixdARB) GLH_INITIALIZER;
116 GLH_EXTERN PFNGLMULTTRANSPOSEMATRIXFARBPROC GLH_EXT_NAME(glMultTransposeMatrixfARB) GLH_INITIALIZER;
117 GLH_EXTERN PFNGLMULTTRANSPOSEMATRIXDARBPROC GLH_EXT_NAME(glMultTransposeMatrixdARB) GLH_INITIALIZER;
118#endif
119
120#ifdef GL_ARB_vertex_program
121 GLH_EXTERN PFNGLVERTEXATTRIB1SARBPROC GLH_EXT_NAME(glVertexAttrib1sARB) GLH_INITIALIZER;
122 GLH_EXTERN PFNGLVERTEXATTRIB1FARBPROC GLH_EXT_NAME(glVertexAttrib1fARB) GLH_INITIALIZER;
123 GLH_EXTERN PFNGLVERTEXATTRIB1DARBPROC GLH_EXT_NAME(glVertexAttrib1dARB) GLH_INITIALIZER;
124 GLH_EXTERN PFNGLVERTEXATTRIB2SARBPROC GLH_EXT_NAME(glVertexAttrib2sARB) GLH_INITIALIZER;
125 GLH_EXTERN PFNGLVERTEXATTRIB2FARBPROC GLH_EXT_NAME(glVertexAttrib2fARB) GLH_INITIALIZER;
126 GLH_EXTERN PFNGLVERTEXATTRIB2DARBPROC GLH_EXT_NAME(glVertexAttrib2dARB) GLH_INITIALIZER;
127 GLH_EXTERN PFNGLVERTEXATTRIB3SARBPROC GLH_EXT_NAME(glVertexAttrib3sARB) GLH_INITIALIZER;
128 GLH_EXTERN PFNGLVERTEXATTRIB3FARBPROC GLH_EXT_NAME(glVertexAttrib3fARB) GLH_INITIALIZER;
129 GLH_EXTERN PFNGLVERTEXATTRIB3DARBPROC GLH_EXT_NAME(glVertexAttrib3dARB) GLH_INITIALIZER;
130 GLH_EXTERN PFNGLVERTEXATTRIB4SARBPROC GLH_EXT_NAME(glVertexAttrib4sARB) GLH_INITIALIZER;
131 GLH_EXTERN PFNGLVERTEXATTRIB4FARBPROC GLH_EXT_NAME(glVertexAttrib4fARB) GLH_INITIALIZER;
132 GLH_EXTERN PFNGLVERTEXATTRIB4DARBPROC GLH_EXT_NAME(glVertexAttrib4dARB) GLH_INITIALIZER;
133 GLH_EXTERN PFNGLVERTEXATTRIB4NUBARBPROC GLH_EXT_NAME(glVertexAttrib4NubARB) GLH_INITIALIZER;
134 GLH_EXTERN PFNGLVERTEXATTRIB1SVARBPROC GLH_EXT_NAME(glVertexAttrib1svARB) GLH_INITIALIZER;
135 GLH_EXTERN PFNGLVERTEXATTRIB1FVARBPROC GLH_EXT_NAME(glVertexAttrib1fvARB) GLH_INITIALIZER;
136 GLH_EXTERN PFNGLVERTEXATTRIB1DVARBPROC GLH_EXT_NAME(glVertexAttrib1dvARB) GLH_INITIALIZER;
137 GLH_EXTERN PFNGLVERTEXATTRIB2SVARBPROC GLH_EXT_NAME(glVertexAttrib2svARB) GLH_INITIALIZER;
138 GLH_EXTERN PFNGLVERTEXATTRIB2FVARBPROC GLH_EXT_NAME(glVertexAttrib2fvARB) GLH_INITIALIZER;
139 GLH_EXTERN PFNGLVERTEXATTRIB2DVARBPROC GLH_EXT_NAME(glVertexAttrib2dvARB) GLH_INITIALIZER;
140 GLH_EXTERN PFNGLVERTEXATTRIB3SVARBPROC GLH_EXT_NAME(glVertexAttrib3svARB) GLH_INITIALIZER;
141 GLH_EXTERN PFNGLVERTEXATTRIB3FVARBPROC GLH_EXT_NAME(glVertexAttrib3fvARB) GLH_INITIALIZER;
142 GLH_EXTERN PFNGLVERTEXATTRIB3DVARBPROC GLH_EXT_NAME(glVertexAttrib3dvARB) GLH_INITIALIZER;
143 GLH_EXTERN PFNGLVERTEXATTRIB4BVARBPROC GLH_EXT_NAME(glVertexAttrib4bvARB) GLH_INITIALIZER;
144 GLH_EXTERN PFNGLVERTEXATTRIB4SVARBPROC GLH_EXT_NAME(glVertexAttrib4svARB) GLH_INITIALIZER;
145 GLH_EXTERN PFNGLVERTEXATTRIB4IVARBPROC GLH_EXT_NAME(glVertexAttrib4ivARB) GLH_INITIALIZER;
146 GLH_EXTERN PFNGLVERTEXATTRIB4UBVARBPROC GLH_EXT_NAME(glVertexAttrib4ubvARB) GLH_INITIALIZER;
147 GLH_EXTERN PFNGLVERTEXATTRIB4USVARBPROC GLH_EXT_NAME(glVertexAttrib4usvARB) GLH_INITIALIZER;
148 GLH_EXTERN PFNGLVERTEXATTRIB4UIVARBPROC GLH_EXT_NAME(glVertexAttrib4uivARB) GLH_INITIALIZER;
149 GLH_EXTERN PFNGLVERTEXATTRIB4FVARBPROC GLH_EXT_NAME(glVertexAttrib4fvARB) GLH_INITIALIZER;
150 GLH_EXTERN PFNGLVERTEXATTRIB4DVARBPROC GLH_EXT_NAME(glVertexAttrib4dvARB) GLH_INITIALIZER;
151 GLH_EXTERN PFNGLVERTEXATTRIB4NBVARBPROC GLH_EXT_NAME(glVertexAttrib4NbvARB) GLH_INITIALIZER;
152 GLH_EXTERN PFNGLVERTEXATTRIB4NSVARBPROC GLH_EXT_NAME(glVertexAttrib4NsvARB) GLH_INITIALIZER;
153 GLH_EXTERN PFNGLVERTEXATTRIB4NIVARBPROC GLH_EXT_NAME(glVertexAttrib4NivARB) GLH_INITIALIZER;
154 GLH_EXTERN PFNGLVERTEXATTRIB4NUBVARBPROC GLH_EXT_NAME(glVertexAttrib4NubvARB) GLH_INITIALIZER;
155 GLH_EXTERN PFNGLVERTEXATTRIB4NUSVARBPROC GLH_EXT_NAME(glVertexAttrib4NusvARB) GLH_INITIALIZER;
156 GLH_EXTERN PFNGLVERTEXATTRIB4NUIVARBPROC GLH_EXT_NAME(glVertexAttrib4NuivARB) GLH_INITIALIZER;
157 GLH_EXTERN PFNGLVERTEXATTRIBPOINTERARBPROC GLH_EXT_NAME(glVertexAttribPointerARB) GLH_INITIALIZER;
158 GLH_EXTERN PFNGLENABLEVERTEXATTRIBARRAYARBPROC GLH_EXT_NAME(glEnableVertexAttribArrayARB) GLH_INITIALIZER;
159 GLH_EXTERN PFNGLDISABLEVERTEXATTRIBARRAYARBPROC GLH_EXT_NAME(glDisableVertexAttribArrayARB) GLH_INITIALIZER;
160 GLH_EXTERN PFNGLPROGRAMSTRINGARBPROC GLH_EXT_NAME(glProgramStringARB) GLH_INITIALIZER;
161 GLH_EXTERN PFNGLBINDPROGRAMARBPROC GLH_EXT_NAME(glBindProgramARB) GLH_INITIALIZER;
162 GLH_EXTERN PFNGLDELETEPROGRAMSARBPROC GLH_EXT_NAME(glDeleteProgramsARB) GLH_INITIALIZER;
163 GLH_EXTERN PFNGLGENPROGRAMSARBPROC GLH_EXT_NAME(glGenProgramsARB) GLH_INITIALIZER;
164 GLH_EXTERN PFNGLPROGRAMENVPARAMETER4DARBPROC GLH_EXT_NAME(glProgramEnvParameter4dARB) GLH_INITIALIZER;
165 GLH_EXTERN PFNGLPROGRAMENVPARAMETER4DVARBPROC GLH_EXT_NAME(glProgramEnvParameter4dvARB) GLH_INITIALIZER;
166 GLH_EXTERN PFNGLPROGRAMENVPARAMETER4FARBPROC GLH_EXT_NAME(glProgramEnvParameter4fARB) GLH_INITIALIZER;
167 GLH_EXTERN PFNGLPROGRAMENVPARAMETER4FVARBPROC GLH_EXT_NAME(glProgramEnvParameter4fvARB) GLH_INITIALIZER;
168 GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4DARBPROC GLH_EXT_NAME(glProgramLocalParameter4dARB) GLH_INITIALIZER;
169 GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4DVARBPROC GLH_EXT_NAME(glProgramLocalParameter4dvARB) GLH_INITIALIZER;
170 GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4FARBPROC GLH_EXT_NAME(glProgramLocalParameter4fARB) GLH_INITIALIZER;
171 GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4FVARBPROC GLH_EXT_NAME(glProgramLocalParameter4fvARB) GLH_INITIALIZER;
172 GLH_EXTERN PFNGLGETPROGRAMENVPARAMETERDVARBPROC GLH_EXT_NAME(glGetProgramEnvParameterdvARB) GLH_INITIALIZER;
173 GLH_EXTERN PFNGLGETPROGRAMENVPARAMETERFVARBPROC GLH_EXT_NAME(glGetProgramEnvParameterfvARB) GLH_INITIALIZER;
174 GLH_EXTERN PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GLH_EXT_NAME(glGetProgramLocalParameterdvARB) GLH_INITIALIZER;
175 GLH_EXTERN PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GLH_EXT_NAME(glGetProgramLocalParameterfvARB) GLH_INITIALIZER;
176 GLH_EXTERN PFNGLGETPROGRAMIVARBPROC GLH_EXT_NAME(glGetProgramivARB) GLH_INITIALIZER;
177 GLH_EXTERN PFNGLGETPROGRAMSTRINGARBPROC GLH_EXT_NAME(glGetProgramStringARB) GLH_INITIALIZER;
178 GLH_EXTERN PFNGLGETVERTEXATTRIBDVARBPROC GLH_EXT_NAME(glGetVertexAttribdvARB) GLH_INITIALIZER;
179 GLH_EXTERN PFNGLGETVERTEXATTRIBFVARBPROC GLH_EXT_NAME(glGetVertexAttribfvARB) GLH_INITIALIZER;
180 GLH_EXTERN PFNGLGETVERTEXATTRIBIVARBPROC GLH_EXT_NAME(glGetVertexAttribivARB) GLH_INITIALIZER;
181 GLH_EXTERN PFNGLGETVERTEXATTRIBPOINTERVARBPROC GLH_EXT_NAME(glGetVertexAttribPointervARB) GLH_INITIALIZER;
182 GLH_EXTERN PFNGLISPROGRAMARBPROC GLH_EXT_NAME(glIsProgramARB) GLH_INITIALIZER;
183#endif
184
185#ifdef GL_EXT_abgr
186#endif
187
188#ifdef GL_EXT_bgra
189#endif
190
191#ifdef GL_EXT_blend_color
192 GLH_EXTERN PFNGLBLENDCOLOREXTPROC GLH_EXT_NAME(glBlendColorEXT) GLH_INITIALIZER;
193#endif
194
195#ifdef GL_EXT_blend_minmax
196 GLH_EXTERN PFNGLBLENDEQUATIONEXTPROC GLH_EXT_NAME(glBlendEquationEXT) GLH_INITIALIZER;
197#endif
198
199#ifdef GL_EXT_blend_subtract
200#endif
201
202#ifdef GL_EXT_compiled_vertex_array
203 GLH_EXTERN PFNGLLOCKARRAYSEXTPROC GLH_EXT_NAME(glLockArraysEXT) GLH_INITIALIZER;
204 GLH_EXTERN PFNGLUNLOCKARRAYSEXTPROC GLH_EXT_NAME(glUnlockArraysEXT) GLH_INITIALIZER;
205#endif
206
207#ifdef GL_EXT_fog_coord
208 GLH_EXTERN PFNGLFOGCOORDDEXTPROC GLH_EXT_NAME(glFogCoorddEXT) GLH_INITIALIZER;
209 GLH_EXTERN PFNGLFOGCOORDDVEXTPROC GLH_EXT_NAME(glFogCoorddvEXT) GLH_INITIALIZER;
210 GLH_EXTERN PFNGLFOGCOORDFEXTPROC GLH_EXT_NAME(glFogCoordfEXT) GLH_INITIALIZER;
211 GLH_EXTERN PFNGLFOGCOORDFVEXTPROC GLH_EXT_NAME(glFogCoordfvEXT) GLH_INITIALIZER;
212 GLH_EXTERN PFNGLFOGCOORDPOINTEREXTPROC GLH_EXT_NAME(glFogCoordPointerEXT) GLH_INITIALIZER;
213#endif
214
215#ifdef GL_EXT_light_max_exponent
216#endif
217
218#ifdef GL_EXT_packed_pixels
219#endif
220
221#ifdef GL_EXT_paletted_texture
222 GLH_EXTERN PFNGLCOLORSUBTABLEEXTPROC GLH_EXT_NAME(glColorSubTableEXT) GLH_INITIALIZER;
223 GLH_EXTERN PFNGLCOLORTABLEEXTPROC GLH_EXT_NAME(glColorTableEXT) GLH_INITIALIZER;
224 GLH_EXTERN PFNGLGETCOLORTABLEEXTPROC GLH_EXT_NAME(glGetColorTableEXT) GLH_INITIALIZER;
225 GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERFVEXTPROC GLH_EXT_NAME(glGetColorTableParameterfvEXT) GLH_INITIALIZER;
226 GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERIVEXTPROC GLH_EXT_NAME(glGetColorTableParameterivEXT) GLH_INITIALIZER;
227#endif
228
229#ifdef GL_EXT_point_parameters
230 GLH_EXTERN PFNGLPOINTPARAMETERFEXTPROC GLH_EXT_NAME(glPointParameterfEXT) GLH_INITIALIZER;
231 GLH_EXTERN PFNGLPOINTPARAMETERFVEXTPROC GLH_EXT_NAME(glPointParameterfvEXT) GLH_INITIALIZER;
232#endif
233
234#ifdef GL_EXT_rescale_normal
235#endif
236
237#ifdef GL_EXT_secondary_color
238 GLH_EXTERN PFNGLSECONDARYCOLOR3BEXTPROC GLH_EXT_NAME(glSecondaryColor3bEXT) GLH_INITIALIZER;
239 GLH_EXTERN PFNGLSECONDARYCOLOR3BVEXTPROC GLH_EXT_NAME(glSecondaryColor3bvEXT) GLH_INITIALIZER;
240 GLH_EXTERN PFNGLSECONDARYCOLOR3DEXTPROC GLH_EXT_NAME(glSecondaryColor3dEXT) GLH_INITIALIZER;
241 GLH_EXTERN PFNGLSECONDARYCOLOR3DVEXTPROC GLH_EXT_NAME(glSecondaryColor3dvEXT) GLH_INITIALIZER;
242 GLH_EXTERN PFNGLSECONDARYCOLOR3FEXTPROC GLH_EXT_NAME(glSecondaryColor3fEXT) GLH_INITIALIZER;
243 GLH_EXTERN PFNGLSECONDARYCOLOR3FVEXTPROC GLH_EXT_NAME(glSecondaryColor3fvEXT) GLH_INITIALIZER;
244 GLH_EXTERN PFNGLSECONDARYCOLOR3IEXTPROC GLH_EXT_NAME(glSecondaryColor3iEXT) GLH_INITIALIZER;
245 GLH_EXTERN PFNGLSECONDARYCOLOR3IVEXTPROC GLH_EXT_NAME(glSecondaryColor3ivEXT) GLH_INITIALIZER;
246 GLH_EXTERN PFNGLSECONDARYCOLOR3SEXTPROC GLH_EXT_NAME(glSecondaryColor3sEXT) GLH_INITIALIZER;
247 GLH_EXTERN PFNGLSECONDARYCOLOR3SVEXTPROC GLH_EXT_NAME(glSecondaryColor3svEXT) GLH_INITIALIZER;
248 GLH_EXTERN PFNGLSECONDARYCOLOR3UBEXTPROC GLH_EXT_NAME(glSecondaryColor3ubEXT) GLH_INITIALIZER;
249 GLH_EXTERN PFNGLSECONDARYCOLOR3UBVEXTPROC GLH_EXT_NAME(glSecondaryColor3ubvEXT) GLH_INITIALIZER;
250 GLH_EXTERN PFNGLSECONDARYCOLOR3UIEXTPROC GLH_EXT_NAME(glSecondaryColor3uiEXT) GLH_INITIALIZER;
251 GLH_EXTERN PFNGLSECONDARYCOLOR3UIVEXTPROC GLH_EXT_NAME(glSecondaryColor3uivEXT) GLH_INITIALIZER;
252 GLH_EXTERN PFNGLSECONDARYCOLOR3USEXTPROC GLH_EXT_NAME(glSecondaryColor3usEXT) GLH_INITIALIZER;
253 GLH_EXTERN PFNGLSECONDARYCOLOR3USVEXTPROC GLH_EXT_NAME(glSecondaryColor3usvEXT) GLH_INITIALIZER;
254 GLH_EXTERN PFNGLSECONDARYCOLORPOINTEREXTPROC GLH_EXT_NAME(glSecondaryColorPointerEXT) GLH_INITIALIZER;
255#endif
256
257#ifdef GL_EXT_separate_specular_color
258#endif
259
260#ifdef GL_EXT_shared_texture_palette
261#endif
262
263#ifdef GL_EXT_stencil_wrap
264#endif
265
266#ifdef GL_EXT_texture_compression_s3tc
267#endif
268
269#ifdef GL_EXT_texture_cube_map
270#endif
271
272#ifdef GL_EXT_texture_edge_clamp
273#endif
274
275#ifdef GL_EXT_texture_env_add
276#endif
277
278#ifdef GL_EXT_texture_env_combine
279#endif
280
281#ifdef GL_EXT_texture_filter_anisotropic
282#endif
283
284#ifdef GL_EXT_texture_lod_bias
285#endif
286
287#ifdef GL_EXT_texture_object
288 GLH_EXTERN PFNGLARETEXTURESRESIDENTEXTPROC GLH_EXT_NAME(glAreTexturesResidentEXT) GLH_INITIALIZER;
289 GLH_EXTERN PFNGLBINDTEXTUREEXTPROC GLH_EXT_NAME(glBindTextureEXT) GLH_INITIALIZER;
290 GLH_EXTERN PFNGLDELETETEXTURESEXTPROC GLH_EXT_NAME(glDeleteTexturesEXT) GLH_INITIALIZER;
291 GLH_EXTERN PFNGLGENTEXTURESEXTPROC GLH_EXT_NAME(glGenTexturesEXT) GLH_INITIALIZER;
292 GLH_EXTERN PFNGLISTEXTUREEXTPROC GLH_EXT_NAME(glIsTextureEXT) GLH_INITIALIZER;
293 GLH_EXTERN PFNGLPRIORITIZETEXTURESEXTPROC GLH_EXT_NAME(glPrioritizeTexturesEXT) GLH_INITIALIZER;
294#endif
295
296#ifdef GL_EXT_texture3D
297 GLH_EXTERN PFNGLTEXIMAGE3DEXTPROC GLH_EXT_NAME(glTexImage3DEXT) GLH_INITIALIZER;
298#endif
299
300#ifdef GL_EXT_vertex_array
301 GLH_EXTERN PFNGLARRAYELEMENTEXTPROC GLH_EXT_NAME(glArrayElementEXT) GLH_INITIALIZER;
302 GLH_EXTERN PFNGLCOLORPOINTEREXTPROC GLH_EXT_NAME(glColorPointerEXT) GLH_INITIALIZER;
303 GLH_EXTERN PFNGLEDGEFLAGPOINTEREXTPROC GLH_EXT_NAME(glEdgeFlagPointerEXT) GLH_INITIALIZER;
304 GLH_EXTERN PFNGLGETPOINTERVEXTPROC GLH_EXT_NAME(glGetPointervEXT) GLH_INITIALIZER;
305 GLH_EXTERN PFNGLINDEXPOINTEREXTPROC GLH_EXT_NAME(glIndexPointerEXT) GLH_INITIALIZER;
306 GLH_EXTERN PFNGLNORMALPOINTEREXTPROC GLH_EXT_NAME(glNormalPointerEXT) GLH_INITIALIZER;
307 GLH_EXTERN PFNGLTEXCOORDPOINTEREXTPROC GLH_EXT_NAME(glTexCoordPointerEXT) GLH_INITIALIZER;
308 GLH_EXTERN PFNGLVERTEXPOINTEREXTPROC GLH_EXT_NAME(glVertexPointerEXT) GLH_INITIALIZER;
309 GLH_EXTERN PFNGLDRAWARRAYSEXTPROC GLH_EXT_NAME(glDrawArraysEXT) GLH_INITIALIZER;
310#endif
311
312#ifdef GL_EXT_vertex_weighting
313 GLH_EXTERN PFNGLVERTEXWEIGHTFEXTPROC GLH_EXT_NAME(glVertexWeightfEXT) GLH_INITIALIZER;
314 GLH_EXTERN PFNGLVERTEXWEIGHTFVEXTPROC GLH_EXT_NAME(glVertexWeightfvEXT) GLH_INITIALIZER;
315 GLH_EXTERN PFNGLVERTEXWEIGHTPOINTEREXTPROC GLH_EXT_NAME(glVertexWeightPointerEXT) GLH_INITIALIZER;
316#endif
317
318#ifdef GL_NV_blend_square
319#endif
320
321#ifdef GL_NV_evaluators
322 GLH_EXTERN PFNGLMAPCONTROLPOINTSNVPROC GLH_EXT_NAME(glMapControlPointsNV) GLH_INITIALIZER;
323 GLH_EXTERN PFNGLMAPPARAMETERIVNVPROC GLH_EXT_NAME(glMapParameterivNV) GLH_INITIALIZER;
324 GLH_EXTERN PFNGLMAPPARAMETERFVNVPROC GLH_EXT_NAME(glMapParameterfvNV) GLH_INITIALIZER;
325 GLH_EXTERN PFNGLGETMAPCONTROLPOINTSNVPROC GLH_EXT_NAME(glGetMapControlPointsNV) GLH_INITIALIZER;
326 GLH_EXTERN PFNGLGETMAPPARAMETERIVNVPROC GLH_EXT_NAME(glGetMapParameterivNV) GLH_INITIALIZER;
327 GLH_EXTERN PFNGLGETMAPPARAMETERFVNVPROC GLH_EXT_NAME(glGetMapParameterfvNV) GLH_INITIALIZER;
328 GLH_EXTERN PFNGLGETMAPATTRIBPARAMETERIVNVPROC GLH_EXT_NAME(glGetMapAttribParameterivNV) GLH_INITIALIZER;
329 GLH_EXTERN PFNGLGETMAPATTRIBPARAMETERFVNVPROC GLH_EXT_NAME(glGetMapAttribParameterfvNV) GLH_INITIALIZER;
330 GLH_EXTERN PFNGLEVALMAPSNVPROC GLH_EXT_NAME(glEvalMapsNV) GLH_INITIALIZER;
331#endif
332
333#ifdef GL_NV_fence
334 GLH_EXTERN PFNGLGENFENCESNVPROC GLH_EXT_NAME(glGenFencesNV) GLH_INITIALIZER;
335 GLH_EXTERN PFNGLDELETEFENCESNVPROC GLH_EXT_NAME(glDeleteFencesNV) GLH_INITIALIZER;
336 GLH_EXTERN PFNGLSETFENCENVPROC GLH_EXT_NAME(glSetFenceNV) GLH_INITIALIZER;
337 GLH_EXTERN PFNGLTESTFENCENVPROC GLH_EXT_NAME(glTestFenceNV) GLH_INITIALIZER;
338 GLH_EXTERN PFNGLFINISHFENCENVPROC GLH_EXT_NAME(glFinishFenceNV) GLH_INITIALIZER;
339 GLH_EXTERN PFNGLISFENCENVPROC GLH_EXT_NAME(glIsFenceNV) GLH_INITIALIZER;
340 GLH_EXTERN PFNGLGETFENCEIVNVPROC GLH_EXT_NAME(glGetFenceivNV) GLH_INITIALIZER;
341#endif
342
343#ifdef GL_NV_fog_distance
344#endif
345
346#ifdef GL_NV_packed_depth_stencil
347#endif
348
349#ifdef GL_NV_register_combiners
350 GLH_EXTERN PFNGLCOMBINERPARAMETERFVNVPROC GLH_EXT_NAME(glCombinerParameterfvNV) GLH_INITIALIZER;
351 GLH_EXTERN PFNGLCOMBINERPARAMETERFNVPROC GLH_EXT_NAME(glCombinerParameterfNV) GLH_INITIALIZER;
352 GLH_EXTERN PFNGLCOMBINERPARAMETERIVNVPROC GLH_EXT_NAME(glCombinerParameterivNV) GLH_INITIALIZER;
353 GLH_EXTERN PFNGLCOMBINERPARAMETERINVPROC GLH_EXT_NAME(glCombinerParameteriNV) GLH_INITIALIZER;
354 GLH_EXTERN PFNGLCOMBINERINPUTNVPROC GLH_EXT_NAME(glCombinerInputNV) GLH_INITIALIZER;
355 GLH_EXTERN PFNGLCOMBINEROUTPUTNVPROC GLH_EXT_NAME(glCombinerOutputNV) GLH_INITIALIZER;
356 GLH_EXTERN PFNGLFINALCOMBINERINPUTNVPROC GLH_EXT_NAME(glFinalCombinerInputNV) GLH_INITIALIZER;
357 GLH_EXTERN PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GLH_EXT_NAME(glGetCombinerInputParameterfvNV) GLH_INITIALIZER;
358 GLH_EXTERN PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GLH_EXT_NAME(glGetCombinerInputParameterivNV) GLH_INITIALIZER;
359 GLH_EXTERN PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GLH_EXT_NAME(glGetCombinerOutputParameterfvNV) GLH_INITIALIZER;
360 GLH_EXTERN PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GLH_EXT_NAME(glGetCombinerOutputParameterivNV) GLH_INITIALIZER;
361 GLH_EXTERN PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GLH_EXT_NAME(glGetFinalCombinerInputParameterfvNV) GLH_INITIALIZER;
362 GLH_EXTERN PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GLH_EXT_NAME(glGetFinalCombinerInputParameterivNV) GLH_INITIALIZER;
363#endif
364
365#ifdef GL_NV_register_combiners2
366 GLH_EXTERN PFNGLCOMBINERSTAGEPARAMETERFVNVPROC GLH_EXT_NAME(glCombinerStageParameterfvNV) GLH_INITIALIZER;
367 GLH_EXTERN PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GLH_EXT_NAME(glGetCombinerStageParameterfvNV) GLH_INITIALIZER;
368#endif
369
370#ifdef GL_NV_texgen_reflection
371#endif
372
373#ifdef GL_NV_texture_env_combine4
374#endif
375
376#ifdef GL_NV_texture_rectangle
377#endif
378
379#ifdef GL_NV_texture_shader
380#endif
381
382#ifdef GL_NV_vertex_array_range
383 GLH_EXTERN PFNGLFLUSHVERTEXARRAYRANGENVPROC GLH_EXT_NAME(glFlushVertexArrayRangeNV) GLH_INITIALIZER;
384 GLH_EXTERN PFNGLVERTEXARRAYRANGENVPROC GLH_EXT_NAME(glVertexArrayRangeNV) GLH_INITIALIZER;
385# ifdef _WIN32
386 GLH_EXTERN PFNWGLALLOCATEMEMORYNVPROC GLH_EXT_NAME(wglAllocateMemoryNV) GLH_INITIALIZER;
387# endif
388# ifdef GLX_VERSION_1_3
389 GLH_EXTERN PFNGLXALLOCATEMEMORYNVPROC GLH_EXT_NAME(glXAllocateMemoryNV) GLH_INITIALIZER;
390# endif
391# ifdef _WIN32
392 GLH_EXTERN PFNWGLFREEMEMORYNVPROC GLH_EXT_NAME(wglFreeMemoryNV) GLH_INITIALIZER;
393# endif
394# ifdef GLX_VERSION_1_3
395 GLH_EXTERN PFNGLXFREEMEMORYNVPROC GLH_EXT_NAME(glXFreeMemoryNV) GLH_INITIALIZER;
396# endif
397#endif
398
399#ifdef GL_NV_vertex_program
400 GLH_EXTERN PFNGLAREPROGRAMSRESIDENTNVPROC GLH_EXT_NAME(glAreProgramsResidentNV) GLH_INITIALIZER;
401 GLH_EXTERN PFNGLBINDPROGRAMNVPROC GLH_EXT_NAME(glBindProgramNV) GLH_INITIALIZER;
402 GLH_EXTERN PFNGLDELETEPROGRAMSNVPROC GLH_EXT_NAME(glDeleteProgramsNV) GLH_INITIALIZER;
403 GLH_EXTERN PFNGLEXECUTEPROGRAMNVPROC GLH_EXT_NAME(glExecuteProgramNV) GLH_INITIALIZER;
404 GLH_EXTERN PFNGLGENPROGRAMSNVPROC GLH_EXT_NAME(glGenProgramsNV) GLH_INITIALIZER;
405 GLH_EXTERN PFNGLGETPROGRAMPARAMETERDVNVPROC GLH_EXT_NAME(glGetProgramParameterdvNV) GLH_INITIALIZER;
406 GLH_EXTERN PFNGLGETPROGRAMPARAMETERFVNVPROC GLH_EXT_NAME(glGetProgramParameterfvNV) GLH_INITIALIZER;
407 GLH_EXTERN PFNGLGETPROGRAMIVNVPROC GLH_EXT_NAME(glGetProgramivNV) GLH_INITIALIZER;
408 GLH_EXTERN PFNGLGETPROGRAMSTRINGNVPROC GLH_EXT_NAME(glGetProgramStringNV) GLH_INITIALIZER;
409 GLH_EXTERN PFNGLGETTRACKMATRIXIVNVPROC GLH_EXT_NAME(glGetTrackMatrixivNV) GLH_INITIALIZER;
410 GLH_EXTERN PFNGLGETVERTEXATTRIBDVNVPROC GLH_EXT_NAME(glGetVertexAttribdvNV) GLH_INITIALIZER;
411 GLH_EXTERN PFNGLGETVERTEXATTRIBFVNVPROC GLH_EXT_NAME(glGetVertexAttribfvNV) GLH_INITIALIZER;
412 GLH_EXTERN PFNGLGETVERTEXATTRIBIVNVPROC GLH_EXT_NAME(glGetVertexAttribivNV) GLH_INITIALIZER;
413 GLH_EXTERN PFNGLGETVERTEXATTRIBPOINTERVNVPROC GLH_EXT_NAME(glGetVertexAttribPointervNV) GLH_INITIALIZER;
414 GLH_EXTERN PFNGLISPROGRAMNVPROC GLH_EXT_NAME(glIsProgramNV) GLH_INITIALIZER;
415 GLH_EXTERN PFNGLLOADPROGRAMNVPROC GLH_EXT_NAME(glLoadProgramNV) GLH_INITIALIZER;
416 GLH_EXTERN PFNGLPROGRAMPARAMETER4DNVPROC GLH_EXT_NAME(glProgramParameter4dNV) GLH_INITIALIZER;
417 GLH_EXTERN PFNGLPROGRAMPARAMETER4DVNVPROC GLH_EXT_NAME(glProgramParameter4dvNV) GLH_INITIALIZER;
418 GLH_EXTERN PFNGLPROGRAMPARAMETER4FNVPROC GLH_EXT_NAME(glProgramParameter4fNV) GLH_INITIALIZER;
419 GLH_EXTERN PFNGLPROGRAMPARAMETER4FVNVPROC GLH_EXT_NAME(glProgramParameter4fvNV) GLH_INITIALIZER;
420 GLH_EXTERN PFNGLPROGRAMPARAMETERS4DVNVPROC GLH_EXT_NAME(glProgramParameters4dvNV) GLH_INITIALIZER;
421 GLH_EXTERN PFNGLPROGRAMPARAMETERS4FVNVPROC GLH_EXT_NAME(glProgramParameters4fvNV) GLH_INITIALIZER;
422 GLH_EXTERN PFNGLREQUESTRESIDENTPROGRAMSNVPROC GLH_EXT_NAME(glRequestResidentProgramsNV) GLH_INITIALIZER;
423 GLH_EXTERN PFNGLTRACKMATRIXNVPROC GLH_EXT_NAME(glTrackMatrixNV) GLH_INITIALIZER;
424 GLH_EXTERN PFNGLVERTEXATTRIBPOINTERNVPROC GLH_EXT_NAME(glVertexAttribPointerNV) GLH_INITIALIZER;
425 GLH_EXTERN PFNGLVERTEXATTRIB1DNVPROC GLH_EXT_NAME(glVertexAttrib1dNV) GLH_INITIALIZER;
426 GLH_EXTERN PFNGLVERTEXATTRIB1DVNVPROC GLH_EXT_NAME(glVertexAttrib1dvNV) GLH_INITIALIZER;
427 GLH_EXTERN PFNGLVERTEXATTRIB1FNVPROC GLH_EXT_NAME(glVertexAttrib1fNV) GLH_INITIALIZER;
428 GLH_EXTERN PFNGLVERTEXATTRIB1FVNVPROC GLH_EXT_NAME(glVertexAttrib1fvNV) GLH_INITIALIZER;
429 GLH_EXTERN PFNGLVERTEXATTRIB1SNVPROC GLH_EXT_NAME(glVertexAttrib1sNV) GLH_INITIALIZER;
430 GLH_EXTERN PFNGLVERTEXATTRIB1SVNVPROC GLH_EXT_NAME(glVertexAttrib1svNV) GLH_INITIALIZER;
431 GLH_EXTERN PFNGLVERTEXATTRIB2DNVPROC GLH_EXT_NAME(glVertexAttrib2dNV) GLH_INITIALIZER;
432 GLH_EXTERN PFNGLVERTEXATTRIB2DVNVPROC GLH_EXT_NAME(glVertexAttrib2dvNV) GLH_INITIALIZER;
433 GLH_EXTERN PFNGLVERTEXATTRIB2FNVPROC GLH_EXT_NAME(glVertexAttrib2fNV) GLH_INITIALIZER;
434 GLH_EXTERN PFNGLVERTEXATTRIB2FVNVPROC GLH_EXT_NAME(glVertexAttrib2fvNV) GLH_INITIALIZER;
435 GLH_EXTERN PFNGLVERTEXATTRIB2SNVPROC GLH_EXT_NAME(glVertexAttrib2sNV) GLH_INITIALIZER;
436 GLH_EXTERN PFNGLVERTEXATTRIB2SVNVPROC GLH_EXT_NAME(glVertexAttrib2svNV) GLH_INITIALIZER;
437 GLH_EXTERN PFNGLVERTEXATTRIB3DNVPROC GLH_EXT_NAME(glVertexAttrib3dNV) GLH_INITIALIZER;
438 GLH_EXTERN PFNGLVERTEXATTRIB3DVNVPROC GLH_EXT_NAME(glVertexAttrib3dvNV) GLH_INITIALIZER;
439 GLH_EXTERN PFNGLVERTEXATTRIB3FNVPROC GLH_EXT_NAME(glVertexAttrib3fNV) GLH_INITIALIZER;
440 GLH_EXTERN PFNGLVERTEXATTRIB3FVNVPROC GLH_EXT_NAME(glVertexAttrib3fvNV) GLH_INITIALIZER;
441 GLH_EXTERN PFNGLVERTEXATTRIB3SNVPROC GLH_EXT_NAME(glVertexAttrib3sNV) GLH_INITIALIZER;
442 GLH_EXTERN PFNGLVERTEXATTRIB3SVNVPROC GLH_EXT_NAME(glVertexAttrib3svNV) GLH_INITIALIZER;
443 GLH_EXTERN PFNGLVERTEXATTRIB4DNVPROC GLH_EXT_NAME(glVertexAttrib4dNV) GLH_INITIALIZER;
444 GLH_EXTERN PFNGLVERTEXATTRIB4DVNVPROC GLH_EXT_NAME(glVertexAttrib4dvNV) GLH_INITIALIZER;
445 GLH_EXTERN PFNGLVERTEXATTRIB4FNVPROC GLH_EXT_NAME(glVertexAttrib4fNV) GLH_INITIALIZER;
446 GLH_EXTERN PFNGLVERTEXATTRIB4FVNVPROC GLH_EXT_NAME(glVertexAttrib4fvNV) GLH_INITIALIZER;
447 GLH_EXTERN PFNGLVERTEXATTRIB4SNVPROC GLH_EXT_NAME(glVertexAttrib4sNV) GLH_INITIALIZER;
448 GLH_EXTERN PFNGLVERTEXATTRIB4SVNVPROC GLH_EXT_NAME(glVertexAttrib4svNV) GLH_INITIALIZER;
449 GLH_EXTERN PFNGLVERTEXATTRIB4UBVNVPROC GLH_EXT_NAME(glVertexAttrib4ubvNV) GLH_INITIALIZER;
450 GLH_EXTERN PFNGLVERTEXATTRIBS1DVNVPROC GLH_EXT_NAME(glVertexAttribs1dvNV) GLH_INITIALIZER;
451 GLH_EXTERN PFNGLVERTEXATTRIBS1FVNVPROC GLH_EXT_NAME(glVertexAttribs1fvNV) GLH_INITIALIZER;
452 GLH_EXTERN PFNGLVERTEXATTRIBS1SVNVPROC GLH_EXT_NAME(glVertexAttribs1svNV) GLH_INITIALIZER;
453 GLH_EXTERN PFNGLVERTEXATTRIBS2DVNVPROC GLH_EXT_NAME(glVertexAttribs2dvNV) GLH_INITIALIZER;
454 GLH_EXTERN PFNGLVERTEXATTRIBS2FVNVPROC GLH_EXT_NAME(glVertexAttribs2fvNV) GLH_INITIALIZER;
455 GLH_EXTERN PFNGLVERTEXATTRIBS2SVNVPROC GLH_EXT_NAME(glVertexAttribs2svNV) GLH_INITIALIZER;
456 GLH_EXTERN PFNGLVERTEXATTRIBS3DVNVPROC GLH_EXT_NAME(glVertexAttribs3dvNV) GLH_INITIALIZER;
457 GLH_EXTERN PFNGLVERTEXATTRIBS3FVNVPROC GLH_EXT_NAME(glVertexAttribs3fvNV) GLH_INITIALIZER;
458 GLH_EXTERN PFNGLVERTEXATTRIBS3SVNVPROC GLH_EXT_NAME(glVertexAttribs3svNV) GLH_INITIALIZER;
459 GLH_EXTERN PFNGLVERTEXATTRIBS4DVNVPROC GLH_EXT_NAME(glVertexAttribs4dvNV) GLH_INITIALIZER;
460 GLH_EXTERN PFNGLVERTEXATTRIBS4FVNVPROC GLH_EXT_NAME(glVertexAttribs4fvNV) GLH_INITIALIZER;
461 GLH_EXTERN PFNGLVERTEXATTRIBS4SVNVPROC GLH_EXT_NAME(glVertexAttribs4svNV) GLH_INITIALIZER;
462 GLH_EXTERN PFNGLVERTEXATTRIBS4UBVNVPROC GLH_EXT_NAME(glVertexAttribs4ubvNV) GLH_INITIALIZER;
463#endif
464
465#ifdef GL_SGIS_generate_mipmap
466#endif
467
468#ifdef GL_SGIS_texture_lod
469#endif
470
471#ifdef GL_SGIX_depth_texture
472#endif
473
474#ifdef GL_SGIX_shadow
475#endif
476
477#ifdef GL_VERSION_1_2
478 /* These routines are prefixed by the preprocessor constant
479 GLH_CORE_1_2_PREFIX to avoid colliding with the OpenGL 1.2 namespace. */
480 GLH_EXTERN PFNGLBLENDCOLORPROC GLH_CORE_1_2_NAME(glBlendColor) GLH_INITIALIZER;
481 GLH_EXTERN PFNGLBLENDEQUATIONPROC GLH_CORE_1_2_NAME(glBlendEquation) GLH_INITIALIZER;
482 GLH_EXTERN PFNGLDRAWRANGEELEMENTSPROC GLH_CORE_1_2_NAME(glDrawRangeElements) GLH_INITIALIZER;
483 GLH_EXTERN PFNGLCOLORTABLEPROC GLH_CORE_1_2_NAME(glColorTable) GLH_INITIALIZER;
484 GLH_EXTERN PFNGLCOLORTABLEPARAMETERFVPROC GLH_CORE_1_2_NAME(glColorTableParameterfv) GLH_INITIALIZER;
485 GLH_EXTERN PFNGLCOLORTABLEPARAMETERIVPROC GLH_CORE_1_2_NAME(glColorTableParameteriv) GLH_INITIALIZER;
486 GLH_EXTERN PFNGLCOPYCOLORTABLEPROC GLH_CORE_1_2_NAME(glCopyColorTable) GLH_INITIALIZER;
487 GLH_EXTERN PFNGLGETCOLORTABLEPROC GLH_CORE_1_2_NAME(glGetColorTable) GLH_INITIALIZER;
488 GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERFVPROC GLH_CORE_1_2_NAME(glGetColorTableParameterfv) GLH_INITIALIZER;
489 GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERIVPROC GLH_CORE_1_2_NAME(glGetColorTableParameteriv) GLH_INITIALIZER;
490 GLH_EXTERN PFNGLTEXIMAGE3DPROC GLH_CORE_1_2_NAME(glTexImage3D) GLH_INITIALIZER;
491 GLH_EXTERN PFNGLTEXSUBIMAGE3DPROC GLH_CORE_1_2_NAME(glTexSubImage3D) GLH_INITIALIZER;
492 GLH_EXTERN PFNGLCOPYTEXSUBIMAGE3DPROC GLH_CORE_1_2_NAME(glCopyTexSubImage3D) GLH_INITIALIZER;
493#endif
494
495#ifdef GL_WIN_swap_hint
496 GLH_EXTERN PFNGLADDSWAPHINTRECTWINPROC GLH_EXT_NAME(glAddSwapHintRectWIN) GLH_INITIALIZER;
497#endif
498
499#ifdef WGL_ARB_pbuffer
500# ifdef _WIN32
501 GLH_EXTERN PFNWGLCREATEPBUFFERARBPROC GLH_EXT_NAME(wglCreatePbufferARB) GLH_INITIALIZER;
502# endif
503# ifdef _WIN32
504 GLH_EXTERN PFNWGLGETPBUFFERDCARBPROC GLH_EXT_NAME(wglGetPbufferDCARB) GLH_INITIALIZER;
505# endif
506# ifdef _WIN32
507 GLH_EXTERN PFNWGLRELEASEPBUFFERDCARBPROC GLH_EXT_NAME(wglReleasePbufferDCARB) GLH_INITIALIZER;
508# endif
509# ifdef _WIN32
510 GLH_EXTERN PFNWGLDESTROYPBUFFERARBPROC GLH_EXT_NAME(wglDestroyPbufferARB) GLH_INITIALIZER;
511# endif
512# ifdef _WIN32
513 GLH_EXTERN PFNWGLQUERYPBUFFERARBPROC GLH_EXT_NAME(wglQueryPbufferARB) GLH_INITIALIZER;
514# endif
515#endif
516
517#ifdef WGL_ARB_render_texture
518# ifdef _WIN32
519 GLH_EXTERN PFNWGLBINDTEXIMAGEARBPROC GLH_EXT_NAME(wglBindTexImageARB) GLH_INITIALIZER;
520# endif
521# ifdef _WIN32
522 GLH_EXTERN PFNWGLRELEASETEXIMAGEARBPROC GLH_EXT_NAME(wglReleaseTexImageARB) GLH_INITIALIZER;
523# endif
524# ifdef _WIN32
525 GLH_EXTERN PFNWGLSETPBUFFERATTRIBARBPROC GLH_EXT_NAME(wglSetPbufferAttribARB) GLH_INITIALIZER;
526# endif
527#endif
528
529#ifdef WGL_ARB_pixel_format
530# ifdef _WIN32
531 GLH_EXTERN PFNWGLGETPIXELFORMATATTRIBIVARBPROC GLH_EXT_NAME(wglGetPixelFormatAttribivARB) GLH_INITIALIZER;
532# endif
533# ifdef _WIN32
534 GLH_EXTERN PFNWGLGETPIXELFORMATATTRIBFVARBPROC GLH_EXT_NAME(wglGetPixelFormatAttribfvARB) GLH_INITIALIZER;
535# endif
536# ifdef _WIN32
537 GLH_EXTERN PFNWGLCHOOSEPIXELFORMATARBPROC GLH_EXT_NAME(wglChoosePixelFormatARB) GLH_INITIALIZER;
538# endif
539#endif
540
541
542#ifdef GLH_EXT_SINGLE_FILE
543
544int glh_init_extension(const char* extension)
545{
546 if (NULL == extension) {
547 return FALSE;
548#ifdef GL_ARB_multitexture
549 } else if (0 == strcmp(extension, "GL_ARB_multitexture")) {
550 GLH_EXT_NAME(glMultiTexCoord1dARB) = (PFNGLMULTITEXCOORD1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1dARB");
551 if (NULL == GLH_EXT_NAME(glMultiTexCoord1dARB))
552 return FALSE;
553 GLH_EXT_NAME(glMultiTexCoord1dvARB) = (PFNGLMULTITEXCOORD1DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1dvARB");
554 if (NULL == GLH_EXT_NAME(glMultiTexCoord1dvARB))
555 return FALSE;
556 GLH_EXT_NAME(glMultiTexCoord1fARB) = (PFNGLMULTITEXCOORD1FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1fARB");
557 if (NULL == GLH_EXT_NAME(glMultiTexCoord1fARB))
558 return FALSE;
559 GLH_EXT_NAME(glMultiTexCoord1fvARB) = (PFNGLMULTITEXCOORD1FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1fvARB");
560 if (NULL == GLH_EXT_NAME(glMultiTexCoord1fvARB))
561 return FALSE;
562 GLH_EXT_NAME(glMultiTexCoord1iARB) = (PFNGLMULTITEXCOORD1IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1iARB");
563 if (NULL == GLH_EXT_NAME(glMultiTexCoord1iARB))
564 return FALSE;
565 GLH_EXT_NAME(glMultiTexCoord1ivARB) = (PFNGLMULTITEXCOORD1IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1ivARB");
566 if (NULL == GLH_EXT_NAME(glMultiTexCoord1ivARB))
567 return FALSE;
568 GLH_EXT_NAME(glMultiTexCoord1sARB) = (PFNGLMULTITEXCOORD1SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1sARB");
569 if (NULL == GLH_EXT_NAME(glMultiTexCoord1sARB))
570 return FALSE;
571 GLH_EXT_NAME(glMultiTexCoord1svARB) = (PFNGLMULTITEXCOORD1SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1svARB");
572 if (NULL == GLH_EXT_NAME(glMultiTexCoord1svARB))
573 return FALSE;
574 GLH_EXT_NAME(glMultiTexCoord2dARB) = (PFNGLMULTITEXCOORD2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2dARB");
575 if (NULL == GLH_EXT_NAME(glMultiTexCoord2dARB))
576 return FALSE;
577 GLH_EXT_NAME(glMultiTexCoord2dvARB) = (PFNGLMULTITEXCOORD2DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2dvARB");
578 if (NULL == GLH_EXT_NAME(glMultiTexCoord2dvARB))
579 return FALSE;
580 GLH_EXT_NAME(glMultiTexCoord2fARB) = (PFNGLMULTITEXCOORD2FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2fARB");
581 if (NULL == GLH_EXT_NAME(glMultiTexCoord2fARB))
582 return FALSE;
583 GLH_EXT_NAME(glMultiTexCoord2fvARB) = (PFNGLMULTITEXCOORD2FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2fvARB");
584 if (NULL == GLH_EXT_NAME(glMultiTexCoord2fvARB))
585 return FALSE;
586 GLH_EXT_NAME(glMultiTexCoord2iARB) = (PFNGLMULTITEXCOORD2IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2iARB");
587 if (NULL == GLH_EXT_NAME(glMultiTexCoord2iARB))
588 return FALSE;
589 GLH_EXT_NAME(glMultiTexCoord2ivARB) = (PFNGLMULTITEXCOORD2IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2ivARB");
590 if (NULL == GLH_EXT_NAME(glMultiTexCoord2ivARB))
591 return FALSE;
592 GLH_EXT_NAME(glMultiTexCoord2sARB) = (PFNGLMULTITEXCOORD2SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2sARB");
593 if (NULL == GLH_EXT_NAME(glMultiTexCoord2sARB))
594 return FALSE;
595 GLH_EXT_NAME(glMultiTexCoord2svARB) = (PFNGLMULTITEXCOORD2SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2svARB");
596 if (NULL == GLH_EXT_NAME(glMultiTexCoord2svARB))
597 return FALSE;
598 GLH_EXT_NAME(glMultiTexCoord3dARB) = (PFNGLMULTITEXCOORD3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3dARB");
599 if (NULL == GLH_EXT_NAME(glMultiTexCoord3dARB))
600 return FALSE;
601 GLH_EXT_NAME(glMultiTexCoord3dvARB) = (PFNGLMULTITEXCOORD3DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3dvARB");
602 if (NULL == GLH_EXT_NAME(glMultiTexCoord3dvARB))
603 return FALSE;
604 GLH_EXT_NAME(glMultiTexCoord3fARB) = (PFNGLMULTITEXCOORD3FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3fARB");
605 if (NULL == GLH_EXT_NAME(glMultiTexCoord3fARB))
606 return FALSE;
607 GLH_EXT_NAME(glMultiTexCoord3fvARB) = (PFNGLMULTITEXCOORD3FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3fvARB");
608 if (NULL == GLH_EXT_NAME(glMultiTexCoord3fvARB))
609 return FALSE;
610 GLH_EXT_NAME(glMultiTexCoord3iARB) = (PFNGLMULTITEXCOORD3IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3iARB");
611 if (NULL == GLH_EXT_NAME(glMultiTexCoord3iARB))
612 return FALSE;
613 GLH_EXT_NAME(glMultiTexCoord3ivARB) = (PFNGLMULTITEXCOORD3IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3ivARB");
614 if (NULL == GLH_EXT_NAME(glMultiTexCoord3ivARB))
615 return FALSE;
616 GLH_EXT_NAME(glMultiTexCoord3sARB) = (PFNGLMULTITEXCOORD3SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3sARB");
617 if (NULL == GLH_EXT_NAME(glMultiTexCoord3sARB))
618 return FALSE;
619 GLH_EXT_NAME(glMultiTexCoord3svARB) = (PFNGLMULTITEXCOORD3SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3svARB");
620 if (NULL == GLH_EXT_NAME(glMultiTexCoord3svARB))
621 return FALSE;
622 GLH_EXT_NAME(glMultiTexCoord4dARB) = (PFNGLMULTITEXCOORD4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4dARB");
623 if (NULL == GLH_EXT_NAME(glMultiTexCoord4dARB))
624 return FALSE;
625 GLH_EXT_NAME(glMultiTexCoord4dvARB) = (PFNGLMULTITEXCOORD4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4dvARB");
626 if (NULL == GLH_EXT_NAME(glMultiTexCoord4dvARB))
627 return FALSE;
628 GLH_EXT_NAME(glMultiTexCoord4fARB) = (PFNGLMULTITEXCOORD4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4fARB");
629 if (NULL == GLH_EXT_NAME(glMultiTexCoord4fARB))
630 return FALSE;
631 GLH_EXT_NAME(glMultiTexCoord4fvARB) = (PFNGLMULTITEXCOORD4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4fvARB");
632 if (NULL == GLH_EXT_NAME(glMultiTexCoord4fvARB))
633 return FALSE;
634 GLH_EXT_NAME(glMultiTexCoord4iARB) = (PFNGLMULTITEXCOORD4IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4iARB");
635 if (NULL == GLH_EXT_NAME(glMultiTexCoord4iARB))
636 return FALSE;
637 GLH_EXT_NAME(glMultiTexCoord4ivARB) = (PFNGLMULTITEXCOORD4IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4ivARB");
638 if (NULL == GLH_EXT_NAME(glMultiTexCoord4ivARB))
639 return FALSE;
640 GLH_EXT_NAME(glMultiTexCoord4sARB) = (PFNGLMULTITEXCOORD4SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4sARB");
641 if (NULL == GLH_EXT_NAME(glMultiTexCoord4sARB))
642 return FALSE;
643 GLH_EXT_NAME(glMultiTexCoord4svARB) = (PFNGLMULTITEXCOORD4SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4svARB");
644 if (NULL == GLH_EXT_NAME(glMultiTexCoord4svARB))
645 return FALSE;
646 GLH_EXT_NAME(glActiveTextureARB) = (PFNGLACTIVETEXTUREARBPROC)GLH_EXT_GET_PROC_ADDRESS("glActiveTextureARB");
647 if (NULL == GLH_EXT_NAME(glActiveTextureARB))
648 return FALSE;
649 GLH_EXT_NAME(glClientActiveTextureARB) = (PFNGLCLIENTACTIVETEXTUREARBPROC)GLH_EXT_GET_PROC_ADDRESS("glClientActiveTextureARB");
650 if (NULL == GLH_EXT_NAME(glClientActiveTextureARB))
651 return FALSE;
652#endif
653
654#ifdef GL_ARB_texture_border_clamp
655 } else if (0 == strcmp(extension, "GL_ARB_texture_border_clamp")) {
656#endif
657
658#ifdef GL_ARB_texture_compression
659 } else if (0 == strcmp(extension, "GL_ARB_texture_compression")) {
660 GLH_EXT_NAME(glCompressedTexImage3DARB) = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage3DARB");
661 if (NULL == GLH_EXT_NAME(glCompressedTexImage3DARB))
662 return FALSE;
663 GLH_EXT_NAME(glCompressedTexImage2DARB) = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage2DARB");
664 if (NULL == GLH_EXT_NAME(glCompressedTexImage2DARB))
665 return FALSE;
666 GLH_EXT_NAME(glCompressedTexImage1DARB) = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage1DARB");
667 if (NULL == GLH_EXT_NAME(glCompressedTexImage1DARB))
668 return FALSE;
669 GLH_EXT_NAME(glCompressedTexSubImage3DARB) = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage3DARB");
670 if (NULL == GLH_EXT_NAME(glCompressedTexSubImage3DARB))
671 return FALSE;
672 GLH_EXT_NAME(glCompressedTexSubImage2DARB) = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage2DARB");
673 if (NULL == GLH_EXT_NAME(glCompressedTexSubImage2DARB))
674 return FALSE;
675 GLH_EXT_NAME(glCompressedTexSubImage1DARB) = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage1DARB");
676 if (NULL == GLH_EXT_NAME(glCompressedTexSubImage1DARB))
677 return FALSE;
678 GLH_EXT_NAME(glGetCompressedTexImageARB) = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCompressedTexImageARB");
679 if (NULL == GLH_EXT_NAME(glGetCompressedTexImageARB))
680 return FALSE;
681#endif
682
683#ifdef GL_ARB_texture_cube_map
684 } else if (0 == strcmp(extension, "GL_ARB_texture_cube_map")) {
685#endif
686
687#ifdef GL_ARB_transpose_matrix
688 } else if (0 == strcmp(extension, "GL_ARB_transpose_matrix")) {
689 GLH_EXT_NAME(glLoadTransposeMatrixfARB) = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadTransposeMatrixfARB");
690 if (NULL == GLH_EXT_NAME(glLoadTransposeMatrixfARB))
691 return FALSE;
692 GLH_EXT_NAME(glLoadTransposeMatrixdARB) = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadTransposeMatrixdARB");
693 if (NULL == GLH_EXT_NAME(glLoadTransposeMatrixdARB))
694 return FALSE;
695 GLH_EXT_NAME(glMultTransposeMatrixfARB) = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultTransposeMatrixfARB");
696 if (NULL == GLH_EXT_NAME(glMultTransposeMatrixfARB))
697 return FALSE;
698 GLH_EXT_NAME(glMultTransposeMatrixdARB) = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultTransposeMatrixdARB");
699 if (NULL == GLH_EXT_NAME(glMultTransposeMatrixdARB))
700 return FALSE;
701#endif
702
703#ifdef GL_ARB_vertex_program
704 } else if (0 == strcmp(extension, "GL_ARB_vertex_program")) {
705 GLH_EXT_NAME(glVertexAttrib1sARB) = (PFNGLVERTEXATTRIB1SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sARB");
706 if (NULL == GLH_EXT_NAME(glVertexAttrib1sARB))
707 return GL_FALSE;
708 GLH_EXT_NAME(glVertexAttrib1fARB) = (PFNGLVERTEXATTRIB1FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fARB");
709 if (NULL == GLH_EXT_NAME(glVertexAttrib1fARB))
710 return GL_FALSE;
711 GLH_EXT_NAME(glVertexAttrib1dARB) = (PFNGLVERTEXATTRIB1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dARB");
712 if (NULL == GLH_EXT_NAME(glVertexAttrib1dARB))
713 return GL_FALSE;
714 GLH_EXT_NAME(glVertexAttrib2sARB) = (PFNGLVERTEXATTRIB2SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sARB");
715 if (NULL == GLH_EXT_NAME(glVertexAttrib2sARB))
716 return GL_FALSE;
717 GLH_EXT_NAME(glVertexAttrib2fARB) = (PFNGLVERTEXATTRIB2FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fARB");
718 if (NULL == GLH_EXT_NAME(glVertexAttrib2fARB))
719 return GL_FALSE;
720 GLH_EXT_NAME(glVertexAttrib2dARB) = (PFNGLVERTEXATTRIB2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dARB");
721 if (NULL == GLH_EXT_NAME(glVertexAttrib2dARB))
722 return GL_FALSE;
723 GLH_EXT_NAME(glVertexAttrib3sARB) = (PFNGLVERTEXATTRIB3SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sARB");
724 if (NULL == GLH_EXT_NAME(glVertexAttrib3sARB))
725 return GL_FALSE;
726 GLH_EXT_NAME(glVertexAttrib3fARB) = (PFNGLVERTEXATTRIB3FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fARB");
727 if (NULL == GLH_EXT_NAME(glVertexAttrib3fARB))
728 return GL_FALSE;
729 GLH_EXT_NAME(glVertexAttrib3dARB) = (PFNGLVERTEXATTRIB3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dARB");
730 if (NULL == GLH_EXT_NAME(glVertexAttrib3dARB))
731 return GL_FALSE;
732 GLH_EXT_NAME(glVertexAttrib4sARB) = (PFNGLVERTEXATTRIB4SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sARB");
733 if (NULL == GLH_EXT_NAME(glVertexAttrib4sARB))
734 return GL_FALSE;
735 GLH_EXT_NAME(glVertexAttrib4fARB) = (PFNGLVERTEXATTRIB4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fARB");
736 if (NULL == GLH_EXT_NAME(glVertexAttrib4fARB))
737 return GL_FALSE;
738 GLH_EXT_NAME(glVertexAttrib4dARB) = (PFNGLVERTEXATTRIB4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dARB");
739 if (NULL == GLH_EXT_NAME(glVertexAttrib4dARB))
740 return GL_FALSE;
741 GLH_EXT_NAME(glVertexAttrib4NubARB) = (PFNGLVERTEXATTRIB4NUBARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NubARB");
742 if (NULL == GLH_EXT_NAME(glVertexAttrib4NubARB))
743 return GL_FALSE;
744 GLH_EXT_NAME(glVertexAttrib1svARB) = (PFNGLVERTEXATTRIB1SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1svARB");
745 if (NULL == GLH_EXT_NAME(glVertexAttrib1svARB))
746 return GL_FALSE;
747 GLH_EXT_NAME(glVertexAttrib1fvARB) = (PFNGLVERTEXATTRIB1FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fvARB");
748 if (NULL == GLH_EXT_NAME(glVertexAttrib1fvARB))
749 return GL_FALSE;
750 GLH_EXT_NAME(glVertexAttrib1dvARB) = (PFNGLVERTEXATTRIB1DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dvARB");
751 if (NULL == GLH_EXT_NAME(glVertexAttrib1dvARB))
752 return GL_FALSE;
753 GLH_EXT_NAME(glVertexAttrib2svARB) = (PFNGLVERTEXATTRIB2SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2svARB");
754 if (NULL == GLH_EXT_NAME(glVertexAttrib2svARB))
755 return GL_FALSE;
756 GLH_EXT_NAME(glVertexAttrib2fvARB) = (PFNGLVERTEXATTRIB2FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fvARB");
757 if (NULL == GLH_EXT_NAME(glVertexAttrib2fvARB))
758 return GL_FALSE;
759 GLH_EXT_NAME(glVertexAttrib2dvARB) = (PFNGLVERTEXATTRIB2DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dvARB");
760 if (NULL == GLH_EXT_NAME(glVertexAttrib2dvARB))
761 return GL_FALSE;
762 GLH_EXT_NAME(glVertexAttrib3svARB) = (PFNGLVERTEXATTRIB3SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3svARB");
763 if (NULL == GLH_EXT_NAME(glVertexAttrib3svARB))
764 return GL_FALSE;
765 GLH_EXT_NAME(glVertexAttrib3fvARB) = (PFNGLVERTEXATTRIB3FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fvARB");
766 if (NULL == GLH_EXT_NAME(glVertexAttrib3fvARB))
767 return GL_FALSE;
768 GLH_EXT_NAME(glVertexAttrib3dvARB) = (PFNGLVERTEXATTRIB3DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dvARB");
769 if (NULL == GLH_EXT_NAME(glVertexAttrib3dvARB))
770 return GL_FALSE;
771 GLH_EXT_NAME(glVertexAttrib4bvARB) = (PFNGLVERTEXATTRIB4BVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4bvARB");
772 if (NULL == GLH_EXT_NAME(glVertexAttrib4bvARB))
773 return GL_FALSE;
774 GLH_EXT_NAME(glVertexAttrib4svARB) = (PFNGLVERTEXATTRIB4SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4svARB");
775 if (NULL == GLH_EXT_NAME(glVertexAttrib4svARB))
776 return GL_FALSE;
777 GLH_EXT_NAME(glVertexAttrib4ivARB) = (PFNGLVERTEXATTRIB4IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ivARB");
778 if (NULL == GLH_EXT_NAME(glVertexAttrib4ivARB))
779 return GL_FALSE;
780 GLH_EXT_NAME(glVertexAttrib4ubvARB) = (PFNGLVERTEXATTRIB4UBVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubvARB");
781 if (NULL == GLH_EXT_NAME(glVertexAttrib4ubvARB))
782 return GL_FALSE;
783 GLH_EXT_NAME(glVertexAttrib4usvARB) = (PFNGLVERTEXATTRIB4USVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4usvARB");
784 if (NULL == GLH_EXT_NAME(glVertexAttrib4usvARB))
785 return GL_FALSE;
786 GLH_EXT_NAME(glVertexAttrib4uivARB) = (PFNGLVERTEXATTRIB4UIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4uivARB");
787 if (NULL == GLH_EXT_NAME(glVertexAttrib4uivARB))
788 return GL_FALSE;
789 GLH_EXT_NAME(glVertexAttrib4fvARB) = (PFNGLVERTEXATTRIB4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fvARB");
790 if (NULL == GLH_EXT_NAME(glVertexAttrib4fvARB))
791 return GL_FALSE;
792 GLH_EXT_NAME(glVertexAttrib4dvARB) = (PFNGLVERTEXATTRIB4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dvARB");
793 if (NULL == GLH_EXT_NAME(glVertexAttrib4dvARB))
794 return GL_FALSE;
795 GLH_EXT_NAME(glVertexAttrib4NbvARB) = (PFNGLVERTEXATTRIB4NBVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NbvARB");
796 if (NULL == GLH_EXT_NAME(glVertexAttrib4NbvARB))
797 return GL_FALSE;
798 GLH_EXT_NAME(glVertexAttrib4NsvARB) = (PFNGLVERTEXATTRIB4NSVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NsvARB");
799 if (NULL == GLH_EXT_NAME(glVertexAttrib4NsvARB))
800 return GL_FALSE;
801 GLH_EXT_NAME(glVertexAttrib4NivARB) = (PFNGLVERTEXATTRIB4NIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NivARB");
802 if (NULL == GLH_EXT_NAME(glVertexAttrib4NivARB))
803 return GL_FALSE;
804 GLH_EXT_NAME(glVertexAttrib4NubvARB) = (PFNGLVERTEXATTRIB4NUBVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NubvARB");
805 if (NULL == GLH_EXT_NAME(glVertexAttrib4NubvARB))
806 return GL_FALSE;
807 GLH_EXT_NAME(glVertexAttrib4NusvARB) = (PFNGLVERTEXATTRIB4NUSVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NusvARB");
808 if (NULL == GLH_EXT_NAME(glVertexAttrib4NusvARB))
809 return GL_FALSE;
810 GLH_EXT_NAME(glVertexAttrib4NuivARB) = (PFNGLVERTEXATTRIB4NUIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NuivARB");
811 if (NULL == GLH_EXT_NAME(glVertexAttrib4NuivARB))
812 return GL_FALSE;
813 GLH_EXT_NAME(glVertexAttribPointerARB) = (PFNGLVERTEXATTRIBPOINTERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointerARB");
814 if (NULL == GLH_EXT_NAME(glVertexAttribPointerARB))
815 return GL_FALSE;
816 GLH_EXT_NAME(glEnableVertexAttribArrayARB) = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glEnableVertexAttribArrayARB");
817 if (NULL == GLH_EXT_NAME(glEnableVertexAttribArrayARB))
818 return GL_FALSE;
819 GLH_EXT_NAME(glDisableVertexAttribArrayARB) = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDisableVertexAttribArrayARB");
820 if (NULL == GLH_EXT_NAME(glDisableVertexAttribArrayARB))
821 return GL_FALSE;
822 GLH_EXT_NAME(glProgramStringARB) = (PFNGLPROGRAMSTRINGARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramStringARB");
823 if (NULL == GLH_EXT_NAME(glProgramStringARB))
824 return GL_FALSE;
825 GLH_EXT_NAME(glBindProgramARB) = (PFNGLBINDPROGRAMARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBindProgramARB");
826 if (NULL == GLH_EXT_NAME(glBindProgramARB))
827 return GL_FALSE;
828 GLH_EXT_NAME(glDeleteProgramsARB) = (PFNGLDELETEPROGRAMSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramsARB");
829 if (NULL == GLH_EXT_NAME(glDeleteProgramsARB))
830 return GL_FALSE;
831 GLH_EXT_NAME(glGenProgramsARB) = (PFNGLGENPROGRAMSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenProgramsARB");
832 if (NULL == GLH_EXT_NAME(glGenProgramsARB))
833 return GL_FALSE;
834 GLH_EXT_NAME(glProgramEnvParameter4dARB) = (PFNGLPROGRAMENVPARAMETER4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dARB");
835 if (NULL == GLH_EXT_NAME(glProgramEnvParameter4dARB))
836 return GL_FALSE;
837 GLH_EXT_NAME(glProgramEnvParameter4dvARB) = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dvARB");
838 if (NULL == GLH_EXT_NAME(glProgramEnvParameter4dvARB))
839 return GL_FALSE;
840 GLH_EXT_NAME(glProgramEnvParameter4fARB) = (PFNGLPROGRAMENVPARAMETER4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fARB");
841 if (NULL == GLH_EXT_NAME(glProgramEnvParameter4fARB))
842 return GL_FALSE;
843 GLH_EXT_NAME(glProgramEnvParameter4fvARB) = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fvARB");
844 if (NULL == GLH_EXT_NAME(glProgramEnvParameter4fvARB))
845 return GL_FALSE;
846 GLH_EXT_NAME(glProgramLocalParameter4dARB) = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dARB");
847 if (NULL == GLH_EXT_NAME(glProgramLocalParameter4dARB))
848 return GL_FALSE;
849 GLH_EXT_NAME(glProgramLocalParameter4dvARB) = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dvARB");
850 if (NULL == GLH_EXT_NAME(glProgramLocalParameter4dvARB))
851 return GL_FALSE;
852 GLH_EXT_NAME(glProgramLocalParameter4fARB) = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fARB");
853 if (NULL == GLH_EXT_NAME(glProgramLocalParameter4fARB))
854 return GL_FALSE;
855 GLH_EXT_NAME(glProgramLocalParameter4fvARB) = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fvARB");
856 if (NULL == GLH_EXT_NAME(glProgramLocalParameter4fvARB))
857 return GL_FALSE;
858 GLH_EXT_NAME(glGetProgramEnvParameterdvARB) = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterdvARB");
859 if (NULL == GLH_EXT_NAME(glGetProgramEnvParameterdvARB))
860 return GL_FALSE;
861 GLH_EXT_NAME(glGetProgramEnvParameterfvARB) = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterfvARB");
862 if (NULL == GLH_EXT_NAME(glGetProgramEnvParameterfvARB))
863 return GL_FALSE;
864 GLH_EXT_NAME(glGetProgramLocalParameterdvARB) = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterdvARB");
865 if (NULL == GLH_EXT_NAME(glGetProgramLocalParameterdvARB))
866 return GL_FALSE;
867 GLH_EXT_NAME(glGetProgramLocalParameterfvARB) = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterfvARB");
868 if (NULL == GLH_EXT_NAME(glGetProgramLocalParameterfvARB))
869 return GL_FALSE;
870 GLH_EXT_NAME(glGetProgramivARB) = (PFNGLGETPROGRAMIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramivARB");
871 if (NULL == GLH_EXT_NAME(glGetProgramivARB))
872 return GL_FALSE;
873 GLH_EXT_NAME(glGetProgramStringARB) = (PFNGLGETPROGRAMSTRINGARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramStringARB");
874 if (NULL == GLH_EXT_NAME(glGetProgramStringARB))
875 return GL_FALSE;
876 GLH_EXT_NAME(glGetVertexAttribdvARB) = (PFNGLGETVERTEXATTRIBDVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdvARB");
877 if (NULL == GLH_EXT_NAME(glGetVertexAttribdvARB))
878 return GL_FALSE;
879 GLH_EXT_NAME(glGetVertexAttribfvARB) = (PFNGLGETVERTEXATTRIBFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfvARB");
880 if (NULL == GLH_EXT_NAME(glGetVertexAttribfvARB))
881 return GL_FALSE;
882 GLH_EXT_NAME(glGetVertexAttribivARB) = (PFNGLGETVERTEXATTRIBIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribivARB");
883 if (NULL == GLH_EXT_NAME(glGetVertexAttribivARB))
884 return GL_FALSE;
885 GLH_EXT_NAME(glGetVertexAttribPointervARB) = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribPointervARB");
886 if (NULL == GLH_EXT_NAME(glGetVertexAttribPointervARB))
887 return GL_FALSE;
888 GLH_EXT_NAME(glIsProgramARB) = (PFNGLISPROGRAMARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsProgramARB");
889 if (NULL == GLH_EXT_NAME(glIsProgramARB))
890 return GL_FALSE;
891#endif
892
893#ifdef GL_EXT_abgr
894 } else if (0 == strcmp(extension, "GL_EXT_abgr")) {
895#endif
896
897#ifdef GL_EXT_bgra
898 } else if (0 == strcmp(extension, "GL_EXT_bgra")) {
899#endif
900
901#ifdef GL_EXT_blend_color
902 } else if (0 == strcmp(extension, "GL_EXT_blend_color")) {
903 GLH_EXT_NAME(glBlendColorEXT) = (PFNGLBLENDCOLOREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendColorEXT");
904 if (NULL == GLH_EXT_NAME(glBlendColorEXT))
905 return FALSE;
906#endif
907
908#ifdef GL_EXT_blend_minmax
909 } else if (0 == strcmp(extension, "GL_EXT_blend_minmax")) {
910 GLH_EXT_NAME(glBlendEquationEXT) = (PFNGLBLENDEQUATIONEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquationEXT");
911 if (NULL == GLH_EXT_NAME(glBlendEquationEXT))
912 return FALSE;
913#endif
914
915#ifdef GL_EXT_blend_subtract
916 } else if (0 == strcmp(extension, "GL_EXT_blend_subtract")) {
917#endif
918
919#ifdef GL_EXT_compiled_vertex_array
920 } else if (0 == strcmp(extension, "GL_EXT_compiled_vertex_array")) {
921 GLH_EXT_NAME(glLockArraysEXT) = (PFNGLLOCKARRAYSEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glLockArraysEXT");
922 if (NULL == GLH_EXT_NAME(glLockArraysEXT))
923 return FALSE;
924 GLH_EXT_NAME(glUnlockArraysEXT) = (PFNGLUNLOCKARRAYSEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glUnlockArraysEXT");
925 if (NULL == GLH_EXT_NAME(glUnlockArraysEXT))
926 return FALSE;
927#endif
928
929#ifdef GL_EXT_fog_coord
930 } else if (0 == strcmp(extension, "GL_EXT_fog_coord")) {
931 GLH_EXT_NAME(glFogCoorddEXT) = (PFNGLFOGCOORDDEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoorddEXT");
932 if (NULL == GLH_EXT_NAME(glFogCoorddEXT))
933 return FALSE;
934 GLH_EXT_NAME(glFogCoorddvEXT) = (PFNGLFOGCOORDDVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoorddvEXT");
935 if (NULL == GLH_EXT_NAME(glFogCoorddvEXT))
936 return FALSE;
937 GLH_EXT_NAME(glFogCoordfEXT) = (PFNGLFOGCOORDFEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordfEXT");
938 if (NULL == GLH_EXT_NAME(glFogCoordfEXT))
939 return FALSE;
940 GLH_EXT_NAME(glFogCoordfvEXT) = (PFNGLFOGCOORDFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordfvEXT");
941 if (NULL == GLH_EXT_NAME(glFogCoordfvEXT))
942 return FALSE;
943 GLH_EXT_NAME(glFogCoordPointerEXT) = (PFNGLFOGCOORDPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordPointerEXT");
944 if (NULL == GLH_EXT_NAME(glFogCoordPointerEXT))
945 return FALSE;
946#endif
947
948#ifdef GL_EXT_light_max_exponent
949 } else if (0 == strcmp(extension, "GL_EXT_light_max_exponent")) {
950#endif
951
952#ifdef GL_EXT_packed_pixels
953 } else if (0 == strcmp(extension, "GL_EXT_packed_pixels")) {
954#endif
955
956#ifdef GL_EXT_paletted_texture
957 } else if (0 == strcmp(extension, "GL_EXT_paletted_texture")) {
958 GLH_EXT_NAME(glColorSubTableEXT) = (PFNGLCOLORSUBTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorSubTableEXT");
959 if (NULL == GLH_EXT_NAME(glColorSubTableEXT))
960 return FALSE;
961 GLH_EXT_NAME(glColorTableEXT) = (PFNGLCOLORTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableEXT");
962 if (NULL == GLH_EXT_NAME(glColorTableEXT))
963 return FALSE;
964 GLH_EXT_NAME(glGetColorTableEXT) = (PFNGLGETCOLORTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableEXT");
965 if (NULL == GLH_EXT_NAME(glGetColorTableEXT))
966 return FALSE;
967 GLH_EXT_NAME(glGetColorTableParameterfvEXT) = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameterfvEXT");
968 if (NULL == GLH_EXT_NAME(glGetColorTableParameterfvEXT))
969 return FALSE;
970 GLH_EXT_NAME(glGetColorTableParameterivEXT) = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameterivEXT");
971 if (NULL == GLH_EXT_NAME(glGetColorTableParameterivEXT))
972 return FALSE;
973#endif
974
975#ifdef GL_EXT_point_parameters
976 } else if (0 == strcmp(extension, "GL_EXT_point_parameters")) {
977 GLH_EXT_NAME(glPointParameterfEXT) = (PFNGLPOINTPARAMETERFEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfEXT");
978 if (NULL == GLH_EXT_NAME(glPointParameterfEXT))
979 return FALSE;
980 GLH_EXT_NAME(glPointParameterfvEXT) = (PFNGLPOINTPARAMETERFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfvEXT");
981 if (NULL == GLH_EXT_NAME(glPointParameterfvEXT))
982 return FALSE;
983#endif
984
985#ifdef GL_EXT_rescale_normal
986 } else if (0 == strcmp(extension, "GL_EXT_rescale_normal")) {
987#endif
988
989#ifdef GL_EXT_secondary_color
990 } else if (0 == strcmp(extension, "GL_EXT_secondary_color")) {
991 GLH_EXT_NAME(glSecondaryColor3bEXT) = (PFNGLSECONDARYCOLOR3BEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3bEXT");
992 if (NULL == GLH_EXT_NAME(glSecondaryColor3bEXT))
993 return FALSE;
994 GLH_EXT_NAME(glSecondaryColor3bvEXT) = (PFNGLSECONDARYCOLOR3BVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3bvEXT");
995 if (NULL == GLH_EXT_NAME(glSecondaryColor3bvEXT))
996 return FALSE;
997 GLH_EXT_NAME(glSecondaryColor3dEXT) = (PFNGLSECONDARYCOLOR3DEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3dEXT");
998 if (NULL == GLH_EXT_NAME(glSecondaryColor3dEXT))
999 return FALSE;
1000 GLH_EXT_NAME(glSecondaryColor3dvEXT) = (PFNGLSECONDARYCOLOR3DVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3dvEXT");
1001 if (NULL == GLH_EXT_NAME(glSecondaryColor3dvEXT))
1002 return FALSE;
1003 GLH_EXT_NAME(glSecondaryColor3fEXT) = (PFNGLSECONDARYCOLOR3FEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3fEXT");
1004 if (NULL == GLH_EXT_NAME(glSecondaryColor3fEXT))
1005 return FALSE;
1006 GLH_EXT_NAME(glSecondaryColor3fvEXT) = (PFNGLSECONDARYCOLOR3FVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3fvEXT");
1007 if (NULL == GLH_EXT_NAME(glSecondaryColor3fvEXT))
1008 return FALSE;
1009 GLH_EXT_NAME(glSecondaryColor3iEXT) = (PFNGLSECONDARYCOLOR3IEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3iEXT");
1010 if (NULL == GLH_EXT_NAME(glSecondaryColor3iEXT))
1011 return FALSE;
1012 GLH_EXT_NAME(glSecondaryColor3ivEXT) = (PFNGLSECONDARYCOLOR3IVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ivEXT");
1013 if (NULL == GLH_EXT_NAME(glSecondaryColor3ivEXT))
1014 return FALSE;
1015 GLH_EXT_NAME(glSecondaryColor3sEXT) = (PFNGLSECONDARYCOLOR3SEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3sEXT");
1016 if (NULL == GLH_EXT_NAME(glSecondaryColor3sEXT))
1017 return FALSE;
1018 GLH_EXT_NAME(glSecondaryColor3svEXT) = (PFNGLSECONDARYCOLOR3SVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3svEXT");
1019 if (NULL == GLH_EXT_NAME(glSecondaryColor3svEXT))
1020 return FALSE;
1021 GLH_EXT_NAME(glSecondaryColor3ubEXT) = (PFNGLSECONDARYCOLOR3UBEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ubEXT");
1022 if (NULL == GLH_EXT_NAME(glSecondaryColor3ubEXT))
1023 return FALSE;
1024 GLH_EXT_NAME(glSecondaryColor3ubvEXT) = (PFNGLSECONDARYCOLOR3UBVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ubvEXT");
1025 if (NULL == GLH_EXT_NAME(glSecondaryColor3ubvEXT))
1026 return FALSE;
1027 GLH_EXT_NAME(glSecondaryColor3uiEXT) = (PFNGLSECONDARYCOLOR3UIEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3uiEXT");
1028 if (NULL == GLH_EXT_NAME(glSecondaryColor3uiEXT))
1029 return FALSE;
1030 GLH_EXT_NAME(glSecondaryColor3uivEXT) = (PFNGLSECONDARYCOLOR3UIVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3uivEXT");
1031 if (NULL == GLH_EXT_NAME(glSecondaryColor3uivEXT))
1032 return FALSE;
1033 GLH_EXT_NAME(glSecondaryColor3usEXT) = (PFNGLSECONDARYCOLOR3USEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3usEXT");
1034 if (NULL == GLH_EXT_NAME(glSecondaryColor3usEXT))
1035 return FALSE;
1036 GLH_EXT_NAME(glSecondaryColor3usvEXT) = (PFNGLSECONDARYCOLOR3USVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3usvEXT");
1037 if (NULL == GLH_EXT_NAME(glSecondaryColor3usvEXT))
1038 return FALSE;
1039 GLH_EXT_NAME(glSecondaryColorPointerEXT) = (PFNGLSECONDARYCOLORPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColorPointerEXT");
1040 if (NULL == GLH_EXT_NAME(glSecondaryColorPointerEXT))
1041 return FALSE;
1042#endif
1043
1044#ifdef GL_EXT_separate_specular_color
1045 } else if (0 == strcmp(extension, "GL_EXT_separate_specular_color")) {
1046#endif
1047
1048#ifdef GL_EXT_shared_texture_palette
1049 } else if (0 == strcmp(extension, "GL_EXT_shared_texture_palette")) {
1050#endif
1051
1052#ifdef GL_EXT_stencil_wrap
1053 } else if (0 == strcmp(extension, "GL_EXT_stencil_wrap")) {
1054#endif
1055
1056#ifdef GL_EXT_texture_compression_s3tc
1057 } else if (0 == strcmp(extension, "GL_EXT_texture_compression_s3tc")) {
1058#endif
1059
1060#ifdef GL_EXT_texture_cube_map
1061 } else if (0 == strcmp(extension, "GL_EXT_texture_cube_map")) {
1062#endif
1063
1064#ifdef GL_EXT_texture_edge_clamp
1065 } else if (0 == strcmp(extension, "GL_EXT_texture_edge_clamp")) {
1066#endif
1067
1068#ifdef GL_EXT_texture_env_add
1069 } else if (0 == strcmp(extension, "GL_EXT_texture_env_add")) {
1070#endif
1071
1072#ifdef GL_EXT_texture_env_combine
1073 } else if (0 == strcmp(extension, "GL_EXT_texture_env_combine")) {
1074#endif
1075
1076#ifdef GL_EXT_texture_filter_anisotropic
1077 } else if (0 == strcmp(extension, "GL_EXT_texture_filter_anisotropic")) {
1078#endif
1079
1080#ifdef GL_EXT_texture_lod_bias
1081 } else if (0 == strcmp(extension, "GL_EXT_texture_lod_bias")) {
1082#endif
1083
1084#ifdef GL_EXT_texture_object
1085 } else if (0 == strcmp(extension, "GL_EXT_texture_object")) {
1086 GLH_EXT_NAME(glAreTexturesResidentEXT) = (PFNGLARETEXTURESRESIDENTEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glAreTexturesResidentEXT");
1087 if (NULL == GLH_EXT_NAME(glAreTexturesResidentEXT))
1088 return FALSE;
1089 GLH_EXT_NAME(glBindTextureEXT) = (PFNGLBINDTEXTUREEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glBindTextureEXT");
1090 if (NULL == GLH_EXT_NAME(glBindTextureEXT))
1091 return FALSE;
1092 GLH_EXT_NAME(glDeleteTexturesEXT) = (PFNGLDELETETEXTURESEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteTexturesEXT");
1093 if (NULL == GLH_EXT_NAME(glDeleteTexturesEXT))
1094 return FALSE;
1095 GLH_EXT_NAME(glGenTexturesEXT) = (PFNGLGENTEXTURESEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGenTexturesEXT");
1096 if (NULL == GLH_EXT_NAME(glGenTexturesEXT))
1097 return FALSE;
1098 GLH_EXT_NAME(glIsTextureEXT) = (PFNGLISTEXTUREEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glIsTextureEXT");
1099 if (NULL == GLH_EXT_NAME(glIsTextureEXT))
1100 return FALSE;
1101 GLH_EXT_NAME(glPrioritizeTexturesEXT) = (PFNGLPRIORITIZETEXTURESEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glPrioritizeTexturesEXT");
1102 if (NULL == GLH_EXT_NAME(glPrioritizeTexturesEXT))
1103 return FALSE;
1104#endif
1105
1106#ifdef GL_EXT_texture3D
1107 } else if (0 == strcmp(extension, "GL_EXT_texture3D")) {
1108 GLH_EXT_NAME(glTexImage3DEXT) = (PFNGLTEXIMAGE3DEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage3DEXT");
1109 if (NULL == GLH_EXT_NAME(glTexImage3DEXT))
1110 return FALSE;
1111#endif
1112
1113#ifdef GL_EXT_vertex_array
1114 } else if (0 == strcmp(extension, "GL_EXT_vertex_array")) {
1115 GLH_EXT_NAME(glArrayElementEXT) = (PFNGLARRAYELEMENTEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glArrayElementEXT");
1116 if (NULL == GLH_EXT_NAME(glArrayElementEXT))
1117 return FALSE;
1118 GLH_EXT_NAME(glColorPointerEXT) = (PFNGLCOLORPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorPointerEXT");
1119 if (NULL == GLH_EXT_NAME(glColorPointerEXT))
1120 return FALSE;
1121 GLH_EXT_NAME(glEdgeFlagPointerEXT) = (PFNGLEDGEFLAGPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glEdgeFlagPointerEXT");
1122 if (NULL == GLH_EXT_NAME(glEdgeFlagPointerEXT))
1123 return FALSE;
1124 GLH_EXT_NAME(glGetPointervEXT) = (PFNGLGETPOINTERVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetPointervEXT");
1125 if (NULL == GLH_EXT_NAME(glGetPointervEXT))
1126 return FALSE;
1127 GLH_EXT_NAME(glIndexPointerEXT) = (PFNGLINDEXPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glIndexPointerEXT");
1128 if (NULL == GLH_EXT_NAME(glIndexPointerEXT))
1129 return FALSE;
1130 GLH_EXT_NAME(glNormalPointerEXT) = (PFNGLNORMALPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glNormalPointerEXT");
1131 if (NULL == GLH_EXT_NAME(glNormalPointerEXT))
1132 return FALSE;
1133 GLH_EXT_NAME(glTexCoordPointerEXT) = (PFNGLTEXCOORDPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordPointerEXT");
1134 if (NULL == GLH_EXT_NAME(glTexCoordPointerEXT))
1135 return FALSE;
1136 GLH_EXT_NAME(glVertexPointerEXT) = (PFNGLVERTEXPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexPointerEXT");
1137 if (NULL == GLH_EXT_NAME(glVertexPointerEXT))
1138 return FALSE;
1139 GLH_EXT_NAME(glDrawArraysEXT) = (PFNGLDRAWARRAYSEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawArraysEXT");
1140 if (NULL == GLH_EXT_NAME(glDrawArraysEXT))
1141 return FALSE;
1142#endif
1143
1144#ifdef GL_EXT_vertex_weighting
1145 } else if (0 == strcmp(extension, "GL_EXT_vertex_weighting")) {
1146 GLH_EXT_NAME(glVertexWeightfEXT) = (PFNGLVERTEXWEIGHTFEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexWeightfEXT");
1147 if (NULL == GLH_EXT_NAME(glVertexWeightfEXT))
1148 return FALSE;
1149 GLH_EXT_NAME(glVertexWeightfvEXT) = (PFNGLVERTEXWEIGHTFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexWeightfvEXT");
1150 if (NULL == GLH_EXT_NAME(glVertexWeightfvEXT))
1151 return FALSE;
1152 GLH_EXT_NAME(glVertexWeightPointerEXT) = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexWeightPointerEXT");
1153 if (NULL == GLH_EXT_NAME(glVertexWeightPointerEXT))
1154 return FALSE;
1155#endif
1156
1157#ifdef GL_NV_blend_square
1158 } else if (0 == strcmp(extension, "GL_NV_blend_square")) {
1159#endif
1160
1161#ifdef GL_NV_evaluators
1162 } else if (0 == strcmp(extension, "GL_NV_evaluators")) {
1163 GLH_EXT_NAME(glMapControlPointsNV) = (PFNGLMAPCONTROLPOINTSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glMapControlPointsNV");
1164 if (NULL == GLH_EXT_NAME(glMapControlPointsNV))
1165 return FALSE;
1166 GLH_EXT_NAME(glMapParameterivNV) = (PFNGLMAPPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glMapParameterivNV");
1167 if (NULL == GLH_EXT_NAME(glMapParameterivNV))
1168 return FALSE;
1169 GLH_EXT_NAME(glMapParameterfvNV) = (PFNGLMAPPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glMapParameterfvNV");
1170 if (NULL == GLH_EXT_NAME(glMapParameterfvNV))
1171 return FALSE;
1172 GLH_EXT_NAME(glGetMapControlPointsNV) = (PFNGLGETMAPCONTROLPOINTSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapControlPointsNV");
1173 if (NULL == GLH_EXT_NAME(glGetMapControlPointsNV))
1174 return FALSE;
1175 GLH_EXT_NAME(glGetMapParameterivNV) = (PFNGLGETMAPPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapParameterivNV");
1176 if (NULL == GLH_EXT_NAME(glGetMapParameterivNV))
1177 return FALSE;
1178 GLH_EXT_NAME(glGetMapParameterfvNV) = (PFNGLGETMAPPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapParameterfvNV");
1179 if (NULL == GLH_EXT_NAME(glGetMapParameterfvNV))
1180 return FALSE;
1181 GLH_EXT_NAME(glGetMapAttribParameterivNV) = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapAttribParameterivNV");
1182 if (NULL == GLH_EXT_NAME(glGetMapAttribParameterivNV))
1183 return FALSE;
1184 GLH_EXT_NAME(glGetMapAttribParameterfvNV) = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapAttribParameterfvNV");
1185 if (NULL == GLH_EXT_NAME(glGetMapAttribParameterfvNV))
1186 return FALSE;
1187 GLH_EXT_NAME(glEvalMapsNV) = (PFNGLEVALMAPSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glEvalMapsNV");
1188 if (NULL == GLH_EXT_NAME(glEvalMapsNV))
1189 return FALSE;
1190#endif
1191
1192#ifdef GL_NV_fence
1193 } else if (0 == strcmp(extension, "GL_NV_fence")) {
1194 GLH_EXT_NAME(glGenFencesNV) = (PFNGLGENFENCESNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGenFencesNV");
1195 if (NULL == GLH_EXT_NAME(glGenFencesNV))
1196 return FALSE;
1197 GLH_EXT_NAME(glDeleteFencesNV) = (PFNGLDELETEFENCESNVPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteFencesNV");
1198 if (NULL == GLH_EXT_NAME(glDeleteFencesNV))
1199 return FALSE;
1200 GLH_EXT_NAME(glSetFenceNV) = (PFNGLSETFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glSetFenceNV");
1201 if (NULL == GLH_EXT_NAME(glSetFenceNV))
1202 return FALSE;
1203 GLH_EXT_NAME(glTestFenceNV) = (PFNGLTESTFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glTestFenceNV");
1204 if (NULL == GLH_EXT_NAME(glTestFenceNV))
1205 return FALSE;
1206 GLH_EXT_NAME(glFinishFenceNV) = (PFNGLFINISHFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glFinishFenceNV");
1207 if (NULL == GLH_EXT_NAME(glFinishFenceNV))
1208 return FALSE;
1209 GLH_EXT_NAME(glIsFenceNV) = (PFNGLISFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glIsFenceNV");
1210 if (NULL == GLH_EXT_NAME(glIsFenceNV))
1211 return FALSE;
1212 GLH_EXT_NAME(glGetFenceivNV) = (PFNGLGETFENCEIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFenceivNV");
1213 if (NULL == GLH_EXT_NAME(glGetFenceivNV))
1214 return FALSE;
1215#endif
1216
1217#ifdef GL_NV_fog_distance
1218 } else if (0 == strcmp(extension, "GL_NV_fog_distance")) {
1219#endif
1220
1221#ifdef GL_NV_packed_depth_stencil
1222 } else if (0 == strcmp(extension, "GL_NV_packed_depth_stencil")) {
1223#endif
1224
1225#ifdef GL_NV_register_combiners
1226 } else if (0 == strcmp(extension, "GL_NV_register_combiners")) {
1227 GLH_EXT_NAME(glCombinerParameterfvNV) = (PFNGLCOMBINERPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameterfvNV");
1228 if (NULL == GLH_EXT_NAME(glCombinerParameterfvNV))
1229 return FALSE;
1230 GLH_EXT_NAME(glCombinerParameterfNV) = (PFNGLCOMBINERPARAMETERFNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameterfNV");
1231 if (NULL == GLH_EXT_NAME(glCombinerParameterfNV))
1232 return FALSE;
1233 GLH_EXT_NAME(glCombinerParameterivNV) = (PFNGLCOMBINERPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameterivNV");
1234 if (NULL == GLH_EXT_NAME(glCombinerParameterivNV))
1235 return FALSE;
1236 GLH_EXT_NAME(glCombinerParameteriNV) = (PFNGLCOMBINERPARAMETERINVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameteriNV");
1237 if (NULL == GLH_EXT_NAME(glCombinerParameteriNV))
1238 return FALSE;
1239 GLH_EXT_NAME(glCombinerInputNV) = (PFNGLCOMBINERINPUTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerInputNV");
1240 if (NULL == GLH_EXT_NAME(glCombinerInputNV))
1241 return FALSE;
1242 GLH_EXT_NAME(glCombinerOutputNV) = (PFNGLCOMBINEROUTPUTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerOutputNV");
1243 if (NULL == GLH_EXT_NAME(glCombinerOutputNV))
1244 return FALSE;
1245 GLH_EXT_NAME(glFinalCombinerInputNV) = (PFNGLFINALCOMBINERINPUTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glFinalCombinerInputNV");
1246 if (NULL == GLH_EXT_NAME(glFinalCombinerInputNV))
1247 return FALSE;
1248 GLH_EXT_NAME(glGetCombinerInputParameterfvNV) = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerInputParameterfvNV");
1249 if (NULL == GLH_EXT_NAME(glGetCombinerInputParameterfvNV))
1250 return FALSE;
1251 GLH_EXT_NAME(glGetCombinerInputParameterivNV) = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerInputParameterivNV");
1252 if (NULL == GLH_EXT_NAME(glGetCombinerInputParameterivNV))
1253 return FALSE;
1254 GLH_EXT_NAME(glGetCombinerOutputParameterfvNV) = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerOutputParameterfvNV");
1255 if (NULL == GLH_EXT_NAME(glGetCombinerOutputParameterfvNV))
1256 return FALSE;
1257 GLH_EXT_NAME(glGetCombinerOutputParameterivNV) = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerOutputParameterivNV");
1258 if (NULL == GLH_EXT_NAME(glGetCombinerOutputParameterivNV))
1259 return FALSE;
1260 GLH_EXT_NAME(glGetFinalCombinerInputParameterfvNV) = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFinalCombinerInputParameterfvNV");
1261 if (NULL == GLH_EXT_NAME(glGetFinalCombinerInputParameterfvNV))
1262 return FALSE;
1263 GLH_EXT_NAME(glGetFinalCombinerInputParameterivNV) = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFinalCombinerInputParameterivNV");
1264 if (NULL == GLH_EXT_NAME(glGetFinalCombinerInputParameterivNV))
1265 return FALSE;
1266#endif
1267
1268#ifdef GL_NV_register_combiners2
1269 } else if (0 == strcmp(extension, "GL_NV_register_combiners2")) {
1270 GLH_EXT_NAME(glCombinerStageParameterfvNV) = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerStageParameterfvNV");
1271 if (NULL == GLH_EXT_NAME(glCombinerStageParameterfvNV))
1272 return FALSE;
1273 GLH_EXT_NAME(glGetCombinerStageParameterfvNV) = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerStageParameterfvNV");
1274 if (NULL == GLH_EXT_NAME(glGetCombinerStageParameterfvNV))
1275 return FALSE;
1276#endif
1277
1278#ifdef GL_NV_texgen_reflection
1279 } else if (0 == strcmp(extension, "GL_NV_texgen_reflection")) {
1280#endif
1281
1282#ifdef GL_NV_texture_env_combine4
1283 } else if (0 == strcmp(extension, "GL_NV_texture_env_combine4")) {
1284#endif
1285
1286#ifdef GL_NV_texture_rectangle
1287 } else if (0 == strcmp(extension, "GL_NV_texture_rectangle")) {
1288#endif
1289
1290#ifdef GL_NV_texture_shader
1291 } else if (0 == strcmp(extension, "GL_NV_texture_shader")) {
1292#endif
1293
1294#ifdef GL_NV_vertex_array_range
1295 } else if (0 == strcmp(extension, "GL_NV_vertex_array_range")) {
1296 GLH_EXT_NAME(glFlushVertexArrayRangeNV) = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)GLH_EXT_GET_PROC_ADDRESS("glFlushVertexArrayRangeNV");
1297 if (NULL == GLH_EXT_NAME(glFlushVertexArrayRangeNV))
1298 return FALSE;
1299 GLH_EXT_NAME(glVertexArrayRangeNV) = (PFNGLVERTEXARRAYRANGENVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayRangeNV");
1300 if (NULL == GLH_EXT_NAME(glVertexArrayRangeNV))
1301 return FALSE;
1302# ifdef _WIN32
1303 GLH_EXT_NAME(wglAllocateMemoryNV) = (PFNWGLALLOCATEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglAllocateMemoryNV");
1304 if (NULL == GLH_EXT_NAME(wglAllocateMemoryNV))
1305 return FALSE;
1306# endif
1307# ifdef GLX_VERSION_1_3
1308 GLH_EXT_NAME(glXAllocateMemoryNV) = (PFNGLXALLOCATEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("glXAllocateMemoryNV");
1309 if (NULL == GLH_EXT_NAME(glXAllocateMemoryNV))
1310 return FALSE;
1311# endif
1312# ifdef _WIN32
1313 GLH_EXT_NAME(wglFreeMemoryNV) = (PFNWGLFREEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglFreeMemoryNV");
1314 if (NULL == GLH_EXT_NAME(wglFreeMemoryNV))
1315 return FALSE;
1316# endif
1317# ifdef GLX_VERSION_1_3
1318 GLH_EXT_NAME(glXFreeMemoryNV) = (PFNGLXFREEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("glXFreeMemoryNV");
1319 if (NULL == GLH_EXT_NAME(glXFreeMemoryNV))
1320 return FALSE;
1321# endif
1322#endif
1323
1324#ifdef GL_NV_vertex_program
1325 } else if (0 == strcmp(extension, "GL_NV_vertex_program")) {
1326 GLH_EXT_NAME(glAreProgramsResidentNV) = (PFNGLAREPROGRAMSRESIDENTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glAreProgramsResidentNV");
1327 if (NULL == GLH_EXT_NAME(glAreProgramsResidentNV))
1328 return FALSE;
1329 GLH_EXT_NAME(glBindProgramNV) = (PFNGLBINDPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glBindProgramNV");
1330 if (NULL == GLH_EXT_NAME(glBindProgramNV))
1331 return FALSE;
1332 GLH_EXT_NAME(glDeleteProgramsNV) = (PFNGLDELETEPROGRAMSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramsNV");
1333 if (NULL == GLH_EXT_NAME(glDeleteProgramsNV))
1334 return FALSE;
1335 GLH_EXT_NAME(glExecuteProgramNV) = (PFNGLEXECUTEPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glExecuteProgramNV");
1336 if (NULL == GLH_EXT_NAME(glExecuteProgramNV))
1337 return FALSE;
1338 GLH_EXT_NAME(glGenProgramsNV) = (PFNGLGENPROGRAMSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGenProgramsNV");
1339 if (NULL == GLH_EXT_NAME(glGenProgramsNV))
1340 return FALSE;
1341 GLH_EXT_NAME(glGetProgramParameterdvNV) = (PFNGLGETPROGRAMPARAMETERDVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramParameterdvNV");
1342 if (NULL == GLH_EXT_NAME(glGetProgramParameterdvNV))
1343 return FALSE;
1344 GLH_EXT_NAME(glGetProgramParameterfvNV) = (PFNGLGETPROGRAMPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramParameterfvNV");
1345 if (NULL == GLH_EXT_NAME(glGetProgramParameterfvNV))
1346 return FALSE;
1347 GLH_EXT_NAME(glGetProgramivNV) = (PFNGLGETPROGRAMIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramivNV");
1348 if (NULL == GLH_EXT_NAME(glGetProgramivNV))
1349 return FALSE;
1350 GLH_EXT_NAME(glGetProgramStringNV) = (PFNGLGETPROGRAMSTRINGNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramStringNV");
1351 if (NULL == GLH_EXT_NAME(glGetProgramStringNV))
1352 return FALSE;
1353 GLH_EXT_NAME(glGetTrackMatrixivNV) = (PFNGLGETTRACKMATRIXIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTrackMatrixivNV");
1354 if (NULL == GLH_EXT_NAME(glGetTrackMatrixivNV))
1355 return FALSE;
1356 GLH_EXT_NAME(glGetVertexAttribdvNV) = (PFNGLGETVERTEXATTRIBDVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdvNV");
1357 if (NULL == GLH_EXT_NAME(glGetVertexAttribdvNV))
1358 return FALSE;
1359 GLH_EXT_NAME(glGetVertexAttribfvNV) = (PFNGLGETVERTEXATTRIBFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfvNV");
1360 if (NULL == GLH_EXT_NAME(glGetVertexAttribfvNV))
1361 return FALSE;
1362 GLH_EXT_NAME(glGetVertexAttribivNV) = (PFNGLGETVERTEXATTRIBIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribivNV");
1363 if (NULL == GLH_EXT_NAME(glGetVertexAttribivNV))
1364 return FALSE;
1365 GLH_EXT_NAME(glGetVertexAttribPointervNV) = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribPointervNV");
1366 if (NULL == GLH_EXT_NAME(glGetVertexAttribPointervNV))
1367 return FALSE;
1368 GLH_EXT_NAME(glIsProgramNV) = (PFNGLISPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glIsProgramNV");
1369 if (NULL == GLH_EXT_NAME(glIsProgramNV))
1370 return FALSE;
1371 GLH_EXT_NAME(glLoadProgramNV) = (PFNGLLOADPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadProgramNV");
1372 if (NULL == GLH_EXT_NAME(glLoadProgramNV))
1373 return FALSE;
1374 GLH_EXT_NAME(glProgramParameter4dNV) = (PFNGLPROGRAMPARAMETER4DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4dNV");
1375 if (NULL == GLH_EXT_NAME(glProgramParameter4dNV))
1376 return FALSE;
1377 GLH_EXT_NAME(glProgramParameter4dvNV) = (PFNGLPROGRAMPARAMETER4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4dvNV");
1378 if (NULL == GLH_EXT_NAME(glProgramParameter4dvNV))
1379 return FALSE;
1380 GLH_EXT_NAME(glProgramParameter4fNV) = (PFNGLPROGRAMPARAMETER4FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4fNV");
1381 if (NULL == GLH_EXT_NAME(glProgramParameter4fNV))
1382 return FALSE;
1383 GLH_EXT_NAME(glProgramParameter4fvNV) = (PFNGLPROGRAMPARAMETER4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4fvNV");
1384 if (NULL == GLH_EXT_NAME(glProgramParameter4fvNV))
1385 return FALSE;
1386 GLH_EXT_NAME(glProgramParameters4dvNV) = (PFNGLPROGRAMPARAMETERS4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameters4dvNV");
1387 if (NULL == GLH_EXT_NAME(glProgramParameters4dvNV))
1388 return FALSE;
1389 GLH_EXT_NAME(glProgramParameters4fvNV) = (PFNGLPROGRAMPARAMETERS4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameters4fvNV");
1390 if (NULL == GLH_EXT_NAME(glProgramParameters4fvNV))
1391 return FALSE;
1392 GLH_EXT_NAME(glRequestResidentProgramsNV) = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glRequestResidentProgramsNV");
1393 if (NULL == GLH_EXT_NAME(glRequestResidentProgramsNV))
1394 return FALSE;
1395 GLH_EXT_NAME(glTrackMatrixNV) = (PFNGLTRACKMATRIXNVPROC)GLH_EXT_GET_PROC_ADDRESS("glTrackMatrixNV");
1396 if (NULL == GLH_EXT_NAME(glTrackMatrixNV))
1397 return FALSE;
1398 GLH_EXT_NAME(glVertexAttribPointerNV) = (PFNGLVERTEXATTRIBPOINTERNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointerNV");
1399 if (NULL == GLH_EXT_NAME(glVertexAttribPointerNV))
1400 return FALSE;
1401 GLH_EXT_NAME(glVertexAttrib1dNV) = (PFNGLVERTEXATTRIB1DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dNV");
1402 if (NULL == GLH_EXT_NAME(glVertexAttrib1dNV))
1403 return FALSE;
1404 GLH_EXT_NAME(glVertexAttrib1dvNV) = (PFNGLVERTEXATTRIB1DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dvNV");
1405 if (NULL == GLH_EXT_NAME(glVertexAttrib1dvNV))
1406 return FALSE;
1407 GLH_EXT_NAME(glVertexAttrib1fNV) = (PFNGLVERTEXATTRIB1FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fNV");
1408 if (NULL == GLH_EXT_NAME(glVertexAttrib1fNV))
1409 return FALSE;
1410 GLH_EXT_NAME(glVertexAttrib1fvNV) = (PFNGLVERTEXATTRIB1FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fvNV");
1411 if (NULL == GLH_EXT_NAME(glVertexAttrib1fvNV))
1412 return FALSE;
1413 GLH_EXT_NAME(glVertexAttrib1sNV) = (PFNGLVERTEXATTRIB1SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sNV");
1414 if (NULL == GLH_EXT_NAME(glVertexAttrib1sNV))
1415 return FALSE;
1416 GLH_EXT_NAME(glVertexAttrib1svNV) = (PFNGLVERTEXATTRIB1SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1svNV");
1417 if (NULL == GLH_EXT_NAME(glVertexAttrib1svNV))
1418 return FALSE;
1419 GLH_EXT_NAME(glVertexAttrib2dNV) = (PFNGLVERTEXATTRIB2DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dNV");
1420 if (NULL == GLH_EXT_NAME(glVertexAttrib2dNV))
1421 return FALSE;
1422 GLH_EXT_NAME(glVertexAttrib2dvNV) = (PFNGLVERTEXATTRIB2DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dvNV");
1423 if (NULL == GLH_EXT_NAME(glVertexAttrib2dvNV))
1424 return FALSE;
1425 GLH_EXT_NAME(glVertexAttrib2fNV) = (PFNGLVERTEXATTRIB2FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fNV");
1426 if (NULL == GLH_EXT_NAME(glVertexAttrib2fNV))
1427 return FALSE;
1428 GLH_EXT_NAME(glVertexAttrib2fvNV) = (PFNGLVERTEXATTRIB2FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fvNV");
1429 if (NULL == GLH_EXT_NAME(glVertexAttrib2fvNV))
1430 return FALSE;
1431 GLH_EXT_NAME(glVertexAttrib2sNV) = (PFNGLVERTEXATTRIB2SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sNV");
1432 if (NULL == GLH_EXT_NAME(glVertexAttrib2sNV))
1433 return FALSE;
1434 GLH_EXT_NAME(glVertexAttrib2svNV) = (PFNGLVERTEXATTRIB2SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2svNV");
1435 if (NULL == GLH_EXT_NAME(glVertexAttrib2svNV))
1436 return FALSE;
1437 GLH_EXT_NAME(glVertexAttrib3dNV) = (PFNGLVERTEXATTRIB3DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dNV");
1438 if (NULL == GLH_EXT_NAME(glVertexAttrib3dNV))
1439 return FALSE;
1440 GLH_EXT_NAME(glVertexAttrib3dvNV) = (PFNGLVERTEXATTRIB3DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dvNV");
1441 if (NULL == GLH_EXT_NAME(glVertexAttrib3dvNV))
1442 return FALSE;
1443 GLH_EXT_NAME(glVertexAttrib3fNV) = (PFNGLVERTEXATTRIB3FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fNV");
1444 if (NULL == GLH_EXT_NAME(glVertexAttrib3fNV))
1445 return FALSE;
1446 GLH_EXT_NAME(glVertexAttrib3fvNV) = (PFNGLVERTEXATTRIB3FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fvNV");
1447 if (NULL == GLH_EXT_NAME(glVertexAttrib3fvNV))
1448 return FALSE;
1449 GLH_EXT_NAME(glVertexAttrib3sNV) = (PFNGLVERTEXATTRIB3SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sNV");
1450 if (NULL == GLH_EXT_NAME(glVertexAttrib3sNV))
1451 return FALSE;
1452 GLH_EXT_NAME(glVertexAttrib3svNV) = (PFNGLVERTEXATTRIB3SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3svNV");
1453 if (NULL == GLH_EXT_NAME(glVertexAttrib3svNV))
1454 return FALSE;
1455 GLH_EXT_NAME(glVertexAttrib4dNV) = (PFNGLVERTEXATTRIB4DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dNV");
1456 if (NULL == GLH_EXT_NAME(glVertexAttrib4dNV))
1457 return FALSE;
1458 GLH_EXT_NAME(glVertexAttrib4dvNV) = (PFNGLVERTEXATTRIB4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dvNV");
1459 if (NULL == GLH_EXT_NAME(glVertexAttrib4dvNV))
1460 return FALSE;
1461 GLH_EXT_NAME(glVertexAttrib4fNV) = (PFNGLVERTEXATTRIB4FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fNV");
1462 if (NULL == GLH_EXT_NAME(glVertexAttrib4fNV))
1463 return FALSE;
1464 GLH_EXT_NAME(glVertexAttrib4fvNV) = (PFNGLVERTEXATTRIB4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fvNV");
1465 if (NULL == GLH_EXT_NAME(glVertexAttrib4fvNV))
1466 return FALSE;
1467 GLH_EXT_NAME(glVertexAttrib4sNV) = (PFNGLVERTEXATTRIB4SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sNV");
1468 if (NULL == GLH_EXT_NAME(glVertexAttrib4sNV))
1469 return FALSE;
1470 GLH_EXT_NAME(glVertexAttrib4svNV) = (PFNGLVERTEXATTRIB4SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4svNV");
1471 if (NULL == GLH_EXT_NAME(glVertexAttrib4svNV))
1472 return FALSE;
1473 GLH_EXT_NAME(glVertexAttrib4ubvNV) = (PFNGLVERTEXATTRIB4UBVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubvNV");
1474 if (NULL == GLH_EXT_NAME(glVertexAttrib4ubvNV))
1475 return FALSE;
1476 GLH_EXT_NAME(glVertexAttribs1dvNV) = (PFNGLVERTEXATTRIBS1DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs1dvNV");
1477 if (NULL == GLH_EXT_NAME(glVertexAttribs1dvNV))
1478 return FALSE;
1479 GLH_EXT_NAME(glVertexAttribs1fvNV) = (PFNGLVERTEXATTRIBS1FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs1fvNV");
1480 if (NULL == GLH_EXT_NAME(glVertexAttribs1fvNV))
1481 return FALSE;
1482 GLH_EXT_NAME(glVertexAttribs1svNV) = (PFNGLVERTEXATTRIBS1SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs1svNV");
1483 if (NULL == GLH_EXT_NAME(glVertexAttribs1svNV))
1484 return FALSE;
1485 GLH_EXT_NAME(glVertexAttribs2dvNV) = (PFNGLVERTEXATTRIBS2DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs2dvNV");
1486 if (NULL == GLH_EXT_NAME(glVertexAttribs2dvNV))
1487 return FALSE;
1488 GLH_EXT_NAME(glVertexAttribs2fvNV) = (PFNGLVERTEXATTRIBS2FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs2fvNV");
1489 if (NULL == GLH_EXT_NAME(glVertexAttribs2fvNV))
1490 return FALSE;
1491 GLH_EXT_NAME(glVertexAttribs2svNV) = (PFNGLVERTEXATTRIBS2SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs2svNV");
1492 if (NULL == GLH_EXT_NAME(glVertexAttribs2svNV))
1493 return FALSE;
1494 GLH_EXT_NAME(glVertexAttribs3dvNV) = (PFNGLVERTEXATTRIBS3DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs3dvNV");
1495 if (NULL == GLH_EXT_NAME(glVertexAttribs3dvNV))
1496 return FALSE;
1497 GLH_EXT_NAME(glVertexAttribs3fvNV) = (PFNGLVERTEXATTRIBS3FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs3fvNV");
1498 if (NULL == GLH_EXT_NAME(glVertexAttribs3fvNV))
1499 return FALSE;
1500 GLH_EXT_NAME(glVertexAttribs3svNV) = (PFNGLVERTEXATTRIBS3SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs3svNV");
1501 if (NULL == GLH_EXT_NAME(glVertexAttribs3svNV))
1502 return FALSE;
1503 GLH_EXT_NAME(glVertexAttribs4dvNV) = (PFNGLVERTEXATTRIBS4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4dvNV");
1504 if (NULL == GLH_EXT_NAME(glVertexAttribs4dvNV))
1505 return FALSE;
1506 GLH_EXT_NAME(glVertexAttribs4fvNV) = (PFNGLVERTEXATTRIBS4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4fvNV");
1507 if (NULL == GLH_EXT_NAME(glVertexAttribs4fvNV))
1508 return FALSE;
1509 GLH_EXT_NAME(glVertexAttribs4svNV) = (PFNGLVERTEXATTRIBS4SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4svNV");
1510 if (NULL == GLH_EXT_NAME(glVertexAttribs4svNV))
1511 return FALSE;
1512 GLH_EXT_NAME(glVertexAttribs4ubvNV) = (PFNGLVERTEXATTRIBS4UBVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4ubvNV");
1513 if (NULL == GLH_EXT_NAME(glVertexAttribs4ubvNV))
1514 return FALSE;
1515#endif
1516
1517#ifdef GL_SGIS_generate_mipmap
1518 } else if (0 == strcmp(extension, "GL_SGIS_generate_mipmap")) {
1519#endif
1520
1521#ifdef GL_SGIS_texture_lod
1522 } else if (0 == strcmp(extension, "GL_SGIS_texture_lod")) {
1523#endif
1524
1525#ifdef GL_SGIX_depth_texture
1526 } else if (0 == strcmp(extension, "GL_SGIX_depth_texture")) {
1527#endif
1528
1529#ifdef GL_SGIX_shadow
1530 } else if (0 == strcmp(extension, "GL_SGIX_shadow")) {
1531#endif
1532
1533#ifdef GL_VERSION_1_2
1534 } else if (0 == strcmp(extension, "GL_VERSION_1_2")) {
1535 GLH_CORE_1_2_NAME(glBlendColor) = (PFNGLBLENDCOLORPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendColor");
1536 if (NULL == GLH_CORE_1_2_NAME(glBlendColor))
1537 return FALSE;
1538 GLH_CORE_1_2_NAME(glBlendEquation) = (PFNGLBLENDEQUATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquation");
1539 if (NULL == GLH_CORE_1_2_NAME(glBlendEquation))
1540 return FALSE;
1541 GLH_CORE_1_2_NAME(glDrawRangeElements) = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");
1542 if (NULL == GLH_CORE_1_2_NAME(glDrawRangeElements))
1543 return FALSE;
1544 GLH_CORE_1_2_NAME(glColorTable) = (PFNGLCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTable");
1545 if (NULL == GLH_CORE_1_2_NAME(glColorTable))
1546 return FALSE;
1547 GLH_CORE_1_2_NAME(glColorTableParameterfv) = (PFNGLCOLORTABLEPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableParameterfv");
1548 if (NULL == GLH_CORE_1_2_NAME(glColorTableParameterfv))
1549 return FALSE;
1550 GLH_CORE_1_2_NAME(glColorTableParameteriv) = (PFNGLCOLORTABLEPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableParameteriv");
1551 if (NULL == GLH_CORE_1_2_NAME(glColorTableParameteriv))
1552 return FALSE;
1553 GLH_CORE_1_2_NAME(glCopyColorTable) = (PFNGLCOPYCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyColorTable");
1554 if (NULL == GLH_CORE_1_2_NAME(glCopyColorTable))
1555 return FALSE;
1556 GLH_CORE_1_2_NAME(glGetColorTable) = (PFNGLGETCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTable");
1557 if (NULL == GLH_CORE_1_2_NAME(glGetColorTable))
1558 return FALSE;
1559 GLH_CORE_1_2_NAME(glGetColorTableParameterfv) = (PFNGLGETCOLORTABLEPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameterfv");
1560 if (NULL == GLH_CORE_1_2_NAME(glGetColorTableParameterfv))
1561 return FALSE;
1562 GLH_CORE_1_2_NAME(glGetColorTableParameteriv) = (PFNGLGETCOLORTABLEPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameteriv");
1563 if (NULL == GLH_CORE_1_2_NAME(glGetColorTableParameteriv))
1564 return FALSE;
1565 GLH_CORE_1_2_NAME(glTexImage3D) = (PFNGLTEXIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage3D");
1566 if (NULL == GLH_CORE_1_2_NAME(glTexImage3D))
1567 return FALSE;
1568 GLH_CORE_1_2_NAME(glTexSubImage3D) = (PFNGLTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexSubImage3D");
1569 if (NULL == GLH_CORE_1_2_NAME(glTexSubImage3D))
1570 return FALSE;
1571 GLH_CORE_1_2_NAME(glCopyTexSubImage3D) = (PFNGLCOPYTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyTexSubImage3D");
1572 if (NULL == GLH_CORE_1_2_NAME(glCopyTexSubImage3D))
1573 return FALSE;
1574#endif
1575
1576#ifdef GL_WIN_swap_hint
1577 } else if (0 == strcmp(extension, "GL_WIN_swap_hint")) {
1578 GLH_EXT_NAME(glAddSwapHintRectWIN) = (PFNGLADDSWAPHINTRECTWINPROC)GLH_EXT_GET_PROC_ADDRESS("glAddSwapHintRectWIN");
1579 if (NULL == GLH_EXT_NAME(glAddSwapHintRectWIN))
1580 return FALSE;
1581#endif
1582
1583#ifdef WGL_ARB_pbuffer
1584 } else if (0 == strcmp(extension, "WGL_ARB_pbuffer")) {
1585# ifdef _WIN32
1586 GLH_EXT_NAME(wglCreatePbufferARB) = (PFNWGLCREATEPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreatePbufferARB");
1587 if (NULL == GLH_EXT_NAME(wglCreatePbufferARB))
1588 return FALSE;
1589# endif
1590# ifdef _WIN32
1591 GLH_EXT_NAME(wglGetPbufferDCARB) = (PFNWGLGETPBUFFERDCARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetPbufferDCARB");
1592 if (NULL == GLH_EXT_NAME(wglGetPbufferDCARB))
1593 return FALSE;
1594# endif
1595# ifdef _WIN32
1596 GLH_EXT_NAME(wglReleasePbufferDCARB) = (PFNWGLRELEASEPBUFFERDCARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglReleasePbufferDCARB");
1597 if (NULL == GLH_EXT_NAME(wglReleasePbufferDCARB))
1598 return FALSE;
1599# endif
1600# ifdef _WIN32
1601 GLH_EXT_NAME(wglDestroyPbufferARB) = (PFNWGLDESTROYPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglDestroyPbufferARB");
1602 if (NULL == GLH_EXT_NAME(wglDestroyPbufferARB))
1603 return FALSE;
1604# endif
1605# ifdef _WIN32
1606 GLH_EXT_NAME(wglQueryPbufferARB) = (PFNWGLQUERYPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglQueryPbufferARB");
1607 if (NULL == GLH_EXT_NAME(wglQueryPbufferARB))
1608 return FALSE;
1609# endif
1610#endif
1611
1612#ifdef WGL_ARB_render_texture
1613# ifdef _WIN32
1614 GLH_EXT_NAME(wglBindTexImageARB) = (PFNWGLBINDTEXIMAGEARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglBindTexImageARB");
1615 if (NULL == GLH_EXT_NAME(wglBindTexImageARB))
1616 return FALSE;
1617# endif
1618# ifdef _WIN32
1619 GLH_EXT_NAME(wglReleaseTexImageARB) = (PFNWGLRELEASETEXIMAGEARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglReleaseTexImageARB");
1620 if (NULL == GLH_EXT_NAME(wglReleaseTexImageARB))
1621 return FALSE;
1622# endif
1623# ifdef _WIN32
1624 GLH_EXT_NAME(wglSetPbufferAttribARB) = (PFNWGLSETPBUFFERATTRIBARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglSetPbufferAttribARB");
1625 if (NULL == GLH_EXT_NAME(wglSetPbufferAttribARB))
1626 return FALSE;
1627# endif
1628#endif
1629
1630#ifdef WGL_ARB_pixel_format
1631 } else if (0 == strcmp(extension, "WGL_ARB_pixel_format")) {
1632# ifdef _WIN32
1633 GLH_EXT_NAME(wglGetPixelFormatAttribivARB) = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetPixelFormatAttribivARB");
1634 if (NULL == GLH_EXT_NAME(wglGetPixelFormatAttribivARB))
1635 return FALSE;
1636# endif
1637# ifdef _WIN32
1638 GLH_EXT_NAME(wglGetPixelFormatAttribfvARB) = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetPixelFormatAttribfvARB");
1639 if (NULL == GLH_EXT_NAME(wglGetPixelFormatAttribfvARB))
1640 return FALSE;
1641# endif
1642# ifdef _WIN32
1643 GLH_EXT_NAME(wglChoosePixelFormatARB) = (PFNWGLCHOOSEPIXELFORMATARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglChoosePixelFormatARB");
1644 if (NULL == GLH_EXT_NAME(wglChoosePixelFormatARB))
1645 return FALSE;
1646# endif
1647#endif
1648
1649 } else {
1650 return FALSE;
1651 }
1652 return TRUE;
1653}
1654#endif
1655
1656#else // defined(__APPLE__)
1657
1658#ifdef GLH_EXT_SINGLE_FILE
1659
1660int glh_init_extension(const char* extension)
1661{
1662 // MBW -- XXX -- Should this check for extension availability?
1663 return TRUE;
1664}
1665#endif // GLH_EXT_SINGLE_FILE
1666
1667#endif // defined(__APPLE__)
1668
1669#undef GLH_EXT_SINGLE_FILE
1670
1671#endif /* GLH_GENEXT_H */
diff --git a/linden/libraries/include/glh/glh_linear.h b/linden/libraries/include/glh/glh_linear.h
deleted file mode 100755
index 04ae1bd..0000000
--- a/linden/libraries/include/glh/glh_linear.h
+++ /dev/null
@@ -1,1621 +0,0 @@
1/*
2 glh - is a platform-indepenedent C++ OpenGL helper library
3
4
5 Copyright (c) 2000 Cass Everitt
6 Copyright (c) 2000 NVIDIA Corporation
7 All rights reserved.
8
9 Redistribution and use in source and binary forms, with or
10 without modification, are permitted provided that the following
11 conditions are met:
12
13 * Redistributions of source code must retain the above
14 copyright notice, this list of conditions and the following
15 disclaimer.
16
17 * Redistributions in binary form must reproduce the above
18 copyright notice, this list of conditions and the following
19 disclaimer in the documentation and/or other materials
20 provided with the distribution.
21
22 * The names of contributors to this software may not be used
23 to endorse or promote products derived from this software
24 without specific prior written permission.
25
26 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30 REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 POSSIBILITY OF SUCH DAMAGE.
38
39
40 Cass Everitt - cass@r3.nu
41*/
42
43/*
44glh_linear.h
45*/
46
47// Author: Cass W. Everitt
48
49#ifndef GLH_LINEAR_H
50#define GLH_LINEAR_H
51
52#include <memory.h>
53#include <math.h>
54#include <assert.h>
55
56// only supports float for now...
57#define GLH_REAL_IS_FLOAT
58
59#ifdef GLH_REAL_IS_FLOAT
60# define GLH_REAL float
61# define GLH_REAL_NAMESPACE ns_float
62#endif
63
64#define GLH_QUATERNION_NORMALIZATION_THRESHOLD 64
65
66#define GLH_RAD_TO_DEG GLH_REAL(57.2957795130823208767981548141052)
67#define GLH_DEG_TO_RAD GLH_REAL(0.0174532925199432957692369076848861)
68#define GLH_ZERO GLH_REAL(0.0)
69#define GLH_ONE GLH_REAL(1.0)
70#define GLH_TWO GLH_REAL(2.0)
71#define GLH_EPSILON GLH_REAL(10e-6)
72#define GLH_PI GLH_REAL(3.1415926535897932384626433832795)
73
74#define equivalent(a,b) (((a < b + GLH_EPSILON) && (a > b - GLH_EPSILON)) ? true : false)
75
76namespace glh
77{
78
79 inline GLH_REAL to_degrees(GLH_REAL radians) { return radians*GLH_RAD_TO_DEG; }
80 inline GLH_REAL to_radians(GLH_REAL degrees) { return degrees*GLH_DEG_TO_RAD; }
81
82 // forward declarations for friend template functions.
83 template <int N, class T> class vec;
84
85 // forward declarations for friend template functions.
86 template <int N, class T>
87 bool operator == ( const vec<N,T> & v1, const vec<N,T> & v2 );
88
89 // forward declarations for friend template functions.
90 template <int N, class T>
91 bool operator != ( const vec<N,T> & v1, const vec<N,T> & v2 );
92
93 template <int N, class T>
94 class vec
95 {
96 public:
97 int size() const { return N; }
98
99 vec(const T & t = T())
100 { for(int i = 0; i < N; i++) v[i] = t; }
101 vec(const T * tp)
102 { for(int i = 0; i < N; i++) v[i] = tp[i]; }
103
104 const T * get_value() const
105 { return v; }
106
107
108 T dot( const vec<N,T> & rhs ) const
109 {
110 T r = 0;
111 for(int i = 0; i < N; i++) r += v[i]*rhs.v[i];
112 return r;
113 }
114
115 T length() const
116 {
117 T r = 0;
118 for(int i = 0; i < N; i++) r += v[i]*v[i];
119 return T(sqrt(r));
120 }
121
122 T square_norm() const
123 {
124 T r = 0;
125 for(int i = 0; i < N; i++) r += v[i]*v[i];
126 return r;
127 }
128
129 void negate()
130 { for(int i = 0; i < N; i++) v[i] = -v[i]; }
131
132
133 T normalize()
134 {
135 T sum(0);
136 for(int i = 0; i < N; i++)
137 sum += v[i]*v[i];
138 sum = T(sqrt(sum));
139 if (sum > GLH_EPSILON)
140 for(int i = 0; i < N; i++)
141 v[i] /= sum;
142 return sum;
143 }
144
145
146 vec<N,T> & set_value( const T * rhs )
147 { for(int i = 0; i < N; i++) v[i] = rhs[i]; return *this; }
148
149 T & operator [] ( int i )
150 { return v[i]; }
151
152 const T & operator [] ( int i ) const
153 { return v[i]; }
154
155 vec<N,T> & operator *= ( T d )
156 { for(int i = 0; i < N; i++) v[i] *= d; return *this;}
157
158 vec<N,T> & operator *= ( const vec<N,T> & u )
159 { for(int i = 0; i < N; i++) v[i] *= u[i]; return *this;}
160
161 vec<N,T> & operator /= ( T d )
162 { if(d == 0) return *this; for(int i = 0; i < N; i++) v[i] /= d; return *this;}
163
164 vec<N,T> & operator += ( const vec<N,T> & u )
165 { for(int i = 0; i < N; i++) v[i] += u.v[i]; return *this;}
166
167 vec<N,T> & operator -= ( const vec<N,T> & u )
168 { for(int i = 0; i < N; i++) v[i] -= u.v[i]; return *this;}
169
170
171 vec<N,T> operator - () const
172 { vec<N,T> rv = v; rv.negate(); return rv; }
173
174 vec<N,T> operator + ( const vec<N,T> &v) const
175 { vec<N,T> rt(*this); return rt += v; }
176
177 vec<N,T> operator - ( const vec<N,T> &v) const
178 { vec<N,T> rt(*this); return rt -= v; }
179
180 vec<N,T> operator * ( T d) const
181 { vec<N,T> rt(*this); return rt *= d; }
182
183 friend bool operator == <> ( const vec<N,T> &v1, const vec<N,T> &v2 );
184 friend bool operator != <> ( const vec<N,T> &v1, const vec<N,T> &v2 );
185
186
187 //protected:
188 T v[N];
189 };
190
191
192
193 // vector friend operators
194
195 template <int N, class T> inline
196 vec<N,T> operator * ( const vec<N,T> & b, T d )
197 {
198 vec<N,T> rt(b);
199 return rt *= d;
200 }
201
202 template <int N, class T> inline
203 vec<N,T> operator * ( T d, const vec<N,T> & b )
204 { return b*d; }
205
206 template <int N, class T> inline
207 vec<N,T> operator * ( const vec<N,T> & b, const vec<N,T> & d )
208 {
209 vec<N,T> rt(b);
210 return rt *= d;
211 }
212
213 template <int N, class T> inline
214 vec<N,T> operator / ( const vec<N,T> & b, T d )
215 { vec<N,T> rt(b); return rt /= d; }
216
217 template <int N, class T> inline
218 vec<N,T> operator + ( const vec<N,T> & v1, const vec<N,T> & v2 )
219 { vec<N,T> rt(v1); return rt += v2; }
220
221 template <int N, class T> inline
222 vec<N,T> operator - ( const vec<N,T> & v1, const vec<N,T> & v2 )
223 { vec<N,T> rt(v1); return rt -= v2; }
224
225
226 template <int N, class T> inline
227 bool operator == ( const vec<N,T> & v1, const vec<N,T> & v2 )
228 {
229 for(int i = 0; i < N; i++)
230 if(v1.v[i] != v2.v[i])
231 return false;
232 return true;
233 }
234
235 template <int N, class T> inline
236 bool operator != ( const vec<N,T> & v1, const vec<N,T> & v2 )
237 { return !(v1 == v2); }
238
239
240 typedef vec<3,unsigned char> vec3ub;
241 typedef vec<4,unsigned char> vec4ub;
242
243
244
245
246
247 namespace GLH_REAL_NAMESPACE
248 {
249 typedef GLH_REAL real;
250
251 class line;
252 class plane;
253 class matrix4;
254 class quaternion;
255 typedef quaternion rotation;
256
257 class vec2 : public vec<2,real>
258 {
259 public:
260 vec2(const real & t = real()) : vec<2,real>(t)
261 {}
262 vec2(const vec<2,real> & t) : vec<2,real>(t)
263 {}
264 vec2(const real * tp) : vec<2,real>(tp)
265 {}
266
267 vec2(real x, real y )
268 { v[0] = x; v[1] = y; }
269
270 void get_value(real & x, real & y) const
271 { x = v[0]; y = v[1]; }
272
273 vec2 & set_value( const real & x, const real & y)
274 { v[0] = x; v[1] = y; return *this; }
275
276 };
277
278
279 class vec3 : public vec<3,real>
280 {
281 public:
282 vec3(const real & t = real()) : vec<3,real>(t)
283 {}
284 vec3(const vec<3,real> & t) : vec<3,real>(t)
285 {}
286 vec3(const real * tp) : vec<3,real>(tp)
287 {}
288
289 vec3(real x, real y, real z)
290 { v[0] = x; v[1] = y; v[2] = z; }
291
292 void get_value(real & x, real & y, real & z) const
293 { x = v[0]; y = v[1]; z = v[2]; }
294
295 vec3 cross( const vec3 &rhs ) const
296 {
297 vec3 rt;
298 rt.v[0] = v[1]*rhs.v[2]-v[2]*rhs.v[1];
299 rt.v[1] = v[2]*rhs.v[0]-v[0]*rhs.v[2];
300 rt.v[2] = v[0]*rhs.v[1]-v[1]*rhs.v[0];
301 return rt;
302 }
303
304 vec3 & set_value( const real & x, const real & y, const real & z)
305 { v[0] = x; v[1] = y; v[2] = z; return *this; }
306
307 };
308
309
310 class vec4 : public vec<4,real>
311 {
312 public:
313 vec4(const real & t = real()) : vec<4,real>(t)
314 {}
315 vec4(const vec<4,real> & t) : vec<4,real>(t)
316 {}
317
318 vec4(const vec<3,real> & t, real fourth)
319
320 { v[0] = t.v[0]; v[1] = t.v[1]; v[2] = t.v[2]; v[3] = fourth; }
321 vec4(const real * tp) : vec<4,real>(tp)
322 {}
323 vec4(real x, real y, real z, real w)
324 { v[0] = x; v[1] = y; v[2] = z; v[3] = w; }
325
326 void get_value(real & x, real & y, real & z, real & w) const
327 { x = v[0]; y = v[1]; z = v[2]; w = v[3]; }
328
329 vec4 & set_value( const real & x, const real & y, const real & z, const real & w)
330 { v[0] = x; v[1] = y; v[2] = z; v[3] = w; return *this; }
331 };
332
333 inline
334 vec3 homogenize(const vec4 & v)
335 {
336 vec3 rt;
337 assert(v.v[3] != GLH_ZERO);
338 rt.v[0] = v.v[0]/v.v[3];
339 rt.v[1] = v.v[1]/v.v[3];
340 rt.v[2] = v.v[2]/v.v[3];
341 return rt;
342 }
343
344
345
346 class line
347 {
348 public:
349
350 line()
351 { set_value(vec3(0,0,0),vec3(0,0,1)); }
352
353 line( const vec3 & p0, const vec3 &p1)
354 { set_value(p0,p1); }
355
356 void set_value( const vec3 &p0, const vec3 &p1)
357 {
358 position = p0;
359 direction = p1-p0;
360 direction.normalize();
361 }
362
363 bool get_closest_points(const line &line2,
364 vec3 &pointOnThis,
365 vec3 &pointOnThat)
366 {
367
368 // quick check to see if parallel -- if so, quit.
369 if(fabs(direction.dot(line2.direction)) == 1.0)
370 return 0;
371 line l2 = line2;
372
373 // Algorithm: Brian Jean
374 //
375 register real u;
376 register real v;
377 vec3 Vr = direction;
378 vec3 Vs = l2.direction;
379 register real Vr_Dot_Vs = Vr.dot(Vs);
380 register real detA = real(1.0 - (Vr_Dot_Vs * Vr_Dot_Vs));
381 vec3 C = l2.position - position;
382 register real C_Dot_Vr = C.dot(Vr);
383 register real C_Dot_Vs = C.dot(Vs);
384
385 u = (C_Dot_Vr - Vr_Dot_Vs * C_Dot_Vs)/detA;
386 v = (C_Dot_Vr * Vr_Dot_Vs - C_Dot_Vs)/detA;
387
388 pointOnThis = position;
389 pointOnThis += direction * u;
390 pointOnThat = l2.position;
391 pointOnThat += l2.direction * v;
392
393 return 1;
394 }
395
396 vec3 get_closest_point(const vec3 &point)
397 {
398 vec3 np = point - position;
399 vec3 rp = direction*direction.dot(np)+position;
400 return rp;
401 }
402
403 const vec3 & get_position() const {return position;}
404
405 const vec3 & get_direction() const {return direction;}
406
407 //protected:
408 vec3 position;
409 vec3 direction;
410 };
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440 // matrix
441
442
443 class matrix4
444 {
445
446 public:
447
448 matrix4() { make_identity(); }
449
450 matrix4( real r )
451 { set_value(r); }
452
453 matrix4( real * m )
454 { set_value(m); }
455
456 matrix4( real a00, real a01, real a02, real a03,
457 real a10, real a11, real a12, real a13,
458 real a20, real a21, real a22, real a23,
459 real a30, real a31, real a32, real a33 )
460 {
461 element(0,0) = a00;
462 element(0,1) = a01;
463 element(0,2) = a02;
464 element(0,3) = a03;
465
466 element(1,0) = a10;
467 element(1,1) = a11;
468 element(1,2) = a12;
469 element(1,3) = a13;
470
471 element(2,0) = a20;
472 element(2,1) = a21;
473 element(2,2) = a22;
474 element(2,3) = a23;
475
476 element(3,0) = a30;
477 element(3,1) = a31;
478 element(3,2) = a32;
479 element(3,3) = a33;
480 }
481
482
483 void get_value( real * mp ) const
484 {
485 int c = 0;
486 for(int j=0; j < 4; j++)
487 for(int i=0; i < 4; i++)
488 mp[c++] = element(i,j);
489 }
490
491
492 const real * get_value() const
493 { return m; }
494
495 void set_value( real * mp)
496 {
497 int c = 0;
498 for(int j=0; j < 4; j++)
499 for(int i=0; i < 4; i++)
500 element(i,j) = mp[c++];
501 }
502
503 void set_value( real r )
504 {
505 for(int i=0; i < 4; i++)
506 for(int j=0; j < 4; j++)
507 element(i,j) = r;
508 }
509
510 void make_identity()
511 {
512 element(0,0) = 1.0;
513 element(0,1) = 0.0;
514 element(0,2) = 0.0;
515 element(0,3) = 0.0;
516
517 element(1,0) = 0.0;
518 element(1,1) = 1.0;
519 element(1,2) = 0.0;
520 element(1,3) = 0.0;
521
522 element(2,0) = 0.0;
523 element(2,1) = 0.0;
524 element(2,2) = 1.0;
525 element(2,3) = 0.0;
526
527 element(3,0) = 0.0;
528 element(3,1) = 0.0;
529 element(3,2) = 0.0;
530 element(3,3) = 1.0;
531 }
532
533
534 static matrix4 identity()
535 {
536 static matrix4 mident (
537 1.0, 0.0, 0.0, 0.0,
538 0.0, 1.0, 0.0, 0.0,
539 0.0, 0.0, 1.0, 0.0,
540 0.0, 0.0, 0.0, 1.0 );
541 return mident;
542 }
543
544
545 void set_scale( real s )
546 {
547 element(0,0) = s;
548 element(1,1) = s;
549 element(2,2) = s;
550 }
551
552 void set_scale( const vec3 & s )
553 {
554 element(0,0) = s.v[0];
555 element(1,1) = s.v[1];
556 element(2,2) = s.v[2];
557 }
558
559
560 void set_translate( const vec3 & t )
561 {
562 element(0,3) = t.v[0];
563 element(1,3) = t.v[1];
564 element(2,3) = t.v[2];
565 }
566
567 void set_row(int r, const vec4 & t)
568 {
569 element(r,0) = t.v[0];
570 element(r,1) = t.v[1];
571 element(r,2) = t.v[2];
572 element(r,3) = t.v[3];
573 }
574
575 void set_column(int c, const vec4 & t)
576 {
577 element(0,c) = t.v[0];
578 element(1,c) = t.v[1];
579 element(2,c) = t.v[2];
580 element(3,c) = t.v[3];
581 }
582
583
584 void get_row(int r, vec4 & t) const
585 {
586 t.v[0] = element(r,0);
587 t.v[1] = element(r,1);
588 t.v[2] = element(r,2);
589 t.v[3] = element(r,3);
590 }
591
592 vec4 get_row(int r) const
593 {
594 vec4 v; get_row(r, v);
595 return v;
596 }
597
598 void get_column(int c, vec4 & t) const
599 {
600 t.v[0] = element(0,c);
601 t.v[1] = element(1,c);
602 t.v[2] = element(2,c);
603 t.v[3] = element(3,c);
604 }
605
606 vec4 get_column(int c) const
607 {
608 vec4 v; get_column(c, v);
609 return v;
610 }
611
612 matrix4 inverse() const
613 {
614 matrix4 minv;
615
616 real r1[8], r2[8], r3[8], r4[8];
617 real *s[4], *tmprow;
618
619 s[0] = &r1[0];
620 s[1] = &r2[0];
621 s[2] = &r3[0];
622 s[3] = &r4[0];
623
624 register int i,j,p,jj;
625 for(i=0;i<4;i++)
626 {
627 for(j=0;j<4;j++)
628 {
629 s[i][j] = element(i,j);
630 if(i==j) s[i][j+4] = 1.0;
631 else s[i][j+4] = 0.0;
632 }
633 }
634 real scp[4];
635 for(i=0;i<4;i++)
636 {
637 scp[i] = real(fabs(s[i][0]));
638 for(j=1;j<4;j++)
639 if(real(fabs(s[i][j])) > scp[i]) scp[i] = real(fabs(s[i][j]));
640 if(scp[i] == 0.0) return minv; // singular matrix!
641 }
642
643 int pivot_to;
644 real scp_max;
645 for(i=0;i<4;i++)
646 {
647 // select pivot row
648 pivot_to = i;
649 scp_max = real(fabs(s[i][i]/scp[i]));
650 // find out which row should be on top
651 for(p=i+1;p<4;p++)
652 if(real(fabs(s[p][i]/scp[p])) > scp_max)
653 { scp_max = real(fabs(s[p][i]/scp[p])); pivot_to = p; }
654 // Pivot if necessary
655 if(pivot_to != i)
656 {
657 tmprow = s[i];
658 s[i] = s[pivot_to];
659 s[pivot_to] = tmprow;
660 real tmpscp;
661 tmpscp = scp[i];
662 scp[i] = scp[pivot_to];
663 scp[pivot_to] = tmpscp;
664 }
665
666 real mji;
667 // perform gaussian elimination
668 for(j=i+1;j<4;j++)
669 {
670 mji = s[j][i]/s[i][i];
671 s[j][i] = 0.0;
672 for(jj=i+1;jj<8;jj++)
673 s[j][jj] -= mji*s[i][jj];
674 }
675 }
676 if(s[3][3] == 0.0) return minv; // singular matrix!
677
678 //
679 // Now we have an upper triangular matrix.
680 //
681 // x x x x | y y y y
682 // 0 x x x | y y y y
683 // 0 0 x x | y y y y
684 // 0 0 0 x | y y y y
685 //
686 // we'll back substitute to get the inverse
687 //
688 // 1 0 0 0 | z z z z
689 // 0 1 0 0 | z z z z
690 // 0 0 1 0 | z z z z
691 // 0 0 0 1 | z z z z
692 //
693
694 real mij;
695 for(i=3;i>0;i--)
696 {
697 for(j=i-1;j > -1; j--)
698 {
699 mij = s[j][i]/s[i][i];
700 for(jj=j+1;jj<8;jj++)
701 s[j][jj] -= mij*s[i][jj];
702 }
703 }
704
705 for(i=0;i<4;i++)
706 for(j=0;j<4;j++)
707 minv(i,j) = s[i][j+4] / s[i][i];
708
709 return minv;
710 }
711
712
713 matrix4 transpose() const
714 {
715 matrix4 mtrans;
716
717 for(int i=0;i<4;i++)
718 for(int j=0;j<4;j++)
719 mtrans(i,j) = element(j,i);
720 return mtrans;
721 }
722
723 matrix4 & mult_right( const matrix4 & b )
724 {
725 matrix4 mt(*this);
726 set_value(real(0));
727
728 for(int i=0; i < 4; i++)
729 for(int j=0; j < 4; j++)
730 for(int c=0; c < 4; c++)
731 element(i,j) += mt(i,c) * b(c,j);
732 return *this;
733 }
734
735 matrix4 & mult_left( const matrix4 & b )
736 {
737 matrix4 mt(*this);
738 set_value(real(0));
739
740 for(int i=0; i < 4; i++)
741 for(int j=0; j < 4; j++)
742 for(int c=0; c < 4; c++)
743 element(i,j) += b(i,c) * mt(c,j);
744 return *this;
745 }
746
747 // dst = M * src
748 void mult_matrix_vec( const vec3 &src, vec3 &dst ) const
749 {
750 real w = (
751 src.v[0] * element(3,0) +
752 src.v[1] * element(3,1) +
753 src.v[2] * element(3,2) +
754 element(3,3) );
755
756 assert(w != GLH_ZERO);
757
758 dst.v[0] = (
759 src.v[0] * element(0,0) +
760 src.v[1] * element(0,1) +
761 src.v[2] * element(0,2) +
762 element(0,3) ) / w;
763 dst.v[1] = (
764 src.v[0] * element(1,0) +
765 src.v[1] * element(1,1) +
766 src.v[2] * element(1,2) +
767 element(1,3) ) / w;
768 dst.v[2] = (
769 src.v[0] * element(2,0) +
770 src.v[1] * element(2,1) +
771 src.v[2] * element(2,2) +
772 element(2,3) ) / w;
773 }
774
775 void mult_matrix_vec( vec3 & src_and_dst) const
776 { mult_matrix_vec(vec3(src_and_dst), src_and_dst); }
777
778
779 // dst = src * M
780 void mult_vec_matrix( const vec3 &src, vec3 &dst ) const
781 {
782 real w = (
783 src.v[0] * element(0,3) +
784 src.v[1] * element(1,3) +
785 src.v[2] * element(2,3) +
786 element(3,3) );
787
788 assert(w != GLH_ZERO);
789
790 dst.v[0] = (
791 src.v[0] * element(0,0) +
792 src.v[1] * element(1,0) +
793 src.v[2] * element(2,0) +
794 element(3,0) ) / w;
795 dst.v[1] = (
796 src.v[0] * element(0,1) +
797 src.v[1] * element(1,1) +
798 src.v[2] * element(2,1) +
799 element(3,1) ) / w;
800 dst.v[2] = (
801 src.v[0] * element(0,2) +
802 src.v[1] * element(1,2) +
803 src.v[2] * element(2,2) +
804 element(3,2) ) / w;
805 }
806
807
808 void mult_vec_matrix( vec3 & src_and_dst) const
809 { mult_vec_matrix(vec3(src_and_dst), src_and_dst); }
810
811 // dst = M * src
812 void mult_matrix_vec( const vec4 &src, vec4 &dst ) const
813 {
814 dst.v[0] = (
815 src.v[0] * element(0,0) +
816 src.v[1] * element(0,1) +
817 src.v[2] * element(0,2) +
818 src.v[3] * element(0,3));
819 dst.v[1] = (
820 src.v[0] * element(1,0) +
821 src.v[1] * element(1,1) +
822 src.v[2] * element(1,2) +
823 src.v[3] * element(1,3));
824 dst.v[2] = (
825 src.v[0] * element(2,0) +
826 src.v[1] * element(2,1) +
827 src.v[2] * element(2,2) +
828 src.v[3] * element(2,3));
829 dst.v[3] = (
830 src.v[0] * element(3,0) +
831 src.v[1] * element(3,1) +
832 src.v[2] * element(3,2) +
833 src.v[3] * element(3,3));
834 }
835
836 void mult_matrix_vec( vec4 & src_and_dst) const
837 { mult_matrix_vec(vec4(src_and_dst), src_and_dst); }
838
839
840 // dst = src * M
841 void mult_vec_matrix( const vec4 &src, vec4 &dst ) const
842 {
843 dst.v[0] = (
844 src.v[0] * element(0,0) +
845 src.v[1] * element(1,0) +
846 src.v[2] * element(2,0) +
847 src.v[3] * element(3,0));
848 dst.v[1] = (
849 src.v[0] * element(0,1) +
850 src.v[1] * element(1,1) +
851 src.v[2] * element(2,1) +
852 src.v[3] * element(3,1));
853 dst.v[2] = (
854 src.v[0] * element(0,2) +
855 src.v[1] * element(1,2) +
856 src.v[2] * element(2,2) +
857 src.v[3] * element(3,2));
858 dst.v[3] = (
859 src.v[0] * element(0,3) +
860 src.v[1] * element(1,3) +
861 src.v[2] * element(2,3) +
862 src.v[3] * element(3,3));
863 }
864
865
866 void mult_vec_matrix( vec4 & src_and_dst) const
867 { mult_vec_matrix(vec4(src_and_dst), src_and_dst); }
868
869
870 // dst = M * src
871 void mult_matrix_dir( const vec3 &src, vec3 &dst ) const
872 {
873 dst.v[0] = (
874 src.v[0] * element(0,0) +
875 src.v[1] * element(0,1) +
876 src.v[2] * element(0,2) ) ;
877 dst.v[1] = (
878 src.v[0] * element(1,0) +
879 src.v[1] * element(1,1) +
880 src.v[2] * element(1,2) ) ;
881 dst.v[2] = (
882 src.v[0] * element(2,0) +
883 src.v[1] * element(2,1) +
884 src.v[2] * element(2,2) ) ;
885 }
886
887
888 void mult_matrix_dir( vec3 & src_and_dst) const
889 { mult_matrix_dir(vec3(src_and_dst), src_and_dst); }
890
891
892 // dst = src * M
893 void mult_dir_matrix( const vec3 &src, vec3 &dst ) const
894 {
895 dst.v[0] = (
896 src.v[0] * element(0,0) +
897 src.v[1] * element(1,0) +
898 src.v[2] * element(2,0) ) ;
899 dst.v[1] = (
900 src.v[0] * element(0,1) +
901 src.v[1] * element(1,1) +
902 src.v[2] * element(2,1) ) ;
903 dst.v[2] = (
904 src.v[0] * element(0,2) +
905 src.v[1] * element(1,2) +
906 src.v[2] * element(2,2) ) ;
907 }
908
909
910 void mult_dir_matrix( vec3 & src_and_dst) const
911 { mult_dir_matrix(vec3(src_and_dst), src_and_dst); }
912
913
914 real & operator () (int row, int col)
915 { return element(row,col); }
916
917 const real & operator () (int row, int col) const
918 { return element(row,col); }
919
920 real & element (int row, int col)
921 { return m[row | (col<<2)]; }
922
923 const real & element (int row, int col) const
924 { return m[row | (col<<2)]; }
925
926 matrix4 & operator *= ( const matrix4 & mat )
927 {
928 mult_right( mat );
929 return *this;
930 }
931
932 matrix4 & operator *= ( const real & r )
933 {
934 for (int i = 0; i < 4; ++i)
935 {
936 element(0,i) *= r;
937 element(1,i) *= r;
938 element(2,i) *= r;
939 element(3,i) *= r;
940 }
941 return *this;
942 }
943
944 matrix4 & operator += ( const matrix4 & mat )
945 {
946 for (int i = 0; i < 4; ++i)
947 {
948 element(0,i) += mat.element(0,i);
949 element(1,i) += mat.element(1,i);
950 element(2,i) += mat.element(2,i);
951 element(3,i) += mat.element(3,i);
952 }
953 return *this;
954 }
955
956 friend matrix4 operator * ( const matrix4 & m1, const matrix4 & m2 );
957 friend bool operator == ( const matrix4 & m1, const matrix4 & m2 );
958 friend bool operator != ( const matrix4 & m1, const matrix4 & m2 );
959
960 //protected:
961 real m[16];
962 };
963
964 inline
965 matrix4 operator * ( const matrix4 & m1, const matrix4 & m2 )
966 {
967 matrix4 product;
968
969 product = m1;
970 product.mult_right(m2);
971
972 return product;
973 }
974
975 inline
976 bool operator ==( const matrix4 &m1, const matrix4 &m2 )
977 {
978 return (
979 m1(0,0) == m2(0,0) &&
980 m1(0,1) == m2(0,1) &&
981 m1(0,2) == m2(0,2) &&
982 m1(0,3) == m2(0,3) &&
983 m1(1,0) == m2(1,0) &&
984 m1(1,1) == m2(1,1) &&
985 m1(1,2) == m2(1,2) &&
986 m1(1,3) == m2(1,3) &&
987 m1(2,0) == m2(2,0) &&
988 m1(2,1) == m2(2,1) &&
989 m1(2,2) == m2(2,2) &&
990 m1(2,3) == m2(2,3) &&
991 m1(3,0) == m2(3,0) &&
992 m1(3,1) == m2(3,1) &&
993 m1(3,2) == m2(3,2) &&
994 m1(3,3) == m2(3,3) );
995 }
996
997 inline
998 bool operator != ( const matrix4 & m1, const matrix4 & m2 )
999 { return !( m1 == m2 ); }
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013 class quaternion
1014 {
1015 public:
1016
1017 quaternion()
1018 {
1019 *this = identity();
1020 }
1021
1022 quaternion( const real v[4] )
1023 {
1024 set_value( v );
1025 }
1026
1027
1028 quaternion( real q0, real q1, real q2, real q3 )
1029 {
1030 set_value( q0, q1, q2, q3 );
1031 }
1032
1033
1034 quaternion( const matrix4 & m )
1035 {
1036 set_value( m );
1037 }
1038
1039
1040 quaternion( const vec3 &axis, real radians )
1041 {
1042 set_value( axis, radians );
1043 }
1044
1045
1046 quaternion( const vec3 &rotateFrom, const vec3 &rotateTo )
1047 {
1048 set_value( rotateFrom, rotateTo );
1049 }
1050
1051 quaternion( const vec3 & from_look, const vec3 & from_up,
1052 const vec3 & to_look, const vec3& to_up)
1053 {
1054 set_value(from_look, from_up, to_look, to_up);
1055 }
1056
1057 const real * get_value() const
1058 {
1059 return &q[0];
1060 }
1061
1062 void get_value( real &q0, real &q1, real &q2, real &q3 ) const
1063 {
1064 q0 = q[0];
1065 q1 = q[1];
1066 q2 = q[2];
1067 q3 = q[3];
1068 }
1069
1070 quaternion & set_value( real q0, real q1, real q2, real q3 )
1071 {
1072 q[0] = q0;
1073 q[1] = q1;
1074 q[2] = q2;
1075 q[3] = q3;
1076 counter = 0;
1077 return *this;
1078 }
1079
1080 void get_value( vec3 &axis, real &radians ) const
1081 {
1082 radians = real(acos( q[3] ) * GLH_TWO);
1083 if ( radians == GLH_ZERO )
1084 axis = vec3( 0.0, 0.0, 1.0 );
1085 else
1086 {
1087 axis.v[0] = q[0];
1088 axis.v[1] = q[1];
1089 axis.v[2] = q[2];
1090 axis.normalize();
1091 }
1092 }
1093
1094 void get_value( matrix4 & m ) const
1095 {
1096 real s, xs, ys, zs, wx, wy, wz, xx, xy, xz, yy, yz, zz;
1097
1098 real norm = q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3];
1099
1100 s = (equivalent(norm,GLH_ZERO)) ? GLH_ZERO : ( GLH_TWO / norm );
1101
1102 xs = q[0] * s;
1103 ys = q[1] * s;
1104 zs = q[2] * s;
1105
1106 wx = q[3] * xs;
1107 wy = q[3] * ys;
1108 wz = q[3] * zs;
1109
1110 xx = q[0] * xs;
1111 xy = q[0] * ys;
1112 xz = q[0] * zs;
1113
1114 yy = q[1] * ys;
1115 yz = q[1] * zs;
1116 zz = q[2] * zs;
1117
1118 m(0,0) = real( GLH_ONE - ( yy + zz ));
1119 m(1,0) = real ( xy + wz );
1120 m(2,0) = real ( xz - wy );
1121
1122 m(0,1) = real ( xy - wz );
1123 m(1,1) = real ( GLH_ONE - ( xx + zz ));
1124 m(2,1) = real ( yz + wx );
1125
1126 m(0,2) = real ( xz + wy );
1127 m(1,2) = real ( yz - wx );
1128 m(2,2) = real ( GLH_ONE - ( xx + yy ));
1129
1130 m(3,0) = m(3,1) = m(3,2) = m(0,3) = m(1,3) = m(2,3) = GLH_ZERO;
1131 m(3,3) = GLH_ONE;
1132 }
1133
1134 quaternion & set_value( const real * qp )
1135 {
1136 memcpy(q,qp,sizeof(real) * 4);
1137
1138 counter = 0;
1139 return *this;
1140 }
1141
1142 quaternion & set_value( const matrix4 & m )
1143 {
1144 real tr, s;
1145 int i, j, k;
1146 const int nxt[3] = { 1, 2, 0 };
1147
1148 tr = m(0,0) + m(1,1) + m(2,2);
1149
1150 if ( tr > GLH_ZERO )
1151 {
1152 s = real(sqrt( tr + m(3,3) ));
1153 q[3] = real ( s * 0.5 );
1154 s = real(0.5) / s;
1155
1156 q[0] = real ( ( m(1,2) - m(2,1) ) * s );
1157 q[1] = real ( ( m(2,0) - m(0,2) ) * s );
1158 q[2] = real ( ( m(0,1) - m(1,0) ) * s );
1159 }
1160 else
1161 {
1162 i = 0;
1163 if ( m(1,1) > m(0,0) )
1164 i = 1;
1165
1166 if ( m(2,2) > m(i,i) )
1167 i = 2;
1168
1169 j = nxt[i];
1170 k = nxt[j];
1171
1172 s = real(sqrt( ( m(i,j) - ( m(j,j) + m(k,k) )) + GLH_ONE ));
1173
1174 q[i] = real ( s * 0.5 );
1175 s = real(0.5 / s);
1176
1177 q[3] = real ( ( m(j,k) - m(k,j) ) * s );
1178 q[j] = real ( ( m(i,j) + m(j,i) ) * s );
1179 q[k] = real ( ( m(i,k) + m(k,i) ) * s );
1180 }
1181
1182 counter = 0;
1183 return *this;
1184 }
1185
1186 quaternion & set_value( const vec3 &axis, real theta )
1187 {
1188 real sqnorm = axis.square_norm();
1189
1190 if (sqnorm <= GLH_EPSILON)
1191 {
1192 // axis too small.
1193 x = y = z = 0.0;
1194 w = 1.0;
1195 }
1196 else
1197 {
1198 theta *= real(0.5);
1199 real sin_theta = real(sin(theta));
1200
1201 if (!equivalent(sqnorm,GLH_ONE))
1202 sin_theta /= real(sqrt(sqnorm));
1203 x = sin_theta * axis.v[0];
1204 y = sin_theta * axis.v[1];
1205 z = sin_theta * axis.v[2];
1206 w = real(cos(theta));
1207 }
1208 return *this;
1209 }
1210
1211 quaternion & set_value( const vec3 & rotateFrom, const vec3 & rotateTo )
1212 {
1213 vec3 p1, p2;
1214 real alpha;
1215
1216 p1 = rotateFrom;
1217 p1.normalize();
1218 p2 = rotateTo;
1219 p2.normalize();
1220
1221 alpha = p1.dot(p2);
1222
1223 if(equivalent(alpha,GLH_ONE))
1224 {
1225 *this = identity();
1226 return *this;
1227 }
1228
1229 // ensures that the anti-parallel case leads to a positive dot
1230 if(equivalent(alpha,-GLH_ONE))
1231 {
1232 vec3 v;
1233
1234 if(p1.v[0] != p1.v[1] || p1.v[0] != p1.v[2])
1235 v = vec3(p1.v[1], p1.v[2], p1.v[0]);
1236 else
1237 v = vec3(-p1.v[0], p1.v[1], p1.v[2]);
1238
1239 v -= p1 * p1.dot(v);
1240 v.normalize();
1241
1242 set_value(v, GLH_PI);
1243 return *this;
1244 }
1245
1246 p1 = p1.cross(p2);
1247 p1.normalize();
1248 set_value(p1,real(acos(alpha)));
1249
1250 counter = 0;
1251 return *this;
1252 }
1253
1254 quaternion & set_value( const vec3 & from_look, const vec3 & from_up,
1255 const vec3 & to_look, const vec3 & to_up)
1256 {
1257 quaternion r_look = quaternion(from_look, to_look);
1258
1259 vec3 rotated_from_up(from_up);
1260 r_look.mult_vec(rotated_from_up);
1261
1262 quaternion r_twist = quaternion(rotated_from_up, to_up);
1263
1264 *this = r_twist;
1265 *this *= r_look;
1266 return *this;
1267 }
1268
1269 quaternion & operator *= ( const quaternion & qr )
1270 {
1271 quaternion ql(*this);
1272
1273 w = ql.w * qr.w - ql.x * qr.x - ql.y * qr.y - ql.z * qr.z;
1274 x = ql.w * qr.x + ql.x * qr.w + ql.y * qr.z - ql.z * qr.y;
1275 y = ql.w * qr.y + ql.y * qr.w + ql.z * qr.x - ql.x * qr.z;
1276 z = ql.w * qr.z + ql.z * qr.w + ql.x * qr.y - ql.y * qr.x;
1277
1278 counter += qr.counter;
1279 counter++;
1280 counter_normalize();
1281 return *this;
1282 }
1283
1284 void normalize()
1285 {
1286 real rnorm = GLH_ONE / real(sqrt(w * w + x * x + y * y + z * z));
1287 if (equivalent(rnorm, GLH_ZERO))
1288 return;
1289 x *= rnorm;
1290 y *= rnorm;
1291 z *= rnorm;
1292 w *= rnorm;
1293 counter = 0;
1294 }
1295
1296 friend bool operator == ( const quaternion & q1, const quaternion & q2 );
1297
1298 friend bool operator != ( const quaternion & q1, const quaternion & q2 );
1299
1300 friend quaternion operator * ( const quaternion & q1, const quaternion & q2 );
1301
1302 bool equals( const quaternion & r, real tolerance ) const
1303 {
1304 real t;
1305
1306 t = (
1307 (q[0]-r.q[0])*(q[0]-r.q[0]) +
1308 (q[1]-r.q[1])*(q[1]-r.q[1]) +
1309 (q[2]-r.q[2])*(q[2]-r.q[2]) +
1310 (q[3]-r.q[3])*(q[3]-r.q[3]) );
1311 if(t > GLH_EPSILON)
1312 return false;
1313 return 1;
1314 }
1315
1316 quaternion & conjugate()
1317 {
1318 q[0] *= -GLH_ONE;
1319 q[1] *= -GLH_ONE;
1320 q[2] *= -GLH_ONE;
1321 return *this;
1322 }
1323
1324 quaternion & invert()
1325 {
1326 return conjugate();
1327 }
1328
1329 quaternion inverse() const
1330 {
1331 quaternion r = *this;
1332 return r.invert();
1333 }
1334
1335 //
1336 // Quaternion multiplication with cartesian vector
1337 // v' = q*v*q(star)
1338 //
1339 void mult_vec( const vec3 &src, vec3 &dst ) const
1340 {
1341 real v_coef = w * w - x * x - y * y - z * z;
1342 real u_coef = GLH_TWO * (src.v[0] * x + src.v[1] * y + src.v[2] * z);
1343 real c_coef = GLH_TWO * w;
1344
1345 dst.v[0] = v_coef * src.v[0] + u_coef * x + c_coef * (y * src.v[2] - z * src.v[1]);
1346 dst.v[1] = v_coef * src.v[1] + u_coef * y + c_coef * (z * src.v[0] - x * src.v[2]);
1347 dst.v[2] = v_coef * src.v[2] + u_coef * z + c_coef * (x * src.v[1] - y * src.v[0]);
1348 }
1349
1350 void mult_vec( vec3 & src_and_dst) const
1351 {
1352 mult_vec(vec3(src_and_dst), src_and_dst);
1353 }
1354
1355 void scale_angle( real scaleFactor )
1356 {
1357 vec3 axis;
1358 real radians;
1359
1360 get_value(axis, radians);
1361 radians *= scaleFactor;
1362 set_value(axis, radians);
1363 }
1364
1365 static quaternion slerp( const quaternion & p, const quaternion & q, real alpha )
1366 {
1367 quaternion r;
1368
1369 real cos_omega = p.x * q.x + p.y * q.y + p.z * q.z + p.w * q.w;
1370 // if B is on opposite hemisphere from A, use -B instead
1371
1372 int bflip;
1373 if ( ( bflip = (cos_omega < GLH_ZERO)) )
1374 cos_omega = -cos_omega;
1375
1376 // complementary interpolation parameter
1377 real beta = GLH_ONE - alpha;
1378
1379 if(cos_omega <= GLH_ONE - GLH_EPSILON)
1380 return p;
1381
1382 real omega = real(acos(cos_omega));
1383 real one_over_sin_omega = GLH_ONE / real(sin(omega));
1384
1385 beta = real(sin(omega*beta) * one_over_sin_omega);
1386 alpha = real(sin(omega*alpha) * one_over_sin_omega);
1387
1388 if (bflip)
1389 alpha = -alpha;
1390
1391 r.x = beta * p.q[0]+ alpha * q.q[0];
1392 r.y = beta * p.q[1]+ alpha * q.q[1];
1393 r.z = beta * p.q[2]+ alpha * q.q[2];
1394 r.w = beta * p.q[3]+ alpha * q.q[3];
1395 return r;
1396 }
1397
1398 static quaternion identity()
1399 {
1400 static quaternion ident( vec3( 0.0, 0.0, 0.0 ), GLH_ONE );
1401 return ident;
1402 }
1403
1404 real & operator []( int i )
1405 {
1406 assert(i < 4);
1407 return q[i];
1408 }
1409
1410 const real & operator []( int i ) const
1411 {
1412 assert(i < 4);
1413 return q[i];
1414 }
1415
1416 protected:
1417
1418 void counter_normalize()
1419 {
1420 if (counter > GLH_QUATERNION_NORMALIZATION_THRESHOLD)
1421 normalize();
1422 }
1423
1424 union
1425 {
1426 struct
1427 {
1428 real q[4];
1429 };
1430 struct
1431 {
1432 real x;
1433 real y;
1434 real z;
1435 real w;
1436 };
1437 };
1438
1439 // renormalization counter
1440 unsigned char counter;
1441 };
1442
1443 inline
1444 bool operator == ( const quaternion & q1, const quaternion & q2 )
1445 {
1446 return (equivalent(q1.x, q2.x) &&
1447 equivalent(q1.y, q2.y) &&
1448 equivalent(q1.z, q2.z) &&
1449 equivalent(q1.w, q2.w) );
1450 }
1451
1452 inline
1453 bool operator != ( const quaternion & q1, const quaternion & q2 )
1454 {
1455 return ! ( q1 == q2 );
1456 }
1457
1458 inline
1459 quaternion operator * ( const quaternion & q1, const quaternion & q2 )
1460 {
1461 quaternion r(q1);
1462 r *= q2;
1463 return r;
1464 }
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475 class plane
1476 {
1477 public:
1478
1479 plane()
1480 {
1481 planedistance = 0.0;
1482 planenormal.set_value( 0.0, 0.0, 1.0 );
1483 }
1484
1485
1486 plane( const vec3 &p0, const vec3 &p1, const vec3 &p2 )
1487 {
1488 vec3 v0 = p1 - p0;
1489 vec3 v1 = p2 - p0;
1490 planenormal = v0.cross(v1);
1491 planenormal.normalize();
1492 planedistance = p0.dot(planenormal);
1493 }
1494
1495 plane( const vec3 &normal, real distance )
1496 {
1497 planedistance = distance;
1498 planenormal = normal;
1499 planenormal.normalize();
1500 }
1501
1502 plane( const vec3 &normal, const vec3 &point )
1503 {
1504 planenormal = normal;
1505 planenormal.normalize();
1506 planedistance = point.dot(planenormal);
1507 }
1508
1509 void offset( real d )
1510 {
1511 planedistance += d;
1512 }
1513
1514 bool intersect( const line &l, vec3 &intersection ) const
1515 {
1516 vec3 pos, dir;
1517 vec3 pn = planenormal;
1518 real pd = planedistance;
1519
1520 pos = l.get_position();
1521 dir = l.get_direction();
1522
1523 if(dir.dot(pn) == 0.0) return 0;
1524 pos -= pn*pd;
1525 // now we're talking about a plane passing through the origin
1526 if(pos.dot(pn) < 0.0) pn.negate();
1527 if(dir.dot(pn) > 0.0) dir.negate();
1528 vec3 ppos = pn * pos.dot(pn);
1529 pos = (ppos.length()/dir.dot(-pn))*dir;
1530 intersection = l.get_position();
1531 intersection += pos;
1532 return 1;
1533 }
1534 void transform( const matrix4 &matrix )
1535 {
1536 matrix4 invtr = matrix.inverse();
1537 invtr = invtr.transpose();
1538
1539 vec3 pntOnplane = planenormal * planedistance;
1540 vec3 newPntOnplane;
1541 vec3 newnormal;
1542
1543 invtr.mult_dir_matrix(planenormal, newnormal);
1544 matrix.mult_vec_matrix(pntOnplane, newPntOnplane);
1545
1546 newnormal.normalize();
1547 planenormal = newnormal;
1548 planedistance = newPntOnplane.dot(planenormal);
1549 }
1550
1551 bool is_in_half_space( const vec3 &point ) const
1552 {
1553
1554 if(( point.dot(planenormal) - planedistance) < 0.0)
1555 return 0;
1556 return 1;
1557 }
1558
1559
1560 real distance( const vec3 & point ) const
1561 {
1562 return planenormal.dot(point - planenormal*planedistance);
1563 }
1564
1565 const vec3 &get_normal() const
1566 {
1567 return planenormal;
1568 }
1569
1570
1571 real get_distance_from_origin() const
1572 {
1573 return planedistance;
1574 }
1575
1576
1577 friend bool operator == ( const plane & p1, const plane & p2 );
1578
1579
1580 friend bool operator != ( const plane & p1, const plane & p2 );
1581
1582 //protected:
1583 vec3 planenormal;
1584 real planedistance;
1585 };
1586
1587 inline
1588 bool operator == (const plane & p1, const plane & p2 )
1589 {
1590 return ( p1.planedistance == p2.planedistance && p1.planenormal == p2.planenormal);
1591 }
1592
1593 inline
1594 bool operator != ( const plane & p1, const plane & p2 )
1595 { return ! (p1 == p2); }
1596
1597
1598
1599 } // "ns_##GLH_REAL"
1600
1601 // make common typedefs...
1602#ifdef GLH_REAL_IS_FLOAT
1603 typedef GLH_REAL_NAMESPACE::vec2 vec2f;
1604 typedef GLH_REAL_NAMESPACE::vec3 vec3f;
1605 typedef GLH_REAL_NAMESPACE::vec4 vec4f;
1606 typedef GLH_REAL_NAMESPACE::quaternion quaternionf;
1607 typedef GLH_REAL_NAMESPACE::quaternion rotationf;
1608 typedef GLH_REAL_NAMESPACE::line linef;
1609 typedef GLH_REAL_NAMESPACE::plane planef;
1610 typedef GLH_REAL_NAMESPACE::matrix4 matrix4f;
1611#endif
1612
1613
1614
1615
1616} // namespace glh
1617
1618
1619
1620#endif
1621
diff --git a/linden/libraries/include/llmozlib2.h b/linden/libraries/include/llmozlib2.h
deleted file mode 100644
index d85caf9..0000000
--- a/linden/libraries/include/llmozlib2.h
+++ /dev/null
@@ -1,383 +0,0 @@
1/* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is Linden Lab Inc. (http://lindenlab.com) code.
15 *
16 * The Initial Developer of the Original Code is:
17 * Callum Prentice (callum@ubrowser.com)
18 *
19 * Portions created by the Initial Developer are Copyright (C) 2006
20 * the Initial Developer. All Rights Reserved.
21 *
22 * Contributor(s):
23 * Callum Prentice (callum@ubrowser.com)
24 *
25 * Alternatively, the contents of this file may be used under the terms of
26 * either the GNU General Public License Version 2 or later (the "GPL"), or
27 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 * in which case the provisions of the GPL or the LGPL are applicable instead
29 * of those above. If you wish to allow use of your version of this file only
30 * under the terms of either the GPL or the LGPL, and not to allow others to
31 * use your version of this file under the terms of the MPL, indicate your
32 * decision by deleting the provisions above and replace them with the notice
33 * and other provisions required by the GPL or the LGPL. If you do not delete
34 * the provisions above, a recipient may use your version of this file under
35 * the terms of any one of the MPL, the GPL or the LGPL.
36 *
37 * ***** END LICENSE BLOCK ***** */
38
39#ifndef LLMOZLIB_H
40#define LLMOZLIB_H
41
42#include <string>
43#include <map>
44
45class LLEmbeddedBrowser;
46class LLEmbeddedBrowserWindow;
47
48////////////////////////////////////////////////////////////////////////////////
49// data class that is passed with an event
50class LLEmbeddedBrowserWindowEvent
51{
52 public:
53 LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string uriIn ) :
54 mEventWindowId( eventWindowIdIn ),
55 mEventUri( uriIn )
56 {
57 };
58
59 // single int passed with the event - e.g. progress
60 LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string uriIn, int intValIn ) :
61 mEventWindowId( eventWindowIdIn ),
62 mEventUri( uriIn ),
63 mIntVal( intValIn )
64 {
65 };
66
67 // string passed with the event
68 LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string uriIn, std::string stringValIn ) :
69 mEventWindowId( eventWindowIdIn ),
70 mEventUri( uriIn ),
71 mStringVal( stringValIn )
72 {
73 };
74
75 // 2 strings passed with the event
76 LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string uriIn, std::string stringValIn, std::string stringVal2In ) :
77 mEventWindowId( eventWindowIdIn ),
78 mEventUri( uriIn ),
79 mStringVal( stringValIn ),
80 mStringVal2( stringVal2In )
81 {
82 };
83
84 // string and an int passed with the event
85 LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string uriIn, std::string stringValIn, int intValIn ) :
86 mEventWindowId( eventWindowIdIn ),
87 mEventUri( uriIn ),
88 mStringVal( stringValIn ),
89 mIntVal( intValIn )
90 {
91 };
92
93 // 4 ints passed (semantically as a rectangle but could be anything - didn't want to make a RECT type structure)
94 LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string uriIn, int xIn, int yIn, int widthIn, int heightIn ) :
95 mEventWindowId( eventWindowIdIn ),
96 mEventUri( uriIn ),
97 mXVal( xIn ),
98 mYVal( yIn ),
99 mWidthVal( widthIn ),
100 mHeightVal( heightIn )
101 {
102 };
103
104 virtual ~LLEmbeddedBrowserWindowEvent()
105 {
106 };
107
108 int getEventWindowId() const
109 {
110 return mEventWindowId;
111 };
112
113 std::string getEventUri() const
114 {
115 return mEventUri;
116 };
117
118 int getIntValue() const
119 {
120 return mIntVal;
121 };
122
123 std::string getStringValue() const
124 {
125 return mStringVal;
126 };
127
128 std::string getStringValue2() const
129 {
130 return mStringVal2;
131 };
132
133 void getRectValue( int& xOut, int& yOut, int& widthOut, int& heightOut ) const
134 {
135 xOut = mXVal;
136 yOut = mYVal;
137 widthOut = mWidthVal;
138 heightOut = mHeightVal;
139 };
140
141 private:
142 int mEventWindowId;
143 std::string mEventUri;
144 int mIntVal;
145 std::string mStringVal;
146 std::string mStringVal2;
147 int mXVal;
148 int mYVal;
149 int mWidthVal;
150 int mHeightVal;
151};
152
153////////////////////////////////////////////////////////////////////////////////
154// derrive from this class and override these methods to observe these events
155class LLEmbeddedBrowserWindowObserver
156{
157 public:
158 virtual ~LLEmbeddedBrowserWindowObserver() { };
159 typedef LLEmbeddedBrowserWindowEvent EventType;
160
161 virtual void onPageChanged( const EventType& eventIn ) { };
162 virtual void onNavigateBegin( const EventType& eventIn ) { };
163 virtual void onNavigateComplete( const EventType& eventIn ) { };
164 virtual void onUpdateProgress( const EventType& eventIn ) { };
165 virtual void onStatusTextChange( const EventType& eventIn ) { };
166 virtual void onLocationChange( const EventType& eventIn ) { };
167 virtual void onClickLinkHref( const EventType& eventIn ) { };
168 virtual void onClickLinkNoFollow( const EventType& eventIn ) { };
169};
170
171////////////////////////////////////////////////////////////////////////////////
172// main library class
173class LLMozLib
174{
175 public:
176 virtual ~LLMozLib();
177
178 // singleton access
179 static LLMozLib* getInstance();
180
181 // housekeeping
182 bool init( std::string applicationDir, std::string componentDir, std::string profileDir, void* nativeWindowHandleIn );
183 bool reset();
184 bool clearCache();
185 int getLastError();
186 const std::string getVersion();
187 void setBrowserAgentId( std::string idIn );
188 bool enableProxy( bool proxyEnabledIn, std::string proxyHostNameIn, int proxyPortIn );
189 bool enableCookies( bool enabledIn );
190 bool clearAllCookies();
191 bool enablePlugins( bool enabledIn );
192
193 // browser window - creation/deletion, mutation etc.
194 int createBrowserWindow( int browserWindowWidthIn, int browserWindowHeightIn );
195 bool destroyBrowserWindow( int browserWindowIdIn );
196 bool setSize( int browserWindowIdIn, int widthIn, int heightIn );
197 bool scrollByLines( int browserWindowIdIn, int linesIn );
198 bool setBackgroundColor( int browserWindowIdIn, const int redIn, const int greenIn, const int blueIn );
199 bool setCaretColor( int browserWindowIdIn, const int redIn, const int greenIn, const int blueIn );
200 bool setEnabled( int browserWindowIdIn, bool enabledIn );
201
202 // add/remove yourself as an observer on browser events - see LLEmbeddedBrowserWindowObserver declaration
203 bool addObserver( int browserWindowIdIn, LLEmbeddedBrowserWindowObserver* subjectIn );
204 bool remObserver( int browserWindowIdIn, LLEmbeddedBrowserWindowObserver* subjectIn );
205
206 // navigation - self explanatory
207 bool navigateTo( int browserWindowIdIn, const std::string uriIn );
208 bool navigateStop( int browserWindowIdIn );
209 bool canNavigateBack( int browserWindowIdIn );
210 bool navigateBack( int browserWindowIdIn );
211 bool canNavigateForward( int browserWindowIdIn );
212 bool navigateForward( int browserWindowIdIn );
213
214 // javascript access/control
215 std::string evaluateJavascript( int browserWindowIdIn, const std::string scriptIn );
216
217 // set/clear URL to redirect to when a 404 page is reached
218 bool set404RedirectUrl( int browser_window_in, std::string redirect_url );
219 bool clr404RedirectUrl( int browser_window_in );
220
221 // access to rendered bitmap data
222 const unsigned char* grabBrowserWindow( int browserWindowIdIn ); // renders page to memory and returns pixels
223 const unsigned char* getBrowserWindowPixels( int browserWindowIdIn ); // just returns pixels - no render
224 const bool flipWindow( int browserWindowIdIn, bool flipIn ); // optionally flip window (pixels) you get back
225 const int getBrowserWidth( int browserWindowIdIn ); // current browser width (can vary slightly after page is rendered)
226 const int getBrowserHeight( int browserWindowIdIn ); // current height
227 const int getBrowserDepth( int browserWindowIdIn ); // depth in bytes
228 const int getBrowserRowSpan( int browserWindowIdIn ); // width in pixels * depth in bytes
229
230 // mouse/keyboard interaction
231 bool mouseDown( int browserWindowIdIn, int xPosIn, int yPosIn ); // send a mouse down event to a browser window at given XY in browser space
232 bool mouseUp( int browserWindowIdIn, int xPosIn, int yPosIn ); // send a mouse up event to a browser window at given XY in browser space
233 bool mouseMove( int browserWindowIdIn, int xPosIn, int yPosIn ); // send a mouse move event to a browser window at given XY in browser space
234 bool mouseLeftDoubleClick( int browserWindowIdIn, int xPosIn, int yPosIn ); // send a mouse left button double click to a browser window at given XY in browser space
235 bool keyPress( int browserWindowIdIn, int keyCodeIn ); // send a key press event to a browser window
236 bool unicodeInput ( int browserWindowIdIn, unsigned long uni_char ); // send a unicode keypress event to a browser window
237 bool focusBrowser( int browserWindowIdIn, bool focusBrowserIn ); // set/remove focus to given browser window
238
239 // accessor/mutator for scheme that browser doesn't follow - e.g. secondlife.com://
240 void setNoFollowScheme( int browserWindowIdIn, std::string schemeIn );
241 std::string getNoFollowScheme( int browserWindowIdIn );
242
243 private:
244 LLMozLib();
245 LLEmbeddedBrowserWindow* getBrowserWindowFromWindowId( int browserWindowIdIn );
246 static LLMozLib* sInstance;
247 const int mMaxBrowserWindows;
248 typedef std::map< int, LLEmbeddedBrowserWindow* > BrowserWindowMap;
249 typedef std::map< int, LLEmbeddedBrowserWindow* >::iterator BrowserWindowMapIter;
250 BrowserWindowMap mBrowserWindowMap;
251};
252
253// Mozilla virtual keycodes.
254// We don't want to suck in Mozilla headers so we copy these consts
255// from nsIDOMKeyEvent.idl.
256
257const unsigned long LL_DOM_VK_CANCEL = 0x03;
258const unsigned long LL_DOM_VK_HELP = 0x06;
259const unsigned long LL_DOM_VK_BACK_SPACE = 0x08;
260const unsigned long LL_DOM_VK_TAB = 0x09;
261const unsigned long LL_DOM_VK_CLEAR = 0x0C;
262const unsigned long LL_DOM_VK_RETURN = 0x0D;
263const unsigned long LL_DOM_VK_ENTER = 0x0E;
264const unsigned long LL_DOM_VK_SHIFT = 0x10;
265const unsigned long LL_DOM_VK_CONTROL = 0x11;
266const unsigned long LL_DOM_VK_ALT = 0x12;
267const unsigned long LL_DOM_VK_PAUSE = 0x13;
268const unsigned long LL_DOM_VK_CAPS_LOCK = 0x14;
269const unsigned long LL_DOM_VK_ESCAPE = 0x1B;
270const unsigned long LL_DOM_VK_SPACE = 0x20;
271const unsigned long LL_DOM_VK_PAGE_UP = 0x21;
272const unsigned long LL_DOM_VK_PAGE_DOWN = 0x22;
273const unsigned long LL_DOM_VK_END = 0x23;
274const unsigned long LL_DOM_VK_HOME = 0x24;
275const unsigned long LL_DOM_VK_LEFT = 0x25;
276const unsigned long LL_DOM_VK_UP = 0x26;
277const unsigned long LL_DOM_VK_RIGHT = 0x27;
278const unsigned long LL_DOM_VK_DOWN = 0x28;
279const unsigned long LL_DOM_VK_PRINTSCREEN = 0x2C;
280const unsigned long LL_DOM_VK_INSERT = 0x2D;
281const unsigned long LL_DOM_VK_DELETE = 0x2E;
282
283// LL_DOM_VK_0 - LL_DOM_VK_9 match their ASCII values
284const unsigned long LL_DOM_VK_0 = 0x30;
285const unsigned long LL_DOM_VK_1 = 0x31;
286const unsigned long LL_DOM_VK_2 = 0x32;
287const unsigned long LL_DOM_VK_3 = 0x33;
288const unsigned long LL_DOM_VK_4 = 0x34;
289const unsigned long LL_DOM_VK_5 = 0x35;
290const unsigned long LL_DOM_VK_6 = 0x36;
291const unsigned long LL_DOM_VK_7 = 0x37;
292const unsigned long LL_DOM_VK_8 = 0x38;
293const unsigned long LL_DOM_VK_9 = 0x39;
294
295const unsigned long LL_DOM_VK_SEMICOLON = 0x3B;
296const unsigned long LL_DOM_VK_EQUALS = 0x3D;
297
298// LL_DOM_VK_A - LL_DOM_VK_Z match their ASCII values
299const unsigned long LL_DOM_VK_A = 0x41;
300const unsigned long LL_DOM_VK_B = 0x42;
301const unsigned long LL_DOM_VK_C = 0x43;
302const unsigned long LL_DOM_VK_D = 0x44;
303const unsigned long LL_DOM_VK_E = 0x45;
304const unsigned long LL_DOM_VK_F = 0x46;
305const unsigned long LL_DOM_VK_G = 0x47;
306const unsigned long LL_DOM_VK_H = 0x48;
307const unsigned long LL_DOM_VK_I = 0x49;
308const unsigned long LL_DOM_VK_J = 0x4A;
309const unsigned long LL_DOM_VK_K = 0x4B;
310const unsigned long LL_DOM_VK_L = 0x4C;
311const unsigned long LL_DOM_VK_M = 0x4D;
312const unsigned long LL_DOM_VK_N = 0x4E;
313const unsigned long LL_DOM_VK_O = 0x4F;
314const unsigned long LL_DOM_VK_P = 0x50;
315const unsigned long LL_DOM_VK_Q = 0x51;
316const unsigned long LL_DOM_VK_R = 0x52;
317const unsigned long LL_DOM_VK_S = 0x53;
318const unsigned long LL_DOM_VK_T = 0x54;
319const unsigned long LL_DOM_VK_U = 0x55;
320const unsigned long LL_DOM_VK_V = 0x56;
321const unsigned long LL_DOM_VK_W = 0x57;
322const unsigned long LL_DOM_VK_X = 0x58;
323const unsigned long LL_DOM_VK_Y = 0x59;
324const unsigned long LL_DOM_VK_Z = 0x5A;
325
326const unsigned long LL_DOM_VK_CONTEXT_MENU = 0x5D;
327
328const unsigned long LL_DOM_VK_NUMPAD0 = 0x60;
329const unsigned long LL_DOM_VK_NUMPAD1 = 0x61;
330const unsigned long LL_DOM_VK_NUMPAD2 = 0x62;
331const unsigned long LL_DOM_VK_NUMPAD3 = 0x63;
332const unsigned long LL_DOM_VK_NUMPAD4 = 0x64;
333const unsigned long LL_DOM_VK_NUMPAD5 = 0x65;
334const unsigned long LL_DOM_VK_NUMPAD6 = 0x66;
335const unsigned long LL_DOM_VK_NUMPAD7 = 0x67;
336const unsigned long LL_DOM_VK_NUMPAD8 = 0x68;
337const unsigned long LL_DOM_VK_NUMPAD9 = 0x69;
338const unsigned long LL_DOM_VK_MULTIPLY = 0x6A;
339const unsigned long LL_DOM_VK_ADD = 0x6B;
340const unsigned long LL_DOM_VK_SEPARATOR = 0x6C;
341const unsigned long LL_DOM_VK_SUBTRACT = 0x6D;
342const unsigned long LL_DOM_VK_DECIMAL = 0x6E;
343const unsigned long LL_DOM_VK_DIVIDE = 0x6F;
344const unsigned long LL_DOM_VK_F1 = 0x70;
345const unsigned long LL_DOM_VK_F2 = 0x71;
346const unsigned long LL_DOM_VK_F3 = 0x72;
347const unsigned long LL_DOM_VK_F4 = 0x73;
348const unsigned long LL_DOM_VK_F5 = 0x74;
349const unsigned long LL_DOM_VK_F6 = 0x75;
350const unsigned long LL_DOM_VK_F7 = 0x76;
351const unsigned long LL_DOM_VK_F8 = 0x77;
352const unsigned long LL_DOM_VK_F9 = 0x78;
353const unsigned long LL_DOM_VK_F10 = 0x79;
354const unsigned long LL_DOM_VK_F11 = 0x7A;
355const unsigned long LL_DOM_VK_F12 = 0x7B;
356const unsigned long LL_DOM_VK_F13 = 0x7C;
357const unsigned long LL_DOM_VK_F14 = 0x7D;
358const unsigned long LL_DOM_VK_F15 = 0x7E;
359const unsigned long LL_DOM_VK_F16 = 0x7F;
360const unsigned long LL_DOM_VK_F17 = 0x80;
361const unsigned long LL_DOM_VK_F18 = 0x81;
362const unsigned long LL_DOM_VK_F19 = 0x82;
363const unsigned long LL_DOM_VK_F20 = 0x83;
364const unsigned long LL_DOM_VK_F21 = 0x84;
365const unsigned long LL_DOM_VK_F22 = 0x85;
366const unsigned long LL_DOM_VK_F23 = 0x86;
367const unsigned long LL_DOM_VK_F24 = 0x87;
368
369const unsigned long LL_DOM_VK_NUM_LOCK = 0x90;
370const unsigned long LL_DOM_VK_SCROLL_LOCK = 0x91;
371
372const unsigned long LL_DOM_VK_COMMA = 0xBC;
373const unsigned long LL_DOM_VK_PERIOD = 0xBE;
374const unsigned long LL_DOM_VK_SLASH = 0xBF;
375const unsigned long LL_DOM_VK_BACK_QUOTE = 0xC0;
376const unsigned long LL_DOM_VK_OPEN_BRACKET = 0xDB;
377const unsigned long LL_DOM_VK_BACK_SLASH = 0xDC;
378const unsigned long LL_DOM_VK_CLOSE_BRACKET = 0xDD;
379const unsigned long LL_DOM_VK_QUOTE = 0xDE;
380
381const unsigned long LL_DOM_VK_META = 0xE0;
382
383#endif // LLMOZLIB_H