Changeset 3079 for trunk/src/opengl/glu/tess/tess.c
- Timestamp:
- Mar 11, 2000, 10:05:07 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/glu/tess/tess.c
r2689 r3079 1 /* $Id: tess.c,v 1. 1 2000-02-09 08:47:38jeroen Exp $ */1 /* $Id: tess.c,v 1.2 2000-03-11 09:05:04 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 37 37 ** Author: Eric Veach, July 1994. 38 38 ** 39 ** $Date: 2000-0 2-09 08:47:38 $ $Revision: 1.1$40 ** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/tess/tess.c,v 1. 1 2000-02-09 08:47:38jeroen Exp $39 ** $Date: 2000-03-11 09:05:04 $ $Revision: 1.2 $ 40 ** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/tess/tess.c,v 1.2 2000-03-11 09:05:04 jeroen Exp $ 41 41 */ 42 42 … … 59 59 #define FALSE 0 60 60 61 /*ARGSUSED*/ static void GL APInoBegin( GLenum type ) {}62 /*ARGSUSED*/ static void GL APInoEdgeFlag( GLboolean boundaryEdge ) {}63 /*ARGSUSED*/ static void GL APInoVertex( void *data ) {}64 /*ARGSUSED*/ static void GL APInoEnd( void ) {}65 /*ARGSUSED*/ static void GL APInoError( GLenum errnum ) {}66 /*ARGSUSED*/ static void GL APInoCombine( GLdouble coords[3], void *data[4],61 /*ARGSUSED*/ static void GLCALLBACK noBegin( GLenum type ) {} 62 /*ARGSUSED*/ static void GLCALLBACK noEdgeFlag( GLboolean boundaryEdge ) {} 63 /*ARGSUSED*/ static void GLCALLBACK noVertex( void *data ) {} 64 /*ARGSUSED*/ static void GLCALLBACK noEnd( void ) {} 65 /*ARGSUSED*/ static void GLCALLBACK noError( GLenum errnum ) {} 66 /*ARGSUSED*/ static void GLCALLBACK noCombine( GLdouble coords[3], void *data[4], 67 67 GLfloat weight[4], void **dataOut ) {} 68 /*ARGSUSED*/ static void GL APInoMesh( GLUmesh *mesh ) {}69 70 71 /*ARGSUSED*/ void GLAPI__gl_noBeginData( GLenum type,68 /*ARGSUSED*/ static void GLCALLBACK noMesh( GLUmesh *mesh ) {} 69 70 71 /*ARGSUSED*/ void __gl_noBeginData( GLenum type, 72 72 void *polygonData ) {} 73 /*ARGSUSED*/ void GLAPI__gl_noEdgeFlagData( GLboolean boundaryEdge,73 /*ARGSUSED*/ void __gl_noEdgeFlagData( GLboolean boundaryEdge, 74 74 void *polygonData ) {} 75 /*ARGSUSED*/ void GLAPI__gl_noVertexData( void *data,75 /*ARGSUSED*/ void __gl_noVertexData( void *data, 76 76 void *polygonData ) {} 77 /*ARGSUSED*/ void GLAPI__gl_noEndData( void *polygonData ) {}78 /*ARGSUSED*/ void GLAPI__gl_noErrorData( GLenum errnum,77 /*ARGSUSED*/ void __gl_noEndData( void *polygonData ) {} 78 /*ARGSUSED*/ void __gl_noErrorData( GLenum errnum, 79 79 void *polygonData ) {} 80 /*ARGSUSED*/ void GLAPI__gl_noCombineData( GLdouble coords[3],80 /*ARGSUSED*/ void __gl_noCombineData( GLdouble coords[3], 81 81 void *data[4], 82 82 GLfloat weight[4], … … 105 105 106 106 if (memInit( MAX_FAST_ALLOC ) == 0) { 107 return 0; 107 return 0; /* out of memory */ 108 108 } 109 109 tess = (GLUtesselator *)memAlloc( sizeof( GLUtesselator )); 110 110 if (tess == NULL) { 111 return 0; 111 return 0; /* out of memory */ 112 112 } 113 113 … … 167 167 switch( tess->state ) { 168 168 case T_DORMANT: 169 170 171 169 CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_BEGIN_POLYGON ); 170 gluTessBeginPolygon( tess, NULL ); 171 break; 172 172 case T_IN_POLYGON: 173 174 175 173 CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_BEGIN_CONTOUR ); 174 gluTessBeginContour( tess ); 175 break; 176 176 } 177 177 } else { 178 178 switch( tess->state ) { 179 179 case T_IN_CONTOUR: 180 181 182 180 CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_END_CONTOUR ); 181 gluTessEndContour( tess ); 182 break; 183 183 case T_IN_POLYGON: 184 185 186 187 184 CALL_ERROR_OR_ERROR_DATA( GLU_TESS_MISSING_END_POLYGON ); 185 /* gluTessEndPolygon( tess ) is too much work! */ 186 MakeDormant( tess ); 187 break; 188 188 } 189 189 } … … 192 192 193 193 194 void GLAPI 194 GLUAPI void GLAPIENTRY 195 195 gluDeleteTess( GLUtesselator *tess ) 196 196 { … … 200 200 201 201 202 void GLAPI 202 GLUAPI void GLAPIENTRY 203 203 gluTessProperty( GLUtesselator *tess, GLenum which, GLdouble value ) 204 204 { … … 213 213 case GLU_TESS_WINDING_RULE: 214 214 windingRule = (GLenum) value; 215 if( windingRule != value ) break; 215 if( windingRule != value ) break; /* not an integer */ 216 216 217 217 switch( windingRule ) { … … 239 239 240 240 /* Returns tessellator property */ 241 void GLAPI 241 GLUAPI void GLAPIENTRY 242 242 gluGetTessProperty( GLUtesselator *tess, GLenum which, GLdouble *value ) 243 243 { … … 250 250 case GLU_TESS_WINDING_RULE: 251 251 assert(tess->windingRule == GLU_TESS_WINDING_ODD || 252 253 254 255 252 tess->windingRule == GLU_TESS_WINDING_NONZERO || 253 tess->windingRule == GLU_TESS_WINDING_POSITIVE || 254 tess->windingRule == GLU_TESS_WINDING_NEGATIVE || 255 tess->windingRule == GLU_TESS_WINDING_ABS_GEQ_TWO); 256 256 *value= tess->windingRule; 257 257 break; … … 267 267 } /* gluGetTessProperty() */ 268 268 269 void GLAPI 269 GLUAPI void GLAPIENTRY 270 270 gluTessNormal( GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z ) 271 271 { … … 275 275 } 276 276 277 void GLAPI 278 gluTessCallback( GLUtesselator *tess, GLenum which, void (GL API*fn)())277 GLUAPI void GLAPIENTRY 278 gluTessCallback( GLUtesselator *tess, GLenum which, void (GLCALLBACK *fn)()) 279 279 { 280 280 switch( which ) { 281 281 case GLU_TESS_BEGIN: 282 tess->callBegin = (fn == NULL) ? &noBegin : (void (GL API*)(GLenum)) fn;282 tess->callBegin = (fn == NULL) ? &noBegin : (void (GLCALLBACK *)(GLenum)) fn; 283 283 return; 284 284 case GLU_TESS_BEGIN_DATA: 285 285 tess->callBeginData = (fn == NULL) ? 286 &__gl_noBeginData : (void (GLAPI*)(GLenum, void *)) fn;286 &__gl_noBeginData : (void (GLCALLBACK *)(GLenum, void *)) fn; 287 287 return; 288 288 case GLU_TESS_EDGE_FLAG: 289 289 tess->callEdgeFlag = (fn == NULL) ? &noEdgeFlag : 290 (void (GLAPI*)(GLboolean)) fn;290 (void (GLCALLBACK *)(GLboolean)) fn; 291 291 /* If the client wants boundary edges to be flagged, 292 292 * we render everything as separate triangles (no strips or fans). … … 296 296 case GLU_TESS_EDGE_FLAG_DATA: 297 297 tess->callEdgeFlagData= (fn == NULL) ? 298 &__gl_noEdgeFlagData : (void (GLAPI*)(GLboolean, void *)) fn;298 &__gl_noEdgeFlagData : (void (GLCALLBACK *)(GLboolean, void *)) fn; 299 299 /* If the client wants boundary edges to be flagged, 300 300 * we render everything as separate triangles (no strips or fans). … … 304 304 case GLU_TESS_VERTEX: 305 305 tess->callVertex = (fn == NULL) ? &noVertex : 306 (void (GLAPI*)(void *)) fn;306 (void (GLCALLBACK *)(void *)) fn; 307 307 return; 308 308 case GLU_TESS_VERTEX_DATA: 309 309 tess->callVertexData = (fn == NULL) ? 310 &__gl_noVertexData : (void (GLAPI*)(void *, void *)) fn;310 &__gl_noVertexData : (void (GLCALLBACK *)(void *, void *)) fn; 311 311 return; 312 312 case GLU_TESS_END: 313 tess->callEnd = (fn == NULL) ? &noEnd : (void (GL API*)(void)) fn;313 tess->callEnd = (fn == NULL) ? &noEnd : (void (GLCALLBACK *)(void)) fn; 314 314 return; 315 315 case GLU_TESS_END_DATA: 316 316 tess->callEndData = (fn == NULL) ? &__gl_noEndData : 317 (void (GL API*)(void *)) fn;317 (void (GLCALLBACK *)(void *)) fn; 318 318 return; 319 319 case GLU_TESS_ERROR: 320 tess->callError = (fn == NULL) ? &noError : (void (GL API*)(GLenum)) fn;320 tess->callError = (fn == NULL) ? &noError : (void (GLCALLBACK *)(GLenum)) fn; 321 321 return; 322 322 case GLU_TESS_ERROR_DATA: 323 323 tess->callErrorData = (fn == NULL) ? 324 &__gl_noErrorData : (void (GLAPI*)(GLenum, void *)) fn;324 &__gl_noErrorData : (void (GLCALLBACK *)(GLenum, void *)) fn; 325 325 return; 326 326 case GLU_TESS_COMBINE: 327 327 tess->callCombine = (fn == NULL) ? &noCombine : 328 (void (GLAPI*)(GLdouble [3],void *[4], GLfloat [4], void ** )) fn;328 (void (GLCALLBACK *)(GLdouble [3],void *[4], GLfloat [4], void ** )) fn; 329 329 return; 330 330 case GLU_TESS_COMBINE_DATA: 331 331 tess->callCombineData = (fn == NULL) ? &__gl_noCombineData : 332 (void (GL API*)(GLdouble [3],333 334 335 336 332 (void (GLCALLBACK *)(GLdouble [3], 333 void *[4], 334 GLfloat [4], 335 void **, 336 void *)) fn; 337 337 return; 338 338 case GLU_TESS_MESH: 339 tess->callMesh = (fn == NULL) ? &noMesh : (void (GL API*)(GLUmesh *)) fn;339 tess->callMesh = (fn == NULL) ? &noMesh : (void (GLCALLBACK *)(GLUmesh *)) fn; 340 340 return; 341 341 default: … … 414 414 415 415 416 void GLAPI 416 GLUAPI void GLAPIENTRY 417 417 gluTessVertex( GLUtesselator *tess, GLdouble coords[3], void *data ) 418 418 { … … 461 461 462 462 463 void GLAPI 463 GLUAPI void GLAPIENTRY 464 464 gluTessBeginPolygon( GLUtesselator *tess, void *data ) 465 465 { … … 475 475 476 476 477 void GLAPI 477 GLUAPI void GLAPIENTRY 478 478 gluTessBeginContour( GLUtesselator *tess ) 479 479 { … … 492 492 493 493 494 void GLAPI 494 GLUAPI void GLAPIENTRY 495 495 gluTessEndContour( GLUtesselator *tess ) 496 496 { … … 499 499 } 500 500 501 void GLAPI 501 GLUAPI void GLAPIENTRY 502 502 gluTessEndPolygon( GLUtesselator *tess ) 503 503 { 504 504 GLUmesh *mesh; 505 505 506 if (setjmp(tess->env) != 0) { 506 if (setjmp(tess->env) != 0) { 507 507 /* come back here if out of memory */ 508 508 CALL_ERROR_OR_ERROR_DATA( GLU_OUT_OF_MEMORY ); … … 522 522 */ 523 523 if( __gl_renderCache( tess )) { 524 525 524 tess->polygonData= NULL; 525 return; 526 526 } 527 527 } … … 541 541 */ 542 542 if ( !__gl_computeInterior( tess ) ) { 543 longjmp(tess->env,1); 543 longjmp(tess->env,1); /* could've used a label */ 544 544 } 545 545 … … 557 557 rc = __gl_meshTessellateInterior( mesh ); 558 558 } 559 if (rc == 0) longjmp(tess->env,1); 559 if (rc == 0) longjmp(tess->env,1); /* could've used a label */ 560 560 561 561 __gl_meshCheckMesh( mesh ); … … 569 569 { 570 570 if( tess->boundaryOnly ) { 571 571 __gl_renderBoundary( tess, mesh ); /* output boundary contours */ 572 572 } else { 573 __gl_renderMesh( tess, mesh );/* output strips and fans */573 __gl_renderMesh( tess, mesh ); /* output strips and fans */ 574 574 } 575 575 } … … 583 583 */ 584 584 __gl_meshDiscardExterior( mesh ); 585 (*tess->callMesh)( mesh ); 585 (*tess->callMesh)( mesh ); /* user wants the mesh itself */ 586 586 tess->mesh = NULL; 587 587 tess->polygonData= NULL; … … 595 595 596 596 597 void GLAPI 597 GLUAPI void GLAPIENTRY 598 598 gluDeleteMesh( GLUmesh *mesh ) 599 599 { … … 607 607 /* Obsolete calls -- for backward compatibility */ 608 608 609 void GLAPI 609 GLUAPI void GLAPIENTRY 610 610 gluBeginPolygon( GLUtesselator *tess ) 611 611 { … … 616 616 617 617 /*ARGSUSED*/ 618 void GLAPI 618 GLUAPI void GLAPIENTRY 619 619 gluNextContour( GLUtesselator *tess, GLenum type ) 620 620 { … … 624 624 625 625 626 void GLAPI 626 GLUAPI void GLAPIENTRY 627 627 gluEndPolygon( GLUtesselator *tess ) 628 628 {
Note:
See TracChangeset
for help on using the changeset viewer.