From deacce35a44fe95baffe942a8acae0da327de619 Mon Sep 17 00:00:00 2001 From: lecoanet Date: Tue, 12 Apr 2005 09:05:41 +0000 Subject: Switched to the native GLU tesselator instead of the buitlin. --- generic/tkZinc.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'generic/tkZinc.c') diff --git a/generic/tkZinc.c b/generic/tkZinc.c index 03cd6d9..f9ff6a7 100644 --- a/generic/tkZinc.c +++ b/generic/tkZinc.c @@ -59,8 +59,8 @@ static const char * const zinc_version = "zinc-version-" VERSION; #ifndef _WIN32 #include "perfos.h" #endif -#include "glu.h" +#include #include #include #include @@ -8752,7 +8752,11 @@ Redisplay(ClientData client_data) /* Information about the widget. */ } } -static void +#ifndef _WIN32 +#define CALLBACK +#endif + +static void CALLBACK ZnTessBegin(GLenum type, void *data) { @@ -8779,7 +8783,7 @@ ZnTessBegin(GLenum type, //(type == GL_LINE_LOOP) ? "LINE LOOP" : ""); } -static void +static void CALLBACK ZnTessVertex(void *vertex_data, void *data) { @@ -8789,14 +8793,14 @@ ZnTessVertex(void *vertex_data, p.x = ((GLdouble *) vertex_data)[0]; p.y = ((GLdouble *) vertex_data)[1]; - /*printf("Sommet en %g %g\n", p.x, p.y);*/ + //printf("Sommet en %g %g\n", p.x, p.y); size = ZnListSize(ZnWorkPoints); if ((ZnTesselator.type == GL_TRIANGLES) && (size == 3)) { tristrips->strips[tristrips->num_strips-1].num_points = size; tristrips->strips[tristrips->num_strips-1].points = ZnMalloc(size * sizeof(ZnPoint)); memcpy(tristrips->strips[tristrips->num_strips-1].points, ZnListArray(ZnWorkPoints), size * sizeof(ZnPoint)); - /*printf("Fin de fragment intermediaire %d, num points: %d\n", tristrips->num_strips-1, size);*/ + //printf("Fin de fragment intermediaire %d, num points: %d\n", tristrips->num_strips-1, size); /* Allocate a new fragment */ ZnListEmpty(ZnWorkPoints); tristrips->num_strips++; @@ -8807,7 +8811,7 @@ ZnTessVertex(void *vertex_data, ZnListAdd(ZnWorkPoints, &p, ZnListTail); } -static void +static void CALLBACK ZnTessEnd(void *data) { ZnPoly *outlines = data; @@ -8833,10 +8837,10 @@ ZnTessEnd(void *data) memcpy(tristrips->strips[num-1].points, ZnListArray(ZnWorkPoints), size * sizeof(ZnPoint)); } - /*printf("Fin de fragment %d, num points: %d\n", num, size);*/ + //printf("Fin de fragment %d, num points: %d\n", num, size); } -static void +static void CALLBACK ZnTessCombine(GLdouble coords[3], void *vertex_data[4], GLfloat weight[4], @@ -8856,7 +8860,7 @@ ZnTessCombine(GLdouble coords[3], //cdata->v[0], cdata->v[1]); } -static void +static void CALLBACK ZnTessError(GLenum errno, void *data) { @@ -8933,16 +8937,11 @@ InitZinc(Tcl_Interp *interp) { ZnTesselator.tess = gluNewTess(); ZnTesselator.combine_list = NULL; ZnTesselator.combine_length = 0; - gluTessCallback(ZnTesselator.tess, GLU_TESS_BEGIN_DATA, - (_GLUfuncptr) ZnTessBegin); - gluTessCallback(ZnTesselator.tess, GLU_TESS_VERTEX_DATA, - (_GLUfuncptr) ZnTessVertex); - gluTessCallback(ZnTesselator.tess, GLU_TESS_END_DATA, - (_GLUfuncptr) ZnTessEnd); - gluTessCallback(ZnTesselator.tess, GLU_TESS_COMBINE_DATA, - (_GLUfuncptr) ZnTessCombine); - gluTessCallback(ZnTesselator.tess, GLU_TESS_ERROR_DATA, - (_GLUfuncptr) ZnTessError); + gluTessCallback(ZnTesselator.tess, GLU_TESS_BEGIN_DATA, ZnTessBegin); + gluTessCallback(ZnTesselator.tess, GLU_TESS_VERTEX_DATA, ZnTessVertex); + gluTessCallback(ZnTesselator.tess, GLU_TESS_END_DATA, ZnTessEnd); + gluTessCallback(ZnTesselator.tess, GLU_TESS_COMBINE_DATA, ZnTessCombine); + gluTessCallback(ZnTesselator.tess, GLU_TESS_ERROR_DATA, ZnTessError); gluTessNormal(ZnTesselator.tess, 0.0, 0.0, -1.0); /* -- cgit v1.1