X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_menu.c;h=9bffdf9132e8bd7f600e7e5dc0a5200b87a60fb7;hb=99532b98a9b24cbf41fdf83789f74fef2dbc8b6c;hp=3a9212fdb2c377b3daffeed7f4290ee5c6212d6f;hpb=0b9c4701facc952c0b1a2a4f5e23bdb4c84cae21;p=freeglut diff --git a/src/freeglut_menu.c b/src/freeglut_menu.c index 3a9212f..9bffdf9 100644 --- a/src/freeglut_menu.c +++ b/src/freeglut_menu.c @@ -124,7 +124,7 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) menuEntry; menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next ) { - if( menuEntry->SubMenu && ( menuEntry->IsActive == TRUE ) ) + if( menuEntry->SubMenu && menuEntry->IsActive ) { /* * OK, have the sub-menu checked, too. If it returns TRUE, it @@ -138,9 +138,9 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) * Reactivate the submenu as the checkMenuStatus may have turned * it off if the mouse is in its parent menu entry. */ - menuEntry->SubMenu->IsActive = TRUE; - if ( return_status == TRUE ) - return TRUE; + menuEntry->SubMenu->IsActive = GL_TRUE; + if ( return_status ) + return GL_TRUE; } } @@ -153,9 +153,9 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) for( menuEntry = (SFG_MenuEntry *)menu->Entries.First; menuEntry; menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next ) - menuEntry->IsActive = FALSE; + menuEntry->IsActive = GL_FALSE; - menu->IsActive = FALSE; + menu->IsActive = GL_FALSE; /* * Check if the mouse cursor is contained within the current menu box @@ -174,7 +174,7 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) menuEntry = fghFindMenuEntry( menu, menuID + 1 ); assert( menuEntry ); - menuEntry->IsActive = TRUE; + menuEntry->IsActive = GL_TRUE; menuEntry->Ordinal = menuID; /* @@ -183,13 +183,11 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) * was a submenu then deactivate it. */ if( menu->ActiveEntry && ( menuEntry != menu->ActiveEntry ) ) - { if( menu->ActiveEntry->SubMenu ) fgDeactivateSubMenu( menu->ActiveEntry ); - } menu->ActiveEntry = menuEntry; - menu->IsActive = TRUE; + menu->IsActive = GL_TRUE; /* * OKi, we have marked that entry as active, but it would be also @@ -205,7 +203,7 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) /* * Set up the initial menu position now... */ - menuEntry->SubMenu->IsActive = TRUE; + menuEntry->SubMenu->IsActive = GL_TRUE; /* * Set up the initial submenu position now: @@ -241,19 +239,19 @@ static GLboolean fghCheckMenuStatus( SFG_Window* window, SFG_Menu* menu ) /* * Activate it because its parent entry is active */ - menuEntry->SubMenu->IsActive = TRUE; + menuEntry->SubMenu->IsActive = GL_TRUE; } /* * Report back that we have caught the menu cursor */ - return TRUE; + return GL_TRUE; } /* * Looks like the menu cursor is somewhere else... */ - return FALSE; + return GL_FALSE; } /* @@ -309,7 +307,7 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) /* * Has the menu been marked as active, maybe? */ - if( menuEntry->IsActive == TRUE ) + if( menuEntry->IsActive ) { /* * That's truly right, and we need to have it highlighted. @@ -341,7 +339,7 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) glColor4fv( menu_pen_fore ); - for( menuEntry = (SFG_MenuEntry *)menu->Entries.First, i=0; + for( menuEntry = (SFG_MenuEntry *)menu->Entries.First, i = 0; menuEntry; menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next, ++i ) { @@ -357,8 +355,8 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) /* Try to center the text - JCJ 31 July 2003*/ glRasterPos2i( 2 * border, - (i + 1)*FREEGLUT_MENU_HEIGHT - - (int)( FREEGLUT_MENU_HEIGHT*0.3 - border ) + ( i + 1 )*FREEGLUT_MENU_HEIGHT - + ( int )( FREEGLUT_MENU_HEIGHT*0.3 - border ) ); /* @@ -375,7 +373,7 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) int x_base = menu->Width - 2 - width; int y_base = i*FREEGLUT_MENU_HEIGHT + border; glBegin( GL_TRIANGLES ); - glVertex2i( x_base, y_base + 2 * border); + glVertex2i( x_base, y_base + 2*border); glVertex2i( menu->Width - 2, y_base + ( FREEGLUT_MENU_HEIGHT + border) / 2 ); glVertex2i( x_base, y_base + FREEGLUT_MENU_HEIGHT - border ); @@ -392,14 +390,14 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) /* * Now we are ready to check if any of our children needs to be redrawn: */ - for( menuEntry = (SFG_MenuEntry *)menu->Entries.First; + for( menuEntry = ( SFG_MenuEntry * )menu->Entries.First; menuEntry; - menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next ) + menuEntry = ( SFG_MenuEntry * )menuEntry->Node.Next ) { /* * Is that an active sub menu by any case? */ - if( menuEntry->SubMenu && ( menuEntry->IsActive == TRUE ) ) + if( menuEntry->SubMenu && menuEntry->IsActive ) { /* * Yeah, indeed. Have it redrawn now: @@ -415,17 +413,17 @@ static void fghDisplayMenuBox( SFG_Menu* menu ) * Private static function to set the parent window of a submenu and all * of its submenus */ -static void fghSetSubmenuParentWindow ( SFG_Window *window, SFG_Menu *menu ) +static void fghSetSubmenuParentWindow( SFG_Window *window, SFG_Menu *menu ) { SFG_MenuEntry *menuEntry; menu->ParentWindow = window; - for( menuEntry = (SFG_MenuEntry *)menu->Entries.First; + for( menuEntry = ( SFG_MenuEntry * )menu->Entries.First; menuEntry; - menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next ) - if ( menuEntry->SubMenu ) - fghSetSubmenuParentWindow ( window, menuEntry->SubMenu ) ; + menuEntry = ( SFG_MenuEntry * )menuEntry->Node.Next ) + if( menuEntry->SubMenu ) + fghSetSubmenuParentWindow( window, menuEntry->SubMenu ); } @@ -437,26 +435,16 @@ void fgDisplayMenu( void ) SFG_Window* window = fgStructure.Window; SFG_Menu* menu = NULL; - /* - * Make sure there is a current window available - */ freeglut_assert_window; /* * Check if there is an active menu attached to this window... */ menu = window->ActiveMenu; - - /* - * Did we find an active menu? - */ freeglut_return_if_fail( menu ); - fgSetWindow ( menu->Window ); + fgSetWindow( menu->Window ); - /* - * Prepare the OpenGL state to do the rendering first: - */ glPushAttrib( GL_DEPTH_BUFFER_BIT | GL_TEXTURE_BIT | GL_LIGHTING_BIT | GL_POLYGON_BIT ); @@ -465,38 +453,22 @@ void fgDisplayMenu( void ) glDisable( GL_LIGHTING ); glDisable( GL_CULL_FACE ); - /* - * We'll use an orthogonal projection matrix to draw the menu: - */ glMatrixMode( GL_PROJECTION ); - glPushMatrix(); - glLoadIdentity(); + glPushMatrix( ); + glLoadIdentity( ); glOrtho( 0, glutGet( GLUT_WINDOW_WIDTH ), glutGet( GLUT_WINDOW_HEIGHT ), 0, -1, 1 ); - /* - * Model-view matix gets reset to identity: - */ glMatrixMode( GL_MODELVIEW ); - glPushMatrix(); - glLoadIdentity(); + glPushMatrix( ); + glLoadIdentity( ); - /* - * First of all, have the exact menu status check: - */ fghCheckMenuStatus( window, menu ); - - /* - * The status has been updated and we're ready to have the menu drawn now: - */ fghDisplayMenuBox( menu ); - /* - * Restore the old OpenGL settings now - */ glPopAttrib( ); glMatrixMode( GL_PROJECTION ); @@ -506,9 +478,6 @@ void fgDisplayMenu( void ) glutSwapBuffers( ); - /* - * Restore the current window - */ fgSetWindow ( window ); } @@ -526,13 +495,12 @@ void fgActivateMenu( SFG_Window* window, int button ) * Mark the menu as active, so that it gets displayed: */ window->ActiveMenu = menu; - menu->IsActive = TRUE; + menu->IsActive = GL_TRUE; fgState.ActiveMenus++; /* * Set up the initial menu position now: */ - menu->X = window->State.MouseX + glutGet( GLUT_WINDOW_X ); menu->Y = window->State.MouseY + glutGet( GLUT_WINDOW_Y ); @@ -584,34 +552,13 @@ void fgExecuteMenuCallback( SFG_Menu* menu ) menuEntry; menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next) { - /* - * Is this menu entry active? - */ - if( menuEntry->IsActive == TRUE ) + if( menuEntry->IsActive ) { - /* - * If there is not a sub menu, execute the menu callback and - * return... - */ - if( !( menuEntry->SubMenu ) ) - { - /* - * ...certainly given that there is one... - */ + if( menuEntry->SubMenu ) + fgExecuteMenuCallback( menuEntry->SubMenu ); + else if( menu->Callback ) menu->Callback( menuEntry->ID ); - - return; - } - - /* - * Otherwise recurse into the submenu. - */ - fgExecuteMenuCallback( menuEntry->SubMenu ); - - /* - * There is little sense in dwelling the search on - */ return; } } @@ -646,16 +593,16 @@ void fgDeactivateMenu( SFG_Window *window ) */ menu->Window->ActiveMenu = NULL; menu->ParentWindow->ActiveMenu = NULL; - menu->IsActive = FALSE; + menu->IsActive = GL_FALSE; fgState.ActiveMenus--; /* * Hide all submenu windows, and the root menu's window. */ - for ( menuEntry = (SFG_MenuEntry *)menu->Entries.First; + for ( menuEntry = ( SFG_MenuEntry * )menu->Entries.First; menuEntry; - menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next ) + menuEntry = ( SFG_MenuEntry * )menuEntry->Node.Next ) { /* * Is that an active submenu by any case? @@ -664,7 +611,7 @@ void fgDeactivateMenu( SFG_Window *window ) fgDeactivateSubMenu( menuEntry ); } - fgSetWindow ( current_window ) ; + fgSetWindow( current_window ); } /* @@ -684,7 +631,7 @@ void fgDeactivateSubMenu( SFG_MenuEntry *menuEntry ) * Forget about having that menu active anymore, now: */ menuEntry->SubMenu->Window->ActiveMenu = NULL; - menuEntry->SubMenu->IsActive = FALSE; + menuEntry->SubMenu->IsActive = GL_FALSE; /* * Hide all submenu windows, and the root menu's window. @@ -720,9 +667,9 @@ void fghCalculateMenuBoxSize( void ) /* * The menu's box size depends on the menu entries: */ - for( menuEntry = (SFG_MenuEntry *)fgStructure.Menu->Entries.First; + for( menuEntry = ( SFG_MenuEntry * )fgStructure.Menu->Entries.First; menuEntry; - menuEntry = (SFG_MenuEntry *)menuEntry->Node.Next) + menuEntry = ( SFG_MenuEntry * )menuEntry->Node.Next ) { /* * Update the menu entry's width value @@ -759,7 +706,7 @@ void fghCalculateMenuBoxSize( void ) /* * Creates a new menu object, adding it to the freeglut structure */ -int FGAPIENTRY glutCreateMenu( void (* callback)( int ) ) +int FGAPIENTRY glutCreateMenu( void(* callback)( int ) ) { /* * The menu object creation code resides in freeglut_structure.c @@ -834,17 +781,17 @@ void FGAPIENTRY glutAddMenuEntry( const char* label, int value ) /* * Add a sub menu to the bottom of the current menu */ -void FGAPIENTRY glutAddSubMenu( const char* label, int subMenuID ) +void FGAPIENTRY glutAddSubMenu( const char *label, int subMenuID ) { - SFG_MenuEntry* menuEntry = - (SFG_MenuEntry *)calloc( sizeof(SFG_MenuEntry), 1 ); - SFG_Menu* subMenu = fgMenuByID( subMenuID ); + SFG_MenuEntry *menuEntry = + ( SFG_MenuEntry * )calloc( sizeof( SFG_MenuEntry ), 1 ); + SFG_Menu *subMenu = fgMenuByID( subMenuID ); freeglut_assert_ready; freeglut_return_if_fail( fgStructure.Menu ); freeglut_return_if_fail( subMenu ); - menuEntry->Text = strdup( label ); + menuEntry->Text = strdup( label ); menuEntry->SubMenu = subMenu; menuEntry->ID = -1; @@ -880,7 +827,7 @@ void FGAPIENTRY glutChangeToMenuEntry( int item, const char* label, int value ) if( menuEntry->Text ) free( menuEntry->Text ); - menuEntry->Text = strdup( label ); + menuEntry->Text = strdup( label ); menuEntry->ID = value; menuEntry->SubMenu = NULL; fghCalculateMenuBoxSize( ); @@ -889,7 +836,8 @@ void FGAPIENTRY glutChangeToMenuEntry( int item, const char* label, int value ) /* * Changes the specified menu item in the current menu into a sub-menu trigger. */ -void FGAPIENTRY glutChangeToSubMenu( int item, const char* label, int subMenuID ) +void FGAPIENTRY glutChangeToSubMenu( int item, const char* label, + int subMenuID ) { SFG_Menu* subMenu = fgMenuByID( subMenuID ); SFG_MenuEntry* menuEntry = NULL; @@ -911,7 +859,7 @@ void FGAPIENTRY glutChangeToSubMenu( int item, const char* label, int subMenuID if( menuEntry->Text ) free( menuEntry->Text ); - menuEntry->Text = strdup( label ); + menuEntry->Text = strdup( label ); menuEntry->SubMenu = subMenu; menuEntry->ID = -1; fghCalculateMenuBoxSize( ); @@ -960,7 +908,7 @@ void FGAPIENTRY glutAttachMenu( int button ) /* * Make the parent window of the menu (and all submenus) the current window */ - fghSetSubmenuParentWindow ( fgStructure.Window, fgStructure.Menu ) ; + fghSetSubmenuParentWindow( fgStructure.Window, fgStructure.Menu ); } /*