17117f1b4Smrg/*
27117f1b4Smrg * Mesa 3-D graphics library
37117f1b4Smrg *
44a49301eSmrg * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
54a49301eSmrg * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
67117f1b4Smrg *
77117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a
87117f1b4Smrg * copy of this software and associated documentation files (the "Software"),
97117f1b4Smrg * to deal in the Software without restriction, including without limitation
107117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
117117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the
127117f1b4Smrg * Software is furnished to do so, subject to the following conditions:
137117f1b4Smrg *
147117f1b4Smrg * The above copyright notice and this permission notice shall be included
157117f1b4Smrg * in all copies or substantial portions of the Software.
167117f1b4Smrg *
177117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
187117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
197117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20af69d88dSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21af69d88dSmrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22af69d88dSmrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23af69d88dSmrg * OTHER DEALINGS IN THE SOFTWARE.
247117f1b4Smrg */
257117f1b4Smrg
267117f1b4Smrg
277117f1b4Smrg#ifndef LIGHT_H
287117f1b4Smrg#define LIGHT_H
297117f1b4Smrg
307117f1b4Smrg
317ec681f3Smrg#include <stdbool.h>
323464ebd5Sriastradh#include "glheader.h"
333464ebd5Sriastradh
343464ebd5Sriastradhstruct gl_context;
353464ebd5Sriastradhstruct gl_light;
363464ebd5Sriastradhstruct gl_material;
377117f1b4Smrg
387117f1b4Smrgextern void GLAPIENTRY
397117f1b4Smrg_mesa_ShadeModel( GLenum mode );
407117f1b4Smrg
414a49301eSmrgextern void GLAPIENTRY
42af69d88dSmrg_mesa_ProvokingVertex(GLenum mode);
434a49301eSmrg
444a49301eSmrg
457117f1b4Smrgextern void GLAPIENTRY
467117f1b4Smrg_mesa_ColorMaterial( GLenum face, GLenum mode );
477117f1b4Smrg
487117f1b4Smrgextern void GLAPIENTRY
497117f1b4Smrg_mesa_Lightf( GLenum light, GLenum pname, GLfloat param );
507117f1b4Smrg
517117f1b4Smrgextern void GLAPIENTRY
527117f1b4Smrg_mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params );
537117f1b4Smrg
547117f1b4Smrgextern void GLAPIENTRY
557117f1b4Smrg_mesa_Lightiv( GLenum light, GLenum pname, const GLint *params );
567117f1b4Smrg
577117f1b4Smrgextern void GLAPIENTRY
587117f1b4Smrg_mesa_Lighti( GLenum light, GLenum pname, GLint param );
597117f1b4Smrg
607117f1b4Smrgextern void GLAPIENTRY
617117f1b4Smrg_mesa_LightModelf( GLenum pname, GLfloat param );
627117f1b4Smrg
637117f1b4Smrgextern void GLAPIENTRY
647117f1b4Smrg_mesa_LightModelfv( GLenum pname, const GLfloat *params );
657117f1b4Smrg
667117f1b4Smrgextern void GLAPIENTRY
677117f1b4Smrg_mesa_LightModeli( GLenum pname, GLint param );
687117f1b4Smrg
697117f1b4Smrgextern void GLAPIENTRY
707117f1b4Smrg_mesa_LightModeliv( GLenum pname, const GLint *params );
717117f1b4Smrg
727117f1b4Smrgextern void GLAPIENTRY
737117f1b4Smrg_mesa_GetLightfv( GLenum light, GLenum pname, GLfloat *params );
747117f1b4Smrg
757117f1b4Smrgextern void GLAPIENTRY
767117f1b4Smrg_mesa_GetLightiv( GLenum light, GLenum pname, GLint *params );
777117f1b4Smrg
787117f1b4Smrgextern void GLAPIENTRY
797117f1b4Smrg_mesa_GetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
807117f1b4Smrg
817117f1b4Smrgextern void GLAPIENTRY
827117f1b4Smrg_mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params );
837117f1b4Smrg
847117f1b4Smrg
857117f1b4Smrgextern void
863464ebd5Sriastradh_mesa_light(struct gl_context *ctx, GLuint lnum, GLenum pname, const GLfloat *params);
877117f1b4Smrg
887117f1b4Smrg
893464ebd5Sriastradhextern GLuint _mesa_material_bitmask( struct gl_context *ctx,
907117f1b4Smrg                                      GLenum face, GLenum pname,
917117f1b4Smrg                                      GLuint legal,
927117f1b4Smrg                                      const char * );
937117f1b4Smrg
947ec681f3Smrgextern GLbitfield _mesa_update_lighting( struct gl_context *ctx );
957ec681f3Smrgextern void _mesa_update_light_materials(struct gl_context *ctx);
967ec681f3Smrgextern bool _mesa_update_tnl_spaces( struct gl_context *ctx, GLuint new_state );
977117f1b4Smrg
983464ebd5Sriastradhextern void _mesa_update_material( struct gl_context *ctx,
997117f1b4Smrg                                   GLuint bitmask );
1007117f1b4Smrg
1013464ebd5Sriastradhextern void _mesa_update_color_material( struct gl_context *ctx,
1027117f1b4Smrg                                         const GLfloat rgba[4] );
1037117f1b4Smrg
1043464ebd5Sriastradhextern void _mesa_init_lighting( struct gl_context *ctx );
1057117f1b4Smrg
1063464ebd5Sriastradhextern void _mesa_allow_light_in_model( struct gl_context *ctx, GLboolean flag );
1077117f1b4Smrg
1087117f1b4Smrg#endif
109