#endif\r
\r
/* XXX Update these for each release! */\r
-#define VERSION_MAJOR 2\r
-#define VERSION_MINOR 7\r
+#define VERSION_MAJOR 3\r
+#define VERSION_MINOR 0\r
#define VERSION_PATCH 0\r
\r
/* Freeglut is intended to function under all Unix/X11 and Win32 platforms. */\r
\r
#define FREEGLUT_MAX_MENUS 3\r
\r
-/* -- PLATFORM-SPECIFIC INCLUDES ------------------------------------------- */\r
-\r
-#if TARGET_HOST_POSIX_X11\r
-# include <GL/glx.h>\r
-# include <X11/Xlib.h>\r
-# include <X11/Xatom.h>\r
-# include <X11/keysym.h>\r
-# include <X11/extensions/XInput.h>\r
-# ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H\r
-# include <X11/extensions/xf86vmode.h>\r
-# endif\r
-# ifdef HAVE_X11_EXTENSIONS_XRANDR_H\r
-# include <X11/extensions/Xrandr.h>\r
-# endif\r
-/* If GLX is too old, we will fail during runtime when multisampling\r
- is requested, but at least freeglut compiles. */\r
-# ifndef GLX_SAMPLE_BUFFERS\r
-# define GLX_SAMPLE_BUFFERS 0x80A8\r
-# endif\r
-# ifndef GLX_SAMPLES\r
-# define GLX_SAMPLES 0x80A9\r
-# endif\r
-\r
-#endif\r
-\r
/* These files should be available on every platform. */\r
#include <stdio.h>\r
#include <string.h>\r
\r
/* Platform-specific includes */\r
#if TARGET_HOST_POSIX_X11\r
-\r
-typedef struct tagSFG_PlatformDisplay SFG_PlatformDisplay;\r
-struct tagSFG_PlatformDisplay\r
-{\r
- Display* Display; /* The display we are being run in. */\r
- int Screen; /* The screen we are about to use. */\r
- Window RootWindow; /* The screen's root window. */\r
- int Connection; /* The display's connection number */\r
- Atom DeleteWindow; /* The window deletion atom */\r
- Atom State; /* The state atom */\r
- Atom StateFullScreen; /* The full screen atom */\r
-\r
-#ifdef HAVE_X11_EXTENSIONS_XRANDR_H\r
- int prev_xsz, prev_ysz;\r
- int prev_refresh;\r
- int prev_size_valid;\r
-#endif /* HAVE_X11_EXTENSIONS_XRANDR_H */\r
-\r
-#ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H\r
- /*\r
- * XF86VidMode may be compilable even if it fails at runtime. Therefore,\r
- * the validity of the VidMode has to be tracked\r
- */\r
- int DisplayModeValid; /* Flag that indicates runtime status*/\r
- XF86VidModeModeLine DisplayMode; /* Current screen's display settings */\r
- int DisplayModeClock; /* The display mode's refresh rate */\r
- int DisplayViewPortX; /* saved X location of the viewport */\r
- int DisplayViewPortY; /* saved Y location of the viewport */\r
-#endif /* HAVE_X11_EXTENSIONS_XF86VMODE_H */\r
-\r
- int DisplayPointerX; /* saved X location of the pointer */\r
- int DisplayPointerY; /* saved Y location of the pointer */\r
-};\r
-\r
-\r
-/*\r
- * Make "freeglut" window handle and context types so that we don't need so\r
- * much conditionally-compiled code later in the library.\r
- */\r
-typedef Window SFG_WindowHandleType ;\r
-typedef GLXContext SFG_WindowContextType ;\r
-typedef struct tagSFG_PlatformContext SFG_PlatformContext;\r
-struct tagSFG_PlatformContext\r
-{\r
- GLXFBConfig* FBConfig; /* The window's FBConfig */\r
-};\r
-\r
-\r
-\r
+#include "../x11/freeglut_internal_x11.h"\r
#endif\r
#if TARGET_HOST_MS_WINDOWS\r
#include "../mswin/freeglut_internal_mswin.h"\r
int DoubleBuffered; /* Treat the window as double-buffered */\r
};\r
\r
-/* Window's state description. This structure should be kept portable. */\r
-#if TARGET_HOST_POSIX_X11\r
-typedef struct tagSFG_PlatformWindowState SFG_PlatformWindowState;\r
-struct tagSFG_PlatformWindowState\r
-{\r
- int OldWidth; /* Window width from before a resize */\r
- int OldHeight; /* " height " " " " */\r
-};\r
-#endif\r
-\r
\r
typedef struct tagSFG_WindowState SFG_WindowState;\r
struct tagSFG_WindowState\r
\r
\r
/* -- JOYSTICK-SPECIFIC STRUCTURES AND TYPES ------------------------------- */\r
+/*\r
+ * Initial defines from "js.h" starting around line 33 with the existing "freeglut_joystick.c"\r
+ * interspersed\r
+ */\r
+\r
+#if TARGET_HOST_MACINTOSH\r
+# include <InputSprocket.h>\r
+#endif\r
+\r
+#if TARGET_HOST_MAC_OSX\r
+# include <mach/mach.h>\r
+# include <IOKit/IOkitLib.h>\r
+# include <IOKit/hid/IOHIDLib.h>\r
+#endif\r
+\r
/* XXX It might be better to poll the operating system for the numbers of buttons and\r
* XXX axes and then dynamically allocate the arrays.\r
*/\r
};\r
#endif\r
\r
-#if TARGET_HOST_POSIX_X11\r
-# define _JS_MAX_AXES 16\r
-typedef struct tagSFG_PlatformJoystick SFG_PlatformJoystick;\r
-struct tagSFG_PlatformJoystick\r
-{\r
-# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)\r
- struct os_specific_s *os;\r
-# endif\r
-\r
-# ifdef JS_NEW\r
- struct js_event js;\r
- int tmp_buttons;\r
- float tmp_axes [ _JS_MAX_AXES ];\r
-# else\r
- struct JS_DATA_TYPE js;\r
-# endif\r
-\r
- char fname [ 128 ];\r
- int fd;\r
-};\r
-#endif\r
\r
/*\r
* Definition of "SFG_Joystick" structure -- based on JS's "jsJoystick" object class.\r
int fgHasSpaceball( void );\r
int fgSpaceballNumButtons( void );\r
\r
-#if TARGET_HOST_POSIX_X11\r
-int fgIsSpaceballXEvent( const XEvent *ev );\r
-void fgSpaceballHandleXEvent( const XEvent *ev );\r
-#endif\r
-\r
/* Setting the cursor for a given window */\r
void fgSetCursor ( SFG_Window *window, int cursorID );\r
\r
void fgError( const char *fmt, ... );\r
void fgWarning( const char *fmt, ... );\r
\r
-/*\r
- * Check if "hint" is present in "property" for "window". See freeglut_init.c\r
- */\r
-#if TARGET_HOST_POSIX_X11\r
-int fgHintPresent(Window window, Atom property, Atom hint);\r
+SFG_Proc fgPlatformGetProcAddress( const char *procName );\r
\r
-/* Handler for X extension Events */\r
-#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H\r
- void fgHandleExtensionEvents( XEvent * ev );\r
- void fgRegisterDevices( Display* dpy, Window* win );\r
-#endif\r
-\r
-#endif\r
+/* Window functions needed for Platform implementations */\r
+/* pushing attribute/value pairs into an array */\r
+#define ATTRIB(a) attributes[where++]=(a)\r
+#define ATTRIB_VAL(a,v) {ATTRIB(a); ATTRIB(v);}\r
\r
-SFG_Proc fghGetProcAddress( const char *procName );\r
+extern int fghIsLegacyContextVersionRequested( void );\r
+extern int fghMapBit( int mask, int from, int to );\r
+extern int fghIsLegacyContextRequested( void );\r
+extern void fghContextCreationError( void );\r
+extern int fghNumberOfAuxBuffersRequested( void );\r
\r
#endif /* FREEGLUT_INTERNAL_H */\r
\r