X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=b511d0d319c1e165b1ce5f3d1fbb4a5c7d978b83;hb=8f68cc66f40adeae9869252fff8d188fafb58043;hp=ea75e84064d78a78850f52dee4e1f24e504e56c2;hpb=074fe7a4ceb20811af83f735d5db74d69d11442c;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index ea75e84..b511d0d 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -31,7 +31,7 @@ /* XXX Update these for each release! */ #define VERSION_MAJOR 2 #define VERSION_MINOR 0 -#define VERSION_PATCH 0 +#define VERSION_PATCH 2 /* * Freeglut is meant to be available under all Unix/X11 and Win32 platforms. @@ -77,6 +77,7 @@ #include #include #if TARGET_HOST_UNIX_X11 +#include #include #endif @@ -203,10 +204,10 @@ struct tagSFG_Time */ typedef enum { - GLUT_EXEC_STATE_INIT, - GLUT_EXEC_STATE_RUNNING, - GLUT_EXEC_STATE_STOP -} fgExecutionState; + GLUT_EXEC_STATE_INIT, + GLUT_EXEC_STATE_RUNNING, + GLUT_EXEC_STATE_STOP +} fgExecutionState ; /* * This structure holds different freeglut settings @@ -218,7 +219,7 @@ struct tagSFG_State SFG_XYUse Size; /* The default windows' size */ unsigned int DisplayMode; /* Display mode for new windows */ - GLboolean Initalized; /* Freeglut has been initalized */ + GLboolean Initialised; /* freeglut has been initialised */ GLboolean ForceDirectContext; /* Force direct rendering? */ GLboolean TryDirectContext; /* What about giving a try to? */ @@ -230,6 +231,7 @@ struct tagSFG_State GLboolean XSyncSwitch; /* X11 sync protocol switch */ GLboolean IgnoreKeyRepeat; /* Whether to ignore key repeat. */ + int Modifiers; /* Current ALT/SHIFT/CTRL state */ GLuint FPSInterval; /* Interval between FPS printfs */ GLuint SwapCount; /* Count of glutSwapBuffer calls */ @@ -240,7 +242,6 @@ struct tagSFG_State FGCBIdle IdleCallback; /* The global idle callback */ - GLboolean BuildingAMenu; /* Are we presently making a menu */ int ActiveMenus; /* Num. of currently active menus */ FGCBMenuState MenuStateCallback; /* Menu callbacks are global */ FGCBMenuStatus MenuStatusCallback; @@ -309,22 +310,35 @@ struct tagSFG_Timer }; /* + * Make "freeglut" window handle and context types so that we don't need so + * much conditionally-compiled code later in the library. + */ +#if TARGET_HOST_UNIX_X11 + +typedef Window SFG_WindowHandleType ; +typedef GLXContext SFG_WindowContextType ; + +#elif TARGET_HOST_WIN32 + +typedef HWND SFG_WindowHandleType ; +typedef HGLRC SFG_WindowContextType ; + +#endif + +/* * A window and its OpenGL context. The contents of this structure * are highly dependant on the target operating system we aim at... */ typedef struct tagSFG_Context SFG_Context; struct tagSFG_Context { + SFG_WindowHandleType Handle; /* The window's handle */ + SFG_WindowContextType Context; /* The window's OpenGL/WGL context */ + #if TARGET_HOST_UNIX_X11 - Window Handle; /* The window's handle */ - GLXContext Context; /* The OpenGL context */ XVisualInfo* VisualInfo; /* The window's visual information */ - #elif TARGET_HOST_WIN32 - HWND Handle; /* The window's handle */ HDC Device; /* The window's device context */ - HGLRC Context; /* The window's WGL context */ - #endif int DoubleBuffered; /* Treat the window as double-buffered */ @@ -343,7 +357,6 @@ struct tagSFG_WindowState GLboolean Visible; /* Is the window visible now */ int Cursor; /* The currently selected cursor */ - int Modifiers; /* The current ALT/SHIFT/CTRL state */ long JoystickPollRate; /* The joystick polling rate */ long JoystickLastPoll; /* When the last poll has happened */ @@ -352,9 +365,7 @@ struct tagSFG_WindowState GLboolean IsGameMode; /* Is this the game mode window? */ -#if TARGET_HOST_WIN32 - GLboolean NeedToResize; /* Do we need to explicitly resize? */ -#endif + GLboolean NeedToResize; /* Do we need to resize the window? */ }; @@ -458,12 +469,10 @@ typedef struct tagSFG_MenuContext SFG_MenuContext; struct tagSFG_MenuContext { #if TARGET_HOST_UNIX_X11 - GLXContext Context; /* The menu OpenGL context */ XVisualInfo* VisualInfo; /* The window's visual information */ -#elif TARGET_HOST_WIN32 - HGLRC Context; /* The menu window's WGL context */ #endif + SFG_WindowContextType Context; /* The menu window's WGL context */ }; /* @@ -531,12 +540,12 @@ struct tagSFG_Window /* * A linked list structure of windows */ -typedef struct tagSFG_WindowList SFG_WindowList; +typedef struct tagSFG_WindowList SFG_WindowList ; struct tagSFG_WindowList { - SFG_Window *window; - GLboolean needToClose; - SFG_WindowList *next; + SFG_Window *window ; + GLboolean needToClose ; + SFG_WindowList *next ; }; /* @@ -645,7 +654,7 @@ extern SFG_State fgState; * A call to this function makes us sure that the Display and Structure * subsystems have been properly initialized and are ready to be used */ -#define freeglut_assert_ready assert( fgState.Initalized ); +#define freeglut_assert_ready assert( fgState.Initialised ); /* * Following definitions are somewhat similiar to GLib's, @@ -656,7 +665,7 @@ extern SFG_State fgState; return; #define freeglut_return_val_if_fail( expr, val ) \ if( !(expr) ) \ - return val; + return val ; /* * A call to those macros assures us that there is a current @@ -705,7 +714,8 @@ GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, * Defined in freeglut_structure.c, freeglut_window.c. */ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title, - int x, int y, int w, int h, GLboolean gameMode ); + int x, int y, int w, int h, + GLboolean gameMode, GLboolean isMenu ); void fgSetWindow ( SFG_Window *window ); void fgOpenWindow( SFG_Window* window, const char* title, int x, int y, int w, int h, GLboolean gameMode, @@ -713,7 +723,7 @@ void fgOpenWindow( SFG_Window* window, const char* title, void fgCloseWindow( SFG_Window* window ); void fgAddToWindowDestroyList ( SFG_Window* window, GLboolean needToClose ); -void fgCloseWindows( ); +void fgCloseWindows (); void fgDestroyWindow( SFG_Window* window, GLboolean needToClose ); void fgClearCallBacks( SFG_Window *window ); @@ -751,11 +761,7 @@ void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback, * first window in the queue matching the specified window handle. * The function is defined in freeglut_structure.c file. */ -#if TARGET_HOST_UNIX_X11 - SFG_Window* fgWindowByHandle( Window hWindow ); -#elif TARGET_HOST_WIN32 - SFG_Window* fgWindowByHandle( HWND hWindow ); -#endif +SFG_Window* fgWindowByHandle( SFG_WindowHandleType hWindow ); /* * This function is similiar to the previous one, except it is @@ -765,7 +771,7 @@ void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback, SFG_Window* fgWindowByID( int windowID ); /* - * Looks up a menu given its ID. This is easier that fgWindowByXXX + * Looks up a menu given its ID. This is easier than fgWindowByXXX * as all menus are placed in a single doubly linked list... */ SFG_Menu* fgMenuByID( int menuID );