Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
glu-libtess.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define USE_MGL_NAMESPACE
 
#define gluNewTess   mgluNewTess
 
#define gluDeleteTess   mgluDeleteTess
 
#define gluTessBeginPolygon   mgluTessBeginPolygon
 
#define gluTessBeginContour   mgluTessBeginContour
 
#define gluTessVertex   mgluTessVertex
 
#define gluTessEndPolygon   mgluTessEndPolygon
 
#define gluTessEndContour   mgluTessEndContour
 
#define gluTessProperty   mgluTessProperty
 
#define gluTessNormal   mgluTessNormal
 
#define gluTessCallback   mgluTessCallback
 
#define gluGetTessProperty   mgluGetTessProperty
 
#define gluBeginPolygon   mgluBeginPolygon
 
#define gluNextContour   mgluNextContour
 
#define gluEndPolygon   mgluEndPolygon
 
#define GLAPI   extern
 
#define GLAPIENTRY
 
#define GL_TRUE   1
 
#define GL_FALSE   0
 
#define GL_LINE_LOOP   0x0002
 
#define GL_TRIANGLES   0x0004
 
#define GL_TRIANGLE_STRIP   0x0005
 
#define GL_TRIANGLE_FAN   0x0006
 
#define GLAPIENTRYP   GLAPIENTRY *
 
#define GLU_VERSION   100800
 
#define GLU_EXTENSIONS   100801
 
#define GLU_INVALID_ENUM   100900
 
#define GLU_INVALID_VALUE   100901
 
#define GLU_OUT_OF_MEMORY   100902
 
#define GLU_INCOMPATIBLE_GL_VERSION   100903
 
#define GLU_INVALID_OPERATION   100904
 
#define GLU_TESS_BEGIN   100100
 
#define GLU_BEGIN   100100
 
#define GLU_TESS_VERTEX   100101
 
#define GLU_VERTEX   100101
 
#define GLU_TESS_END   100102
 
#define GLU_END   100102
 
#define GLU_TESS_ERROR   100103
 
#define GLU_TESS_EDGE_FLAG   100104
 
#define GLU_EDGE_FLAG   100104
 
#define GLU_TESS_COMBINE   100105
 
#define GLU_TESS_BEGIN_DATA   100106
 
#define GLU_TESS_VERTEX_DATA   100107
 
#define GLU_TESS_END_DATA   100108
 
#define GLU_TESS_ERROR_DATA   100109
 
#define GLU_TESS_EDGE_FLAG_DATA   100110
 
#define GLU_TESS_COMBINE_DATA   100111
 
#define GLU_CW   100120
 
#define GLU_CCW   100121
 
#define GLU_INTERIOR   100122
 
#define GLU_EXTERIOR   100123
 
#define GLU_UNKNOWN   100124
 
#define GLU_TESS_WINDING_RULE   100140
 
#define GLU_TESS_BOUNDARY_ONLY   100141
 
#define GLU_TESS_TOLERANCE   100142
 
#define GLU_TESS_ERROR1   100151
 
#define GLU_TESS_ERROR2   100152
 
#define GLU_TESS_ERROR3   100153
 
#define GLU_TESS_ERROR4   100154
 
#define GLU_TESS_ERROR5   100155
 
#define GLU_TESS_ERROR6   100156
 
#define GLU_TESS_ERROR7   100157
 
#define GLU_TESS_ERROR8   100158
 
#define GLU_TESS_MISSING_BEGIN_POLYGON   100151
 
#define GLU_TESS_MISSING_BEGIN_CONTOUR   100152
 
#define GLU_TESS_MISSING_END_POLYGON   100153
 
#define GLU_TESS_MISSING_END_CONTOUR   100154
 
#define GLU_TESS_COORD_TOO_LARGE   100155
 
#define GLU_TESS_NEED_COMBINE_CALLBACK   100156
 
#define GLU_TESS_WINDING_ODD   100130
 
#define GLU_TESS_WINDING_NONZERO   100131
 
#define GLU_TESS_WINDING_POSITIVE   100132
 
#define GLU_TESS_WINDING_NEGATIVE   100133
 
#define GLU_TESS_WINDING_ABS_GEQ_TWO   100134
 
#define GLU_TESS_MAX_COORD   1.0e150
 

Typedefs

typedef unsigned int GLenum
 
typedef unsigned char GLboolean
 
typedef unsigned int GLbitfield
 
typedef signed char GLbyte
 
typedef short GLshort
 
typedef int GLint
 
typedef int GLsizei
 
typedef unsigned char GLubyte
 
typedef unsigned short GLushort
 
typedef unsigned int GLuint
 
typedef float GLfloat
 
typedef float GLclampf
 
typedef double GLdouble
 
typedef double GLclampd
 
