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: https://svn.code.sf.net/p/freeglut/code/trunk@1588 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
afb16d74ea
commit
0bb2219049
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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( );
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user