soc-2008-mxcurioni: towards Freestyle compilation, removing Qt's QString and QImage...
[blender-staging.git] / source / blender / freestyle / intern / rendering / GLUtils.cpp
1
2 //
3 //  Copyright (C) : Please refer to the COPYRIGHT file distributed 
4 //   with this source distribution. 
5 //
6 //  This program is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU General Public License
8 //  as published by the Free Software Foundation; either version 2
9 //  of the License, or (at your option) any later version.
10 //
11 //  This program is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //  GNU General Public License for more details.
15 //
16 //  You should have received a copy of the GNU General Public License
17 //  along with this program; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 //
20 ///////////////////////////////////////////////////////////////////////////////
21 #include "GLUtils.h"
22
23 # ifdef WIN32
24 #  include <windows.h>
25 # endif
26 # ifdef __MACH__
27 #  include <OpenGL/gl.h>
28 # else
29 #  include <GL/gl.h>
30 # endif
31 #include <string.h>
32
33 int isExtensionSupported(const char *extension)
34 {
35   const GLubyte *extensions = NULL;
36   const GLubyte *start;
37   GLubyte *where, *terminator;
38
39   /* Extension names should not have spaces. */
40   where = (GLubyte *) strchr(extension, ' ');
41   if (where || *extension == '\0')
42     return 0;
43   extensions = glGetString(GL_EXTENSIONS);
44   /* It takes a bit of care to be fool-proof about parsing the
45      OpenGL extensions string. Don't be fooled by sub-strings,
46      etc. */
47   start = extensions;
48   for (;;) {
49     where = (GLubyte *) strstr((const char *) start, extension);
50     if (!where)
51       break;
52     terminator = where + strlen(extension);
53     if (where == start || *(where - 1) == ' ')
54       if (*terminator == ' ' || *terminator == '\0')
55         return 1;
56     start = terminator;
57   }
58   return 0;
59 }
60
61 void *glutils_extgl_GetProcAddress(const char *name)
62 {
63 #ifdef _WIN32
64     void *t = wglGetProcAddress(name);
65     return t;
66 #endif
67 }
68