#ifndef FREEGLUT_INTERNAL_H
#define FREEGLUT_INTERNAL_H
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
/* XXX Update these for each release! */
#define VERSION_MAJOR 2
#define VERSION_MINOR 2
#include <string.h>
#include <math.h>
#include <stdlib.h>
-#include <assert.h>
#include <stdarg.h>
#if TARGET_HOST_UNIX_X11
#include <unistd.h>
-#include <sys/time.h>
+# if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+# else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+# endif
#endif
/* The system-dependant include files should go here: */
* 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.Initialised );
+#define FREEGLUT_EXIT_IF_NOT_INITIALISED( string ) \
+ if ( ! fgState.Initialised ) \
+ { \
+ fgError ( " ERROR: Function <%s> called" \
+ " without first calling 'glutInit'.", (string) ) ; \
+ }
+
+#define FREEGLUT_INTERNAL_ERROR_EXIT_IF_NOT_INITIALISED( string ) \
+ if ( ! fgState.Initialised ) \
+ { \
+ fgError ( " ERROR: Internal <%s> function called" \
+ " without first calling 'glutInit'.", (string) ) ; \
+ }
+
+#define FREEGLUT_INTERNAL_ERROR_EXIT( cond, string, function ) \
+ if ( ! ( cond ) ) \
+ { \
+ fgError ( " ERROR: Internal error <%s> in function %s", \
+ (string), (function) ) ; \
+ }
/*
* Following definitions are somewhat similiar to GLib's,
/*
* A call to those macros assures us that there is a current
- * window and menu set, respectively:
+ * window set, respectively:
*/
-#define freeglut_assert_menu assert( fgStructure.Menu != NULL );
#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
if ( ! fgStructure.Window ) \
{ \
* of the menu user interface handling code...
*/
void fgActivateMenu( SFG_Window* window, int button );
-void fgExecuteMenuCallback( SFG_Menu* menu );
-GLboolean fgCheckActiveMenu ( SFG_Window *window, SFG_Menu *menu );
+GLboolean fgCheckActiveMenu ( SFG_Window *window, int button, GLboolean pressed,
+ int mouse_x, int mouse_y );
void fgDeactivateMenu( SFG_Window *window );
void fgDeactivateSubMenu( SFG_MenuEntry *menuEntry );