added VERSION_MAJOR/MINOR/PATCH
[freeglut] / freeglut-1.3 / freeglut_internal.h
index e60d783..7b8c9a5 100644 (file)
 #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.
  */
@@ -119,8 +124,6 @@ typedef void (* FGCBmotion        )( int, int );
 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 );
@@ -140,6 +143,8 @@ typedef void (* FGCBdestroy       )( void );
  */
 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
@@ -220,6 +225,10 @@ struct tagSFG_State
 
     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          */
 
@@ -291,7 +300,6 @@ struct tagSFG_Context
     Window          Handle;             /* The window's handle                 */
     GLXContext      Context;            /* The OpenGL context                  */
     XVisualInfo*    VisualInfo;         /* The window's visual information     */
-    int             DoubleBuffered;     /* Treat the window as double-buffered */
 
 #elif TARGET_HOST_WIN32
     HWND            Handle;             /* The window's handle                 */
@@ -299,6 +307,8 @@ struct tagSFG_Context
     HGLRC           Context;            /* The window's WGL context            */
 
 #endif
+
+    int             DoubleBuffered;     /* Treat the window as double-buffered */
 };
 
 /*
@@ -374,9 +384,11 @@ typedef struct tagSFG_Menu SFG_Menu;
 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 */
@@ -410,6 +422,7 @@ 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  */