source: trunk/src/opengl/glut/glu.h@ 2602

Last change on this file since 2602 was 2595, checked in by sandervl, 26 years ago

JvdH:Ported SGI GLUT sources + Opengl update

File size: 17.1 KB
Line 
1/*++ BUILD Version: 0004 // Increment this if a change has global effects
2
3Copyright (c) 1985-95, Microsoft Corporation
4
5Module Name:
6
7 glu.h
8
9Abstract:
10
11 Procedure declarations, constant definitions and macros for the OpenGL
12 Utility Library.
13
14--*/
15
16#ifndef __glu_h__
17#ifndef __GLU_H__
18
19#define __glu_h__
20#define __GLU_H__
21
22#include "gl.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28/*
29** Copyright 1991-1993, Silicon Graphics, Inc.
30** All Rights Reserved.
31**
32** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
33** the contents of this file may not be disclosed to third parties, copied or
34** duplicated in any form, in whole or in part, without the prior written
35** permission of Silicon Graphics, Inc.
36**
37** RESTRICTED RIGHTS LEGEND:
38** Use, duplication or disclosure by the Government is subject to restrictions
39** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
40** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
41** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
42** rights reserved under the Copyright Laws of the United States.
43*/
44
45/*
46** Return the error string associated with a particular error code.
47** This will return 0 for an invalid error code.
48**
49** The generic function prototype that can be compiled for ANSI or Unicode
50** is defined as follows:
51**
52** LPCTSTR APIENTRY gluErrorStringWIN (GLenum errCode);
53*/
54#ifdef UNICODE
55#define gluErrorStringWIN(errCode) ((LPCSTR) gluErrorUnicodeStringEXT(errCode))
56#else
57#define gluErrorStringWIN(errCode) ((LPCWSTR) gluErrorString(errCode))
58#endif
59
60const GLubyte* APIENTRY gluErrorString (
61 GLenum errCode);
62
63const wchar_t* APIENTRY gluErrorUnicodeStringEXT (
64 GLenum errCode);
65
66const GLubyte* APIENTRY gluGetString (
67 GLenum name);
68
69void APIENTRY gluOrtho2D (
70 GLdouble left,
71 GLdouble right,
72 GLdouble bottom,
73 GLdouble top);
74
75void APIENTRY gluPerspective (
76 GLdouble fovy,
77 GLdouble aspect,
78 GLdouble zNear,
79 GLdouble zFar);
80
81void APIENTRY gluPickMatrix (
82 GLdouble x,
83 GLdouble y,
84 GLdouble width,
85 GLdouble height,
86 GLint viewport[4]);
87
88void APIENTRY gluLookAt (
89 GLdouble eyex,
90 GLdouble eyey,
91 GLdouble eyez,
92 GLdouble centerx,
93 GLdouble centery,
94 GLdouble centerz,
95 GLdouble upx,
96 GLdouble upy,
97 GLdouble upz);
98
99int APIENTRY gluProject (
100 GLdouble objx,
101 GLdouble objy,
102 GLdouble objz,
103 const GLdouble modelMatrix[16],
104 const GLdouble projMatrix[16],
105 const GLint viewport[4],
106 GLdouble *winx,
107 GLdouble *winy,
108 GLdouble *winz);
109
110int APIENTRY gluUnProject (
111 GLdouble winx,
112 GLdouble winy,
113 GLdouble winz,
114 const GLdouble modelMatrix[16],
115 const GLdouble projMatrix[16],
116 const GLint viewport[4],
117 GLdouble *objx,
118 GLdouble *objy,
119 GLdouble *objz);
120
121
122int APIENTRY gluScaleImage (
123 GLenum format,
124 GLint widthin,
125 GLint heightin,
126 GLenum typein,
127 const void *datain,
128 GLint widthout,
129 GLint heightout,
130 GLenum typeout,
131 void *dataout);
132
133
134int APIENTRY gluBuild1DMipmaps (
135 GLenum target,
136 GLint components,
137 GLint width,
138 GLenum format,
139 GLenum type,
140 const void *data);
141
142int APIENTRY gluBuild2DMipmaps (
143 GLenum target,
144 GLint components,
145 GLint width,
146 GLint height,
147 GLenum format,
148 GLenum type,
149 const void *data);
150
151#ifdef __cplusplus
152
153class GLUnurbs;
154class GLUquadric;
155class GLUtesselator;
156
157/* backwards compatibility: */
158typedef class GLUnurbs GLUnurbsObj;
159typedef class GLUquadric GLUquadricObj;
160typedef class GLUtesselator GLUtesselatorObj;
161typedef class GLUtesselator GLUtriangulatorObj;
162
163#else
164
165typedef struct GLUnurbs GLUnurbs;
166typedef struct GLUquadric GLUquadric;
167typedef struct GLUtesselator GLUtesselator;
168
169/* backwards compatibility: */
170typedef struct GLUnurbs GLUnurbsObj;
171typedef struct GLUquadric GLUquadricObj;
172typedef struct GLUtesselator GLUtesselatorObj;
173typedef struct GLUtesselator GLUtriangulatorObj;
174
175#endif
176
177
178GLUquadric* APIENTRY gluNewQuadric (void);
179void APIENTRY gluDeleteQuadric (
180 GLUquadric *state);
181
182void APIENTRY gluQuadricNormals (
183 GLUquadric *quadObject,
184 GLenum normals);
185
186void APIENTRY gluQuadricTexture (
187 GLUquadric *quadObject,
188 GLboolean textureCoords);
189
190void APIENTRY gluQuadricOrientation (
191 GLUquadric *quadObject,
192 GLenum orientation);
193
194void APIENTRY gluQuadricDrawStyle (
195 GLUquadric *quadObject,
196 GLenum drawStyle);
197
198void APIENTRY gluCylinder (
199 GLUquadric *qobj,
200 GLdouble baseRadius,
201 GLdouble topRadius,
202 GLdouble height,
203 GLint slices,
204 GLint stacks);
205
206void APIENTRY gluDisk (
207 GLUquadric *qobj,
208 GLdouble innerRadius,
209 GLdouble outerRadius,
210 GLint slices,
211 GLint loops);
212
213void APIENTRY gluPartialDisk (
214 GLUquadric *qobj,
215 GLdouble innerRadius,
216 GLdouble outerRadius,
217 GLint slices,
218 GLint loops,
219 GLdouble startAngle,
220 GLdouble sweepAngle);
221
222void APIENTRY gluSphere (
223 GLUquadric *qobj,
224 GLdouble radius,
225 GLint slices,
226 GLint stacks);
227
228void APIENTRY gluQuadricCallback (
229 GLUquadric *qobj,
230 GLenum which,
231 void (CALLBACK* fn)());
232
233GLUtesselator* APIENTRY gluNewTess(
234 void );
235
236void APIENTRY gluDeleteTess(
237 GLUtesselator *tess );
238
239void APIENTRY gluTessBeginPolygon(
240 GLUtesselator *tess,
241 void *polygon_data );
242
243void APIENTRY gluTessBeginContour(
244 GLUtesselator *tess );
245
246void APIENTRY gluTessVertex(
247 GLUtesselator *tess,
248 GLdouble coords[3],
249 void *data );
250
251void APIENTRY gluTessEndContour(
252 GLUtesselator *tess );
253
254void APIENTRY gluTessEndPolygon(
255 GLUtesselator *tess );
256
257void APIENTRY gluTessProperty(
258 GLUtesselator *tess,
259 GLenum which,
260 GLdouble value );
261
262void APIENTRY gluTessNormal(
263 GLUtesselator *tess,
264 GLdouble x,
265 GLdouble y,
266 GLdouble z );
267
268void APIENTRY gluTessCallback(
269 GLUtesselator *tess,
270 GLenum which,
271 void (CALLBACK *fn)());
272
273void APIENTRY gluGetTessProperty(
274 GLUtesselator *tess,
275 GLenum which,
276 GLdouble *value );
277
278GLUnurbs* APIENTRY gluNewNurbsRenderer (void);
279
280void APIENTRY gluDeleteNurbsRenderer (
281 GLUnurbs *nobj);
282
283void APIENTRY gluBeginSurface (
284 GLUnurbs *nobj);
285
286void APIENTRY gluBeginCurve (
287 GLUnurbs *nobj);
288
289void APIENTRY gluEndCurve (
290 GLUnurbs *nobj);
291
292void APIENTRY gluEndSurface (
293 GLUnurbs *nobj);
294
295void APIENTRY gluBeginTrim (
296 GLUnurbs *nobj);
297
298void APIENTRY gluEndTrim (
299 GLUnurbs *nobj);
300
301void APIENTRY gluPwlCurve (
302 GLUnurbs *nobj,
303 GLint count,
304 GLfloat *array,
305 GLint stride,
306 GLenum type);
307
308void APIENTRY gluNurbsCurve (
309 GLUnurbs *nobj,
310 GLint nknots,
311 GLfloat *knot,
312 GLint stride,
313 GLfloat *ctlarray,
314 GLint order,
315 GLenum type);
316
317void APIENTRY
318gluNurbsSurface(
319 GLUnurbs *nobj,
320 GLint sknot_count,
321 float *sknot,
322 GLint tknot_count,
323 GLfloat *tknot,
324 GLint s_stride,
325 GLint t_stride,
326 GLfloat *ctlarray,
327 GLint sorder,
328 GLint torder,
329 GLenum type);
330
331void APIENTRY
332gluLoadSamplingMatrices (
333 GLUnurbs *nobj,
334 const GLfloat modelMatrix[16],
335 const GLfloat projMatrix[16],
336 const GLint viewport[4] );
337
338void APIENTRY
339gluNurbsProperty (
340 GLUnurbs *nobj,
341 GLenum property,
342 GLfloat value );
343
344void APIENTRY
345gluGetNurbsProperty (
346 GLUnurbs *nobj,
347 GLenum property,
348 GLfloat *value );
349
350void APIENTRY
351gluNurbsCallback (
352 GLUnurbs *nobj,
353 GLenum which,
354 void (CALLBACK* fn)() );
355
356
357/**** Callback function prototypes ****/
358
359/* gluQuadricCallback */
360typedef void (CALLBACK* GLUquadricErrorProc) (GLenum);
361
362/* gluTessCallback */
363typedef void (CALLBACK* GLUtessBeginProc) (GLenum);
364typedef void (CALLBACK* GLUtessEdgeFlagProc) (GLboolean);
365typedef void (CALLBACK* GLUtessVertexProc) (void *);
366typedef void (CALLBACK* GLUtessEndProc) (void);
367typedef void (CALLBACK* GLUtessErrorProc) (GLenum);
368typedef void (CALLBACK* GLUtessCombineProc) (GLdouble[3],
369 void*[4],
370 GLfloat[4],
371 void** );
372typedef void (CALLBACK* GLUtessBeginDataProc) (GLenum, void *);
373typedef void (CALLBACK* GLUtessEdgeFlagDataProc) (GLboolean, void *);
374typedef void (CALLBACK* GLUtessVertexDataProc) (void *, void *);
375typedef void (CALLBACK* GLUtessEndDataProc) (void *);
376typedef void (CALLBACK* GLUtessErrorDataProc) (GLenum, void *);
377typedef void (CALLBACK* GLUtessCombineDataProc) (GLdouble[3],
378 void*[4],
379 GLfloat[4],
380 void**,
381 void* );
382
383/* gluNurbsCallback */
384typedef void (CALLBACK* GLUnurbsErrorProc) (GLenum);
385
386
387/**** Generic constants ****/
388
389/* Version */
390#define GLU_VERSION_1_1 1
391#define GLU_VERSION_1_2 1
392
393/* Errors: (return value 0 = no error) */
394#define GLU_INVALID_ENUM 100900
395#define GLU_INVALID_VALUE 100901
396#define GLU_OUT_OF_MEMORY 100902
397#define GLU_INCOMPATIBLE_GL_VERSION 100903
398
399/* StringName */
400#define GLU_VERSION 100800
401#define GLU_EXTENSIONS 100801
402
403/* Boolean */
404#define GLU_TRUE GL_TRUE
405#define GLU_FALSE GL_FALSE
406
407
408/**** Quadric constants ****/
409
410/* QuadricNormal */
411#define GLU_SMOOTH 100000
412#define GLU_FLAT 100001
413#define GLU_NONE 100002
414
415/* QuadricDrawStyle */
416#define GLU_POINT 100010
417#define GLU_LINE 100011
418#define GLU_FILL 100012
419#define GLU_SILHOUETTE 100013
420
421/* QuadricOrientation */
422#define GLU_OUTSIDE 100020
423#define GLU_INSIDE 100021
424
425/* Callback types: */
426/* GLU_ERROR 100103 */
427
428
429/**** Tesselation constants ****/
430
431#define GLU_TESS_MAX_COORD 1.0e150
432
433/* TessProperty */
434#define GLU_TESS_WINDING_RULE 100140
435#define GLU_TESS_BOUNDARY_ONLY 100141
436#define GLU_TESS_TOLERANCE 100142
437
438/* TessWinding */
439#define GLU_TESS_WINDING_ODD 100130
440#define GLU_TESS_WINDING_NONZERO 100131
441#define GLU_TESS_WINDING_POSITIVE 100132
442#define GLU_TESS_WINDING_NEGATIVE 100133
443#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
444
445/* TessCallback */
446#define GLU_TESS_BEGIN 100100 /* void (CALLBACK*)(GLenum type) */
447#define GLU_TESS_VERTEX 100101 /* void (CALLBACK*)(void *data) */
448#define GLU_TESS_END 100102 /* void (CALLBACK*)(void) */
449#define GLU_TESS_ERROR 100103 /* void (CALLBACK*)(GLenum errno) */
450#define GLU_TESS_EDGE_FLAG 100104 /* void (CALLBACK*)(GLboolean boundaryEdge) */
451#define GLU_TESS_COMBINE 100105 /* void (CALLBACK*)(GLdouble coords[3],
452 void *data[4],
453 GLfloat weight[4],
454 void **dataOut) */
455#define GLU_TESS_BEGIN_DATA 100106 /* void (CALLBACK*)(GLenum type,
456 void *polygon_data) */
457#define GLU_TESS_VERTEX_DATA 100107 /* void (CALLBACK*)(void *data,
458 void *polygon_data) */
459#define GLU_TESS_END_DATA 100108 /* void (CALLBACK*)(void *polygon_data) */
460#define GLU_TESS_ERROR_DATA 100109 /* void (CALLBACK*)(GLenum errno,
461 void *polygon_data) */
462#define GLU_TESS_EDGE_FLAG_DATA 100110 /* void (CALLBACK*)(GLboolean boundaryEdge,
463 void *polygon_data) */
464#define GLU_TESS_COMBINE_DATA 100111 /* void (CALLBACK*)(GLdouble coords[3],
465 void *data[4],
466 GLfloat weight[4],
467 void **dataOut,
468 void *polygon_data) */
469
470/* TessError */
471#define GLU_TESS_ERROR1 100151
472#define GLU_TESS_ERROR2 100152
473#define GLU_TESS_ERROR3 100153
474#define GLU_TESS_ERROR4 100154
475#define GLU_TESS_ERROR5 100155
476#define GLU_TESS_ERROR6 100156
477#define GLU_TESS_ERROR7 100157
478#define GLU_TESS_ERROR8 100158
479
480#define GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_ERROR1
481#define GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_ERROR2
482#define GLU_TESS_MISSING_END_POLYGON GLU_TESS_ERROR3
483#define GLU_TESS_MISSING_END_CONTOUR GLU_TESS_ERROR4
484#define GLU_TESS_COORD_TOO_LARGE GLU_TESS_ERROR5
485#define GLU_TESS_NEED_COMBINE_CALLBACK GLU_TESS_ERROR6
486
487/**** NURBS constants ****/
488
489/* NurbsProperty */
490#define GLU_AUTO_LOAD_MATRIX 100200
491#define GLU_CULLING 100201
492#define GLU_SAMPLING_TOLERANCE 100203
493#define GLU_DISPLAY_MODE 100204
494#define GLU_PARAMETRIC_TOLERANCE 100202
495#define GLU_SAMPLING_METHOD 100205
496#define GLU_U_STEP 100206
497#define GLU_V_STEP 100207
498
499/* NurbsSampling */
500#define GLU_PATH_LENGTH 100215
501#define GLU_PARAMETRIC_ERROR 100216
502#define GLU_DOMAIN_DISTANCE 100217
503
504
505/* NurbsTrim */
506#define GLU_MAP1_TRIM_2 100210
507#define GLU_MAP1_TRIM_3 100211
508
509/* NurbsDisplay */
510/* GLU_FILL 100012 */
511#define GLU_OUTLINE_POLYGON 100240
512#define GLU_OUTLINE_PATCH 100241
513
514/* NurbsCallback */
515/* GLU_ERROR 100103 */
516
517/* NurbsErrors */
518#define GLU_NURBS_ERROR1 100251
519#define GLU_NURBS_ERROR2 100252
520#define GLU_NURBS_ERROR3 100253
521#define GLU_NURBS_ERROR4 100254
522#define GLU_NURBS_ERROR5 100255
523#define GLU_NURBS_ERROR6 100256
524#define GLU_NURBS_ERROR7 100257
525#define GLU_NURBS_ERROR8 100258
526#define GLU_NURBS_ERROR9 100259
527#define GLU_NURBS_ERROR10 100260
528#define GLU_NURBS_ERROR11 100261
529#define GLU_NURBS_ERROR12 100262
530#define GLU_NURBS_ERROR13 100263
531#define GLU_NURBS_ERROR14 100264
532#define GLU_NURBS_ERROR15 100265
533#define GLU_NURBS_ERROR16 100266
534#define GLU_NURBS_ERROR17 100267
535#define GLU_NURBS_ERROR18 100268
536#define GLU_NURBS_ERROR19 100269
537#define GLU_NURBS_ERROR20 100270
538#define GLU_NURBS_ERROR21 100271
539#define GLU_NURBS_ERROR22 100272
540#define GLU_NURBS_ERROR23 100273
541#define GLU_NURBS_ERROR24 100274
542#define GLU_NURBS_ERROR25 100275
543#define GLU_NURBS_ERROR26 100276
544#define GLU_NURBS_ERROR27 100277
545#define GLU_NURBS_ERROR28 100278
546#define GLU_NURBS_ERROR29 100279
547#define GLU_NURBS_ERROR30 100280
548#define GLU_NURBS_ERROR31 100281
549#define GLU_NURBS_ERROR32 100282
550#define GLU_NURBS_ERROR33 100283
551#define GLU_NURBS_ERROR34 100284
552#define GLU_NURBS_ERROR35 100285
553#define GLU_NURBS_ERROR36 100286
554#define GLU_NURBS_ERROR37 100287
555
556/**** Backwards compatibility for old tesselator ****/
557
558void APIENTRY gluBeginPolygon( GLUtesselator *tess );
559
560void APIENTRY gluNextContour( GLUtesselator *tess,
561 GLenum type );
562
563void APIENTRY gluEndPolygon( GLUtesselator *tess );
564
565/* Contours types -- obsolete! */
566#define GLU_CW 100120
567#define GLU_CCW 100121
568#define GLU_INTERIOR 100122
569#define GLU_EXTERIOR 100123
570#define GLU_UNKNOWN 100124
571
572/* Names without "TESS_" prefix */
573#define GLU_BEGIN GLU_TESS_BEGIN
574#define GLU_VERTEX GLU_TESS_VERTEX
575#define GLU_END GLU_TESS_END
576#define GLU_ERROR GLU_TESS_ERROR
577#define GLU_EDGE_FLAG GLU_TESS_EDGE_FLAG
578
579#ifdef __cplusplus
580}
581#endif
582
583#endif /* __GLU_H__ */
584#endif /* __glu_h__ */
Note: See TracBrowser for help on using the repository browser.