typedef void GLvoid
 
typedef struct GLUtesselator GLUtesselator
 
typedef GLUtesselator GLUtesselatorObj
 
typedef GLUtesselator GLUtriangulatorObj
 

Functions

typedef void (GLAPIENTRYP _GLUfuncptr)(void)
 
GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator *tess)
 
GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator *tess)
 
GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator *tess)
 
GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator *tess, GLenum which, GLdouble *data)
 
GLAPI void GLAPIENTRY gluNextContour (GLUtesselator *tess, GLenum type)
 
GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator *tess)
 
GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator *tess, GLvoid *data)
 
GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator *tess, GLenum which, _GLUfuncptr CallBackFunc)
 
GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator *tess)
 
GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator *tess)
 
GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator *tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ)
 
GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator *tess, GLenum which, GLdouble data)
 
GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator *tess, GLdouble *location, GLvoid *data)
 

Macro Definition Documentation

◆ GL_FALSE

#define GL_FALSE   0

◆ GL_LINE_LOOP

#define GL_LINE_LOOP   0x0002

◆ GL_TRIANGLE_FAN

#define GL_TRIANGLE_FAN   0x0006

◆ GL_TRIANGLE_STRIP

#define GL_TRIANGLE_STRIP   0x0005

◆ GL_TRIANGLES

#define GL_TRIANGLES   0x0004

◆ GL_TRUE

#define GL_TRUE   1

◆ GLAPI

#define GLAPI   extern

◆ GLAPIENTRY

#define GLAPIENTRY

◆ GLAPIENTRYP

#define GLAPIENTRYP   GLAPIENTRY *

◆ GLU_BEGIN

#define GLU_BEGIN   100100

◆ GLU_CCW

#define GLU_CCW   100121

◆ GLU_CW

#define GLU_CW   100120

◆ GLU_EDGE_FLAG

#define GLU_EDGE_FLAG   100104

◆ GLU_END

#define GLU_END   100102

◆ GLU_EXTENSIONS

#define GLU_EXTENSIONS   100801

◆ GLU_EXTERIOR

#define GLU_EXTERIOR   100123

◆ GLU_INCOMPATIBLE_GL_VERSION

#define GLU_INCOMPATIBLE_GL_VERSION   100903

◆ GLU_INTERIOR

#define GLU_INTERIOR   100122

◆ GLU_INVALID_ENUM

#define GLU_INVALID_ENUM   100900

◆ GLU_INVALID_OPERATION

#define GLU_INVALID_OPERATION   100904

◆ GLU_INVALID_VALUE

#define GLU_INVALID_VALUE   100901

◆ GLU_OUT_OF_MEMORY

#define GLU_OUT_OF_MEMORY   100902

◆ GLU_TESS_BEGIN

#define GLU_TESS_BEGIN   100100

◆ GLU_TESS_BEGIN_DATA

#define GLU_TESS_BEGIN_DATA   100106

◆ GLU_TESS_BOUNDARY_ONLY

#define GLU_TESS_BOUNDARY_ONLY   100141

◆ GLU_TESS_COMBINE

#define GLU_TESS_COMBINE   100105

◆ GLU_TESS_COMBINE_DATA

#define GLU_TESS_COMBINE_DATA   100111

◆ GLU_TESS_COORD_TOO_LARGE

#define GLU_TESS_COORD_TOO_LARGE   100155

◆ GLU_TESS_EDGE_FLAG

#define GLU_TESS_EDGE_FLAG   100104

◆ GLU_TESS_EDGE_FLAG_DATA

#define GLU_TESS_EDGE_FLAG_DATA   100110

◆ GLU_TESS_END

#define GLU_TESS_END   100102

◆ GLU_TESS_END_DATA

#define GLU_TESS_END_DATA   100108

◆ GLU_TESS_ERROR

#define GLU_TESS_ERROR   100103

◆ GLU_TESS_ERROR1

#define GLU_TESS_ERROR1   100151

◆ GLU_TESS_ERROR2

#define GLU_TESS_ERROR2   100152

◆ GLU_TESS_ERROR3

#define GLU_TESS_ERROR3   100153

◆ GLU_TESS_ERROR4

#define GLU_TESS_ERROR4   100154

◆ GLU_TESS_ERROR5

#define GLU_TESS_ERROR5   100155

◆ GLU_TESS_ERROR6

#define GLU_TESS_ERROR6   100156

◆ GLU_TESS_ERROR7

#define GLU_TESS_ERROR7   100157

◆ GLU_TESS_ERROR8

#define GLU_TESS_ERROR8   100158

◆ GLU_TESS_ERROR_DATA

#define GLU_TESS_ERROR_DATA   100109

◆ GLU_TESS_MAX_COORD

