1 #ifndef	TINYGL_GLU
    2 #define	TINYGL_GLU
    3 
    4 #include <tgl/gl.h>
    5 
    6 #ifdef __cplusplus
    7 extern "C" {
    8 #endif
    9 
   10 /* Boolean */
   11 #define GLU_FALSE                          0
   12 #define GLU_TRUE                           1
   13 
   14 /* ErrorCode */
   15 #define GLU_INVALID_ENUM                   100900
   16 #define GLU_INVALID_VALUE                  100901
   17 #define GLU_OUT_OF_MEMORY                  100902
   18 #define GLU_INVALID_OPERATION              100904
   19 
   20 #define GLU_ERROR                          100103
   21 #define GLU_NO_ERROR                       GL_NO_ERROR
   22 
   23 /* TessCallback */
   24 #define GLU_TESS_BEGIN                     100100
   25 #define GLU_BEGIN                          100100
   26 #define GLU_TESS_VERTEX                    100101
   27 #define GLU_VERTEX                         100101
   28 #define GLU_TESS_END                       100102
   29 #define GLU_END                            100102
   30 #define GLU_TESS_ERROR                     100103
   31 #define GLU_TESS_EDGE_FLAG                 100104
   32 #define GLU_EDGE_FLAG                      100104
   33 #define GLU_TESS_COMBINE                   100105
   34 #define GLU_TESS_BEGIN_DATA                100106
   35 #define GLU_TESS_VERTEX_DATA               100107
   36 #define GLU_TESS_END_DATA                  100108
   37 #define GLU_TESS_ERROR_DATA                100109
   38 #define GLU_TESS_EDGE_FLAG_DATA            100110
   39 #define GLU_TESS_COMBINE_DATA              100111
   40 
   41 /* TessContour */
   42 #define GLU_CW                             100120
   43 #define GLU_CCW                            100121
   44 #define GLU_INTERIOR                       100122
   45 #define GLU_EXTERIOR                       100123
   46 #define GLU_UNKNOWN                        100124
   47 
   48 /* TessProperty */
   49 #define GLU_TESS_WINDING_RULE              100140
   50 #define GLU_TESS_BOUNDARY_ONLY             100141
   51 #define GLU_TESS_TOLERANCE                 100142
   52 
   53 /* TessError */
   54 #define GLU_TESS_ERROR1                    100151
   55 #define GLU_TESS_ERROR2                    100152
   56 #define GLU_TESS_ERROR3                    100153
   57 #define GLU_TESS_ERROR4                    100154
   58 #define GLU_TESS_ERROR5                    100155
   59 #define GLU_TESS_ERROR6                    100156
   60 #define GLU_TESS_ERROR7                    100157
   61 #define GLU_TESS_ERROR8                    100158
   62 #define GLU_TESS_MISSING_BEGIN_POLYGON     100151
   63 #define GLU_TESS_MISSING_BEGIN_CONTOUR     100152
   64 #define GLU_TESS_MISSING_END_POLYGON       100153
   65 #define GLU_TESS_MISSING_END_CONTOUR       100154
   66 #define GLU_TESS_COORD_TOO_LARGE           100155
   67 #define GLU_TESS_NEED_COMBINE_CALLBACK     100156
   68 
   69 /* TessWinding */
   70 #define GLU_TESS_WINDING_ODD               100130
   71 #define GLU_TESS_WINDING_NONZERO           100131
   72 #define GLU_TESS_WINDING_POSITIVE          100132
   73 #define GLU_TESS_WINDING_NEGATIVE          100133
   74 #define GLU_TESS_WINDING_ABS_GEQ_TWO       100134
   75 
   76 /* QuadricDrawStyle */
   77 #define GLU_POINT                          100010
   78 #define GLU_LINE                           100011
   79 #define GLU_FILL                           100012
   80 #define GLU_SILHOUETTE                     100013
   81 
   82 /* QuadricNormal */
   83 #define GLU_SMOOTH                         100000
   84 #define GLU_FLAT                           100001
   85 #define GLU_NONE                           100002
   86 
   87 /* QuadricOrientation */
   88 #define GLU_OUTSIDE                        100020
   89 #define GLU_INSIDE                         100021
   90 
   91 
   92 #ifdef __cplusplus
   93 class GLUnurbs;
   94 class GLUquadric;
   95 class GLUtesselator;
   96 #else
   97 typedef struct GLUnurbs GLUnurbs;
   98 typedef struct GLUquadric GLUquadric;
   99 typedef struct GLUtesselator GLUtesselator;
  100 #endif
  101 
  102 typedef GLUnurbs GLUnurbsObj;
  103 typedef GLUquadric GLUquadricObj;
  104 typedef GLUtesselator GLUtesselatorObj;
  105 typedef GLUtesselator GLUtriangulatorObj;
  106 
  107 #define GLU_TESS_MAX_COORD 1.0e150
  108 
  109 #ifndef GLAPIENTRY
  110 #define GLAPIENTRY
  111 #endif
  112 
  113 #ifndef GLAPIENTRYP
  114 #define GLAPIENTRYP GLAPIENTRY *
  115 #endif
  116 
  117 typedef void (GLAPIENTRY *_GLUfuncptr)();
  118 
  119 void gluBeginPolygon (GLUtesselator* tess);
  120 void gluDeleteTess (GLUtesselator* tess);
  121 void gluEndPolygon (GLUtesselator* tess);
  122 void gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
  123 struct GLUtesselator* gluNewTess (void);
  124 void gluNextContour (GLUtesselator* tess, GLenum type);
  125 
  126 void gluTessBeginContour (GLUtesselator* tess);
  127 void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
  128 void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
  129 void gluTessEndContour (GLUtesselator* tess);
  130 void gluTessEndPolygon (GLUtesselator* tess);
  131 void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
  132 void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
  133 void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
  134 
  135 void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
  136 void gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
  137 GLUquadric* gluNewQuadric (void);
  138 void gluQuadricTexture (GLUquadric* quad, GLboolean texture);
  139 void gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
  140 void gluQuadricDrawStyle(GLUquadricObj * quadObject, GLenum drawStyle);
  141 void gluQuadricNormals(GLUquadricObj * quadObject, GLenum normals);
  142 
  143 void gluDeleteQuadric (GLUquadric* quad);
  144 void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
  145 void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
  146 void gluPartialDisk(GLUquadricObj * qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);
  147 
  148 GLint gluProject (GLdouble objX, GLdouble objY, GLdouble objZ,const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX,GLdouble* winY, GLdouble* winZ);
  149 GLint gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
  150 
  151 GLint gluBuild2DMipmaps(GLenum target, GLint components, GLsizei width, GLsizei height, GLenum format,GLenum type, void *data);
  152 GLint gluScaleImage(GLenum format, GLsizei widthin, GLsizei heightin,GLenum typein, const void *datain,GLsizei widthout, GLsizei heightout,GLenum typeout, void *dataout);
  153 
  154 /* GLU functions built into tinygl.library */
  155 
  156 #ifdef _NO_PPCINLINE
  157 
  158 void gluPerspective(GLfloat fovy, GLfloat aspect,GLfloat zNear, GLfloat zFar);
  159 void gluPickMatrix(GLfloat x, GLfloat y, GLfloat width, GLfloat height, GLint viewport[4]);
  160 
  161 void gluLookAt(GLfloat cx, GLfloat cy, GLfloat cz,
  162                GLfloat ox, GLfloat oy, GLfloat oz,
  163                GLfloat ux, GLfloat uy, GLfloat uz);
  164 
  165 void gluOrtho2D(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top);
  166 
  167 const GLubyte *gluErrorString(GLenum error);
  168 
  169 #else
  170 
  171 #define	gluLookAt(ex, ey, ez, cx, cy, cz, ux, uy, uz) GLULookAt( __tglContext , ex, ey, ez, cx, cy, cz, ux, uy, uz)
  172 #define	gluPerspective(fovy, aspect, znear, zfar) GLUPerspective( __tglContext , fovy, aspect, znear, zfar)
  173 #define gluPickMatrix(x, y, width, height, viewport) GLUPickMatrix( __tglContext, x, y, width, height, viewport )
  174 #define	gluOrtho2D(left, right, bottom, top) glOrtho(left, right, bottom, top, -1.0, 1.0)
  175 
  176 /* dummy added by Yomgui */
  177 #define gluErrorString(x) (GLubyte *)"<gluErrorString() not implemented>"
  178 
  179 #endif /* _NO_PPCINLINE */
  180 
  181 #ifdef __cplusplus
  182 }
  183 #endif
  184 
  185 #endif /* TINYGL_GLU */
  186