source: trunk/src/opengl/mesa/api2.c@ 3597

Last change on this file since 3597 was 2962, checked in by jeroen, 25 years ago

* empty log message *

File size: 30.4 KB
Line 
1/* $Id: api2.c,v 1.2 2000-03-01 18:49:23 jeroen Exp $ */
2
3/*
4 * Mesa 3-D graphics library
5 * Version: 3.1
6 *
7 * Copyright (C) 1999 Brian Paul All Rights Reserved.
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 */
26
27
28
29#ifdef PC_HEADER
30#include "all.h"
31#else
32#ifndef XFree86Server
33#include <stdio.h>
34#include <stdlib.h>
35#else
36#include "GL/xf86glx.h"
37#endif
38#include "api.h"
39#include "types.h"
40#include "context.h"
41#include "varray.h"
42#include "image.h"
43#include "macros.h"
44#include "matrix.h"
45#include "teximage.h"
46#include "vb.h"
47#endif
48
49
50/*
51 * Part 2 of API functions
52 */
53
54void GLAPIENTRY glOrtho(CTX_ARG GLdouble left, GLdouble right,
55 GLdouble bottom, GLdouble top,
56 GLdouble nearval, GLdouble farval )
57{
58 GET_CONTEXT;
59 CHECK_CONTEXT;
60 (*CC->API.Ortho)(CC, left, right, bottom, top, nearval, farval);
61}
62
63
64void GLAPIENTRY glPassThrough(CTX_ARG GLfloat token )
65{
66 GET_CONTEXT;
67 CHECK_CONTEXT;
68 (*CC->API.PassThrough)(CC, token);
69}
70
71
72void GLAPIENTRY glPixelMapfv(CTX_ARG GLenum map, GLint mapsize, const GLfloat *values )
73{
74 GET_CONTEXT;
75 CHECK_CONTEXT;
76 (*CC->API.PixelMapfv)( CC, map, mapsize, values );
77}
78
79
80void GLAPIENTRY glPixelMapuiv(CTX_ARG GLenum map, GLint mapsize, const GLuint *values )
81{
82 GLfloat fvalues[MAX_PIXEL_MAP_TABLE];
83 GLint i;
84 GET_CONTEXT;
85 CHECK_CONTEXT;
86
87 if (map==GL_PIXEL_MAP_I_TO_I || map==GL_PIXEL_MAP_S_TO_S) {
88 for (i=0;i<mapsize;i++) {
89 fvalues[i] = (GLfloat) values[i];
90 }
91 }
92 else {
93 for (i=0;i<mapsize;i++) {
94 fvalues[i] = UINT_TO_FLOAT( values[i] );
95 }
96 }
97 (*CC->API.PixelMapfv)( CC, map, mapsize, fvalues );
98}
99
100
101
102void GLAPIENTRY glPixelMapusv(CTX_ARG GLenum map, GLint mapsize, const GLushort *values )
103{
104 GLfloat fvalues[MAX_PIXEL_MAP_TABLE];
105 GLint i;
106 GET_CONTEXT;
107 CHECK_CONTEXT;
108
109 if (map==GL_PIXEL_MAP_I_TO_I || map==GL_PIXEL_MAP_S_TO_S) {
110 for (i=0;i<mapsize;i++) {
111 fvalues[i] = (GLfloat) values[i];
112 }
113 }
114 else {
115 for (i=0;i<mapsize;i++) {
116 fvalues[i] = USHORT_TO_FLOAT( values[i] );
117 }
118 }
119 (*CC->API.PixelMapfv)( CC, map, mapsize, fvalues );
120}
121
122
123void GLAPIENTRY glPixelStoref(CTX_ARG GLenum pname, GLfloat param )
124{
125 GET_CONTEXT;
126 CHECK_CONTEXT;
127 (*CC->API.PixelStorei)( CC, pname, (GLint) param );
128}
129
130
131void GLAPIENTRY glPixelStorei(CTX_ARG GLenum pname, GLint param )
132{
133 GET_CONTEXT;
134 CHECK_CONTEXT;
135 (*CC->API.PixelStorei)( CC, pname, param );
136}
137
138
139void GLAPIENTRY glPixelTransferf(CTX_ARG GLenum pname, GLfloat param )
140{
141 GET_CONTEXT;
142 CHECK_CONTEXT;
143 (*CC->API.PixelTransferf)(CC, pname, param);
144}
145
146
147void GLAPIENTRY glPixelTransferi(CTX_ARG GLenum pname, GLint param )
148{
149 GET_CONTEXT;
150 CHECK_CONTEXT;
151 (*CC->API.PixelTransferf)(CC, pname, (GLfloat) param);
152}
153
154
155void GLAPIENTRY glPixelZoom(CTX_ARG GLfloat xfactor, GLfloat yfactor )
156{
157 GET_CONTEXT;
158 CHECK_CONTEXT;
159 (*CC->API.PixelZoom)(CC, xfactor, yfactor);
160}
161
162
163void GLAPIENTRY glPointSize(CTX_ARG GLfloat size )
164{
165 GET_CONTEXT;
166 CHECK_CONTEXT;
167 (*CC->API.PointSize)(CC, size);
168}
169
170
171void GLAPIENTRY glPolygonMode(CTX_ARG GLenum face, GLenum mode )
172{
173 GET_CONTEXT;
174 CHECK_CONTEXT;
175 (*CC->API.PolygonMode)(CC, face, mode);
176}
177
178
179void GLAPIENTRY glPolygonOffset(CTX_ARG GLfloat factor, GLfloat units )
180{
181 GET_CONTEXT;
182 CHECK_CONTEXT;
183 (*CC->API.PolygonOffset)( CC, factor, units );
184}
185
186
187/* GL_EXT_polygon_offset */
188void GLAPIENTRY glPolygonOffsetEXT(CTX_ARG GLfloat factor, GLfloat bias )
189{
190 GET_CONTEXT;
191 CHECK_CONTEXT;
192 (*CC->API.PolygonOffset)( CC, factor, bias * DEPTH_SCALE );
193}
194
195
196void GLAPIENTRY glPolygonStipple(CTX_ARG const GLubyte *pattern )
197{
198 GLuint unpackedPattern[32];
199 GET_CONTEXT;
200 CHECK_CONTEXT;
201 gl_unpack_polygon_stipple( CC, pattern, unpackedPattern );
202 (*CC->API.PolygonStipple)(CC, unpackedPattern);
203}
204
205
206void GLAPIENTRY glPopAttrib(CTX_VOID )
207{
208 GET_CONTEXT;
209 CHECK_CONTEXT;
210 (*CC->API.PopAttrib)(CC);
211}
212
213
214void GLAPIENTRY glPopClientAttrib(CTX_VOID )
215{
216 GET_CONTEXT;
217 CHECK_CONTEXT;
218 (*CC->API.PopClientAttrib)(CC);
219}
220
221
222void GLAPIENTRY glPopMatrix(CTX_VOID )
223{
224 GET_CONTEXT;
225 CHECK_CONTEXT;
226 (*CC->API.PopMatrix)( CC );
227}
228
229
230void GLAPIENTRY glPopName(CTX_VOID )
231{
232 GET_CONTEXT;
233 CHECK_CONTEXT;
234 (*CC->API.PopName)(CC);
235}
236
237
238void GLAPIENTRY glPrioritizeTextures(CTX_ARG GLsizei n, const GLuint *textures,
239 const GLclampf *priorities )
240{
241 GET_CONTEXT;
242 CHECK_CONTEXT;
243 (*CC->API.PrioritizeTextures)(CC, n, textures, priorities);
244}
245
246
247void GLAPIENTRY glPushMatrix(CTX_VOID )
248{
249 GET_CONTEXT;
250 CHECK_CONTEXT;
251 (*CC->API.PushMatrix)( CC );
252}
253
254
255void GLAPIENTRY glRasterPos2d(CTX_ARG GLdouble x, GLdouble y )
256{
257 GET_CONTEXT;
258 CHECK_CONTEXT;
259 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
260}
261
262
263void GLAPIENTRY glRasterPos2f(CTX_ARG GLfloat x, GLfloat y )
264{
265 GET_CONTEXT;
266 CHECK_CONTEXT;
267 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
268}
269
270
271void GLAPIENTRY glRasterPos2i(CTX_ARG GLint x, GLint y )
272{
273 GET_CONTEXT;
274 CHECK_CONTEXT;
275 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
276}
277
278
279void GLAPIENTRY glRasterPos2s(CTX_ARG GLshort x, GLshort y )
280{
281 GET_CONTEXT;
282 CHECK_CONTEXT;
283 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, 0.0F, 1.0F );
284}
285
286
287void GLAPIENTRY glRasterPos3d(CTX_ARG GLdouble x, GLdouble y, GLdouble z )
288{
289 GET_CONTEXT;
290 CHECK_CONTEXT;
291 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
292}
293
294
295void GLAPIENTRY glRasterPos3f(CTX_ARG GLfloat x, GLfloat y, GLfloat z )
296{
297 GET_CONTEXT;
298 CHECK_CONTEXT;
299 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
300}
301
302
303void GLAPIENTRY glRasterPos3i(CTX_ARG GLint x, GLint y, GLint z )
304{
305 GET_CONTEXT;
306 CHECK_CONTEXT;
307 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
308}
309
310
311void GLAPIENTRY glRasterPos3s(CTX_ARG GLshort x, GLshort y, GLshort z )
312{
313 GET_CONTEXT;
314 CHECK_CONTEXT;
315 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F );
316}
317
318
319void GLAPIENTRY glRasterPos4d(CTX_ARG GLdouble x, GLdouble y, GLdouble z, GLdouble w )
320{
321 GET_CONTEXT;
322 CHECK_CONTEXT;
323 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y,
324 (GLfloat) z, (GLfloat) w );
325}
326
327
328void GLAPIENTRY glRasterPos4f(CTX_ARG GLfloat x, GLfloat y, GLfloat z, GLfloat w )
329{
330 GET_CONTEXT;
331 CHECK_CONTEXT;
332 (*CC->API.RasterPos4f)( CC, x, y, z, w );
333}
334
335
336void GLAPIENTRY glRasterPos4i(CTX_ARG GLint x, GLint y, GLint z, GLint w )
337{
338 GET_CONTEXT;
339 CHECK_CONTEXT;
340 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y,
341 (GLfloat) z, (GLfloat) w );
342}
343
344
345void GLAPIENTRY glRasterPos4s(CTX_ARG GLshort x, GLshort y, GLshort z, GLshort w )
346{
347 GET_CONTEXT;
348 CHECK_CONTEXT;
349 (*CC->API.RasterPos4f)( CC, (GLfloat) x, (GLfloat) y,
350 (GLfloat) z, (GLfloat) w );
351}
352
353
354void GLAPIENTRY glRasterPos2dv(CTX_ARG const GLdouble *v )
355{
356 GET_CONTEXT;
357 CHECK_CONTEXT;
358 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F );
359}
360
361
362void GLAPIENTRY glRasterPos2fv(CTX_ARG const GLfloat *v )
363{
364 GET_CONTEXT;
365 CHECK_CONTEXT;
366 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F );
367}
368
369
370void GLAPIENTRY glRasterPos2iv(CTX_ARG const GLint *v )
371{
372 GET_CONTEXT;
373 CHECK_CONTEXT;
374 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F );
375}
376
377
378void GLAPIENTRY glRasterPos2sv(CTX_ARG const GLshort *v )
379{
380 GET_CONTEXT;
381 CHECK_CONTEXT;
382 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F );
383}
384
385
386void GLAPIENTRY glRasterPos3dv(CTX_ARG const GLdouble *v )
387{
388 GET_CONTEXT;
389 CHECK_CONTEXT;
390 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
391 (GLfloat) v[2], 1.0F );
392}
393
394
395void GLAPIENTRY glRasterPos3fv(CTX_ARG const GLfloat *v )
396{
397 GET_CONTEXT;
398 CHECK_CONTEXT;
399 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
400 (GLfloat) v[2], 1.0F );
401}
402
403
404void GLAPIENTRY glRasterPos3iv(CTX_ARG const GLint *v )
405{
406 GET_CONTEXT;
407 CHECK_CONTEXT;
408 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
409 (GLfloat) v[2], 1.0F );
410}
411
412
413void GLAPIENTRY glRasterPos3sv(CTX_ARG const GLshort *v )
414{
415 GET_CONTEXT;
416 CHECK_CONTEXT;
417 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
418 (GLfloat) v[2], 1.0F );
419}
420
421
422void GLAPIENTRY glRasterPos4dv(CTX_ARG const GLdouble *v )
423{
424 GET_CONTEXT;
425 CHECK_CONTEXT;
426 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
427 (GLfloat) v[2], (GLfloat) v[3] );
428}
429
430
431void GLAPIENTRY glRasterPos4fv(CTX_ARG const GLfloat *v )
432{
433 GET_CONTEXT;
434 CHECK_CONTEXT;
435 (*CC->API.RasterPos4f)( CC, v[0], v[1], v[2], v[3] );
436}
437
438
439void GLAPIENTRY glRasterPos4iv(CTX_ARG const GLint *v )
440{
441 GET_CONTEXT;
442 CHECK_CONTEXT;
443 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
444 (GLfloat) v[2], (GLfloat) v[3] );
445}
446
447
448void GLAPIENTRY glRasterPos4sv(CTX_ARG const GLshort *v )
449{
450 GET_CONTEXT;
451 CHECK_CONTEXT;
452 (*CC->API.RasterPos4f)( CC, (GLfloat) v[0], (GLfloat) v[1],
453 (GLfloat) v[2], (GLfloat) v[3] );
454}
455
456
457void GLAPIENTRY glReadBuffer(CTX_ARG GLenum mode )
458{
459 GET_CONTEXT;
460 CHECK_CONTEXT;
461 (*CC->API.ReadBuffer)( CC, mode );
462}
463
464
465void GLAPIENTRY glReadPixels(CTX_ARG GLint x, GLint y, GLsizei width, GLsizei height,
466 GLenum format, GLenum type, GLvoid *pixels )
467{
468 GET_CONTEXT;
469 CHECK_CONTEXT;
470 (*CC->API.ReadPixels)( CC, x, y, width, height, format, type, pixels );
471}
472
473
474void GLAPIENTRY glRectd(CTX_ARG GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 )
475{
476 GET_CONTEXT;
477 CHECK_CONTEXT;
478 (*CC->API.Rectf)( CC, (GLfloat) x1, (GLfloat) y1,
479 (GLfloat) x2, (GLfloat) y2 );
480}
481
482
483void GLAPIENTRY glRectf(CTX_ARG GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 )
484{
485 GET_CONTEXT;
486 CHECK_CONTEXT;
487 (*CC->API.Rectf)( CC, x1, y1, x2, y2 );
488}
489
490
491void GLAPIENTRY glRecti(CTX_ARG GLint x1, GLint y1, GLint x2, GLint y2 )
492{
493 GET_CONTEXT;
494 CHECK_CONTEXT;
495 (*CC->API.Rectf)( CC, (GLfloat) x1, (GLfloat) y1,
496 (GLfloat) x2, (GLfloat) y2 );
497}
498
499
500void GLAPIENTRY glRects(CTX_ARG GLshort x1, GLshort y1, GLshort x2, GLshort y2 )
501{
502 GET_CONTEXT;
503 CHECK_CONTEXT;
504 (*CC->API.Rectf)( CC, (GLfloat) x1, (GLfloat) y1,
505 (GLfloat) x2, (GLfloat) y2 );
506}
507
508
509void GLAPIENTRY glRectdv(CTX_ARG const GLdouble *v1, const GLdouble *v2 )
510{
511 GET_CONTEXT;
512 CHECK_CONTEXT;
513 (*CC->API.Rectf)(CC, (GLfloat) v1[0], (GLfloat) v1[1],
514 (GLfloat) v2[0], (GLfloat) v2[1]);
515}
516
517
518void GLAPIENTRY glRectfv(CTX_ARG const GLfloat *v1, const GLfloat *v2 )
519{
520 GET_CONTEXT;
521 CHECK_CONTEXT;
522 (*CC->API.Rectf)(CC, v1[0], v1[1], v2[0], v2[1]);
523}
524
525
526void GLAPIENTRY glRectiv(CTX_ARG const GLint *v1, const GLint *v2 )
527{
528 GET_CONTEXT;
529 CHECK_CONTEXT;
530 (*CC->API.Rectf)( CC, (GLfloat) v1[0], (GLfloat) v1[1],
531 (GLfloat) v2[0], (GLfloat) v2[1] );
532}
533
534
535void GLAPIENTRY glRectsv(CTX_ARG const GLshort *v1, const GLshort *v2 )
536{
537 GET_CONTEXT;
538 CHECK_CONTEXT;
539 (*CC->API.Rectf)(CC, (GLfloat) v1[0], (GLfloat) v1[1],
540 (GLfloat) v2[0], (GLfloat) v2[1]);
541}
542
543
544void GLAPIENTRY glScissor(CTX_ARG GLint x, GLint y, GLsizei width, GLsizei height)
545{
546 GET_CONTEXT;
547 CHECK_CONTEXT;
548 (*CC->API.Scissor)(CC, x, y, width, height);
549}
550
551
552GLboolean GLAPIENTRY glIsEnabled(CTX_ARG GLenum cap )
553{
554 GET_CONTEXT;
555 CHECK_CONTEXT_RETURN(GL_FALSE);
556 return (*CC->API.IsEnabled)( CC, cap );
557}
558
559
560
561void GLAPIENTRY glPushAttrib(CTX_ARG GLbitfield mask )
562{
563 GET_CONTEXT;
564 CHECK_CONTEXT;
565 (*CC->API.PushAttrib)(CC, mask);
566}
567
568
569void GLAPIENTRY glPushClientAttrib(CTX_ARG GLbitfield mask )
570{
571 GET_CONTEXT;
572 CHECK_CONTEXT;
573 (*CC->API.PushClientAttrib)(CC, mask);
574}
575
576
577void GLAPIENTRY glPushName(CTX_ARG GLuint name )
578{
579 GET_CONTEXT;
580 CHECK_CONTEXT;
581 (*CC->API.PushName)(CC, name);
582}
583
584
585GLint GLAPIENTRY glRenderMode(CTX_ARG GLenum mode )
586{
587 GET_CONTEXT;
588 CHECK_CONTEXT_RETURN(0);
589 return (*CC->API.RenderMode)(CC, mode);
590}
591
592
593void GLAPIENTRY glRotated(CTX_ARG GLdouble angle, GLdouble x, GLdouble y, GLdouble z )
594{
595 GET_CONTEXT;
596 CHECK_CONTEXT;
597 (*CC->API.Rotatef)( CC, (GLfloat) angle,
598 (GLfloat) x, (GLfloat) y, (GLfloat) z );
599}
600
601
602void GLAPIENTRY glRotatef(CTX_ARG GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
603{
604 GET_CONTEXT;
605 CHECK_CONTEXT;
606 (*CC->API.Rotatef)( CC, angle, x, y, z );
607}
608
609
610void GLAPIENTRY glSelectBuffer(CTX_ARG GLsizei size, GLuint *buffer )
611{
612 GET_CONTEXT;
613 CHECK_CONTEXT;
614 (*CC->API.SelectBuffer)(CC, size, buffer);
615}
616
617
618void GLAPIENTRY glScaled(CTX_ARG GLdouble x, GLdouble y, GLdouble z )
619{
620 GET_CONTEXT;
621 CHECK_CONTEXT;
622 (*CC->API.Scalef)( CC, (GLfloat) x, (GLfloat) y, (GLfloat) z );
623}
624
625
626void GLAPIENTRY glScalef(CTX_ARG GLfloat x, GLfloat y, GLfloat z )
627{
628 GET_CONTEXT;
629 CHECK_CONTEXT;
630 (*CC->API.Scalef)( CC, x, y, z );
631}
632
633
634void GLAPIENTRY glShadeModel(CTX_ARG GLenum mode )
635{
636 GET_CONTEXT;
637 CHECK_CONTEXT;
638 (*CC->API.ShadeModel)(CC, mode);
639}
640
641
642void GLAPIENTRY glStencilFunc(CTX_ARG GLenum func, GLint ref, GLuint mask )
643{
644 GET_CONTEXT;
645 CHECK_CONTEXT;
646 (*CC->API.StencilFunc)(CC, func, ref, mask);
647}
648
649
650void GLAPIENTRY glStencilMask(CTX_ARG GLuint mask )
651{
652 GET_CONTEXT;
653 CHECK_CONTEXT;
654 (*CC->API.StencilMask)(CC, mask);
655}
656
657
658void GLAPIENTRY glStencilOp(CTX_ARG GLenum fail, GLenum zfail, GLenum zpass )
659{
660 GET_CONTEXT;
661 CHECK_CONTEXT;
662 (*CC->API.StencilOp)(CC, fail, zfail, zpass);
663}
664
665#define TEXCOORD1(s) \
666{ \
667 GLuint count; \
668 GLfloat *tc; \
669 GET_IMMEDIATE; \
670 count = IM->Count; \
671 IM->Flag[count] |= VERT_TEX0_1; \
672 tc = IM->TexCoord[0][count]; \
673 ASSIGN_4V(tc,s,0,0,1); \
674}
675
676#define TEXCOORD2(s,t) \
677{ \
678 GLuint count; \
679 GLfloat *tc; \
680 GET_IMMEDIATE; \
681 count = IM->Count; \
682 IM->Flag[count] |= VERT_TEX0_12; \
683 tc = IM->TexCoord[0][count]; \
684 ASSIGN_4V(tc, s,t,0,1); \
685}
686
687#define TEXCOORD3(s,t,u) \
688{ \
689 GLuint count; \
690 GLfloat *tc; \
691 GET_IMMEDIATE; \
692 count = IM->Count; \
693 IM->Flag[count] |= VERT_TEX0_123; \
694 tc = IM->TexCoord[0][count]; \
695 ASSIGN_4V(tc, s,t,u,1); \
696}
697
698#define TEXCOORD4(s,t,u,v) \
699{ \
700 GLuint count; \
701 GLfloat *tc; \
702 GET_IMMEDIATE; \
703 count = IM->Count; \
704 IM->Flag[count] |= VERT_TEX0_1234; \
705 tc = IM->TexCoord[0][count]; \
706 ASSIGN_4V(tc, s,t,u,v); \
707}
708
709
710void GLAPIENTRY glTexCoord1d(CTX_ARG GLdouble s )
711{
712 TEXCOORD1(s);
713}
714
715
716void GLAPIENTRY glTexCoord1f(CTX_ARG GLfloat s )
717{
718 TEXCOORD1(s);
719}
720
721
722void GLAPIENTRY glTexCoord1i(CTX_ARG GLint s )
723{
724 TEXCOORD1(s);
725}
726
727
728void GLAPIENTRY glTexCoord1s(CTX_ARG GLshort s )
729{
730 TEXCOORD1(s);
731}
732
733
734void GLAPIENTRY glTexCoord2d(CTX_ARG GLdouble s, GLdouble t )
735{
736 TEXCOORD2(s,t);
737}
738
739void GLAPIENTRY glTexCoord2f(CTX_ARG GLfloat s, GLfloat t )
740{
741 TEXCOORD2(*(&s),*&t);
742}
743
744
745void GLAPIENTRY glTexCoord2s(CTX_ARG GLshort s, GLshort t )
746{
747 TEXCOORD2(s,t);
748}
749
750void GLAPIENTRY glTexCoord2i(CTX_ARG GLint s, GLint t )
751{
752 TEXCOORD2(s,t);
753}
754
755
756void GLAPIENTRY glTexCoord3d(CTX_ARG GLdouble s, GLdouble t, GLdouble r )
757{
758 TEXCOORD3(s,t,r);
759}
760
761
762void GLAPIENTRY glTexCoord3f(CTX_ARG GLfloat s, GLfloat t, GLfloat r )
763{
764 TEXCOORD3(s,t,r);
765}
766
767
768void GLAPIENTRY glTexCoord3i(CTX_ARG GLint s, GLint t, GLint r )
769{
770 TEXCOORD3(s,t,r);
771}
772
773
774void GLAPIENTRY glTexCoord3s(CTX_ARG GLshort s, GLshort t, GLshort r )
775{
776 TEXCOORD3(s,t,r);
777}
778
779
780void GLAPIENTRY glTexCoord4d(CTX_ARG GLdouble s, GLdouble t, GLdouble r, GLdouble q )
781{
782 TEXCOORD4(s,t,r,q)
783}
784
785
786void GLAPIENTRY glTexCoord4f(CTX_ARG GLfloat s, GLfloat t, GLfloat r, GLfloat q )
787{
788 TEXCOORD4(s,t,r,q)
789}
790
791
792void GLAPIENTRY glTexCoord4i(CTX_ARG GLint s, GLint t, GLint r, GLint q )
793{
794 TEXCOORD4(s,t,r,q)
795}
796
797
798void GLAPIENTRY glTexCoord4s(CTX_ARG GLshort s, GLshort t, GLshort r, GLshort q )
799{
800 TEXCOORD4(s,t,r,q)
801}
802
803
804void GLAPIENTRY glTexCoord1dv(CTX_ARG const GLdouble *v )
805{
806 TEXCOORD1(v[0]);
807}
808
809
810void GLAPIENTRY glTexCoord1fv(CTX_ARG const GLfloat *v )
811{
812 TEXCOORD1(v[0]);
813}
814
815
816void GLAPIENTRY glTexCoord1iv(CTX_ARG const GLint *v )
817{
818 TEXCOORD1(v[0]);
819}
820
821
822void GLAPIENTRY glTexCoord1sv(CTX_ARG const GLshort *v )
823{
824 TEXCOORD1(v[0]);
825}
826
827
828void GLAPIENTRY glTexCoord2dv(CTX_ARG const GLdouble *v )
829{
830 TEXCOORD2(v[0],v[1]);
831}
832
833
834void GLAPIENTRY glTexCoord2fv(CTX_ARG const GLfloat *v )
835{
836 TEXCOORD2(v[0],v[1]);
837}
838
839
840void GLAPIENTRY glTexCoord2iv(CTX_ARG const GLint *v )
841{
842 TEXCOORD2(v[0],v[1]);
843}
844
845
846void GLAPIENTRY glTexCoord2sv(CTX_ARG const GLshort *v )
847{
848 TEXCOORD2(v[0],v[1]);
849}
850
851
852void GLAPIENTRY glTexCoord3dv(CTX_ARG const GLdouble *v )
853{
854 TEXCOORD2(v[0],v[1]);
855}
856
857
858void GLAPIENTRY glTexCoord3fv(CTX_ARG const GLfloat *v )
859{
860 TEXCOORD3(v[0],v[1],v[2]);
861}
862
863
864void GLAPIENTRY glTexCoord3iv(CTX_ARG const GLint *v )
865{
866 TEXCOORD3(v[0],v[1],v[2]);
867}
868
869
870void GLAPIENTRY glTexCoord3sv(CTX_ARG const GLshort *v )
871{
872 TEXCOORD3(v[0],v[1],v[2]);
873}
874
875
876void GLAPIENTRY glTexCoord4dv(CTX_ARG const GLdouble *v )
877{
878 TEXCOORD4(v[0],v[1],v[2],v[3]);
879}
880
881
882void GLAPIENTRY glTexCoord4fv(CTX_ARG const GLfloat *v )
883{
884
885 TEXCOORD4(v[0],v[1],v[2],v[3]);
886}
887
888
889void GLAPIENTRY glTexCoord4iv(CTX_ARG const GLint *v )
890{
891 TEXCOORD4(v[0],v[1],v[2],v[3]);
892}
893
894
895void GLAPIENTRY glTexCoord4sv(CTX_ARG const GLshort *v )
896{
897 TEXCOORD4(v[0],v[1],v[2],v[3]);
898}
899
900
901
902void GLAPIENTRY glTexGend(CTX_ARG GLenum coord, GLenum pname, GLdouble param )
903{
904 GLfloat p = (GLfloat) param;
905 GET_CONTEXT;
906 CHECK_CONTEXT;
907 (*CC->API.TexGenfv)( CC, coord, pname, &p );
908}
909
910
911void GLAPIENTRY glTexGenf(CTX_ARG GLenum coord, GLenum pname, GLfloat param )
912{
913 GET_CONTEXT;
914 CHECK_CONTEXT;
915 (*CC->API.TexGenfv)( CC, coord, pname, &param );
916}
917
918
919void GLAPIENTRY glTexGeni(CTX_ARG GLenum coord, GLenum pname, GLint param )
920{
921 GLfloat p = (GLfloat) param;
922 GET_CONTEXT;
923 CHECK_CONTEXT;
924 (*CC->API.TexGenfv)( CC, coord, pname, &p );
925}
926
927
928void GLAPIENTRY glTexGendv(CTX_ARG GLenum coord, GLenum pname, const GLdouble *params )
929{
930 GLfloat p[4];
931 GET_CONTEXT;
932 CHECK_CONTEXT;
933 p[0] = params[0];
934 p[1] = params[1];
935 p[2] = params[2];
936 p[3] = params[3];
937 (*CC->API.TexGenfv)( CC, coord, pname, p );
938}
939
940
941void GLAPIENTRY glTexGeniv(CTX_ARG GLenum coord, GLenum pname, const GLint *params )
942{
943 GLfloat p[4];
944 GET_CONTEXT;
945 CHECK_CONTEXT;
946 p[0] = params[0];
947 p[1] = params[1];
948 p[2] = params[2];
949 p[3] = params[3];
950 (*CC->API.TexGenfv)( CC, coord, pname, p );
951}
952
953
954void GLAPIENTRY glTexGenfv(CTX_ARG GLenum coord, GLenum pname, const GLfloat *params )
955{
956 GET_CONTEXT;
957 CHECK_CONTEXT;
958 (*CC->API.TexGenfv)( CC, coord, pname, params );
959}
960
961
962
963
964void GLAPIENTRY glTexEnvf(CTX_ARG GLenum target, GLenum pname, GLfloat param )
965{
966 GET_CONTEXT;
967 CHECK_CONTEXT;
968 (*CC->API.TexEnvfv)( CC, target, pname, &param );
969}
970
971
972
973void GLAPIENTRY glTexEnvi(CTX_ARG GLenum target, GLenum pname, GLint param )
974{
975 GLfloat p[4];
976 GET_CONTEXT;
977 p[0] = (GLfloat) param;
978 p[1] = p[2] = p[3] = 0.0;
979 CHECK_CONTEXT;
980 (*CC->API.TexEnvfv)( CC, target, pname, p );
981}
982
983
984
985void GLAPIENTRY glTexEnvfv(CTX_ARG GLenum target, GLenum pname, const GLfloat *param )
986{
987 GET_CONTEXT;
988 CHECK_CONTEXT;
989 (*CC->API.TexEnvfv)( CC, target, pname, param );
990}
991
992
993
994void GLAPIENTRY glTexEnviv(CTX_ARG GLenum target, GLenum pname, const GLint *param )
995{
996 GLfloat p[4];
997 GET_CONTEXT;
998 p[0] = INT_TO_FLOAT( param[0] );
999 p[1] = INT_TO_FLOAT( param[1] );
1000 p[2] = INT_TO_FLOAT( param[2] );
1001 p[3] = INT_TO_FLOAT( param[3] );
1002 CHECK_CONTEXT;
1003 (*CC->API.TexEnvfv)( CC, target, pname, p );
1004}
1005
1006
1007void GLAPIENTRY glTexImage1D(CTX_ARG GLenum target, GLint level,
1008 GLint internalformat,
1009 GLsizei width, GLint border,
1010 GLenum format, GLenum type, const GLvoid *pixels )
1011{
1012 GET_CONTEXT;
1013 CHECK_CONTEXT;
1014 (*CC->API.TexImage1D)( CC, target, level, internalformat,
1015 width, border, format, type, pixels );
1016}
1017
1018
1019void GLAPIENTRY glTexImage2D(CTX_ARG GLenum target, GLint level,
1020 GLint internalformat,
1021 GLsizei width, GLsizei height, GLint border,
1022 GLenum format, GLenum type, const GLvoid *pixels )
1023{
1024 GET_CONTEXT;
1025 CHECK_CONTEXT;
1026 (*CC->API.TexImage2D)( CC, target, level, internalformat,
1027 width, height, border, format, type, pixels );
1028}
1029
1030
1031void GLAPIENTRY glTexImage3D(CTX_ARG GLenum target, GLint level,
1032 GLint internalformat,
1033 GLsizei width, GLsizei height, GLsizei depth,
1034 GLint border, GLenum format, GLenum type,
1035 const GLvoid *pixels )
1036{
1037 GET_CONTEXT;
1038 CHECK_CONTEXT;
1039 (*CC->API.TexImage3D)( CC, target, level, internalformat,
1040 width, height, depth, border, format, type,
1041 pixels );
1042}
1043
1044
1045void GLAPIENTRY glTexParameterf(CTX_ARG GLenum target, GLenum pname, GLfloat param )
1046{
1047 GET_CONTEXT;
1048 CHECK_CONTEXT;
1049 (*CC->API.TexParameterfv)( CC, target, pname, &param );
1050}
1051
1052
1053void GLAPIENTRY glTexParameteri(CTX_ARG GLenum target, GLenum pname, GLint param )
1054{
1055 GLfloat fparam[4];
1056 GET_CONTEXT;
1057 fparam[0] = (GLfloat) param;
1058 fparam[1] = fparam[2] = fparam[3] = 0.0;
1059 CHECK_CONTEXT;
1060 (*CC->API.TexParameterfv)( CC, target, pname, fparam );
1061}
1062
1063
1064void GLAPIENTRY glTexParameterfv(CTX_ARG GLenum target, GLenum pname, const GLfloat *params )
1065{
1066 GET_CONTEXT;
1067 CHECK_CONTEXT;
1068 (*CC->API.TexParameterfv)( CC, target, pname, params );
1069}
1070
1071
1072void GLAPIENTRY glTexParameteriv(CTX_ARG GLenum target, GLenum pname, const GLint *params )
1073{
1074 GLfloat p[4];
1075 GET_CONTEXT;
1076 CHECK_CONTEXT;
1077 if (pname==GL_TEXTURE_BORDER_COLOR) {
1078 p[0] = INT_TO_FLOAT( params[0] );
1079 p[1] = INT_TO_FLOAT( params[1] );
1080 p[2] = INT_TO_FLOAT( params[2] );
1081 p[3] = INT_TO_FLOAT( params[3] );
1082 }
1083 else {
1084 p[0] = (GLfloat) params[0];
1085 p[1] = (GLfloat) params[1];
1086 p[2] = (GLfloat) params[2];
1087 p[3] = (GLfloat) params[3];
1088 }
1089 (*CC->API.TexParameterfv)( CC, target, pname, p );
1090}
1091
1092
1093void GLAPIENTRY glTexSubImage1D(CTX_ARG GLenum target, GLint level,
1094 GLint xoffset, GLsizei width, GLenum format,
1095 GLenum type, const GLvoid *pixels )
1096{
1097 GET_CONTEXT;
1098 CHECK_CONTEXT;
1099 (*CC->API.TexSubImage1D)( CC, target, level, xoffset, width,
1100 format, type, pixels );
1101}
1102
1103
1104void GLAPIENTRY glTexSubImage2D(CTX_ARG GLenum target, GLint level,
1105 GLint xoffset, GLint yoffset,
1106 GLsizei width, GLsizei height,
1107 GLenum format, GLenum type,
1108 const GLvoid *pixels )
1109{
1110 GET_CONTEXT;
1111 CHECK_CONTEXT;
1112 (*CC->API.TexSubImage2D)( CC, target, level, xoffset, yoffset,
1113 width, height, format, type, pixels );
1114}
1115
1116
1117void GLAPIENTRY glTexSubImage3D(CTX_ARG GLenum target, GLint level,
1118 GLint xoffset,
1119 GLint yoffset, GLint zoffset, GLsizei width,
1120 GLsizei height, GLsizei depth, GLenum format,
1121 GLenum type, const GLvoid *pixels )
1122{
1123 GET_CONTEXT;
1124 CHECK_CONTEXT;
1125 (*CC->API.TexSubImage3D)( CC, target, level, xoffset, yoffset, zoffset,
1126 width, height, depth, format, type, pixels );
1127}
1128
1129
1130void GLAPIENTRY glTranslated(CTX_ARG GLdouble x, GLdouble y, GLdouble z )
1131{
1132 GET_CONTEXT;
1133 CHECK_CONTEXT;
1134 (*CC->API.Translatef)( CC, (GLfloat) x, (GLfloat) y, (GLfloat) z );
1135}
1136
1137
1138void GLAPIENTRY glTranslatef(CTX_ARG GLfloat x, GLfloat y, GLfloat z )
1139{
1140 GET_CONTEXT;
1141 CHECK_CONTEXT;
1142 (*CC->API.Translatef)( CC, x, y, z );
1143}
1144
1145/* KW: Run into bad problems in reset_vb/fixup_input if we don't fully pad
1146 * the incoming vertices.
1147 */
1148#define VERTEX2(IM, x,y) \
1149{ \
1150 GLuint count = IM->Count++; \
1151 GLfloat *dest = IM->Obj[count]; \
1152 IM->Flag[count] |= VERT_OBJ_2; \
1153 ASSIGN_4V(dest, x, y, 0, 1); \
1154 if (dest == IM->Obj[VB_MAX-1]) \
1155 IM->maybe_transform_vb( IM ); \
1156}
1157
1158#define VERTEX3(IM,x,y,z) \
1159{ \
1160 GLuint count = IM->Count++; \
1161 GLfloat *dest = IM->Obj[count]; \
1162 IM->Flag[count] |= VERT_OBJ_23; \
1163 ASSIGN_4V(dest, x, y, z, 1); \
1164 if (dest == IM->Obj[VB_MAX-1]) \
1165 IM->maybe_transform_vb( IM ); \
1166}
1167
1168#define VERTEX4(IM, x,y,z,w) \
1169{ \
1170 GLuint count = IM->Count++; \
1171 GLfloat *dest = IM->Obj[count]; \
1172 IM->Flag[count] |= VERT_OBJ_234; \
1173 ASSIGN_4V(dest, x, y, z, w); \
1174 if (dest == IM->Obj[VB_MAX-1]) \
1175 IM->maybe_transform_vb( IM ); \
1176}
1177
1178
1179void GLAPIENTRY glVertex2d(CTX_ARG GLdouble x, GLdouble y )
1180{
1181 GET_IMMEDIATE;
1182 VERTEX2( IM, (GLfloat) x, (GLfloat) y );
1183}
1184
1185
1186void GLAPIENTRY glVertex2f(CTX_ARG GLfloat x, GLfloat y )
1187{
1188 GET_IMMEDIATE;
1189 VERTEX2( IM, *(&x), *(&y) );
1190}
1191
1192/* Internal use:
1193 */
1194void gl_Vertex2f( GLcontext *ctx, GLfloat x, GLfloat y )
1195{
1196 struct immediate *im = ctx->input;
1197 VERTEX2( im, x, y );
1198}
1199
1200void GLAPIENTRY glVertex2i(CTX_ARG GLint x, GLint y )
1201{
1202 GET_IMMEDIATE;
1203 VERTEX2( IM, (GLfloat) x, (GLfloat) y );
1204}
1205
1206void GLAPIENTRY glVertex2s(CTX_ARG GLshort x, GLshort y )
1207{
1208 GET_IMMEDIATE;
1209 VERTEX2( IM, (GLfloat) x, (GLfloat) y );
1210}
1211
1212void GLAPIENTRY glVertex3d(CTX_ARG GLdouble x, GLdouble y, GLdouble z )
1213{
1214 GET_IMMEDIATE;
1215 VERTEX3( IM, (GLfloat) x, (GLfloat) y, (GLfloat) z );
1216}
1217
1218
1219void GLAPIENTRY glVertex3f(CTX_ARG GLfloat x, GLfloat y, GLfloat z )
1220{
1221 GET_IMMEDIATE;
1222 VERTEX3( IM, *(&x), *(&y), *(&z) );
1223}
1224
1225void GLAPIENTRY glVertex3i(CTX_ARG GLint x, GLint y, GLint z )
1226{
1227 GET_IMMEDIATE;
1228 VERTEX3( IM, (GLfloat) x, (GLfloat) y, (GLfloat) z );
1229}
1230
1231
1232void GLAPIENTRY glVertex3s(CTX_ARG GLshort x, GLshort y, GLshort z )
1233{
1234 GET_IMMEDIATE;
1235 VERTEX3( IM, (GLfloat) x, (GLfloat) y, (GLfloat) z );
1236}
1237
1238
1239void GLAPIENTRY glVertex4d(CTX_ARG GLdouble x, GLdouble y, GLdouble z, GLdouble w )
1240{
1241 GET_IMMEDIATE;
1242 VERTEX4( IM, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
1243}
1244
1245
1246void GLAPIENTRY glVertex4f(CTX_ARG GLfloat x, GLfloat y, GLfloat z, GLfloat w )
1247{
1248 GET_IMMEDIATE;
1249 VERTEX4( IM, *(&x), *(&y), *(&z), *(&w) );
1250}
1251
1252
1253void GLAPIENTRY glVertex4i(CTX_ARG GLint x, GLint y, GLint z, GLint w )
1254{
1255 GET_IMMEDIATE;
1256 VERTEX4( IM, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
1257}
1258
1259
1260void GLAPIENTRY glVertex4s(CTX_ARG GLshort x, GLshort y, GLshort z, GLshort w )
1261{
1262 GET_IMMEDIATE;
1263 VERTEX4( IM, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
1264}
1265
1266
1267void GLAPIENTRY glVertex2dv(CTX_ARG const GLdouble *v )
1268{
1269 GET_IMMEDIATE;
1270 VERTEX2( IM, (GLfloat) v[0], (GLfloat) v[1] );
1271}
1272
1273
1274void GLAPIENTRY glVertex2fv(CTX_ARG const GLfloat *v )
1275{
1276 GET_IMMEDIATE;
1277 VERTEX2( IM, v[0], v[1] );
1278}
1279
1280
1281void GLAPIENTRY glVertex2iv(CTX_ARG const GLint *v )
1282{
1283 GET_IMMEDIATE;
1284 VERTEX2( IM, (GLfloat) v[0], (GLfloat) v[1] );
1285}
1286
1287
1288void GLAPIENTRY glVertex2sv(CTX_ARG const GLshort *v )
1289{
1290 GET_IMMEDIATE;
1291 VERTEX2( IM, (GLfloat) v[0], (GLfloat) v[1] );
1292}
1293
1294
1295void GLAPIENTRY glVertex3dv(CTX_ARG const GLdouble *v )
1296{
1297 GET_IMMEDIATE;
1298 VERTEX3( IM, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
1299}
1300
1301
1302void GLAPIENTRY glVertex3fv(CTX_ARG const GLfloat *v )
1303{
1304 GET_IMMEDIATE;
1305 VERTEX3( IM, v[0], v[1], v[2] );
1306}
1307
1308void GLAPIENTRY glVertex3iv(CTX_ARG const GLint *v )
1309{
1310 GET_IMMEDIATE;
1311 VERTEX3( IM, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
1312}
1313
1314
1315void GLAPIENTRY glVertex3sv(CTX_ARG const GLshort *v )
1316{
1317 GET_IMMEDIATE;
1318 VERTEX3( IM, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
1319}
1320
1321
1322void GLAPIENTRY glVertex4dv(CTX_ARG const GLdouble *v )
1323{
1324 GET_IMMEDIATE;
1325 VERTEX4( IM,
1326 (GLfloat) v[0], (GLfloat) v[1],
1327 (GLfloat) v[2], (GLfloat) v[3] );
1328}
1329
1330
1331void GLAPIENTRY glVertex4fv(CTX_ARG const GLfloat *v )
1332{
1333 GET_IMMEDIATE;
1334 VERTEX4( IM, v[0], v[1], v[2], v[3] );
1335}
1336
1337
1338void GLAPIENTRY glVertex4iv(CTX_ARG const GLint *v )
1339{
1340 GET_IMMEDIATE;
1341 VERTEX4( IM,
1342 (GLfloat) v[0], (GLfloat) v[1],
1343 (GLfloat) v[2], (GLfloat) v[3] );
1344}
1345
1346
1347void GLAPIENTRY glVertex4sv(CTX_ARG const GLshort *v )
1348{
1349 GET_IMMEDIATE;
1350 VERTEX4( IM,
1351 (GLfloat) v[0], (GLfloat) v[1],
1352 (GLfloat) v[2], (GLfloat) v[3] );
1353}
1354
1355
1356
1357void GLAPIENTRY glViewport(CTX_ARG GLint x, GLint y, GLsizei width, GLsizei height )
1358{
1359 GET_CONTEXT;
1360 (*CC->API.Viewport)( CC, x, y, width, height );
1361}
1362
Note: See TracBrowser for help on using the repository browser.