#ifndef FREEGLUT_INTERNAL_H
#define FREEGLUT_INTERNAL_H
-#if HAVE_CONFIG_H
+#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
/* XXX Update these for each release! */
#define VERSION_MAJOR 2
-#define VERSION_MINOR 4
+#define VERSION_MINOR 7
#define VERSION_PATCH 0
/* Freeglut is intended to function under all Unix/X11 and Win32 platforms. */
/* XXX: Don't all MS-Windows compilers (except Cygwin) have _WIN32 defined?
* XXX: If so, remove the first set of defined()'s below.
*/
+#if !defined(TARGET_HOST_POSIX_X11) && !defined(TARGET_HOST_MS_WINDOWS) && !defined(TARGET_HOST_MAC_OSX) && !defined(TARGET_HOST_SOLARIS)
#if defined(_MSC_VER) || defined(__WATCOMC__) || defined(__MINGW32__) \
|| defined(_WIN32) || defined(_WIN32_WCE) \
|| ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) )
#elif defined(__posix__) || defined(__unix__) || defined(__linux__)
# define TARGET_HOST_POSIX_X11 1
-/* FIXME: no Macintosh support?
-#if ...
-# define TARGET_HOST_MAC_OSX 1
+#elif defined(__APPLE__)
+/* This is a placeholder until we get native OSX support ironed out -- JFF 11/18/09 */
+# define TARGET_HOST_POSIX_X11 1
+/* # define TARGET_HOST_MAC_OSX 1 */
+
#else
# error "Unrecognized target host!"
-*/
+
+#endif
#endif
/* Detect both SunPro and gcc compilers on Sun Solaris */
/* -- PLATFORM-SPECIFIC INCLUDES ------------------------------------------- */
-/* All Win32 headers depend on the huge Windows.h recursive include.
- * Note: Let's use proper case for MS-Win headers. Even though it's
- * not required due to case insensitivity, it's a good habit to keep
- * because the cross-platform includes are case sensitive.
+/* All Win32 headers depend on the huge windows.h recursive include.
+ * Note: Lower-case header names are used, for best cross-platform
+ * compatibility.
*/
#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
-# include <Windows.h>
-# include <WindowsX.h>
-# include <MMSystem.h>
+# include <windows.h>
+# include <windowsx.h>
+# include <mmsystem.h>
/* CYGWIN does not have tchar.h, but has TEXT(x), defined in winnt.h. */
# ifndef __CYGWIN__
# include <tchar.h>
# include <X11/Xatom.h>
# include <X11/keysym.h>
# include <X11/extensions/XInput.h>
-# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H
+# ifdef HAVE_XXF86VM
# include <X11/extensions/xf86vmode.h>
# endif
/* If GLX is too old, we will fail during runtime when multisampling
#include <stdlib.h>
/* These are included based on autoconf directives. */
-#if HAVE_SYS_TYPES_H
+#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
-#if HAVE_UNISTD_H
+#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
-#if TIME_WITH_SYS_TIME
+#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
-#elif HAVE_SYS_TIME_H
+#elif defined(HAVE_SYS_TIME_H)
# include <sys/time.h>
#else
# include <time.h>
#endif
#if TARGET_HOST_MS_WINDOWS
-# define HAVE_VPRINTF 1
-#endif
-
-#if !defined(HAVE_VPRINTF) && !defined(HAVE_DOPRNT)
-/* XXX warning directive here? */
-# define HAVE_VPRINTF 1
+# define HAVE_VFPRINTF 1
#endif
/* MinGW may lack a prototype for ChangeDisplaySettingsEx() (depending on the version?) */
# define M_PI 3.14159265358979323846
#endif
-#ifndef TRUE
-# define TRUE 1
-#endif
-
-#ifndef FALSE
-# define FALSE 0
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+# ifndef TRUE
+# define TRUE true
+# endif
+# ifndef FALSE
+# define FALSE false
+# endif
+#else
+# ifndef TRUE
+# define TRUE 1
+# endif
+# ifndef FALSE
+# define FALSE 0
+# endif
#endif
/* General defines */
fgExecutionState ExecState; /* Used for GLUT termination */
char *ProgramName; /* Name of the invoking program */
GLboolean JoysticksInitialised; /* Only initialize if application calls for them */
+ int NumActiveJoysticks; /* Number of active joysticks -- if zero, don't poll joysticks */
GLboolean InputDevsInitialised; /* Only initialize if application calls for them */
int AuxiliaryBufferNumber; /* Number of auxiliary buffers */
int MajorVersion; /* Major OpenGL context version */
int MinorVersion; /* Minor OpenGL context version */
int ContextFlags; /* OpenGL context flags */
+ int ContextProfile; /* OpenGL context profile */
};
/* The structure used by display initialization in freeglut_init.c */
#elif TARGET_HOST_MS_WINDOWS
HINSTANCE Instance; /* The application's instance */
DEVMODE DisplayMode; /* Desktop's display settings */
+ char *DisplayName; /* Display name for multi display support*/
#endif
GLboolean KeyRepeating; /* Currently in repeat mode */
GLboolean NeedToResize; /* Do we need to resize the window? */
+
+ GLboolean IsFullscreen; /* is the window fullscreen? */
};
/* Presently ignored */
CB_Select,
CB_OverlayDisplay,
- CB_SpaceMotion,
- CB_SpaceRotation,
- CB_SpaceButton,
+ CB_SpaceMotion, /* presently implemented only on UNIX/X11 */
+ CB_SpaceRotation, /* presently implemented only on UNIX/X11 */
+ CB_SpaceButton, /* presently implemented only on UNIX/X11 */
CB_Dials,
CB_ButtonBox,
CB_TabletMotion,
#if TARGET_HOST_MS_WINDOWS
LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg,
WPARAM wParam, LPARAM lParam );
-GLboolean fgNewWGLCreateContext( SFG_Window* window );
+void fgNewWGLCreateContext( SFG_Window* window );
GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly,
unsigned char layer_type );
#endif
void fgInitialiseInputDevices( void );
void fgInputDeviceClose( void );
+/* spaceball device functions, defined in freeglut_spaceball.c */
+void fgInitialiseSpaceball( void );
+void fgSpaceballClose( void );
+void fgSpaceballSetWindow( SFG_Window *window );
+
+int fgHasSpaceball( void );
+int fgSpaceballNumButtons( void );
+
+#if TARGET_HOST_POSIX_X11
+int fgIsSpaceballXEvent( const XEvent *ev );
+void fgSpaceballHandleXEvent( const XEvent *ev );
+#endif
+
/* Setting the cursor for a given window */
void fgSetCursor ( SFG_Window *window, int cursorID );
SFG_Proc fghGetProcAddress( const char *procName );
+#if TARGET_HOST_MS_WINDOWS
+extern void (__cdecl *__glutExitFunc)( int return_value );
+#endif
+
#endif /* FREEGLUT_INTERNAL_H */
/*** END OF FILE ***/