home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / System / Mesa-3.1 / src / api2.c < prev    next >
C/C++ Source or Header  |  2000-01-07  |  30KB  |  1,363 lines

  1. /* $Id: api2.c,v 1.4 1999/11/08 07:36:43 brianp 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 "context.h"
  40. #include "varray.h"
  41. #include "image.h"
  42. #include "macros.h"
  43. #include "matrix.h"
  44. #include "teximage.h"
  45. #include "types.h"
  46. #include "vb.h"
  47. #endif
  48.  
  49.  
  50. /*
  51.  * Part 2 of API functions
  52.  */
  53.  
  54. void 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.  
  64. void GLAPIENTRY glPassThrough(CTX_ARG GLfloat token )
  65. {
  66.    GET_CONTEXT;
  67.    CHECK_CONTEXT;
  68.    (*CC->API.PassThrough)(CC, token);
  69. }
  70.  
  71.  
  72. void 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.  
  80. void 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.  
  102. void 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.  
  123. void 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.  
  131. void 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.  
  139. void 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.  
  147. void 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.  
  155. void 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.  
  163. void GLAPIENTRY glPointSize(CTX_ARG GLfloat size )
  164. {
  165.    GET_CONTEXT;
  166.    CHECK_CONTEXT;
  167.    (*CC->API.PointSize)(CC, size);
  168. }
  169.  
  170.  
  171. void 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.  
  179. void 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 */
  188. void 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.  
  196. void 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.  
  206. void GLAPIENTRY glPopAttrib(CTX_VOID )
  207. {
  208.    GET_CONTEXT;
  209.    CHECK_CONTEXT;
  210.    (*CC->API.PopAttrib)(CC);
  211. }
  212.  
  213.  
  214. void GLAPIENTRY glPopClientAttrib(CTX_VOID )
  215. {
  216.    GET_CONTEXT;
  217.    CHECK_CONTEXT;
  218.    (*CC->API.PopClientAttrib)(CC);
  219. }
  220.  
  221.  
  222. void GLAPIENTRY glPopMatrix(CTX_VOID )
  223. {
  224.    GET_CONTEXT;
  225.    CHECK_CONTEXT;
  226.    (*CC->API.PopMatrix)( CC );
  227. }
  228.  
  229.  
  230. void GLAPIENTRY glPopName(CTX_VOID )
  231. {
  232.    GET_CONTEXT;
  233.    CHECK_CONTEXT;
  234.    (*CC->API.PopName)(CC);
  235. }
  236.  
  237.  
  238. void 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.  
  247. void GLAPIENTRY glPushMatrix(CTX_VOID )
  248. {
  249.    GET_CONTEXT;
  250.    CHECK_CONTEXT;
  251.    (*CC->API.PushMatrix)( CC );
  252. }
  253.  
  254.  
  255. void 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.  
  263. void 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.  
  271. void 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.  
  279. void 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.  
  287. void 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.  
  295. void 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.  
  303. void 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.  
  311. void 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.  
  319. void 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.  
  328. void 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.  
  336. void 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.  
  345. void 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.  
  354. void 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.  
  362. void 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.  
  370. void 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.  
  378. void 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.  
  386. void 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.  
  395. void 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.  
  404. void 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.  
  413. void 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.  
  422. void 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.  
  431. void 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.  
  439. void 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.  
  448. void 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.  
  457. void GLAPIENTRY glReadBuffer(CTX_ARG GLenum mode )
  458. {
  459.    GET_CONTEXT;
  460.    CHECK_CONTEXT;
  461.    (*CC->API.ReadBuffer)( CC, mode );
  462. }
  463.  
  464.  
  465. void 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.  
  474. void 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.  
  483. void 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.  
  491. void 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.  
  500. void 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.  
  509. void 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.  
  518. void 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.  
  526. void 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.  
  535. void 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.  
  544. void 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.  
  552. GLboolean 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.  
  561. void GLAPIENTRY glPushAttrib(CTX_ARG GLbitfield mask )
  562. {
  563.    GET_CONTEXT;
  564.    CHECK_CONTEXT;
  565.    (*CC->API.PushAttrib)(CC, mask);
  566. }
  567.  
  568.  
  569. void GLAPIENTRY glPushClientAttrib(CTX_ARG GLbitfield mask )
  570. {
  571.    GET_CONTEXT;
  572.    CHECK_CONTEXT;
  573.    (*CC->API.PushClientAttrib)(CC, mask);
  574. }
  575.  
  576.  
  577. void GLAPIENTRY glPushName(CTX_ARG GLuint name )
  578. {
  579.    GET_CONTEXT;
  580.    CHECK_CONTEXT;
  581.    (*CC->API.PushName)(CC, name);
  582. }
  583.  
  584.  
  585. GLint 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.  
  593. void 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.  
  602. void 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.  
  610. void 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.  
  618. void 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.  
  626. void 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.  
  634. void GLAPIENTRY glShadeModel(CTX_ARG GLenum mode )
  635. {
  636.    GET_CONTEXT;
  637.    CHECK_CONTEXT;
  638.    (*CC->API.ShadeModel)(CC, mode);
  639. }
  640.  
  641.  
  642. void 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.  
  650. void GLAPIENTRY glStencilMask(CTX_ARG GLuint mask )
  651. {
  652.    GET_CONTEXT;
  653.    CHECK_CONTEXT;
  654.    (*CC->API.StencilMask)(CC, mask);
  655. }
  656.  
  657.  
  658. void 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.  
  710. void GLAPIENTRY glTexCoord1d(CTX_ARG GLdouble s )
  711. {
  712.    TEXCOORD1(s);
  713. }
  714.  
  715.  
  716. void GLAPIENTRY glTexCoord1f(CTX_ARG GLfloat s )
  717. {
  718.    TEXCOORD1(s);
  719. }
  720.  
  721.  
  722. void GLAPIENTRY glTexCoord1i(CTX_ARG GLint s )
  723. {
  724.    TEXCOORD1(s);
  725. }
  726.  
  727.  
  728. void GLAPIENTRY glTexCoord1s(CTX_ARG GLshort s )
  729. {
  730.    TEXCOORD1(s);
  731. }
  732.  
  733.  
  734. void GLAPIENTRY glTexCoord2d(CTX_ARG GLdouble s, GLdouble t )
  735. {
  736.    TEXCOORD2(s,t);
  737. }
  738.  
  739. void GLAPIENTRY glTexCoord2f(CTX_ARG GLfloat s, GLfloat t )
  740. {
  741.    TEXCOORD2(*(&s),*&t); 
  742. }
  743.  
  744.  
  745. void GLAPIENTRY glTexCoord2s(CTX_ARG GLshort s, GLshort t )
  746. {
  747.    TEXCOORD2(s,t);
  748. }
  749.  
  750. void GLAPIENTRY glTexCoord2i(CTX_ARG GLint s, GLint t )
  751. {
  752.    TEXCOORD2(s,t);
  753. }
  754.  
  755.  
  756. void GLAPIENTRY glTexCoord3d(CTX_ARG GLdouble s, GLdouble t, GLdouble r )
  757. {
  758.    TEXCOORD3(s,t,r);
  759. }
  760.  
  761.  
  762. void GLAPIENTRY glTexCoord3f(CTX_ARG GLfloat s, GLfloat t, GLfloat r )
  763. {
  764.    TEXCOORD3(s,t,r);
  765. }
  766.  
  767.  
  768. void GLAPIENTRY glTexCoord3i(CTX_ARG GLint s, GLint t, GLint r )
  769. {
  770.    TEXCOORD3(s,t,r);
  771. }
  772.  
  773.  
  774. void GLAPIENTRY glTexCoord3s(CTX_ARG GLshort s, GLshort t, GLshort r )
  775. {
  776.    TEXCOORD3(s,t,r);
  777. }
  778.  
  779.  
  780. void GLAPIENTRY glTexCoord4d(CTX_ARG GLdouble s, GLdouble t, GLdouble r, GLdouble q )
  781. {
  782.    TEXCOORD4(s,t,r,q)
  783. }
  784.  
  785.  
  786. void GLAPIENTRY glTexCoord4f(CTX_ARG GLfloat s, GLfloat t, GLfloat r, GLfloat q )
  787. {
  788.    TEXCOORD4(s,t,r,q)
  789. }
  790.  
  791.  
  792. void GLAPIENTRY glTexCoord4i(CTX_ARG GLint s, GLint t, GLint r, GLint q )
  793. {
  794.    TEXCOORD4(s,t,r,q)
  795. }
  796.  
  797.  
  798. void GLAPIENTRY glTexCoord4s(CTX_ARG GLshort s, GLshort t, GLshort r, GLshort q )
  799. {
  800.    TEXCOORD4(s,t,r,q)
  801. }
  802.  
  803.  
  804. void GLAPIENTRY glTexCoord1dv(CTX_ARG const GLdouble *v )
  805. {
  806.    TEXCOORD1(v[0]);
  807. }
  808.  
  809.  
  810. void GLAPIENTRY glTexCoord1fv(CTX_ARG const GLfloat *v )
  811. {
  812.    TEXCOORD1(v[0]);
  813. }
  814.  
  815.  
  816. void GLAPIENTRY glTexCoord1iv(CTX_ARG const GLint *v )
  817. {
  818.    TEXCOORD1(v[0]);
  819. }
  820.  
  821.  
  822. void GLAPIENTRY glTexCoord1sv(CTX_ARG const GLshort *v )
  823. {
  824.    TEXCOORD1(v[0]);
  825. }
  826.  
  827.  
  828. void GLAPIENTRY glTexCoord2dv(CTX_ARG const GLdouble *v )
  829. {
  830.    TEXCOORD2(v[0],v[1]);
  831. }
  832.  
  833.  
  834. void GLAPIENTRY glTexCoord2fv(CTX_ARG const GLfloat *v )
  835. {
  836.    TEXCOORD2(v[0],v[1]);
  837. }
  838.  
  839.  
  840. void GLAPIENTRY glTexCoord2iv(CTX_ARG const GLint *v )
  841. {
  842.    TEXCOORD2(v[0],v[1]);
  843. }
  844.  
  845.  
  846. void GLAPIENTRY glTexCoord2sv(CTX_ARG const GLshort *v )
  847. {
  848.    TEXCOORD2(v[0],v[1]);
  849. }
  850.  
  851.  
  852. void GLAPIENTRY glTexCoord3dv(CTX_ARG const GLdouble *v )
  853. {
  854.    TEXCOORD2(v[0],v[1]);
  855. }
  856.  
  857.  
  858. void GLAPIENTRY glTexCoord3fv(CTX_ARG const GLfloat *v )
  859. {
  860.    TEXCOORD3(v[0],v[1],v[2]);
  861. }
  862.  
  863.  
  864. void GLAPIENTRY glTexCoord3iv(CTX_ARG const GLint *v )
  865. {
  866.    TEXCOORD3(v[0],v[1],v[2]);
  867. }
  868.  
  869.  
  870. void GLAPIENTRY glTexCoord3sv(CTX_ARG const GLshort *v )
  871. {
  872.    TEXCOORD3(v[0],v[1],v[2]);
  873. }
  874.  
  875.  
  876. void GLAPIENTRY glTexCoord4dv(CTX_ARG const GLdouble *v )
  877. {
  878.    TEXCOORD4(v[0],v[1],v[2],v[3]);
  879. }
  880.  
  881.  
  882. void GLAPIENTRY glTexCoord4fv(CTX_ARG const GLfloat *v )
  883. {
  884.  
  885.    TEXCOORD4(v[0],v[1],v[2],v[3]);
  886. }
  887.  
  888.  
  889. void GLAPIENTRY glTexCoord4iv(CTX_ARG const GLint *v )
  890. {
  891.    TEXCOORD4(v[0],v[1],v[2],v[3]);
  892. }
  893.  
  894.  
  895. void GLAPIENTRY glTexCoord4sv(CTX_ARG const GLshort *v )
  896. {
  897.    TEXCOORD4(v[0],v[1],v[2],v[3]);
  898. }
  899.  
  900.  
  901.  
  902. void 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.  
  911. void GLAPIENTRY glTexGenf(CTX_ARG GLenum coord, GLenum pname, GLfloat param )
  912. {
  913.    GET_CONTEXT;
  914.    CHECK_CONTEXT;
  915.    (*CC->API.TexGenfv)( CC, coord, pname, ¶m );
  916. }
  917.  
  918.  
  919. void 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.  
  928. void 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.  
  941. void 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.  
  954. void 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.  
  964. void GLAPIENTRY glTexEnvf(CTX_ARG GLenum target, GLenum pname, GLfloat param )
  965. {
  966.    GET_CONTEXT;
  967.    CHECK_CONTEXT;
  968.    (*CC->API.TexEnvfv)( CC, target, pname, ¶m );
  969. }
  970.  
  971.  
  972.  
  973. void 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.  
  985. void 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.  
  994. void 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.  
  1007. void 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.  
  1019. void 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.  
  1031. void 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.  
  1045. void GLAPIENTRY glTexParameterf(CTX_ARG GLenum target, GLenum pname, GLfloat param )
  1046. {
  1047.    GET_CONTEXT;
  1048.    CHECK_CONTEXT;
  1049.    (*CC->API.TexParameterfv)( CC, target, pname, ¶m );
  1050. }
  1051.  
  1052.  
  1053. void 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.  
  1064. void 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.  
  1072. void 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.  
  1093. void 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.  
  1104. void 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.  
  1117. void 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.  
  1130. void 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.  
  1138. void 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.  
  1179. void GLAPIENTRY glVertex2d(CTX_ARG GLdouble x, GLdouble y )
  1180. {
  1181.    GET_IMMEDIATE;
  1182.    VERTEX2( IM, (GLfloat) x, (GLfloat) y );
  1183. }
  1184.  
  1185.  
  1186. void GLAPIENTRY glVertex2f(CTX_ARG GLfloat x, GLfloat y )
  1187. {
  1188.    GET_IMMEDIATE;
  1189.    VERTEX2( IM, *(&x), *(&y) );
  1190. }
  1191.  
  1192. /* Internal use:
  1193.  */
  1194. void gl_Vertex2f( GLcontext *ctx, GLfloat x, GLfloat y )
  1195. {
  1196.    struct immediate *im = ctx->input;
  1197.    VERTEX2( im, x, y );
  1198. }
  1199.  
  1200. void GLAPIENTRY glVertex2i(CTX_ARG GLint x, GLint y )
  1201. {
  1202.    GET_IMMEDIATE;
  1203.    VERTEX2( IM, (GLfloat) x, (GLfloat) y );
  1204. }
  1205.  
  1206. void GLAPIENTRY glVertex2s(CTX_ARG GLshort x, GLshort y )
  1207. {
  1208.    GET_IMMEDIATE;
  1209.    VERTEX2( IM, (GLfloat) x, (GLfloat) y );
  1210. }
  1211.  
  1212. void 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.  
  1219. void GLAPIENTRY glVertex3f(CTX_ARG GLfloat x, GLfloat y, GLfloat z )
  1220. {
  1221.    GET_IMMEDIATE;
  1222.    VERTEX3( IM, *(&x), *(&y), *(&z) ); 
  1223. }
  1224.  
  1225. void 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.  
  1232. void 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.  
  1239. void 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.  
  1246. void 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.  
  1253. void 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.  
  1260. void 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.  
  1267. void GLAPIENTRY glVertex2dv(CTX_ARG const GLdouble *v )
  1268. {
  1269.    GET_IMMEDIATE;
  1270.    VERTEX2( IM, (GLfloat) v[0], (GLfloat) v[1] );
  1271. }
  1272.  
  1273.  
  1274. void GLAPIENTRY glVertex2fv(CTX_ARG const GLfloat *v )
  1275. {
  1276.    GET_IMMEDIATE;
  1277.    VERTEX2( IM, v[0], v[1] );
  1278. }
  1279.  
  1280.  
  1281. void GLAPIENTRY glVertex2iv(CTX_ARG const GLint *v )
  1282. {
  1283.    GET_IMMEDIATE;
  1284.    VERTEX2( IM, (GLfloat) v[0], (GLfloat) v[1] );
  1285. }
  1286.  
  1287.  
  1288. void GLAPIENTRY glVertex2sv(CTX_ARG const GLshort *v )
  1289. {
  1290.    GET_IMMEDIATE;
  1291.    VERTEX2( IM, (GLfloat) v[0], (GLfloat) v[1] );
  1292. }
  1293.  
  1294.  
  1295. void 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.  
  1302. void GLAPIENTRY glVertex3fv(CTX_ARG const GLfloat *v )
  1303. {
  1304.    GET_IMMEDIATE;
  1305.    VERTEX3( IM, v[0], v[1], v[2] );
  1306. }
  1307.  
  1308. void 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.  
  1315. void 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.  
  1322. void 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.  
  1331. void 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.  
  1338. void 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.  
  1347. void 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.  
  1357. void 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.  
  1363.