~ubuntu-branches/ubuntu/quantal/mesa/quantal

« back to all changes in this revision

Viewing changes to src/glut/os2/glut_ext.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2007-02-21 12:44:07 UTC
  • mfrom: (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: james.westby@ubuntu.com-20070221124407-rgcacs32mycrtadl
ImportĀ upstreamĀ versionĀ 6.5.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
3
 
 
4
 
/* This program is freely distributable without licensing fees
5
 
   and is provided without guarantee or warrantee expressed or
6
 
   implied. This program is -not- in the public domain. */
7
 
 
8
 
#include <stdlib.h>
9
 
#include <string.h>
10
 
 
11
 
#include "glutint.h"
12
 
 
13
 
/* CENTRY */
14
 
int GLUTAPIENTRY
15
 
glutExtensionSupported(const char *extension)
16
 
{
17
 
  static const GLubyte *extensions = NULL;
18
 
  const GLubyte *start;
19
 
  GLubyte *where, *terminator;
20
 
 
21
 
  /* Extension names should not have spaces. */
22
 
  where = (GLubyte *) strchr(extension, ' ');
23
 
  if (where || *extension == '\0')
24
 
    return 0;
25
 
 
26
 
  if (!extensions) {
27
 
    extensions = glGetString(GL_EXTENSIONS);
28
 
  }
29
 
  /* It takes a bit of care to be fool-proof about parsing the
30
 
     OpenGL extensions string.  Don't be fooled by sub-strings,
31
 
     etc. */
32
 
  start = extensions;
33
 
  for (;;) {
34
 
    /* If your application crashes in the strstr routine below,
35
 
       you are probably calling glutExtensionSupported without
36
 
       having a current window.  Calling glGetString without
37
 
       a current OpenGL context has unpredictable results.
38
 
       Please fix your program. */
39
 
    where = (GLubyte *) strstr((const char *) start, extension);
40
 
    if (!where)
41
 
      break;
42
 
    terminator = where + strlen(extension);
43
 
    if (where == start || *(where - 1) == ' ') {
44
 
      if (*terminator == ' ' || *terminator == '\0') {
45
 
        return 1;
46
 
      }
47
 
    }
48
 
    start = terminator;
49
 
  }
50
 
  return 0;
51
 
}
52
 
 
53
 
 
54
 
struct name_address_pair {
55
 
   const char *name;
56
 
   const void *address;
57
 
};
58
 
 
59
 
static struct name_address_pair glut_functions[] = {
60
 
   { "glutInit", (const void *) glutInit },
61
 
   { "glutInitDisplayMode", (const void *) glutInitDisplayMode },
62
 
   { "glutInitDisplayString", (const void *) glutInitDisplayString },
63
 
   { "glutInitWindowPosition", (const void *) glutInitWindowPosition },
64
 
   { "glutInitWindowSize", (const void *) glutInitWindowSize },
65
 
   { "glutMainLoop", (const void *) glutMainLoop },
66
 
   { "glutCreateWindow", (const void *) glutCreateWindow },
67
 
   { "glutCreateSubWindow", (const void *) glutCreateSubWindow },
68
 
   { "glutDestroyWindow", (const void *) glutDestroyWindow },
69
 
   { "glutPostRedisplay", (const void *) glutPostRedisplay },
70
 
   { "glutPostWindowRedisplay", (const void *) glutPostWindowRedisplay },
71
 
   { "glutSwapBuffers", (const void *) glutSwapBuffers },
72
 
   { "glutGetWindow", (const void *) glutGetWindow },
73
 
   { "glutSetWindow", (const void *) glutSetWindow },
74
 
   { "glutSetWindowTitle", (const void *) glutSetWindowTitle },
75
 
   { "glutSetIconTitle", (const void *) glutSetIconTitle },
76
 
   { "glutPositionWindow", (const void *) glutPositionWindow },
77
 
   { "glutReshapeWindow", (const void *) glutReshapeWindow },
78
 
   { "glutPopWindow", (const void *) glutPopWindow },
79
 
   { "glutPushWindow", (const void *) glutPushWindow },
80
 
   { "glutIconifyWindow", (const void *) glutIconifyWindow },
81
 
   { "glutShowWindow", (const void *) glutShowWindow },
82
 
   { "glutHideWindow", (const void *) glutHideWindow },
83
 
   { "glutFullScreen", (const void *) glutFullScreen },
84
 
   { "glutSetCursor", (const void *) glutSetCursor },
85
 
   { "glutWarpPointer", (const void *) glutWarpPointer },
86
 
   { "glutEstablishOverlay", (const void *) glutEstablishOverlay },
87
 
   { "glutRemoveOverlay", (const void *) glutRemoveOverlay },
88
 
   { "glutUseLayer", (const void *) glutUseLayer },
89
 
   { "glutPostOverlayRedisplay", (const void *) glutPostOverlayRedisplay },
90
 
   { "glutPostWindowOverlayRedisplay", (const void *) glutPostWindowOverlayRedisplay },
91
 
   { "glutShowOverlay", (const void *) glutShowOverlay },
92
 
   { "glutHideOverlay", (const void *) glutHideOverlay },
93
 
   { "glutCreateMenu", (const void *) glutCreateMenu },
94
 
   { "glutDestroyMenu", (const void *) glutDestroyMenu },
95
 
   { "glutGetMenu", (const void *) glutGetMenu },
96
 
   { "glutSetMenu", (const void *) glutSetMenu },
97
 
   { "glutAddMenuEntry", (const void *) glutAddMenuEntry },
98
 
   { "glutAddSubMenu", (const void *) glutAddSubMenu },
99
 
   { "glutChangeToMenuEntry", (const void *) glutChangeToMenuEntry },
100
 
   { "glutChangeToSubMenu", (const void *) glutChangeToSubMenu },
101
 
   { "glutRemoveMenuItem", (const void *) glutRemoveMenuItem },
102
 
   { "glutAttachMenu", (const void *) glutAttachMenu },
103
 
   { "glutDetachMenu", (const void *) glutDetachMenu },
104
 
   { "glutDisplayFunc", (const void *) glutDisplayFunc },
105
 
   { "glutReshapeFunc", (const void *) glutReshapeFunc },
106
 
   { "glutKeyboardFunc", (const void *) glutKeyboardFunc },
107
 
   { "glutMouseFunc", (const void *) glutMouseFunc },
108
 
   { "glutMotionFunc", (const void *) glutMotionFunc },
109
 
   { "glutPassiveMotionFunc", (const void *) glutPassiveMotionFunc },
110
 
   { "glutEntryFunc", (const void *) glutEntryFunc },
111
 
   { "glutVisibilityFunc", (const void *) glutVisibilityFunc },
112
 
   { "glutIdleFunc", (const void *) glutIdleFunc },
113
 
   { "glutTimerFunc", (const void *) glutTimerFunc },
114
 
   { "glutMenuStateFunc", (const void *) glutMenuStateFunc },
115
 
   { "glutSpecialFunc", (const void *) glutSpecialFunc },
116
 
   { "glutSpaceballMotionFunc", (const void *) glutSpaceballMotionFunc },
117
 
   { "glutSpaceballRotateFunc", (const void *) glutSpaceballRotateFunc },
118
 
   { "glutSpaceballButtonFunc", (const void *) glutSpaceballButtonFunc },
119
 
   { "glutButtonBoxFunc", (const void *) glutButtonBoxFunc },
120
 
   { "glutDialsFunc", (const void *) glutDialsFunc },
121
 
   { "glutTabletMotionFunc", (const void *) glutTabletMotionFunc },
122
 
   { "glutTabletButtonFunc", (const void *) glutTabletButtonFunc },
123
 
   { "glutMenuStatusFunc", (const void *) glutMenuStatusFunc },
124
 
   { "glutOverlayDisplayFunc", (const void *) glutOverlayDisplayFunc },
125
 
   { "glutWindowStatusFunc", (const void *) glutWindowStatusFunc },
126
 
   { "glutKeyboardUpFunc", (const void *) glutKeyboardUpFunc },
127
 
   { "glutSpecialUpFunc", (const void *) glutSpecialUpFunc },
128
 
   { "glutJoystickFunc", (const void *) glutJoystickFunc },
129
 
   { "glutSetColor", (const void *) glutSetColor },
130
 
   { "glutGetColor", (const void *) glutGetColor },
131
 
   { "glutCopyColormap", (const void *) glutCopyColormap },
132
 
   { "glutGet", (const void *) glutGet },
133
 
   { "glutDeviceGet", (const void *) glutDeviceGet },
134
 
   { "glutExtensionSupported", (const void *) glutExtensionSupported },
135
 
   { "glutGetModifiers", (const void *) glutGetModifiers },
136
 
   { "glutLayerGet", (const void *) glutLayerGet },
137
 
   { "glutGetProcAddress", (const void *) glutGetProcAddress },
138
 
   { "glutBitmapCharacter", (const void *) glutBitmapCharacter },
139
 
   { "glutBitmapWidth", (const void *) glutBitmapWidth },
140
 
   { "glutStrokeCharacter", (const void *) glutStrokeCharacter },
141
 
   { "glutStrokeWidth", (const void *) glutStrokeWidth },
142
 
   { "glutBitmapLength", (const void *) glutBitmapLength },
143
 
   { "glutStrokeLength", (const void *) glutStrokeLength },
144
 
   { "glutWireSphere", (const void *) glutWireSphere },
145
 
   { "glutSolidSphere", (const void *) glutSolidSphere },
146
 
   { "glutWireCone", (const void *) glutWireCone },
147
 
   { "glutSolidCone", (const void *) glutSolidCone },
148
 
   { "glutWireCube", (const void *) glutWireCube },
149
 
   { "glutSolidCube", (const void *) glutSolidCube },
150
 
   { "glutWireTorus", (const void *) glutWireTorus },
151
 
   { "glutSolidTorus", (const void *) glutSolidTorus },
152
 
   { "glutWireDodecahedron", (const void *) glutWireDodecahedron },
153
 
   { "glutSolidDodecahedron", (const void *) glutSolidDodecahedron },
154
 
   { "glutWireTeapot", (const void *) glutWireTeapot },
155
 
   { "glutSolidTeapot", (const void *) glutSolidTeapot },
156
 
   { "glutWireOctahedron", (const void *) glutWireOctahedron },
157
 
   { "glutSolidOctahedron", (const void *) glutSolidOctahedron },
158
 
   { "glutWireTetrahedron", (const void *) glutWireTetrahedron },
159
 
   { "glutSolidTetrahedron", (const void *) glutSolidTetrahedron },
160
 
   { "glutWireIcosahedron", (const void *) glutWireIcosahedron },
161
 
   { "glutSolidIcosahedron", (const void *) glutSolidIcosahedron },
162
 
   { "glutVideoResizeGet", (const void *) glutVideoResizeGet },
163
 
   { "glutSetupVideoResizing", (const void *) glutSetupVideoResizing },
164
 
   { "glutStopVideoResizing", (const void *) glutStopVideoResizing },
165
 
   { "glutVideoResize", (const void *) glutVideoResize },
166
 
   { "glutVideoPan", (const void *) glutVideoPan },
167
 
   { "glutReportErrors", (const void *) glutReportErrors },
168
 
   { "glutIgnoreKeyRepeat", (const void *) glutIgnoreKeyRepeat },
169
 
   { "glutSetKeyRepeat", (const void *) glutSetKeyRepeat },
170
 
   { "glutForceJoystickFunc", (const void *) glutForceJoystickFunc },
171
 
   { "glutGameModeString", (const void *) glutGameModeString },
172
 
   { "glutEnterGameMode", (const void *) glutEnterGameMode },
173
 
   { "glutLeaveGameMode", (const void *) glutLeaveGameMode },
174
 
   { "glutGameModeGet", (const void *) glutGameModeGet },
175
 
   { NULL, NULL }
176
 
};
177
 
 
178
 
 
179
 
/* XXX This isn't an official GLUT function, yet */
180
 
void * GLUTAPIENTRY
181
 
glutGetProcAddress(const char *procName)
182
 
{
183
 
   /* Try GLUT functions first */
184
 
   int i;
185
 
   for (i = 0; glut_functions[i].name; i++) {
186
 
      if (strcmp(glut_functions[i].name, procName) == 0)
187
 
         return (void *) glut_functions[i].address;
188
 
   }
189
 
 
190
 
   /* Try core GL functions */
191
 
#if defined(_WIN32)
192
 
  return (void *) wglGetProcAddress((LPCSTR) procName);
193
 
 
194
 
#elif  defined(__OS2PM__)
195
 
  return (void *) wglGetProcAddress((char *) procName);
196
 
#elif defined(GLX_ARB_get_proc_address)
197
 
  return (void *) glXGetProcAddressARB((const GLubyte *) procName);
198
 
#else
199
 
  return NULL;
200
 
#endif
201
 
}
202
 
 
203
 
 
204
 
/* ENDCENTRY */