#define GLU_TESS_MAX_COORD   1.0e150

◆ GLU_TESS_MISSING_BEGIN_CONTOUR

#define GLU_TESS_MISSING_BEGIN_CONTOUR   100152

◆ GLU_TESS_MISSING_BEGIN_POLYGON

#define GLU_TESS_MISSING_BEGIN_POLYGON   100151

◆ GLU_TESS_MISSING_END_CONTOUR

#define GLU_TESS_MISSING_END_CONTOUR   100154

◆ GLU_TESS_MISSING_END_POLYGON

#define GLU_TESS_MISSING_END_POLYGON   100153

◆ GLU_TESS_NEED_COMBINE_CALLBACK

#define GLU_TESS_NEED_COMBINE_CALLBACK   100156

◆ GLU_TESS_TOLERANCE

#define GLU_TESS_TOLERANCE   100142

◆ GLU_TESS_VERTEX

#define GLU_TESS_VERTEX   100101

◆ GLU_TESS_VERTEX_DATA

#define GLU_TESS_VERTEX_DATA   100107

◆ GLU_TESS_WINDING_ABS_GEQ_TWO

#define GLU_TESS_WINDING_ABS_GEQ_TWO   100134

◆ GLU_TESS_WINDING_NEGATIVE

#define GLU_TESS_WINDING_NEGATIVE   100133

◆ GLU_TESS_WINDING_NONZERO

#define GLU_TESS_WINDING_NONZERO   100131

◆ GLU_TESS_WINDING_ODD

#define GLU_TESS_WINDING_ODD   100130

◆ GLU_TESS_WINDING_POSITIVE

#define GLU_TESS_WINDING_POSITIVE   100132

◆ GLU_TESS_WINDING_RULE

#define GLU_TESS_WINDING_RULE   100140

◆ GLU_UNKNOWN

#define GLU_UNKNOWN   100124

◆ GLU_VERSION

#define GLU_VERSION   100800

◆ GLU_VERTEX

#define GLU_VERTEX   100101

◆ gluBeginPolygon

#define gluBeginPolygon   mgluBeginPolygon

◆ gluDeleteTess

#define gluDeleteTess   mgluDeleteTess

◆ gluEndPolygon

#define gluEndPolygon   mgluEndPolygon

◆ gluGetTessProperty

#define gluGetTessProperty   mgluGetTessProperty

◆ gluNewTess

GLAPI GLUtesselator *GLAPIENTRY gluNewTess   mgluNewTess

◆ gluNextContour

#define gluNextContour   mgluNextContour

◆ gluTessBeginContour

#define gluTessBeginContour   mgluTessBeginContour

◆ gluTessBeginPolygon

#define gluTessBeginPolygon   mgluTessBeginPolygon

◆ gluTessCallback

#define gluTessCallback   mgluTessCallback

◆ gluTessEndContour

#define gluTessEndContour   mgluTessEndContour

◆ gluTessEndPolygon

#define gluTessEndPolygon   mgluTessEndPolygon

◆ gluTessNormal

#define gluTessNormal   mgluTessNormal

◆ gluTessProperty

#define gluTessProperty   mgluTessProperty

◆ gluTessVertex

#define gluTessVertex   mgluTessVertex

◆ USE_MGL_NAMESPACE

#define USE_MGL_NAMESPACE

Typedef Documentation

◆ GLbitfield

typedef unsigned int GLbitfield

◆ GLboolean

typedef unsigned char GLboolean

◆ GLbyte

typedef signed char GLbyte

◆ GLclampd

typedef double GLclampd

◆ GLclampf

typedef float GLclampf

◆ GLdouble

typedef double GLdouble

◆ GLenum

typedef unsigned int GLenum

◆ GLfloat

typedef float GLfloat

◆ GLint

typedef int GLint

◆ GLshort

typedef short GLshort

◆ GLsizei

typedef int GLsizei

◆ GLubyte

typedef unsigned char GLubyte

◆ GLuint

typedef unsigned int GLuint

◆ GLushort

typedef unsigned short GLushort

◆ GLUtesselator

typedef struct GLUtesselator GLUtesselator

◆ GLUtesselatorObj

◆ GLUtriangulatorObj

◆ GLvoid

typedef void GLvoid

Function Documentation

◆ gluBeginPolygon()

GLAPI void GLAPIENTRY gluBeginPolygon ( GLUtesselator tess)
612{
613 gluTessBeginPolygon( tess, NULL );
614 gluTessBeginContour( tess );
615}
#define gluTessBeginContour
Definition glu-libtess.h:39
#define gluTessBeginPolygon
Definition glu-libtess.h:38

References gluTessBeginContour, and gluTessBeginPolygon.

◆ gluDeleteTess()

