1 /*
2  *  wtess.h --
3  *
4  *     wings extra includes to avoid external dependencies
5  *     Replaces glu.h and gl.h
6  *
7  *  Copyright (c) 2020 Dan Gudmundsson
8  *
9  */
10 
11 
12 /*
13  * Datatypes
14  */
15 typedef unsigned int	GLenum;
16 typedef unsigned char	GLboolean;
17 typedef unsigned int	GLbitfield;
18 typedef void		GLvoid;
19 typedef signed char	GLbyte;
20 typedef short		GLshort;
21 typedef int		GLint;
22 typedef unsigned char	GLubyte;
23 typedef unsigned short	GLushort;
24 typedef unsigned int	GLuint;
25 typedef int		GLsizei;
26 typedef float		GLfloat;
27 typedef float		GLclampf;
28 typedef double		GLdouble;
29 typedef double		GLclampd;
30 
31 #define GL_FALSE				0
32 #define GL_TRUE					1
33 
34 #define GL_LINE_LOOP				0x0002
35 #define GL_TRIANGLES				0x0004
36 #define GL_TRIANGLE_STRIP			0x0005
37 #define GL_TRIANGLE_FAN				0x0006
38 
39 /* TessCallback */
40 #define GLU_TESS_BEGIN                     100100
41 #define GLU_BEGIN                          100100
42 #define GLU_TESS_VERTEX                    100101
43 #define GLU_VERTEX                         100101
44 #define GLU_TESS_END                       100102
45 #define GLU_END                            100102
46 #define GLU_TESS_ERROR                     100103
47 #define GLU_TESS_EDGE_FLAG                 100104
48 #define GLU_EDGE_FLAG                      100104
49 #define GLU_TESS_COMBINE                   100105
50 #define GLU_TESS_BEGIN_DATA                100106
51 #define GLU_TESS_VERTEX_DATA               100107
52 #define GLU_TESS_END_DATA                  100108
53 #define GLU_TESS_ERROR_DATA                100109
54 #define GLU_TESS_EDGE_FLAG_DATA            100110
55 #define GLU_TESS_COMBINE_DATA              100111
56 
57 /* TessContour */
58 #define GLU_CW                             100120
59 #define GLU_CCW                            100121
60 #define GLU_INTERIOR                       100122
61 #define GLU_EXTERIOR                       100123
62 #define GLU_UNKNOWN                        100124
63 
64 /* TessProperty */
65 #define GLU_TESS_WINDING_RULE              100140
66 #define GLU_TESS_BOUNDARY_ONLY             100141
67 #define GLU_TESS_TOLERANCE                 100142
68 
69 /* TessError */
70 #define GLU_TESS_ERROR1                    100151
71 #define GLU_TESS_ERROR2                    100152
72 #define GLU_TESS_ERROR3                    100153
73 #define GLU_TESS_ERROR4                    100154
74 #define GLU_TESS_ERROR5                    100155
75 #define GLU_TESS_ERROR6                    100156
76 #define GLU_TESS_ERROR7                    100157
77 #define GLU_TESS_ERROR8                    100158
78 #define GLU_TESS_MISSING_BEGIN_POLYGON     100151
79 #define GLU_TESS_MISSING_BEGIN_CONTOUR     100152
80 #define GLU_TESS_MISSING_END_POLYGON       100153
81 #define GLU_TESS_MISSING_END_CONTOUR       100154
82 #define GLU_TESS_COORD_TOO_LARGE           100155
83 #define GLU_TESS_NEED_COMBINE_CALLBACK     100156
84 
85 /* TessWinding */
86 #define GLU_TESS_WINDING_ODD               100130
87 #define GLU_TESS_WINDING_NONZERO           100131
88 #define GLU_TESS_WINDING_POSITIVE          100132
89 #define GLU_TESS_WINDING_NEGATIVE          100133
90 #define GLU_TESS_WINDING_ABS_GEQ_TWO       100134
91 
92 /* ErrorCode */
93 #define GLU_INVALID_ENUM                   100900
94 #define GLU_INVALID_VALUE                  100901
95 #define GLU_OUT_OF_MEMORY                  100902
96 #define GLU_INCOMPATIBLE_GL_VERSION        100903
97 #define GLU_INVALID_OPERATION              100904
98 
99 #define GLAPIENTRY
100 #define GLAPIENTRYP GLAPIENTRY *
101 
102 /* Internal convenience typedefs */
103 typedef void (GLAPIENTRYP _GLUfuncptr)(void);
104 
105 /* else */
106 /*   define GLAPIENTRY __stdcall */
107 /* #  endif */
108 
109 typedef struct GLUtesselator GLUtesselator;
110 typedef GLUtesselator GLUtesselatorObj;
111 typedef GLUtesselator GLUtriangulatorObj;
112 
113 #define GLU_TESS_MAX_COORD 1.0e150
114 
115 GLUtesselator* gluNewTess (void);
116 void gluDeleteTess(GLUtesselator* tess);
117 
118 void gluTessBeginContour (GLUtesselator* tess);
119 void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
120 void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
121 void gluTessEndContour (GLUtesselator* tess);
122 void gluTessEndPolygon (GLUtesselator* tess);
123 void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
124 void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
125 void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
126