1 /*
2 	Copyright:  (c) 1999 by Apple Computer, Inc., all rights reserved.
3 */
4 
5 #ifndef __glu_h__
6 #define __glu_h__
7 
8 #include "GL/gl.h"
9 #include "GL/glext.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 
16 /*************************************************************/
17 
18 /* Extensions */
19 #define GLU_EXT_object_space_tess            1
20 #define GLU_EXT_nurbs_tessellator            1
21 
22 /* Boolean */
23 #define GLU_FALSE                            0
24 #define GLU_TRUE                             1
25 
26 /* Version */
27 #define GLU_VERSION_1_1                      1
28 #define GLU_VERSION_1_2                      1
29 #define GLU_VERSION_1_3                      1
30 
31 /* StringName */
32 #define GLU_VERSION                          100800
33 #define GLU_EXTENSIONS                       100801
34 
35 /* ErrorCode */
36 #define GLU_INVALID_ENUM                     100900
37 #define GLU_INVALID_VALUE                    100901
38 #define GLU_OUT_OF_MEMORY                    100902
39 #define GLU_INCOMPATIBLE_GL_VERSION          100903
40 #define GLU_INVALID_OPERATION                100904
41 
42 
43 /* NurbsDisplay */
44 /*      GLU_FILL */
45 #define GLU_OUTLINE_POLYGON                  100240
46 #define GLU_OUTLINE_PATCH                    100241
47 
48 /* NurbsCallback */
49 #define GLU_NURBS_ERROR                    100103
50 #define GLU_ERROR                          100103
51 #define GLU_NURBS_BEGIN                    100164
52 #define GLU_NURBS_BEGIN_EXT                100164
53 #define GLU_NURBS_VERTEX                   100165
54 #define GLU_NURBS_VERTEX_EXT               100165
55 #define GLU_NURBS_NORMAL                   100166
56 #define GLU_NURBS_NORMAL_EXT               100166
57 #define GLU_NURBS_COLOR                    100167
58 #define GLU_NURBS_COLOR_EXT                100167
59 #define GLU_NURBS_TEXTURE_COORD            100168
60 #define GLU_NURBS_TEX_COORD_EXT            100168
61 #define GLU_NURBS_END                      100169
62 #define GLU_NURBS_END_EXT                  100169
63 #define GLU_NURBS_BEGIN_DATA               100170
64 #define GLU_NURBS_BEGIN_DATA_EXT           100170
65 #define GLU_NURBS_VERTEX_DATA              100171
66 #define GLU_NURBS_VERTEX_DATA_EXT          100171
67 #define GLU_NURBS_NORMAL_DATA              100172
68 #define GLU_NURBS_NORMAL_DATA_EXT          100172
69 #define GLU_NURBS_COLOR_DATA               100173
70 #define GLU_NURBS_COLOR_DATA_EXT           100173
71 #define GLU_NURBS_TEXTURE_COORD_DATA       100174
72 #define GLU_NURBS_TEX_COORD_DATA_EXT       100174
73 #define GLU_NURBS_END_DATA                 100175
74 #define GLU_NURBS_END_DATA_EXT             100175
75 
76 /* NurbsError */
77 #define GLU_NURBS_ERROR1                     100251
78 #define GLU_NURBS_ERROR2                     100252
79 #define GLU_NURBS_ERROR3                     100253
80 #define GLU_NURBS_ERROR4                     100254
81 #define GLU_NURBS_ERROR5                     100255
82 #define GLU_NURBS_ERROR6                     100256
83 #define GLU_NURBS_ERROR7                     100257
84 #define GLU_NURBS_ERROR8                     100258
85 #define GLU_NURBS_ERROR9                     100259
86 #define GLU_NURBS_ERROR10                    100260
87 #define GLU_NURBS_ERROR11                    100261
88 #define GLU_NURBS_ERROR12                    100262
89 #define GLU_NURBS_ERROR13                    100263
90 #define GLU_NURBS_ERROR14                    100264
91 #define GLU_NURBS_ERROR15                    100265
92 #define GLU_NURBS_ERROR16                    100266
93 #define GLU_NURBS_ERROR17                    100267
94 #define GLU_NURBS_ERROR18                    100268
95 #define GLU_NURBS_ERROR19                    100269
96 #define GLU_NURBS_ERROR20                    100270
97 #define GLU_NURBS_ERROR21                    100271
98 #define GLU_NURBS_ERROR22                    100272
99 #define GLU_NURBS_ERROR23                    100273
100 #define GLU_NURBS_ERROR24                    100274
101 #define GLU_NURBS_ERROR25                    100275
102 #define GLU_NURBS_ERROR26                    100276
103 #define GLU_NURBS_ERROR27                    100277
104 #define GLU_NURBS_ERROR28                    100278
105 #define GLU_NURBS_ERROR29                    100279
106 #define GLU_NURBS_ERROR30                    100280
107 #define GLU_NURBS_ERROR31                    100281
108 #define GLU_NURBS_ERROR32                    100282
109 #define GLU_NURBS_ERROR33                    100283
110 #define GLU_NURBS_ERROR34                    100284
111 #define GLU_NURBS_ERROR35                    100285
112 #define GLU_NURBS_ERROR36                    100286
113 #define GLU_NURBS_ERROR37                    100287
114 
115 /* NurbsProperty */
116 #define GLU_AUTO_LOAD_MATRIX                 100200
117 #define GLU_CULLING                          100201
118 #define GLU_SAMPLING_TOLERANCE               100203
119 #define GLU_DISPLAY_MODE                     100204
120 #define GLU_PARAMETRIC_TOLERANCE             100202
121 #define GLU_SAMPLING_METHOD                  100205
122 #define GLU_U_STEP                           100206
123 #define GLU_V_STEP                           100207
124 #define GLU_NURBS_MODE                     100160
125 #define GLU_NURBS_MODE_EXT                 100160
126 #define GLU_NURBS_TESSELLATOR              100161
127 #define GLU_NURBS_TESSELLATOR_EXT          100161
128 #define GLU_NURBS_RENDERER                 100162
129 #define GLU_NURBS_RENDERER_EXT             100162
130 
131 /* NurbsSampling */
132 #define GLU_OBJECT_PARAMETRIC_ERROR        100208
133 #define GLU_OBJECT_PARAMETRIC_ERROR_EXT      100208
134 #define GLU_OBJECT_PATH_LENGTH             100209
135 #define GLU_OBJECT_PATH_LENGTH_EXT           100209
136 #define GLU_PATH_LENGTH                      100215
137 #define GLU_PARAMETRIC_ERROR                 100216
138 #define GLU_DOMAIN_DISTANCE                  100217
139 
140 /* NurbsTrim */
141 #define GLU_MAP1_TRIM_2                      100210
142 #define GLU_MAP1_TRIM_3                      100211
143 
144 /* QuadricDrawStyle */
145 #define GLU_POINT                            100010
146 #define GLU_LINE                             100011
147 #define GLU_FILL                             100012
148 #define GLU_SILHOUETTE                       100013
149 
150 /* QuadricCallback */
151 /*      GLU_ERROR */
152 
153 /* QuadricNormal */
154 #define GLU_SMOOTH                           100000
155 #define GLU_FLAT                             100001
156 #define GLU_NONE                             100002
157 
158 /* QuadricOrientation */
159 #define GLU_OUTSIDE                          100020
160 #define GLU_INSIDE                           100021
161 
162 /* TessCallback */
163 #define GLU_TESS_BEGIN                       100100
164 #define GLU_BEGIN                            100100
165 #define GLU_TESS_VERTEX                      100101
166 #define GLU_VERTEX                           100101
167 #define GLU_TESS_END                         100102
168 #define GLU_END                              100102
169 #define GLU_TESS_ERROR                       100103
170 #define GLU_TESS_EDGE_FLAG                   100104
171 #define GLU_EDGE_FLAG                        100104
172 #define GLU_TESS_COMBINE                     100105
173 #define GLU_TESS_BEGIN_DATA                  100106
174 #define GLU_TESS_VERTEX_DATA                 100107
175 #define GLU_TESS_END_DATA                    100108
176 #define GLU_TESS_ERROR_DATA                  100109
177 #define GLU_TESS_EDGE_FLAG_DATA              100110
178 #define GLU_TESS_COMBINE_DATA                100111
179 
180 /* TessContour */
181 #define GLU_CW                               100120
182 #define GLU_CCW                              100121
183 #define GLU_INTERIOR                         100122
184 #define GLU_EXTERIOR                         100123
185 #define GLU_UNKNOWN                          100124
186 
187 /* TessProperty */
188 #define GLU_TESS_WINDING_RULE                100140
189 #define GLU_TESS_BOUNDARY_ONLY               100141
190 #define GLU_TESS_TOLERANCE                   100142
191 
192 /* TessError */
193 #define GLU_TESS_ERROR1                      100151
194 #define GLU_TESS_ERROR2                      100152
195 #define GLU_TESS_ERROR3                      100153
196 #define GLU_TESS_ERROR4                      100154
197 #define GLU_TESS_ERROR5                      100155
198 #define GLU_TESS_ERROR6                      100156
199 #define GLU_TESS_ERROR7                      100157
200 #define GLU_TESS_ERROR8                      100158
201 #define GLU_TESS_MISSING_BEGIN_POLYGON       100151
202 #define GLU_TESS_MISSING_BEGIN_CONTOUR       100152
203 #define GLU_TESS_MISSING_END_POLYGON         100153
204 #define GLU_TESS_MISSING_END_CONTOUR         100154
205 #define GLU_TESS_COORD_TOO_LARGE             100155
206 #define GLU_TESS_NEED_COMBINE_CALLBACK       100156
207 
208 /* TessWinding */
209 #define GLU_TESS_WINDING_ODD                 100130
210 #define GLU_TESS_WINDING_NONZERO             100131
211 #define GLU_TESS_WINDING_POSITIVE            100132
212 #define GLU_TESS_WINDING_NEGATIVE            100133
213 #define GLU_TESS_WINDING_ABS_GEQ_TWO         100134
214 
215 /*************************************************************/
216 
217 
218 #ifdef __cplusplus
219 class GLUnurbs;
220 class GLUquadric;
221 class GLUtesselator;
222 
223 typedef class GLUnurbs GLUnurbsObj;
224 typedef class GLUquadric GLUquadricObj;
225 typedef class GLUtesselator GLUtesselatorObj;
226 typedef class GLUtesselator GLUtriangulatorObj;
227 #else
228 typedef struct GLUnurbs GLUnurbs;
229 typedef struct GLUquadric GLUquadric;
230 typedef struct GLUtesselator GLUtesselator;
231 
232 typedef struct GLUnurbs GLUnurbsObj;
233 typedef struct GLUquadric GLUquadricObj;
234 typedef struct GLUtesselator GLUtesselatorObj;
235 typedef struct GLUtesselator GLUtriangulatorObj;
236 #endif
237 
238 #define GLU_TESS_MAX_COORD 1.0e150
239 
240 extern void gluBeginCurve (GLUnurbs* nurb);
241 extern void gluBeginPolygon (GLUtesselator* tess);
242 extern void gluBeginSurface (GLUnurbs* nurb);
243 extern void gluBeginTrim (GLUnurbs* nurb);
244 extern GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
245 extern GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
246 extern GLint gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
247 extern GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
248 extern GLint gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
249 extern GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
250 extern GLboolean gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
251 extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
252 extern void gluDeleteNurbsRenderer (GLUnurbs* nurb);
253 extern void gluDeleteQuadric (GLUquadric* quad);
254 extern void gluDeleteTess (GLUtesselator* tess);
255 extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
256 extern void gluEndCurve (GLUnurbs* nurb);
257 extern void gluEndPolygon (GLUtesselator* tess);
258 extern void gluEndSurface (GLUnurbs* nurb);
259 extern void gluEndTrim (GLUnurbs* nurb);
260 extern const GLubyte * gluErrorString (GLenum error);
261 extern void gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
262 extern const GLubyte * gluGetString (GLenum name);
263 extern void gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
264 extern void gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
265 extern void gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
266 extern GLUnurbs* gluNewNurbsRenderer (void);
267 extern GLUquadric* gluNewQuadric (void);
268 extern GLUtesselator* gluNewTess (void);
269 extern void gluNextContour (GLUtesselator* tess, GLenum type);
270 extern void gluNurbsCallback (GLUnurbs* nurb, GLenum which, GLvoid (*CallBackFunc)());
271 extern void gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
272 extern void gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
273 extern void gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
274 extern void gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
275 extern void gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
276 extern void gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
277 extern void gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
278 extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
279 extern void gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
280 extern GLint gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
281 extern void gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
282 extern void gluQuadricCallback (GLUquadric* quad, GLenum which, GLvoid (*CallBackFunc)());
283 extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
284 extern void gluQuadricNormals (GLUquadric* quad, GLenum normal);
285 extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
286 extern void gluQuadricTexture (GLUquadric* quad, GLboolean texture);
287 extern GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
288 extern void gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
289 extern void gluTessBeginContour (GLUtesselator* tess);
290 extern void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
291 extern void gluTessCallback (GLUtesselator* tess, GLenum which, GLvoid (*CallBackFunc)());
292 extern void gluTessEndContour (GLUtesselator* tess);
293 extern void gluTessEndPolygon (GLUtesselator* tess);
294 extern void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
295 extern void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
296 extern void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
297 extern GLint gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
298 extern GLint gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble near, GLdouble far, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
299 
300 #ifdef __cplusplus
301 }
302 #endif
303 
304 #endif /* __glu_h__ */
305