Initial commit
[profile/ivi/simulator-opengl.git] / es_1_1 / 2Ccolor.c
1 /* 
2  * Copyright (C) 2010 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
3  * 
4  * Contact:
5  * DongKyun Yun <dk77.yun@samsung.com>
6  * SangJin Kim <sangjin3.kim@samsung.com>
7  * HyunGoo Kang <hyungoo1.kang@samsung.com>
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining a copy of
10  * this software and associated documentation files (the "Software"), to deal in
11  * the Software without restriction, including without limitation the rights to
12  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
13  * of the Software, and to permit persons to whom the Software is furnished to do
14  * so, subject to the following conditions:
15  * 
16  * The above copyright notice and this permission notice shall be included in all
17  * copies or substantial portions of the Software.
18  * 
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25  * SOFTWARE.
26  * 
27  * Contributors:
28  * - S-Core Co., Ltd
29  *
30  */
31
32 #include "gl_imp.h"
33
34 #ifdef ALEXGL_PROVIDE_COMMON
35 void GL_APIENTRY EXTFN(Materialf)(GLenum face, GLenum pname, GLfloat param) {
36         switch (face) {
37         default:
38                 INTFN(SetError)(GL_INVALID_ENUM);
39                 return;
40         case GL_FRONT_AND_BACK:
41                 break;
42         }
43         switch (pname) {
44         default:
45                 INTFN(SetError)(GL_INVALID_ENUM);
46                 return;
47         case GL_SHININESS:
48                 break;
49         }
50         FNPTR(Materialf)(face, pname, param);
51 }
52 #endif
53
54 void GL_APIENTRY EXTFN(Materialx)(GLenum face, GLenum pname, GLfixed param) {
55         register GLfloat fValue = x2f(param);
56         switch (face) {
57         default:
58                 INTFN(SetError)(GL_INVALID_ENUM);
59                 return;
60         case GL_FRONT_AND_BACK:
61                 break;
62         }
63         switch (pname) {
64         default:
65                 INTFN(SetError)(GL_INVALID_ENUM);
66                 return;
67         case GL_SHININESS:
68                 break;
69         }
70         FNPTR(Materialf)(face, pname, fValue);
71 }
72
73 #ifdef ALEXGL_PROVIDE_COMMON
74 void GL_APIENTRY EXTFN(Materialfv)(GLenum face, GLenum pname, const GLfloat* params) {
75         switch (face) {
76         default:
77                 INTFN(SetError)(GL_INVALID_ENUM);
78                 return;
79         case GL_FRONT_AND_BACK:
80                 break;
81         }
82         switch (pname) {
83         default:
84                 INTFN(SetError)(GL_INVALID_ENUM);
85                 return;
86         case GL_AMBIENT_AND_DIFFUSE:
87                 fv2fv(params, CCV(ambientMaterial), 4);
88                 fv2fv(params, CCV(diffuseMaterial), 4);
89                 FNPTR(Materialfv)(face, pname, params);
90                 break;
91         case GL_AMBIENT:
92                 fv2fv(params, CCV(ambientMaterial), 4);
93                 FNPTR(Materialfv)(face, pname, params);
94                 break;
95         case GL_DIFFUSE:
96                 fv2fv(params, CCV(diffuseMaterial), 4);
97                 FNPTR(Materialfv)(face, pname, params);
98                 break;
99         case GL_SPECULAR:
100         case GL_EMISSION:
101         case GL_SHININESS:
102                 FNPTR(Materialfv)(face, pname, params);
103                 break;
104         }
105 }
106 #endif
107
108 void GL_APIENTRY EXTFN(Materialxv)(GLenum face, GLenum pname, const GLfixed* params) {
109         GLfloat f[4];
110         switch (face) {
111         default:
112                 INTFN(SetError)(GL_INVALID_ENUM);
113                 return;
114         case GL_FRONT_AND_BACK:
115                 break;
116         }
117         switch (pname) {
118         default:
119                 INTFN(SetError)(GL_INVALID_ENUM);
120                 return;
121         case GL_AMBIENT_AND_DIFFUSE:
122                 xv2fv(params, CCV(ambientMaterial), 4);
123                 xv2fv(params, CCV(diffuseMaterial), 4);
124                 FNPTR(Materialfv)(face, pname, CCV(ambientMaterial));
125                 break;
126         case GL_AMBIENT:
127                 xv2fv(params, CCV(ambientMaterial), 4);
128                 FNPTR(Materialfv)(face, pname, CCV(ambientMaterial));
129                 break;
130         case GL_DIFFUSE:
131                 xv2fv(params, CCV(diffuseMaterial), 4);
132                 FNPTR(Materialfv)(face, pname, CCV(diffuseMaterial));
133                 break;
134         case GL_SPECULAR:
135         case GL_EMISSION:
136                 xv2fv(params, f, 4);
137                 FNPTR(Materialfv)(face, pname, f);
138                 break;
139         case GL_SHININESS:
140                 f[0] = x2f(params[0]);
141                 FNPTR(Materialfv)(face, pname, f);
142                 break;
143         }
144 }
145
146 #ifdef ALEXGL_PROVIDE_COMMON
147 #ifdef ALEXGL_PROVIDE_1_1
148 void GL_APIENTRY EXTFN(GetMaterialfv)(GLenum face, GLenum pname, GLfloat* params) {
149         switch (face) {
150         default:
151                 INTFN(SetError)(GL_INVALID_ENUM);
152                 return;
153         case GL_FRONT:
154         case GL_BACK:
155                 break;
156         }
157         switch (pname) {
158         default:
159                 INTFN(SetError)(GL_INVALID_ENUM);
160                 return;
161         case GL_AMBIENT:
162         case GL_DIFFUSE:
163         case GL_SPECULAR:
164         case GL_EMISSION:
165                 FNPTR(GetMaterialfv)(face, pname, params);
166                 break;
167         case GL_SHININESS:
168                 FNPTR(GetMaterialfv)(face, pname, params);
169                 break;
170         }
171 }
172 #endif
173 #endif
174
175 #ifdef ALEXGL_PROVIDE_1_1
176 GL_API void GL_APIENTRY EXTFN(GetMaterialxv)(GLenum face, GLenum pname, GLfixed* params) {
177         GLfloat f[4];
178         switch (face) {
179         default:
180                 INTFN(SetError)(GL_INVALID_ENUM);
181                 return;
182         case GL_FRONT:
183         case GL_BACK:
184                 break;
185         }
186         switch (pname) {
187         default:
188                 INTFN(SetError)(GL_INVALID_ENUM);
189                 return;
190         case GL_AMBIENT:
191         case GL_DIFFUSE:
192         case GL_SPECULAR:
193         case GL_EMISSION:
194                 FNPTR(GetMaterialfv)(face, pname, f);
195                 fv2xv(f, params, 4);
196                 break;
197         case GL_SHININESS:
198                 FNPTR(GetMaterialfv)(face, pname, f);
199                 params[0] = f2x(f[0]);
200                 break;
201         }
202 }
203 #endif
204
205
206 #ifdef ALEXGL_PROVIDE_COMMON
207 GL_API void GL_APIENTRY EXTFN(Lightf)(GLenum light, GLenum pname, GLfloat param) {
208         FNPTR(Lightf)(light, pname, param);
209 }
210 #endif
211
212 #ifdef ALEXGL_PROVIDE_COMMON
213 GL_API void GL_APIENTRY EXTFN(Lightfv)(GLenum light, GLenum pname, const GLfloat* params) {
214         FNPTR(Lightfv)(light, pname, params);
215 }
216 #endif
217
218 GL_API void GL_APIENTRY EXTFN(Lightx)(GLenum light, GLenum pname, GLfixed param) {
219         FNPTR(Lightf)(light, pname, x2f(param));
220 }
221
222 GL_API void GL_APIENTRY EXTFN(Lightxv)(GLenum light, GLenum pname, const GLfixed* params) {
223         GLfloat f[4];
224         xv2fv(params, f, 4);
225         FNPTR(Lightfv)(light, pname, f);
226 }
227
228 #ifdef ALEXGL_PROVIDE_COMMON
229 #ifdef ALEXGL_PROVIDE_1_1
230 GL_API void GL_APIENTRY EXTFN(GetLightfv)(GLenum light, GLenum pname, GLfloat* params) {
231         FNPTR(GetLightfv)(light, pname, params);
232 }
233 #endif
234 #endif
235
236 #ifdef ALEXGL_PROVIDE_1_1
237 GL_API void GL_APIENTRY EXTFN(GetLightxv)(GLenum light, GLenum pname, GLfixed* params) {
238         GLfloat f[4];
239         FNPTR(GetLightfv)(light, pname, f);
240         fv2xv(f, params, 4);
241 }
242 #endif
243
244 #ifdef ALEXGL_PROVIDE_COMMON
245 GL_API void GL_APIENTRY EXTFN(LightModelf)(GLenum pname, GLfloat param) {
246         if (pname != GL_LIGHT_MODEL_TWO_SIDE) {
247                 INTFN(SetError)(GL_INVALID_ENUM);
248                 return;
249         }
250         FNPTR(LightModelf)(pname, param);
251 }
252 #endif
253
254 #ifdef ALEXGL_PROVIDE_COMMON
255 GL_API void GL_APIENTRY EXTFN(LightModelfv)(GLenum pname, const GLfloat* params) {
256         if (pname != GL_LIGHT_MODEL_TWO_SIDE && pname != GL_LIGHT_MODEL_AMBIENT) {
257                 INTFN(SetError)(GL_INVALID_ENUM);
258                 return;
259         }
260         FNPTR(LightModelfv)(pname, params);
261 }
262 #endif
263
264 GL_API void GL_APIENTRY EXTFN(LightModelx)(GLenum pname, GLfixed param) {
265         if (pname != GL_LIGHT_MODEL_TWO_SIDE) {
266                 INTFN(SetError)(GL_INVALID_ENUM);
267                 return;
268         }
269         FNPTR(LightModelf)(pname, x2f(param));
270 }
271
272 GL_API void GL_APIENTRY EXTFN(LightModelxv)(GLenum pname, const GLfixed* params) {
273         if (pname != GL_LIGHT_MODEL_TWO_SIDE && pname != GL_LIGHT_MODEL_AMBIENT) {
274                 INTFN(SetError)(GL_INVALID_ENUM);
275                 return;
276         }
277         GLfloat f[4];
278         xv2fv(params, f, 4);
279         FNPTR(LightModelfv)(pname, f);
280 }
281
282 GL_API void GL_APIENTRY EXTFN(ShadeModel)(GLenum mode) {
283         FNPTR(ShadeModel)(mode);
284 }
285