/* 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.
#include <assert.h>
#include <stdarg.h>
#if TARGET_HOST_UNIX_X11
+#include <unistd.h>
#include <sys/time.h>
#endif
*/
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
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? */
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 */
};
/*
+ * 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 */
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 */
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? */
};
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 */
};
/*
/*
* 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 ;
};
/*
* 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,
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
*/
SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
int x, int y, int w, int h,
- GLboolean gameMode, GLboolean isMenu );
+ 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,
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 );
* 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
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 );