init secondary color to (0,0,0,1). remove some redundant initializations.
[mesa.git] / src / mesa / main / enums.c
index b1b40a95cad89e8a660a88cadfb107bf8ef89b28..20009d66dd331879530753087bd2d217058ef7c3 100644 (file)
@@ -1,43 +1,43 @@
-/* $Id: enums.c,v 1.3 1999/10/13 18:42:50 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.1
- * 
- * Copyright (C) 1999  Brian Paul   All Rights Reserved.
- * 
+ * Version:  5.1
+ *
+ * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
  * to deal in the Software without restriction, including without limitation
  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included
  * in all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Author:
+ *    Keith Whitwell <keith@tungstengraphics.com>
  */
 
 
-#include "GL/gl.h"
+#include "glheader.h"
 #include "enums.h"
-#include "macros.h"
-#include <stdlib.h>
-#include <string.h>
+#include "imports.h"
 
 
-typedef struct { 
-   const char *c; 
-   int n; 
+typedef struct {
+   const char *c;
+   int n;
 } enum_elt;
 
-enum_elt all_enums[] = 
+enum_elt all_enums[] =
 {
    /* Boolean values */
    { "GL_FALSE", 0 },
@@ -767,8 +767,25 @@ enum_elt all_enums[] =
    { "GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1 },
    { "GL_MAX_TEXTURE_UNITS_ARB", 0x84E2 },
 
-   { "GL_NORMAL_MAP_NV", 0x8511 },
-   { "GL_REFLECTION_MAP_NV", 0x8512 },
+   { "GL_OCCLUSION_TEST_HP", 0x8165 },
+   { "GL_OCCLUSION_TEST_RESULT_HP", 0x8166 },
+
+   { "GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500 },
+   { "GL_TEXTURE_LOD_BIAS_EXT", 0x8501 },
+
+   /* GL_ARB_texture_cube_map */
+   { "GL_NORMAL_MAP_ARB", 0x8511 },
+   { "GL_REFLECTION_MAP_ARB", 0x8512 },
+   { "GL_TEXTURE_CUBE_MAP_ARB", 0x8513 },
+   { "GL_TEXTURE_BINDING_CUBE_MAP_ARB", 0x8514 },
+   { "GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB", 0x8515 },
+   { "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB", 0x8516 },
+   { "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB", 0x8517 },
+   { "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB", 0x8518 },
+   { "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB", 0x8519 },
+   { "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB", 0x851a },
+   { "GL_PROXY_TEXTURE_CUBE_MAP_ARB", 0x851b },
+   { "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", 0x851c },
 
    { "GL_PREFER_DOUBLEBUFFER_HINT_PGI", 107000 },
    { "GL_STRICT_DEPTHFUNC_HINT_PGI", 107030 },
@@ -793,12 +810,81 @@ enum_elt all_enums[] =
    { "GL_NATIVE_GRAPHICS_HANDLE_PGI", 107010 },
 
    /* GL_EXT_compiled_vertex_array */
-   { "GL_ARRAY_ELEMENT_LOCK_FIRST_SGI", 0x81A8},
-   { "GL_ARRAY_ELEMENT_LOCK_COUNT_SGI", 0x81A9},
+   { "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8},
+   { "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9},
 
    /* GL_EXT_clip_volume_hint */
-   { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0}
-
+   { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0},
+
+   /* GL_EXT_texture_env_combine */
+   { "GL_COMBINE_EXT", 0x8570 },
+   { "GL_COMBINE_RGB_EXT", 0x8571 },
+   { "GL_COMBINE_ALPHA_EXT", 0x8572 },
+   { "GL_SOURCE0_RGB_EXT", 0x8580 },
+   { "GL_SOURCE1_RGB_EXT", 0x8581 },
+   { "GL_SOURCE2_RGB_EXT", 0x8582 },
+   { "GL_SOURCE0_ALPHA_EXT", 0x8588 },
+   { "GL_SOURCE1_ALPHA_EXT", 0x8589 },
+   { "GL_SOURCE2_ALPHA_EXT", 0x858A },
+   { "GL_OPERAND0_RGB_EXT", 0x8590 },
+   { "GL_OPERAND1_RGB_EXT", 0x8591 },
+   { "GL_OPERAND2_RGB_EXT", 0x8592 },
+   { "GL_OPERAND0_ALPHA_EXT", 0x8598 },
+   { "GL_OPERAND1_ALPHA_EXT", 0x8599 },
+   { "GL_OPERAND2_ALPHA_EXT", 0x859A },
+   { "GL_RGB_SCALE_EXT", 0x8573 },
+   { "GL_ADD_SIGNED_EXT", 0x8574 },
+   { "GL_INTERPOLATE_EXT", 0x8575 },
+   { "GL_CONSTANT_EXT", 0x8576 },
+   { "GL_PRIMARY_COLOR_EXT", 0x8577 },
+   { "GL_PREVIOUS_EXT", 0x8578 },
+
+   /* GL_ARB_texture_env_combine */
+   { "GL_SUBTRACT_ARB", 0x84E7 },
+
+   /* GL_EXT_texture_env_dot3 */
+   { "GL_DOT3_RGB_EXT", 0x8740 },
+   { "GL_DOT3_RGBA_EXT", 0x8741 },
+
+   /* GL_ARB_texture_env_dot3 */
+   { "GL_DOT3_RGB_ARB", 0x86ae },
+   { "GL_DOT3_RGBA_ARB", 0x86af },
+
+   /* GL_ARB_texture_border_clamp */
+   { "GL_CLAMP_TO_BORDER_ARB", 0x812D },
+
+   /* GL_ATI_texture_env_combine3 */
+   { "GL_MODULATE_ADD_ATI", 0x8744 },
+   { "GL_MODULATE_SIGNED_ADD_ATI", 0x8745 },
+   { "GL_MODULATE_SUBTRACT_ATI", 0x8746 },
+
+   /* GL_ARB_texture_compression */
+   { "GL_COMPRESSED_ALPHA_ARB", 0x84E9 },
+   { "GL_COMPRESSED_LUMINANCE_ARB", 0x84EA },
+   { "GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB },
+   { "GL_COMPRESSED_INTENSITY_ARB", 0x84EC },
+   { "GL_COMPRESSED_RGB_ARB", 0x84ED },
+   { "GL_COMPRESSED_RGBA_ARB", 0x84EE },
+   { "GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB", 0x86A0 },
+   { "GL_TEXTURE_COMPRESSED_ARB", 0x86A1 },
+   { "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A2 },
+   { "GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3 },
+
+   /* GL_EXT_texture_compression_s3tc */
+   { "GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0 },
+   { "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1 },
+   { "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2 },
+   { "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3 },
+
+   /* GL_S3_s3tc */
+   { "GL_RGB_S3TC", 0x83A0 },
+   { "GL_RGB4_S3TC", 0x83A1 },
+   { "GL_RGBA_S3TC", 0x83A2 },
+   { "GL_RGBA4_S3TC", 0x83A3 },
+
+   /* GL_3DFX_texture_compression_FXT1 */
+   { "GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0 },
+   { "GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1 },
 };
 
 #define Elements(x) sizeof(x)/sizeof(*x)
@@ -808,15 +894,15 @@ typedef int (GLWINAPIV *cfunc)(const void *, const void *);
 static enum_elt **index1 = 0;
 static int sorted = 0;
 
-static int compar_name( const enum_elt *a, const enum_elt *b ) 
+static int compar_name( const enum_elt *a, const enum_elt *b )
 {
-   return strcmp(a->c, b->c);
+   return _mesa_strcmp(a->c, b->c);
 }
 
 
 /* note the extra level of indirection
  */
-static int compar_nr( const enum_elt **a, const enum_elt **b ) 
+static int compar_nr( const enum_elt **a, const enum_elt **b )
 {
    return (*a)->n - (*b)->n;
 }
@@ -824,14 +910,17 @@ static int compar_nr( const enum_elt **a, const enum_elt **b )
 
 static void sort_enums( void )
 {
-   int i;
+   GLuint i;
    index1 = (enum_elt **)MALLOC( Elements(all_enums) * sizeof(enum_elt *) );
    sorted = 1;
 
-   qsort( all_enums, Elements(all_enums), sizeof(*all_enums), 
+   if (!index1)
+      return;  /* what else can we do? */
+
+   qsort( all_enums, Elements(all_enums), sizeof(*all_enums),
          (cfunc) compar_name );
 
-   for (i = 0 ; i < Elements(all_enums) ; i++) 
+   for (i = 0 ; i < Elements(all_enums) ; i++)
       index1[i] = &all_enums[i];
 
    qsort( index1, Elements(all_enums), sizeof(*index1), (cfunc) compar_nr );
@@ -839,56 +928,46 @@ static void sort_enums( void )
 
 
 
-int gl_lookup_enum_by_name( const char *symbol )
+int _mesa_lookup_enum_by_name( const char *symbol )
 {
    enum_elt tmp;
    enum_elt *e;
 
-   if (!sorted) 
+   if (!sorted)
       sort_enums();
 
-   if (!symbol) 
+   if (!symbol)
       return 0;
 
    tmp.c = symbol;
-   e = (enum_elt *)bsearch( &tmp, all_enums, Elements(all_enums), 
+   e = (enum_elt *)bsearch( &tmp, all_enums, Elements(all_enums),
                            sizeof(*all_enums), (cfunc) compar_name );
 
    return e ? e->n : -1;
 }
 
 
-const char *gl_lookup_enum_by_nr( int nr )
+static char token_tmp[20];
+
+const char *_mesa_lookup_enum_by_nr( int nr )
 {
    enum_elt tmp, *e, **f;
 
-   if (!sorted) 
+   if (!sorted)
       sort_enums();
 
    tmp.n = nr;
    e = &tmp;
 
-   f = (enum_elt **)bsearch( &e, index1, Elements(all_enums), 
+   f = (enum_elt **)bsearch( &e, index1, Elements(all_enums),
                             sizeof(*index1), (cfunc) compar_nr );
 
-   return f ? (*f)->c : "(unknown)";
-}
-
-
-#if 0
-int main()
-{
-   int i;
-   static const char *test[] = {
-      "GL_POLYGON",
-      "GL_TRUE",
-      "GL_BANANA",
-      "GL_REFLECTION_MAP_NV",
-   };
-
-   for (i = 0 ; i < Elements(test) ; i++) {
-      int d = gl_lookup_enum_by_name( test[i] );
-      printf("%s --> %d --> %s\n", test[i], d, gl_lookup_enum_by_nr( d ));
-   }       
+   if (f) {
+      return (*f)->c;
+   }
+   else {
+      /* this isn't re-entrant safe, no big deal here */
+      _mesa_sprintf(token_tmp, "0x%x", nr);
+      return token_tmp;
+   }
 }
-#endif