X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=c2fa064a2515fca305d0887d1fb274b4bf026822;hb=fe6b05020a6274423643f766f6d7b651a6264cbb;hp=06bb17ee762e33eb7571bb2ce20b4ba79088f804;hpb=0906b1943aa860049f4af1291e7819d5a711c6bc;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index 06bb17e..c2fa064 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -34,7 +34,7 @@ /* XXX Update these for each release! */ #define VERSION_MAJOR 2 -#define VERSION_MINOR 2 +#define VERSION_MINOR 4 #define VERSION_PATCH 0 /* Freeglut is meant to be available under all Unix/X11 and Win32 platforms. */ @@ -42,7 +42,7 @@ # define TARGET_HOST_UNIX_X11 0 # define TARGET_HOST_WIN32 0 # define TARGET_HOST_WINCE 1 -#elif defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) +#elif defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__) # define TARGET_HOST_UNIX_X11 0 # define TARGET_HOST_WIN32 1 # define TARGET_HOST_WINCE 0 @@ -60,9 +60,20 @@ #include #include #include + +/* TODO: MinGW is lacking a prototype, this should better be handled via autoconf! */ +#ifndef ChangeDisplaySettingsEx +LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID); +LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPVOID); +#ifdef UNICODE +#define ChangeDisplaySettingsEx ChangeDisplaySettingsExW +#else +#define ChangeDisplaySettingsEx ChangeDisplaySettingsExA +#endif +#endif #endif -#if defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__WATCOMC__) #define strdup _strdup #endif @@ -115,6 +126,8 @@ # define FALSE 0 #endif +#define INVALID_MODIFIERS 0xffffffff + /* -- GLOBAL TYPE DEFINITIONS ---------------------------------------------- */ /* Freeglut callbacks type definitions */ @@ -244,6 +257,7 @@ struct tagSFG_State fgExecutionState ExecState; /* Used for GLUT termination */ char *ProgramName; /* Name of the invoking program */ GLboolean JoysticksInitialised; /* Only initialize if application calls for them */ + GLboolean InputDevsInitialised; /* Only initialize if application calls for them */ }; /* The structure used by display initialization in freeglut_init.c */ @@ -500,10 +514,10 @@ typedef struct tagSFG_MenuContext SFG_MenuContext; struct tagSFG_MenuContext { #if TARGET_HOST_UNIX_X11 - XVisualInfo* VisualInfo; /* The window's visual information */ + XVisualInfo* MVisualInfo; /* The window's visual information */ #endif - SFG_WindowContextType Context; /* The menu window's WGL context */ + SFG_WindowContextType MContext; /* The menu window's WGL context */ }; /* This structure describes a menu */ @@ -543,6 +557,8 @@ struct tagSFG_MenuEntry /* * A window, making part of freeglut windows hierarchy. * Should be kept portable. + * + * NOTE that ActiveMenu is set to menu itself if the window is a menu. */ struct tagSFG_Window { @@ -765,10 +781,10 @@ void fgInitialiseJoysticks( void ); void fgJoystickClose( void ); void fgJoystickPollWindow( SFG_Window* window ); -/* More joystick functions. Should these go into the API? */ -int glutJoystickGetNumAxes( int ident ); -int glutJoystickGetNumButtons( int ident ); -int glutJoystickNotWorking( int ident ); +/* InputDevice Initialisation and Closure */ +int fgInputDeviceDetect( void ); +void fgInitialiseInputDevices( void ); +void fgInputDeviceClose( void ); /* Setting the cursor for a given window */ void fgSetCursor ( SFG_Window *window, int cursorID ); @@ -813,6 +829,7 @@ SFG_Menu* fgMenuByID( int menuID ); * The menu activation and deactivation the code. This is the meat * of the menu user interface handling code... */ +void fgUpdateMenuHighlight ( SFG_Menu *menu ); GLboolean fgCheckActiveMenu ( SFG_Window *window, int button, GLboolean pressed, int mouse_x, int mouse_y ); void fgDeactivateMenu( SFG_Window *window );