From 0373ed391068f8d511641aecd48dca0e62809008 Mon Sep 17 00:00:00 2001 From: Diederick Niehorster Date: Thu, 4 Apr 2013 14:32:29 +0000 Subject: [PATCH] menu fonts API improved No more glutSetOption, casting void* to int and back is not safe glutSetMenuFont now takes menuID as param git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1588 7f0cb862-5218-0410-a997-914c9d46530a --- include/GL/freeglut_ext.h | 4 +--- progs/demos/CallbackMaker/CallbackMaker.c | 10 +++------- src/fg_menu.c | 10 +++++++--- src/fg_state.c | 12 ------------ 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/include/GL/freeglut_ext.h b/include/GL/freeglut_ext.h index 5b8422d..6f0a048 100644 --- a/include/GL/freeglut_ext.h +++ b/include/GL/freeglut_ext.h @@ -88,8 +88,6 @@ #define GLUT_GEOMETRY_VISUALIZE_NORMALS 0x0205 -#define GLUT_MENU_FONT 0x0206 /* TOOD: now glutSetOption only */ - /* * New tokens for glutInitDisplayMode. * Only one GLUT_AUXn bit may be used at a time. @@ -140,7 +138,7 @@ FGAPI void FGAPIENTRY glutLeaveFullScreen( void ); /* * Menu functions */ -FGAPI void FGAPIENTRY glutSetMenuFont( void* font ); +FGAPI void FGAPIENTRY glutSetMenuFont( int menuID, void* font ); /* * Window-specific callback functions, see freeglut_callbacks.c diff --git a/progs/demos/CallbackMaker/CallbackMaker.c b/progs/demos/CallbackMaker/CallbackMaker.c index 0cee827..52044e3 100644 --- a/progs/demos/CallbackMaker/CallbackMaker.c +++ b/progs/demos/CallbackMaker/CallbackMaker.c @@ -640,8 +640,6 @@ main(int argc, char *argv[]) * what we demonstrate here. */ glutSetKeyRepeat(GLUT_KEY_REPEAT_ON); - /* global setting: default font for any menus created after this call (we call it again below to demo) */ - glutSetOption(GLUT_MENU_FONT,(int)GLUT_BITMAP_HELVETICA_12); /* Set other global callback (global as in not associated with any specific menu or window) */ glutIdleFunc ( Idle ); @@ -665,9 +663,8 @@ main(int argc, char *argv[]) glutAddMenuEntry( "Sub menu A2 (02)", 12 ); glutAddMenuEntry( "Sub menu A3 (03)", 13 ); glutMenuDestroyFunc ( MenuDestroy ); /* callback specific to this menu */ - - /* change font for any menus created after this call */ - glutSetOption(GLUT_MENU_FONT,(int)GLUT_BITMAP_8_BY_13); + /* Change font for this menu */ + glutSetMenuFont(subMenuA, GLUT_BITMAP_HELVETICA_12); subMenuB = glutCreateMenu( MenuCallback ); glutAddMenuEntry( "Sub menu B1 (04)", 14 ); @@ -675,6 +672,7 @@ main(int argc, char *argv[]) glutAddMenuEntry( "Sub menu B3 (06)", 16 ); glutAddSubMenu( "Going to sub menu A", subMenuA ); glutMenuDestroyFunc ( MenuDestroy ); /* callback specific to this menu */ + glutSetMenuFont(subMenuB, GLUT_BITMAP_9_BY_15); menuID = glutCreateMenu( MenuCallback ); glutAddMenuEntry( "Entry one", 21 ); @@ -687,8 +685,6 @@ main(int argc, char *argv[]) glutMenuDestroyFunc ( MenuDestroy ); /* callback specific to this menu */ glutAttachMenu( GLUT_LEFT_BUTTON ); - /* You can also change the font of the current menu: */ - glutSetMenuFont(GLUT_BITMAP_TIMES_ROMAN_10); /* Position second window right next to the first */ diff --git a/src/fg_menu.c b/src/fg_menu.c index 38e2495..171704b 100644 --- a/src/fg_menu.c +++ b/src/fg_menu.c @@ -881,19 +881,23 @@ void FGAPIENTRY glutAddSubMenu( const char *label, int subMenuID ) /* * Changes the current menu's font */ -void FGAPIENTRY glutSetMenuFont( void* fontID ) +void FGAPIENTRY glutSetMenuFont( int menuID, void* fontID ) { SFG_Font* font; + SFG_Menu* menu; FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSetMenuFont" ); - freeglut_return_if_fail( fgStructure.CurrentMenu ); + menu = fgMenuByID( menuID ); + freeglut_return_if_fail( menu ); if (fgGetActiveMenu()) fgError("Menu manipulation not allowed while menus in use."); font = fghFontByID( fontID ); if (!font) + { fgWarning("glutChangeMenuFont: bitmap font 0x%08x not found. Make sure you're not passing a stroke font. Ignoring...\n",fontID); - freeglut_return_if_fail( font ); + return; + } fgStructure.CurrentMenu->Font = fontID; fghCalculateMenuBoxSize( ); diff --git a/src/fg_state.c b/src/fg_state.c index 458941f..580ff10 100644 --- a/src/fg_state.c +++ b/src/fg_state.c @@ -118,18 +118,6 @@ void FGAPIENTRY glutSetOption( GLenum eWhat, int value ) fgStructure.CurrentWindow->State.VisualizeNormals = value; break; - case GLUT_MENU_FONT: - { - void* fontID = (void*)value; - SFG_Font* font; - font = fghFontByID( fontID ); - if (!font) - fgWarning("glutSetOption(GLUT_MENU_FONT,...): bitmap font 0x%08x not found. Make sure you're not passing a stroke font. Ignoring...\n",fontID); - else - fgState.MenuFont = fontID; - } - break; - default: fgWarning( "glutSetOption(): missing enum handle %d", eWhat ); break; -- 1.7.10.4