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