47#define GLU_TESS_DEFAULT_TOLERANCE 0.0
48#define GLU_TESS_MESH 100112
57#if defined(__GNUC__) || defined(__clang__)
58#pragma GCC diagnostic push
60#pragma GCC diagnostic ignored "-Wunused-parameter"
69 GLfloat weight[4],
void **dataOut ) {}
74 void *polygonData ) {}
76 void *polygonData ) {}
78 void *polygonData ) {}
81 void *polygonData ) {}
86 void *polygonData ) {}
88#if defined(__GNUC__) || defined(__clang__)
89#pragma GCC diagnostic pop
96#define MAX(a,b) ((a) > (b) ? (a) : (b))
97#define MAX_FAST_ALLOC (MAX(sizeof(EdgePair), \
98 MAX(sizeof(GLUvertex),sizeof(GLUface))))
132 tess->callEnd = &
noEnd;
154 if( tess->
mesh != NULL ) {
162#define RequireState( tess, s ) if( tess->state != s ) GotoState(tess,s)
166 while( tess->
state != newState ) {
170 if( tess->
state < newState ) {
171 switch( tess->
state ) {
184 switch( tess->
state ) {
217 if( value < 0.0 || value > 1.0 )
break;
223 if( windingRule !=
value )
break;
225 switch( windingRule ) {
293 tess->callBeginData = (fn == NULL) ?
297 tess->callEdgeFlag = (fn == NULL) ? &
noEdgeFlag :
305 tess->callEdgeFlagData= (fn == NULL) ?
313 tess->callVertex = (fn == NULL) ? &
noVertex :
317 tess->callVertexData = (fn == NULL) ?
321 tess->callEnd = (fn == NULL) ? &
noEnd : (void (
GLAPIENTRY *)(void)) fn;
331 tess->callErrorData = (fn == NULL) ?
335 tess->callCombine = (fn == NULL) ? &
noCombine :
364 if (
e == NULL)
return 0;
376 e->Org->coords[0] = coords[0];
377 e->Org->coords[1] = coords[1];
378 e->Org->coords[2] = coords[2];
386 e->Sym->winding = -1;
399 v->coords[0] = coords[0];
400 v->coords[1] = coords[1];
401 v->coords[2] = coords[2];
412 if (tess->
mesh == NULL)
return 0;
427 int i, tooLarge =
FALSE;
439 for( i = 0; i < 3; ++i ) {
455 if( tess->
mesh == NULL ) {
514 if (setjmp(tess->
env) != 0) {
523 if( tess->
mesh == NULL ) {
551 longjmp(tess->
env,1);
567 if (rc == 0) longjmp(tess->
env,1);
571 if( tess->callBegin != &
noBegin || tess->callEnd != &
noEnd
584 if( tess->callMesh != &
noMesh ) {
593 (*tess->callMesh)( mesh );
#define GLU_TESS_WINDING_NONZERO
#define GLU_TESS_WINDING_POSITIVE
#define GLU_TESS_BOUNDARY_ONLY
#define GLU_TESS_BEGIN_DATA
#define GLU_TESS_COMBINE_DATA
#define GLU_TESS_MISSING_BEGIN_CONTOUR
#define GLU_TESS_WINDING_NEGATIVE
#define GLU_TESS_END_DATA
#define GLU_TESS_WINDING_RULE
#define GLU_TESS_EDGE_FLAG
#define GLU_TESS_MISSING_END_CONTOUR
#define GLU_TESS_TOLERANCE
#define GLU_TESS_EDGE_FLAG_DATA
#define GLU_TESS_WINDING_ODD
#define GLU_TESS_COORD_TOO_LARGE
#define GLU_TESS_VERTEX_DATA
#define GLU_TESS_MISSING_BEGIN_POLYGON
#define GLU_TESS_MAX_COORD
#define GLU_OUT_OF_MEMORY
#define GLU_TESS_MISSING_END_POLYGON
#define GLU_TESS_ERROR_DATA
void(* _GLUfuncptr)(void)
#define GLU_INVALID_VALUE
#define GLU_TESS_WINDING_ABS_GEQ_TWO
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
GLUhalfEdge * __gl_meshMakeEdge(GLUmesh *mesh)
GLUhalfEdge * __gl_meshSplitEdge(GLUhalfEdge *eOrg)
void __gl_meshCheckMesh(GLUmesh *mesh)
void __gl_meshDeleteMesh(GLUmesh *mesh)
GLUmesh * __gl_meshNewMesh(void)
int __gl_meshSplice(GLUhalfEdge *eOrg, GLUhalfEdge *eDst)
void __gl_projectPolygon(GLUtesselator *tess)
GLboolean __gl_renderCache(GLUtesselator *tess)
void __gl_renderMesh(GLUtesselator *tess, GLUmesh *mesh)
void __gl_renderBoundary(GLUtesselator *tess, GLUmesh *mesh)
int __gl_computeInterior(GLUtesselator *tess)
static void noVertex(void *data)
void __gl_noEndData(void *polygonData)
void gluTessNormal(GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z)
static int AddVertex(GLUtesselator *tess, GLdouble coords[3], void *data)
void __gl_noCombineData(GLdouble coords[3], void *data[4], GLfloat weight[4], void **outData, void *polygonData)
static void noEdgeFlag(GLboolean boundaryEdge)
static int EmptyCache(GLUtesselator *tess)
static void MakeDormant(GLUtesselator *tess)
void gluNextContour(GLUtesselator *tess, GLenum type)
void gluDeleteTess(GLUtesselator *tess)
static void noError(GLenum errnum)
GLUtesselator * gluNewTess(void)
void __gl_noVertexData(void *data, void *polygonData)
static void CacheVertex(GLUtesselator *tess, GLdouble coords[3], void *data)
void __gl_noEdgeFlagData(GLboolean boundaryEdge, void *polygonData)
#define RequireState(tess, s)
void __gl_noBeginData(GLenum type, void *polygonData)
void gluTessEndContour(GLUtesselator *tess)
void gluBeginPolygon(GLUtesselator *tess)
void __gl_noErrorData(GLenum errnum, void *polygonData)
void gluTessBeginContour(GLUtesselator *tess)
static void noMesh(GLUmesh *mesh)
#define GLU_TESS_DEFAULT_TOLERANCE
void gluEndPolygon(GLUtesselator *tess)
void gluTessBeginPolygon(GLUtesselator *tess, void *data)
void gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value)
void gluTessEndPolygon(GLUtesselator *tess)
void gluTessCallback(GLUtesselator *tess, GLenum which, _GLUfuncptr fn)
static void noBegin(GLenum type)
void gluTessVertex(GLUtesselator *tess, GLdouble *coords, void *data)
void gluTessProperty(GLUtesselator *tess, GLenum which, GLdouble value)
static void noCombine(GLdouble coords[3], void *data[4], GLfloat weight[4], void **dataOut)
static void GotoState(GLUtesselator *tess, enum TessState newState)
#define CALL_ERROR_OR_ERROR_DATA(a)
int __gl_meshSetWindingNumber(GLUmesh *mesh, int value, GLboolean keepOnlyBoundary)
void __gl_meshDiscardExterior(GLUmesh *mesh)
int __gl_meshTessellateInterior(GLUmesh *mesh)