Add new demo "fbo_firecube".
[mesa.git] / progs / demos / tessdemo.c
index 3648ebd084d4d47b8abc67269a69e37a985d4b1d..f71cea127448ca09e15ad2c416950db21969cbc1 100644 (file)
@@ -1,14 +1,13 @@
-/* $Id: tessdemo.c,v 1.9 2001/03/21 02:43:14 gareth Exp $ */
 
 /*
  * A demo of the GLU polygon tesselation functions written by Bogdan Sikorski.
  * Updated for GLU 1.3 tessellation by Gareth Hughes <gareth@valinux.com>
  */
 
-#include <GL/glut.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <GL/glut.h>
 
 #define MAX_POINTS     256
 #define MAX_CONTOURS   32
@@ -90,7 +89,7 @@ static void GLCALLBACK edge_callback( GLenum flag )
 
 static void GLCALLBACK end_callback()
 {
-   GLint       i;
+   GLuint      i;
 
    glBegin( GL_LINES );
 
@@ -165,6 +164,8 @@ static void set_screen_wh( GLsizei w, GLsizei h )
    height = h;
 }
 
+typedef void (GLAPIENTRY *callback_t)();
+
 static void tesse( void )
 {
    GLUtesselator       *tobj;
@@ -177,11 +178,11 @@ static void tesse( void )
 
    if ( tobj != NULL ) {
       gluTessNormal( tobj, 0.0, 0.0, 1.0 );
-      gluTessCallback( tobj, GLU_TESS_BEGIN, glBegin );
-      gluTessCallback( tobj, GLU_TESS_VERTEX, glVertex2fv );
-      gluTessCallback( tobj, GLU_TESS_END, glEnd );
-      gluTessCallback( tobj, GLU_TESS_ERROR, error_callback );
-      gluTessCallback( tobj, GLU_TESS_COMBINE, combine_callback );
+      gluTessCallback( tobj, GLU_TESS_BEGIN, (callback_t) glBegin );
+      gluTessCallback( tobj, GLU_TESS_VERTEX, (callback_t) glVertex2fv );
+      gluTessCallback( tobj, GLU_TESS_END, (callback_t) glEnd );
+      gluTessCallback( tobj, GLU_TESS_ERROR, (callback_t) error_callback );
+      gluTessCallback( tobj, GLU_TESS_COMBINE, (callback_t) combine_callback );
 
       glNewList( list_start, GL_COMPILE );
       gluBeginPolygon( tobj );
@@ -201,10 +202,10 @@ static void tesse( void )
       gluEndPolygon( tobj );
       glEndList();
 
-      gluTessCallback( tobj, GLU_TESS_BEGIN, begin_callback );
-      gluTessCallback( tobj, GLU_TESS_VERTEX, vertex_callback );
-      gluTessCallback( tobj, GLU_TESS_END, end_callback );
-      gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, edge_callback );
+      gluTessCallback( tobj, GLU_TESS_BEGIN, (callback_t) begin_callback );
+      gluTessCallback( tobj, GLU_TESS_VERTEX, (callback_t) vertex_callback );
+      gluTessCallback( tobj, GLU_TESS_END, (callback_t) end_callback );
+      gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, (callback_t) edge_callback );
 
       glNewList( list_start + 1, GL_COMPILE );
       gluBeginPolygon( tobj );
@@ -308,6 +309,7 @@ static void mouse_clicked( int button, int state, int x, int y )
 static void display( void )
 {
    GLuint i,j;
+   GLsizei ii, jj;
    GLuint point_cnt;
 
    glClear( GL_COLOR_BUFFER_BIT );
@@ -319,12 +321,12 @@ static void display( void )
 
       glBegin( GL_LINES );
 
-      for ( i = 0 ; i < width ; i += 10 ) {
-        for ( j = 0 ; j < height ; j += 10 ) {
-           glVertex2i( 0, j );
-           glVertex2i( width, j );
-           glVertex2i( i, height );
-           glVertex2i( i, 0 );
+      for ( ii = 0 ; ii < width ; ii += 10 ) {
+        for ( jj = 0 ; jj < height ; jj += 10 ) {
+           glVertex2i( 0, jj );
+           glVertex2i( width, jj );
+           glVertex2i( ii, height );
+           glVertex2i( ii, 0 );
         }
       }
 
@@ -433,6 +435,7 @@ static void key_pressed( unsigned char key, int x, int y )
    case 'T':
       tesse();
       break;
+   case 27:
    case 'q':
    case 'Q':
       quit();
@@ -478,6 +481,8 @@ static void reshape( GLsizei w, GLsizei h )
    set_screen_wh( w, h );
 }
 
+#endif
+
 
 static void usage( void )
 {
@@ -486,8 +491,6 @@ static void usage( void )
    printf( "Select tesselate from the pop-up menu.\n" );
 }
 
-#endif
-
 
 int main( int argc, char **argv )
 {
@@ -502,15 +505,20 @@ int main( int argc, char **argv )
 
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
+   glutInitWindowPosition(0, 0);
    glutInitWindowSize( 400, 400 );
    glutCreateWindow( argv[0] );
 
+   /* GH: Bit of a hack...
+    */
+#ifdef GLU_VERSION_1_2
    myinit();
 
    glutDisplayFunc( display );
    glutReshapeFunc( reshape );
 
    glutMainLoop();
+#endif
 
    return 0;
 }