Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  * Version:  7.5
  4.  *
  5.  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
  6.  * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a
  9.  * copy of this software and associated documentation files (the "Software"),
  10.  * to deal in the Software without restriction, including without limitation
  11.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12.  * and/or sell copies of the Software, and to permit persons to whom the
  13.  * Software is furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice and this permission notice shall be included
  16.  * in all copies or substantial portions of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  21.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  22.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  23.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24.  */
  25.  
  26.  
  27. #ifndef LIGHT_H
  28. #define LIGHT_H
  29.  
  30.  
  31. #include "glheader.h"
  32. #include "mfeatures.h"
  33.  
  34. struct gl_context;
  35. struct gl_light;
  36. struct gl_material;
  37.  
  38. extern void GLAPIENTRY
  39. _mesa_ShadeModel( GLenum mode );
  40.  
  41. extern void GLAPIENTRY
  42. _mesa_ProvokingVertexEXT(GLenum mode);
  43.  
  44.  
  45. #if _HAVE_FULL_GL
  46. extern void GLAPIENTRY
  47. _mesa_ColorMaterial( GLenum face, GLenum mode );
  48.  
  49. extern void GLAPIENTRY
  50. _mesa_Lightf( GLenum light, GLenum pname, GLfloat param );
  51.  
  52. extern void GLAPIENTRY
  53. _mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params );
  54.  
  55. extern void GLAPIENTRY
  56. _mesa_Lightiv( GLenum light, GLenum pname, const GLint *params );
  57.  
  58. extern void GLAPIENTRY
  59. _mesa_Lighti( GLenum light, GLenum pname, GLint param );
  60.  
  61. extern void GLAPIENTRY
  62. _mesa_LightModelf( GLenum pname, GLfloat param );
  63.  
  64. extern void GLAPIENTRY
  65. _mesa_LightModelfv( GLenum pname, const GLfloat *params );
  66.  
  67. extern void GLAPIENTRY
  68. _mesa_LightModeli( GLenum pname, GLint param );
  69.  
  70. extern void GLAPIENTRY
  71. _mesa_LightModeliv( GLenum pname, const GLint *params );
  72.  
  73. extern void GLAPIENTRY
  74. _mesa_GetLightfv( GLenum light, GLenum pname, GLfloat *params );
  75.  
  76. extern void GLAPIENTRY
  77. _mesa_GetLightiv( GLenum light, GLenum pname, GLint *params );
  78.  
  79. extern void GLAPIENTRY
  80. _mesa_GetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
  81.  
  82. extern void GLAPIENTRY
  83. _mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params );
  84.  
  85.  
  86. extern void
  87. _mesa_light(struct gl_context *ctx, GLuint lnum, GLenum pname, const GLfloat *params);
  88.  
  89.  
  90. /* Lerp between adjacent values in the f(x) lookup table, giving a
  91.  * continuous function, with adequeate overall accuracy.  (Though
  92.  * still pretty good compared to a straight lookup).
  93.  * Result should be a GLfloat.
  94.  */
  95. #define GET_SHINE_TAB_ENTRY( table, dp, result )                        \
  96. do {                                                                    \
  97.    struct gl_shine_tab *_tab = table;                                   \
  98.    float f = (dp * (SHINE_TABLE_SIZE-1));                               \
  99.    int k = (int) f;                                                     \
  100.    if (k < 0 /* gcc may cast an overflow float value to negative int value*/ \
  101.         || k > SHINE_TABLE_SIZE-2)                                      \
  102.       result = (GLfloat) pow( dp, _tab->shininess );            \
  103.    else                                                                 \
  104.       result = _tab->tab[k] + (f-k)*(_tab->tab[k+1]-_tab->tab[k]);      \
  105. } while (0)
  106.  
  107.  
  108. extern GLuint _mesa_material_bitmask( struct gl_context *ctx,
  109.                                       GLenum face, GLenum pname,
  110.                                       GLuint legal,
  111.                                       const char * );
  112.  
  113. extern void _mesa_invalidate_spot_exp_table( struct gl_light *l );
  114.  
  115. extern void _mesa_invalidate_shine_table( struct gl_context *ctx, GLuint i );
  116.  
  117. extern void _mesa_validate_all_lighting_tables( struct gl_context *ctx );
  118.  
  119. extern void _mesa_update_lighting( struct gl_context *ctx );
  120.  
  121. extern void _mesa_update_tnl_spaces( struct gl_context *ctx, GLuint new_state );
  122.  
  123. extern void _mesa_update_material( struct gl_context *ctx,
  124.                                    GLuint bitmask );
  125.  
  126. extern void _mesa_copy_materials( struct gl_material *dst,
  127.                                   const struct gl_material *src,
  128.                                   GLuint bitmask );
  129.  
  130. extern void _mesa_update_color_material( struct gl_context *ctx,
  131.                                          const GLfloat rgba[4] );
  132.  
  133. extern void _mesa_init_lighting( struct gl_context *ctx );
  134.  
  135. extern void _mesa_free_lighting_data( struct gl_context *ctx );
  136.  
  137. extern void _mesa_allow_light_in_model( struct gl_context *ctx, GLboolean flag );
  138.  
  139. #else
  140. #define _mesa_update_color_material( c, r ) ((void)0)
  141. #define _mesa_validate_all_lighting_tables( c ) ((void)0)
  142. #define _mesa_invalidate_spot_exp_table( l ) ((void)0)
  143. #define _mesa_material_bitmask( c, f, p, l, s ) 0
  144. #define _mesa_init_lighting( c ) ((void)0)
  145. #define _mesa_free_lighting_data( c ) ((void)0)
  146. #define _mesa_update_lighting( c ) ((void)0)
  147. #define _mesa_update_tnl_spaces( c, n ) ((void)0)
  148. #define GET_SHINE_TAB_ENTRY( table, dp, result )  ((result)=0)
  149. #endif
  150.  
  151. #endif
  152.