now have function to get window style based on FreeGLUT's stateflag
[freeglut] / src / fg_internal.h
index 1c7429e..129654a 100644 (file)
@@ -219,6 +219,10 @@ typedef void (* FGCBMultiButton  )( int, int, int, int, int );
 typedef void (* FGCBMultiMotion  )( int, int, int );
 typedef void (* FGCBMultiPassive )( int, int, int );
 
+typedef void (* FGCBInitContext)();
+typedef void (* FGCBPause)();
+typedef void (* FGCBResume)();
+
 /* The global callbacks type definitions */
 typedef void (* FGCBIdle          )( void );
 typedef void (* FGCBTimer         )( int );
@@ -367,8 +371,8 @@ struct tagSFG_Context
        SFG_PlatformContext pContext;    /* The window's FBConfig (X11) or device context (Windows) */
 
     int             DoubleBuffered;  /* Treat the window as double-buffered */
-    GLint attribute_v_coord;
-    GLint attribute_v_normal;
+    GLint           attribute_v_coord;
+    GLint           attribute_v_normal;
 };
 
 
@@ -397,6 +401,8 @@ struct tagSFG_WindowState
     GLboolean       NeedToResize;       /* Do we need to resize the window?  */
 
     GLboolean       IsFullscreen;       /* is the window fullscreen? */
+
+    GLboolean       NeedToInitContext; /* are OpenGL context/resources loaded? */
 };
 
 
@@ -528,6 +534,11 @@ enum
     CB_MultiMotion,
     CB_MultiPassive,
 
+    /* Mobile platforms LifeCycle */
+    CB_InitContext,
+    CB_Pause,
+    CB_Resume,
+
     /* Presently ignored */
     CB_Select,
     CB_OverlayDisplay,
@@ -650,7 +661,8 @@ struct tagSFG_Enumerator
     GLboolean   found;                          /* Used to terminate search  */
     void*       data;                           /* Custom data pointer       */
 };
-typedef void (* FGCBenumerator  )( SFG_Window *, SFG_Enumerator * );
+typedef void (* FGCBWindowEnumerator  )( SFG_Window *, SFG_Enumerator * );
+typedef void (* FGCBMenuEnumerator  )( SFG_Menu *, SFG_Enumerator * );
 
 /* The bitmap font structure */
 typedef struct tagSFG_Font SFG_Font;
@@ -904,8 +916,8 @@ void fgSetCursor ( SFG_Window *window, int cursorID );
  * and userData is the a custom user-supplied pointer. Functions
  * are defined and exported from freeglut_structure.c file.
  */
-void fgEnumWindows( FGCBenumerator enumCallback, SFG_Enumerator* enumerator );
-void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback,
+void fgEnumWindows( FGCBWindowEnumerator enumCallback, SFG_Enumerator* enumerator );
+void fgEnumSubWindows( SFG_Window* window, FGCBWindowEnumerator enumCallback,
                        SFG_Enumerator* enumerator );
 
 /*
@@ -929,6 +941,12 @@ SFG_Window* fgWindowByID( int windowID );
 SFG_Menu* fgMenuByID( int menuID );
 
 /*
+ * Returns active menu, if any. Assumption: only one menu active throughout application at any one time.
+ * This is easier than fgWindowByXXX as all menus are placed in one doubly linked list...
+ */
+SFG_Menu* fgGetActiveMenu( );
+
+/*
  * The menu activation and deactivation the code. This is the meat
  * of the menu user interface handling code...
  */