Necessary compilation fixes for newer GCCs (e.g. 3.3.5, 4.0).
authorSven Panne <sven.panne@aedion.de>
Fri, 6 May 2005 15:39:24 +0000 (15:39 +0000)
committerSven Panne <sven.panne@aedion.de>
Fri, 6 May 2005 15:39:24 +0000 (15:39 +0000)
Side effect: The shapes demo has a new 'i' key now.

git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@600 7f0cb862-5218-0410-a997-914c9d46530a

ChangeLog
progs/demos/shapes/shapes.c
src/freeglut_internal.h
src/freeglut_main.c

index c85209d..c82fb93 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -992,6 +992,5 @@ mouse pointers don't work) on the way:
 (259) Changed the "shapes" demo to the OpenGLUT "shapes" demo, which is much
       niftier.
 
-
-
-
+(260) Necessary compilation fixes for newer GCCs (e.g. 3.3.5, 4.0).
+      Side effect: The shapes demo has a new 'i' key now.
index 4928260..bf7664a 100644 (file)
@@ -12,6 +12,7 @@
    Keys:
       -    <tt>Esc &nbsp;</tt> Quit
       -    <tt>q Q &nbsp;</tt> Quit
+      -    <tt>i I &nbsp;</tt> Show info
       -    <tt>= + &nbsp;</tt> Increase \a slices
       -    <tt>- _ &nbsp;</tt> Decreate \a slices
       -    <tt>, < &nbsp;</tt> Decreate \a stacks
@@ -41,7 +42,8 @@
 #include <stdlib.h>
 
 #ifdef WIN32
-#include <crtdbg.h>  // DUMP MEMORY LEAKS
+/* DUMP MEMORY LEAKS */
+#include <crtdbg.h>
 #endif
 
 /*
@@ -61,7 +63,7 @@ static double irad = .25;
 static double orad = 1.0;
 static int depth = 4;
 static double offset[ 3 ] = { 0, 0, 0 };
-
+static GLboolean show_info = GL_TRUE;
 
 /*
  * These one-liners draw particular objects, fetching appropriate
@@ -193,7 +195,7 @@ static void shapesPrintf (int row, int col, const char *fmt, ...)
               glutBitmapWidth(font, ' ') * col,
             - glutBitmapHeight(font) * (row+2) + viewport[3]
         );
-        glutBitmapString (font, buf);
+        glutBitmapString (font, (unsigned char*)buf);
 
     glPopMatrix();
     glMatrixMode(GL_MODELVIEW);
@@ -226,8 +228,6 @@ static void display(void)
 
     glEnable(GL_LIGHTING);
 
-    printf ( "Shape %d slides %d stacks %d\n", function_index, slices, stacks ) ;
-
     glColor3d(1,0,0);
 
     glPushMatrix();
@@ -247,13 +247,17 @@ static void display(void)
     glDisable(GL_LIGHTING);
     glColor3d(0.1,0.1,0.4);
 
-/*    shapesPrintf (1, 3, "Shape PgUp PgDn: %s", table [function_index].name);
-    shapesPrintf (2, 3, " Slices +-: %d   Stacks <>: %d", slices, stacks);
-    shapesPrintf (3, 3, " nSides +-: %d   nRings <>: %d", slices, stacks);
-    shapesPrintf (4, 3, " Depth  (): %d", depth);
-    shapesPrintf (5, 3, " Outer radius  Up  Down : %f", orad);
-    shapesPrintf (6, 3, " Inner radius Left Right: %f", irad);
-*/
+    if( show_info ) {
+        shapesPrintf (1, 3, "Shape PgUp PgDn: %s", table [function_index].name);
+        shapesPrintf (2, 3, "Slices +-: %d   Stacks <>: %d", slices, stacks);
+        shapesPrintf (3, 3, "nSides +-: %d   nRings <>: %d", slices, stacks);
+        shapesPrintf (4, 3, "Depth  (): %d", depth);
+        shapesPrintf (5, 3, "Outer radius  Up  Down : %f", orad);
+        shapesPrintf (6, 3, "Inner radius Left Right: %f", irad);
+    } else {
+        printf ( "Shape %d slides %d stacks %d\n", function_index, slices, stacks ) ;
+    }
+
     glutSwapBuffers();
 }
 
@@ -267,6 +271,9 @@ key(unsigned char key, int x, int y)
     case 'Q':
     case 'q': glutLeaveMainLoop () ;      break;
 
+    case 'I':
+    case 'i': show_info = ( show_info == GL_TRUE ) ? GL_FALSE : GL_TRUE; break;
+
     case '=':
     case '+': slices++;                   break;
 
@@ -376,7 +383,8 @@ main(int argc, char *argv[])
     glutMainLoop();
 
 #ifdef WIN32
-    _CrtDumpMemoryLeaks () ;  // DUMP MEMORY LEAK INFORMATION
+    /* DUMP MEMORY LEAK INFORMATION */
+    _CrtDumpMemoryLeaks () ;
 #endif
 
     return EXIT_SUCCESS;
index f63c1f5..06bb17e 100644 (file)
@@ -385,8 +385,8 @@ typedef void (*SFG_Proc)();
 #define SET_WCB(window,cbname,func)                            \
 do                                                             \
 {                                                              \
-    if( FETCH_WCB( window, cbname ) != func )                  \
-        (((window).CallBacks[CB_ ## cbname]) = (SFG_Proc) func); \
+    if( FETCH_WCB( window, cbname ) != (SFG_Proc)(func) )      \
+        (((window).CallBacks[CB_ ## cbname]) = (SFG_Proc)(func)); \
 } while( 0 )
 
 /*
index da5bcfe..45d4165 100644 (file)
@@ -858,13 +858,13 @@ void FGAPIENTRY glutMainLoopEvent( void )
 
             if( event.type == KeyPress )
             {
-                keyboard_cb = FETCH_WCB( *window, Keyboard );
-                special_cb  = FETCH_WCB( *window, Special  );
+                keyboard_cb = (FGCBKeyboard)( FETCH_WCB( *window, Keyboard ));
+                special_cb  = (FGCBSpecial) ( FETCH_WCB( *window, Special  ));
             }
             else
             {
-                keyboard_cb = FETCH_WCB( *window, KeyboardUp );
-                special_cb  = FETCH_WCB( *window, SpecialUp  );
+                keyboard_cb = (FGCBKeyboard)( FETCH_WCB( *window, KeyboardUp ));
+                special_cb  = (FGCBSpecial) ( FETCH_WCB( *window, SpecialUp  ));
             }
 
             /* Is there a keyboard/special callback hooked for this window? */