/************************************************************* * * * file : EXT_paletted_texture.h * * author: Jens Schneider * * date : 14.Mar.2001-10.Jul.2001 * * e-mail: jens@glHint.de * * * * version 1.0ß * * * *************************************************************/ #ifndef __EXT_paletted_texture_H_ #define __EXT_paletted_texture_H_ /* * GLOBAL SWITCHES - enable/disable advanced features of this header * */ #define EXT_PALETTED_TEXTURE_INITIALIZE 1 // enable generic init-routines #ifndef _WIN32 #define GL_GLEXT_PROTOTYPES 1 #endif /* */ #ifdef __cplusplus extern "C" { #endif /* */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) #define WIN32_LEAN_AND_MEAN 1 #include #endif /* */ #ifndef APIENTRY #define APIENTRY #endif /* */ // Header file version number, required by OpenGL ABI for Linux //#define GL_GLEXT_VERSION 7 /* * NEW TOKENS TO OPENGL 1.2.1 * */ #ifndef GL_EXT_paletted_texture #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 #define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 #define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #define GL_EXT_paletted_texture 1 #endif /* */ #ifndef _WIN32 #ifdef GL_GLEXT_PROTOTYPES extern void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); extern void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); extern void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); extern void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); extern void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); #endif // GL_GLEXT_PROTOTYPES #else // _WIN32 typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * data); typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data); typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * data); typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params); #endif // not _WIN32 #ifdef EXT_PALETTED_TEXTURE_INITIALIZE #include // string manipulation for runtime-check #ifdef _WIN32 PFNGLCOLORTABLEEXTPROC glColorTableEXT = NULL; PFNGLCOLORSUBTABLEEXTPROC glColorSubTableEXT = NULL; PFNGLGETCOLORTABLEEXTPROC glGetColorTableEXT = NULL; PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glGetColorTableParameterivEXT = NULL; PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glGetColorTableParameterfvEXT = NULL; #endif // _WIN32 int CheckForEXTPalettedTextureSupport (void) { const char search[] = "GL_EXT_paletted_texture"; int i, pos = 0; int maxpos = strlen (search) - 1; char extensions[10000]; strcpy (extensions, (const char *) glGetString (GL_EXTENSIONS)); int len = strlen (extensions); for (i = 0; i < len; i++) { if ((i == 0) || ((i > 1) && extensions[i - 1] == ' ')) { pos = 0; while (extensions[i] != ' ') { if (extensions[i] == search[pos]) pos++; if ((pos > maxpos) && extensions[i + 1] == ' ') { //printf(search); //printf(" supported.\n"); return 1; } i++; } } } //printf(search); //printf(" not supported.\n"); return 0; } int GL_EXT_paletted_texture_Init (void) { if (!CheckForEXTPalettedTextureSupport ()) return 0; #ifdef _WIN32 glColorTableEXT = (PFNGLCOLORTABLEEXTPROC) wglGetProcAddress ("glColorTableEXT"); if (glColorTableEXT == NULL) { fprintf (stderr, "glColorTableEXT not found.\n"); return 0; } glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC) wglGetProcAddress ("glColorSubTableEXT"); if (glColorSubTableEXT == NULL) { fprintf (stderr, "glColorSubTableEXT not found.\n"); return 0; } glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC) wglGetProcAddress ("glGetColorTableEXT"); if (glGetColorTableEXT == NULL) { fprintf (stderr, "glGetColorTableEXT not found.\n"); return 0; } glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) wglGetProcAddress ("glGetColorTableParameterivEXT"); if (glGetColorTableParameterivEXT == NULL) { fprintf (stderr, "glGetColorTableParameterivEXT not found.\n"); return 0; } glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) wglGetProcAddress ("glGetColorTableParameterfvEXT"); if (glGetColorTableParameterfvEXT == NULL) { fprintf (stderr, "glGetColorTableParameterfvEXT not found.\n"); return 0; } #endif // _WIN32 return 1; } #endif // EXT_PALETTED_TEXTURE_INITIALIZE #ifdef __cplusplus } #endif /* */ #endif // not __EXT_PALETTED_TEXTURE_H_