GLAPI void GLAPIENTRY gluDeleteTess ( GLUtesselator tess)
194{
195 RequireState( tess, T_DORMANT );
196 memFree( tess );
197}
#define memFree
Definition memalloc.h:41
#define RequireState(tess, s)
Definition tess.c:152
@ T_DORMANT
Definition tess.h:47

References memFree, RequireState, and T_DORMANT.

◆ gluEndPolygon()

GLAPI void GLAPIENTRY gluEndPolygon ( GLUtesselator tess)
629{
630 gluTessEndContour( tess );
631 gluTessEndPolygon( tess );
632}
#define gluTessEndPolygon
Definition glu-libtess.h:41
#define gluTessEndContour
Definition glu-libtess.h:42

References gluTessEndContour, and gluTessEndPolygon.

◆ gluGetTessProperty()

GLAPI void GLAPIENTRY gluGetTessProperty ( GLUtesselator tess,
GLenum  which,
GLdouble data 
)
241{
242 switch (which) {
244 /* tolerance should be in range [0..1] */
245 assert(0.0 <= tess->relTolerance && tess->relTolerance <= 1.0);
246 *value= tess->relTolerance;
247 break;
249 assert(tess->windingRule == GLU_TESS_WINDING_ODD ||
254 *value= tess->windingRule;
255 break;
257 assert(tess->boundaryOnly == TRUE || tess->boundaryOnly == FALSE);
258 *value= tess->boundaryOnly;
259 break;
260 default:
261 *value= 0.0;
263 break;
264 }
265} /* gluGetTessProperty() */
#define GLU_TESS_WINDING_NONZERO
Definition glu-libtess.h:156
#define GLU_TESS_WINDING_POSITIVE
Definition glu-libtess.h:157
#define GLU_INVALID_ENUM
Definition glu-libtess.h:102
#define GLU_TESS_BOUNDARY_ONLY
Definition glu-libtess.h:135
#define GLU_TESS_WINDING_NEGATIVE
Definition glu-libtess.h:158
#define GLU_TESS_WINDING_RULE
Definition glu-libtess.h:134
#define GLU_TESS_TOLERANCE
Definition glu-libtess.h:136
#define GLU_TESS_WINDING_ODD
Definition glu-libtess.h:155
#define GLU_TESS_WINDING_ABS_GEQ_TWO
Definition glu-libtess.h:159
GLboolean boundaryOnly
Definition tess.h:93
GLdouble relTolerance
Definition tess.h:79
GLenum windingRule
Definition tess.h:80
#define TRUE
Definition tess.c:51
#define FALSE
Definition tess.c:54
#define CALL_ERROR_OR_ERROR_DATA(a)
Definition tess.h:160

References GLUtesselator::boundaryOnly, CALL_ERROR_OR_ERROR_DATA, FALSE, GLU_INVALID_ENUM, GLU_TESS_BOUNDARY_ONLY, GLU_TESS_TOLERANCE, GLU_TESS_WINDING_ABS_GEQ_TWO, GLU_TESS_WINDING_NEGATIVE, GLU_TESS_WINDING_NONZERO, GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_POSITIVE, GLU_TESS_WINDING_RULE, GLUtesselator::relTolerance, TRUE, and GLUtesselator::windingRule.

◆ gluNextContour()

GLAPI void GLAPIENTRY gluNextContour ( GLUtesselator tess,
GLenum  type 
)
621{
622 gluTessEndContour( tess );
623 gluTessBeginContour( tess );
624}

References gluTessBeginContour, and gluTessEndContour.

◆ gluTessBeginContour()

GLAPI void GLAPIENTRY gluTessBeginContour ( GLUtesselator tess)
477{
478 RequireState( tess, T_IN_POLYGON );
479
480 tess->state = T_IN_CONTOUR;
481 tess->lastEdge = NULL;
482 if( tess->cacheCount > 0 ) {
483 /* Just set a flag so we don't get confused by empty contours
484 * -- these can be generated accidentally with the obsolete
485 * NextContour() interface.
486 */
487 tess->emptyCache = TRUE;
488 }
489}
int cacheCount
Definition tess.h:107
GLUhalfEdge * lastEdge
Definition tess.h:65
GLboolean emptyCache
Definition tess.h:106
enum TessState state
Definition tess.h:63
@ T_IN_CONTOUR
Definition tess.h:47
@ T_IN_POLYGON
Definition tess.h:47

References GLUtesselator::cacheCount, GLUtesselator::emptyCache, GLUtesselator::lastEdge, RequireState, GLUtesselator::state, T_IN_CONTOUR, T_IN_POLYGON, and TRUE.

◆ gluTessBeginPolygon()

GLAPI void GLAPIENTRY gluTessBeginPolygon ( GLUtesselator tess,
GLvoid data 
)
463{
464 RequireState( tess, T_DORMANT );
465
466 tess->state = T_IN_POLYGON;
467 tess->cacheCount = 0;
468 tess->emptyCache = FALSE;
469 tess->mesh = NULL;
470
471 tess->polygonData= data;
472}
constexpr auto data(C &c) -> decltype(c.data())
Definition span.hpp:195
GLUmesh * mesh
Definition tess.h:66
void * polygonData
Definition tess.h:111

References GLUtesselator::cacheCount, GLUtesselator::emptyCache, FALSE, GLUtesselator::mesh, GLUtesselator::polygonData, RequireState, GLUtesselator::state, T_DORMANT, and T_IN_POLYGON.

◆ gluTessCallback()

GLAPI void GLAPIENTRY gluTessCallback ( GLUtesselator tess,
GLenum  which,
_GLUfuncptr  CallBackFunc 
)
277{
278 switch( which ) {
279 case GLU_TESS_BEGIN:
280 tess->callBegin = (fn == NULL) ? &noBegin : (void (GLAPIENTRY *)(GLenum)) fn;
281 return;
283 tess->callBeginData = (fn == NULL) ?
285 return;
287 tess->callEdgeFlag = (fn == NULL) ? &noEdgeFlag :
288 (void (GLAPIENTRY *)(GLboolean)) fn;
289 /* If the client wants boundary edges to be flagged,
290 * we render everything as separate triangles (no strips or fans).
291 */
292 tess->flagBoundary = (fn != NULL);
293 return;
295 tess->callEdgeFlagData= (fn == NULL) ?
297 /* If the client wants boundary edges to be flagged,
298 * we render everything as separate triangles (no strips or fans).
299 */
300 tess->flagBoundary = (fn != NULL);
301 return;
302 case GLU_TESS_VERTEX:
303 tess->callVertex = (fn == NULL) ? &noVertex :
304 (void (GLAPIENTRY *)(void *)) fn;
305 return;
307 tess->callVertexData = (fn == NULL) ?
308 &__gl_noVertexData : (void (GLAPIENTRY *)(void *, void *)) fn;
309 return;
310 case GLU_TESS_END:
311 tess->callEnd = (fn == NULL) ? &noEnd : (void (GLAPIENTRY *)(void)) fn;
312 return;
314 tess->callEndData = (fn == NULL) ? &__gl_noEndData :
315 (void (GLAPIENTRY *)(void *)) fn;
316 return;
317 case GLU_TESS_ERROR:
318 tess->callError = (fn == NULL) ? &noError : (void (GLAPIENTRY *)(GLenum)) fn;
319 return;
321 tess->callErrorData = (fn == NULL) ?
323 return;
324 case GLU_TESS_COMBINE:
325 tess->callCombine = (fn == NULL) ? &noCombine :
326 (void (GLAPIENTRY *)(GLdouble [3],void *[4], GLfloat [4], void ** )) fn;
327 return;
329 tess->callCombineData = (fn == NULL) ? &__gl_noCombineData :
330 (void (GLAPIENTRY *)(GLdouble [3],
331 void *[4],
332 GLfloat [4],
333 void **,
334 void *)) fn;
335 return;
336 case GLU_TESS_MESH:
337 tess->callMesh = (fn == NULL) ? &noMesh : (void (GLAPIENTRY *)(GLUmesh *)) fn;
338 return;
339 default:
341 return;
342 }
343}
#define GLU_TESS_VERTEX
Definition glu-libtess.h:111
#define GLU_TESS_BEGIN_DATA
Definition glu-libtess.h:119
#define GLU_TESS_COMBINE_DATA
Definition glu-libtess.h:124
float GLfloat
Definition glu-libtess.h:63
typedef void(GLAPIENTRYP _GLUfuncptr)(void)
#define GLU_TESS_END_DATA
Definition glu-libtess.h:121
double GLdouble
Definition glu-libtess.h:65
#define GLU_TESS_END
Definition glu-libtess.h:113
#define GLU_TESS_EDGE_FLAG
Definition glu-libtess.h:116
unsigned int GLenum
Definition glu-libtess.h:53
#define GLU_TESS_EDGE_FLAG_DATA
Definition glu-libtess.h:123
unsigned char GLboolean
Definition glu-libtess.h:54
#define GLU_TESS_VERTEX_DATA
Definition glu-libtess.h:120
#define GLU_TESS_BEGIN
Definition glu-libtess.h:109
#define GLAPIENTRY
Definition glu-libtess.h:52
#define GLU_TESS_COMBINE
Definition glu-libtess.h:118
#define GLU_TESS_ERROR
Definition glu-libtess.h:115
#define GLU_TESS_ERROR_DATA
Definition glu-libtess.h:122
Definition mesh.h:163
GLboolean flagBoundary
Definition tess.h:92
void GLAPIENTRY __gl_noErrorData(GLenum errnum, void *polygonData)
Definition tess.c:74
static void GLAPIENTRY noEdgeFlag(GLboolean boundaryEdge)
Definition tess.c:58
void GLAPIENTRY __gl_noEdgeFlagData(GLboolean boundaryEdge, void *polygonData)
Definition tess.c:69
static void GLAPIENTRY noBegin(GLenum type)
Definition tess.c:57
#define GLU_TESS_MESH
Definition tess.c:48
static void GLAPIENTRY noMesh(GLUmesh *mesh)
Definition tess.c:64
void GLAPIENTRY __gl_noEndData(void *polygonData)
Definition tess.c:73
void GLAPIENTRY __gl_noVertexData(void *data, void *polygonData)
Definition tess.c:71
static void GLAPIENTRY noError(GLenum errnum)
Definition tess.c:61
static void GLAPIENTRY noEnd(void)
Definition tess.c:60
void GLAPIENTRY __gl_noCombineData(GLdouble coords[3], void *data[4], GLfloat weight[4], void **outData, void *polygonData)
Definition tess.c:76
static void GLAPIENTRY noCombine(GLdouble coords[3], void *data[4], GLfloat weight[4], void **dataOut)
Definition tess.c:62
static void GLAPIENTRY noVertex(void *data)
Definition tess.c:59
void GLAPIENTRY __gl_noBeginData(GLenum type, void *polygonData)
Definition tess.c:67

References __gl_noBeginData(), __gl_noCombineData(), __gl_noEdgeFlagData(), __gl_noEndData(), __gl_noErrorData(), __gl_noVertexData(), CALL_ERROR_OR_ERROR_DATA, GLUtesselator::flagBoundary, GLAPIENTRY, GLU_INVALID_ENUM, GLU_TESS_BEGIN, GLU_TESS_BEGIN_DATA, GLU_TESS_COMBINE, GLU_TESS_COMBINE_DATA, GLU_TESS_EDGE_FLAG, GLU_TESS_EDGE_FLAG_DATA, GLU_TESS_END, GLU_TESS_END_DATA, GLU_TESS_ERROR, GLU_TESS_ERROR_DATA, GLU_TESS_MESH, GLU_TESS_VERTEX, GLU_TESS_VERTEX_DATA, noBegin(), noCombine(), noEdgeFlag(), noEnd(), noError(), noMesh(), noVertex(), and void().

+ Here is the call graph for this function:

◆ gluTessEndContour()

GLAPI void GLAPIENTRY gluTessEndContour ( GLUtesselator tess)
494{
495 RequireState( tess, T_IN_CONTOUR );
496 tess->state = T_IN_POLYGON;
497}

References RequireState, GLUtesselator::state, T_IN_CONTOUR, and T_IN_POLYGON.

◆ gluTessEndPolygon()

GLAPI void GLAPIENTRY gluTessEndPolygon ( GLUtesselator tess)
501{
502 GLUmesh *mesh;
503
504 if (setjmp(tess->env) != 0) {
505 /* come back here if out of memory */
507 return;
508 }
509
510 RequireState( tess, T_IN_POLYGON );
511 tess->state = T_DORMANT;
512
513 if( tess->mesh == NULL ) {
514 if( ! tess->flagBoundary && tess->callMesh == &noMesh ) {
515
516 /* Try some special code to make the easy cases go quickly
517 * (eg. convex polygons). This code does NOT handle multiple contours,
518 * intersections, edge flags, and of course it does not generate
519 * an explicit mesh either.
520 */
521 if( __gl_renderCache( tess )) {
522 tess->polygonData= NULL;
523 return;
524 }
525 }
526 if ( !EmptyCache( tess ) ) longjmp(tess->env,1); /* could've used a label*/
527 }
528
529 /* Determine the polygon normal and project vertices onto the plane
530 * of the polygon.
531 */
532 __gl_projectPolygon( tess );
533
534 /* __gl_computeInterior( tess ) computes the planar arrangement specified
535 * by the given contours, and further subdivides this arrangement
536 * into regions. Each region is marked "inside" if it belongs
537 * to the polygon, according to the rule given by tess->windingRule.
538 * Each interior region is guaranteed be monotone.
539 */
540 if ( !__gl_computeInterior( tess ) ) {
541 longjmp(tess->env,1); /* could've used a label */
542 }
543
544 mesh = tess->mesh;
545 if( ! tess->fatalError ) {
546 int rc = 1;
547
548 /* If the user wants only the boundary contours, we throw away all edges
549 * except those which separate the interior from the exterior.
550 * Otherwise we tessellate all the regions marked "inside".
551 */
552 if( tess->boundaryOnly ) {
553 rc = __gl_meshSetWindingNumber( mesh, 1, TRUE );
554 } else {
555 rc = __gl_meshTessellateInterior( mesh );
556 }
557 if (rc == 0) longjmp(tess->env,1); /* could've used a label */
558
559 __gl_meshCheckMesh( mesh );
560
561 if( tess->callBegin != &noBegin || tess->callEnd != &noEnd
562 || tess->callVertex != &noVertex || tess->callEdgeFlag != &noEdgeFlag
563 || tess->callBeginData != &__gl_noBeginData
564 || tess->callEndData != &__gl_noEndData
565 || tess->callVertexData != &__gl_noVertexData
566 || tess->callEdgeFlagData != &__gl_noEdgeFlagData )
567 {
568 if( tess->boundaryOnly ) {
569 __gl_renderBoundary( tess, mesh ); /* output boundary contours */
570 } else {
571 __gl_renderMesh( tess, mesh ); /* output strips and fans */
572 }
573 }
574 if( tess->callMesh != &noMesh ) {
575
576 /* Throw away the exterior faces, so that all faces are interior.
577 * This way the user doesn't have to check the "inside" flag,
578 * and we don't need to even reveal its existence. It also leaves
579 * the freedom for an implementation to not generate the exterior
580 * faces in the first place.
581 */
583 (*tess->callMesh)( mesh ); /* user wants the mesh itself */
584 tess->mesh = NULL;
585 tess->polygonData= NULL;
586 return;
587 }
588 }
589 __gl_meshDeleteMesh( mesh );
590 tess->polygonData= NULL;
591 tess->mesh = NULL;
592}
#define GLU_OUT_OF_MEMORY
Definition glu-libtess.h:104
void __gl_meshCheckMesh(GLUmesh *mesh)
Definition mesh.c:742
void __gl_meshDeleteMesh(GLUmesh *mesh)
Definition mesh.c:711
void __gl_projectPolygon(GLUtesselator *tess)
Definition normal.c:198
GLboolean __gl_renderCache(GLUtesselator *tess)
Definition render.c:441
void __gl_renderMesh(GLUtesselator *tess, GLUmesh *mesh)
Definition render.c:82
void __gl_renderBoundary(GLUtesselator *tess, GLUmesh *mesh)
Definition render.c:339
GLboolean fatalError
Definition tess.h:81
jmp_buf env
Definition tess.h:121
int __gl_computeInterior(GLUtesselator *tess)
Definition sweep.c:1301
static int EmptyCache(GLUtesselator *tess)
Definition tess.c:396
int __gl_meshSetWindingNumber(GLUmesh *mesh, int value, GLboolean keepOnlyBoundary)
Definition tessmono.c:179
void __gl_meshDiscardExterior(GLUmesh *mesh)
Definition tessmono.c:155
int __gl_meshTessellateInterior(GLUmesh *mesh)
Definition tessmono.c:133

References __gl_computeInterior(), __gl_meshCheckMesh(), __gl_meshDeleteMesh(), __gl_meshDiscardExterior(), __gl_meshSetWindingNumber(), __gl_meshTessellateInterior(), __gl_noBeginData(), __gl_noEdgeFlagData(), __gl_noEndData(), __gl_noVertexData(), __gl_projectPolygon(), __gl_renderBoundary(), __gl_renderCache(), __gl_renderMesh(), GLUtesselator::boundaryOnly, CALL_ERROR_OR_ERROR_DATA, EmptyCache(), GLUtesselator::env, GLUtesselator::fatalError, GLUtesselator::flagBoundary, GLU_OUT_OF_MEMORY, GLUtesselator::mesh, noBegin(), noEdgeFlag(), noEnd(), noMesh(), noVertex(), GLUtesselator::polygonData, RequireState, GLUtesselator::state, T_DORMANT, T_IN_POLYGON, and TRUE.

+ Here is the call graph for this function:

◆ gluTessNormal()

GLAPI void GLAPIENTRY gluTessNormal ( GLUtesselator tess,
GLdouble  valueX,
GLdouble  valueY,
GLdouble  valueZ 
)
269{
270 tess->normal[0] = x;
271 tess->normal[1] = y;
272 tess->normal[2] = z;
273}
const Scalar & y
Definition MathFunctions.h:552
TCoord< P > x(const P &p)
Definition geometry_traits.hpp:297
GLdouble normal[3]
Definition tess.h:73

References GLUtesselator::normal.

◆ gluTessProperty()

GLAPI void GLAPIENTRY gluTessProperty ( GLUtesselator tess,
GLenum  which,
GLdouble  data 
)
202{
203 GLenum windingRule;
204
205 switch( which ) {
207 if( value < 0.0 || value > 1.0 ) break;
208 tess->relTolerance = value;
209 return;
210
212 windingRule = (GLenum) value;
213 if( windingRule != value ) break; /* not an integer */
214
215 switch( windingRule ) {
221 tess->windingRule = windingRule;
222 return;
223 default:
224 break;
225 }
226
228 tess->boundaryOnly = (value != 0);
229 return;
230
231 default:
233 return;
234 }
236}
#define GLU_INVALID_VALUE
Definition glu-libtess.h:103

References GLUtesselator::boundaryOnly, CALL_ERROR_OR_ERROR_DATA, GLU_INVALID_ENUM, GLU_INVALID_VALUE, GLU_TESS_BOUNDARY_ONLY, GLU_TESS_TOLERANCE, GLU_TESS_WINDING_ABS_GEQ_TWO, GLU_TESS_WINDING_NEGATIVE, GLU_TESS_WINDING_NONZERO, GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_POSITIVE, GLU_TESS_WINDING_RULE, GLUtesselator::relTolerance, and GLUtesselator::windingRule.

◆ gluTessVertex()

GLAPI void GLAPIENTRY gluTessVertex ( GLUtesselator tess,
GLdouble location,
GLvoid data 
)

◆ void()

typedef void ( GLAPIENTRYP  _GLUfuncptr)

Referenced by Slic3r::GUI::FileArchiveDialog::FileArchiveDialog(), Slic3r::GUI::GalleryDialog::GalleryDialog(), Slic3r::Geometry::MedialAxis::MedialAxis(), igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::SelfIntersectMesh(), Slic3r::GUI::Sidebar::Sidebar(), Slic3r::GCode::_do_export(), Slic3r::sla::DefaultSupportTree::add_pinheads(), arduino_read_sig_bytes(), avr_tpi_poll_nvmbsy(), avrdude_message_handler_null(), avrdude_progress_handler_null(), Slic3r::GUI::MainFrame::bind_diff_dialog(), igl::bounding_box(), CheckForIntersect(), Slic3r::sla::anonymous_namespace{Clustering.cpp}::cluster(), ConnectRightVertex(), igl::xml::serialization_xml::deserialize(), igl::dfs(), Slic3r::sla::DefaultSupportTree::execute(), igl::fast_winding_number(), Slic3r::FillLightning::Layer::fillLocator(), igl::forward_kinematics(), Slic3r::GUI::generate_system_info_json(), Slic3r::PresetUpdater::priv::get_file(), Slic3r::getExtrusionPathsFromEntity(), gluTessCallback(), igl::grid_search(), Slic3r::has_polygons_nothing_inside(), Slic3r::Http::priv::http_perform(), Slic3r::PrintConfigDef::init_fff_params(), jtag3_disable(), jtagmkI_disable(), jtagmkII_disable(), jtagmkII_getsync(), jtagmkII_initialize(), jtagmkII_program_disable(), jtagmkII_program_enable(), jtagmkII_reset(), Slic3r::GUI::ConfigWizard::priv::load_pages(), Slic3r::Bonjour::priv::lookup_perform(), miniz_def_alloc_func(), miniz_def_free_func(), miniz_def_realloc_func(), mz_deflateBound(), mz_zip_add_mem_to_archive_file_in_place_v2(), mz_zip_compute_crc32_callback(), mz_zip_file_write_callback(), mz_zip_reader_init_internal(), mz_zip_reader_is_file_a_directory(), mz_zip_writer_create_central_dir_header(), mz_zip_writer_create_local_dir_header(), mz_zip_writer_init_from_reader_v2(), igl::nchoosek(), igl::octree(), Slic3r::GUI::FileArchiveDialog::on_all_button(), Slic3r::GUI::FileArchiveDialog::on_none_button(), Slic3r::GUI::FileArchiveDialog::on_open_button(), Slic3r::BonjourDialog::on_reply(), Slic3r::GUI::GLGizmoSimplify::process(), igl::qslim(), igl::ramer_douglas_peucker(), Slic3r::GUI::GLCanvas3D::render(), Slic3r::GUI::GCodeViewer::render_legend(), Slic3r::Bonjour::priv::resolve_perform(), Slic3r::GUI::PageMaterials::select_all(), serbb_close(), igl::copyleft::cgal::SelfIntersectMesh< Kernel, DerivedV, DerivedF, DerivedVV, DerivedFF, DerivedIF, DerivedJ, DerivedIM >::single_shared_vertex(), igl::sort2(), igl::sort3(), Slic3r::Interrupter::start(), stk500_close(), Slic3r::GUI::Tab::tree_sel_change_delayed(), Slic3r::GUI::PageMaterials::update_lists(), and WalkDirtyRegions().