#ifndef FREEGLUT_INTERNAL_H
#define FREEGLUT_INTERNAL_H
+/* XXX Update these for each release! */
+#define VERSION_MAJOR 1
+#define VERSION_MINOR 4
+#define VERSION_PATCH 0
+
/*
* Freeglut is meant to be available under all Unix/X11 and Win32 platforms.
*/
#include <X11/Xatom.h>
#include <X11/keysym.h>
- /*
- * This will generate errors, but I don't have any idea how to fix it (will autoconf help?)
- */
+ #ifndef __sgi
#include <X11/extensions/xf86vmode.h>
+ #endif
#endif
/*
typedef void (* FGCBpassive )( int, int );
typedef void (* FGCBentry )( int );
typedef void (* FGCBwindowStatus )( int );
-typedef void (* FGCBmenuState )( int );
-typedef void (* FGCBmenuStatus )( int, int, int );
typedef void (* FGCBselect )( int, int, int );
typedef void (* FGCBjoystick )( unsigned int, int, int, int );
typedef void (* FGCBkeyboardUp )( unsigned char, int, int );
*/
typedef void (* FGCBidle )( void );
typedef void (* FGCBtimer )( int );
+typedef void (* FGCBmenuState )( int );
+typedef void (* FGCBmenuStatus )( int, int, int );
/*
* The callback used when creating/using menus
GLboolean IgnoreKeyRepeat; /* Whether to ignore key repeat... */
+ GLuint FPSInterval; /* Interval between FPS printfs */
+ GLuint SwapCount; /* Count of glutSwapBuffer calls */
+ GLuint SwapTime; /* Time of last SwapBuffers */
+
SFG_Time Time; /* The time that glutInit was called */
SFG_List Timers; /* The freeglut timer hooks */
struct tagSFG_Context
{
#if TARGET_HOST_UNIX_X11
- Window Handle; /* The window's handle */
- GLXContext Context; /* The OpenGL context */
- XVisualInfo* VisualInfo; /* The window's visual information */
+ 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 */
+ 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 */
};
/*
struct tagSFG_Menu
{
SFG_Node Node;
+ void *UserData ; /* A. Donev: User data passed back at callback */
int ID; /* The global menu ID */
SFG_List Entries; /* The menu entries list */
FGCBmenu Callback; /* The menu callback */
+ FGCBdestroy Destroy; /* A. Donev: Destruction callback */
GLboolean IsActive; /* Is the menu selected? */
int Width; /* Menu box width in pixels */
int Height; /* Menu box height in pixels */
};
/*
- * A window, making part of FreeGLUT windows hierarchy. Should be kept portable.
+ * A window, making part of freeglut windows hierarchy. Should be kept portable.
*/
typedef struct tagSFG_Window SFG_Window;
struct tagSFG_Window
SFG_Context Window; /* Window and OpenGL context */
SFG_WindowState State; /* The window state */
SFG_WindowCallbacks Callbacks; /* The window callbacks */
+ void *UserData ; /* A. Donev: A pointer to user data used in rendering */
SFG_Menu* Menu[ FREEGLUT_MAX_MENUS ]; /* Menus appended to window */
SFG_Menu* ActiveMenu; /* The window's active menu */