X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=0b2662605a4b0b19c757f855dc2d979b48146d68;hb=929b4d880cc9bc99c3f4db62855b3d2445e9398d;hp=8bedf5aa028fbfb344fa1829e4dcb01039af5bdc;hpb=71968c367fd725119878eb2d2225171a647002e8;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index 8bedf5a..0b26626 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -34,7 +34,7 @@ /* XXX Update these for each release! */ #define VERSION_MAJOR 2 -#define VERSION_MINOR 4 +#define VERSION_MINOR 6 #define VERSION_PATCH 0 /* Freeglut is intended to function under all Unix/X11 and Win32 platforms. */ @@ -57,6 +57,11 @@ */ #endif +/* Detect both SunPro and gcc compilers on Sun Solaris */ +#if defined (__SVR4) && defined (__sun) +# define TARGET_HOST_SOLARIS 1 +#endif + #ifndef TARGET_HOST_MS_WINDOWS # define TARGET_HOST_MS_WINDOWS 0 #endif @@ -69,6 +74,10 @@ # define TARGET_HOST_MAC_OSX 0 #endif +#ifndef TARGET_HOST_SOLARIS +# define TARGET_HOST_SOLARIS 0 +#endif + /* -- FIXED CONFIGURATION LIMITS ------------------------------------------- */ #define FREEGLUT_MAX_MENUS 3 @@ -101,12 +110,18 @@ # ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H # include # endif +/* If GLX is too old, we will fail during runtime when multisampling + is requested, but at least freeglut compiles. */ +# ifndef GLX_SAMPLE_BUFFERS +# define GLX_SAMPLE_BUFFERS 0x80A8 +# endif +# ifndef GLX_SAMPLES +# define GLX_SAMPLES 0x80A9 +# endif #endif /* These files should be available on every platform. */ -#include -#include #include #include #include @@ -302,6 +317,13 @@ struct tagSFG_State char *ProgramName; /* Name of the invoking program */ GLboolean JoysticksInitialised; /* Only initialize if application calls for them */ GLboolean InputDevsInitialised; /* Only initialize if application calls for them */ + + int AuxiliaryBufferNumber; /* Number of auxiliary buffers */ + int SampleNumber; /* Number of samples per pixel */ + + int MajorVersion; /* Major OpenGL context version */ + int MinorVersion; /* Minor OpenGL context version */ + int ContextFlags; /* OpenGL context flags */ }; /* The structure used by display initialization in freeglut_init.c */ @@ -314,6 +336,8 @@ struct tagSFG_Display Window RootWindow; /* The screen's root window. */ int Connection; /* The display's connection number */ Atom DeleteWindow; /* The window deletion atom */ + Atom State; /* The state atom */ + Atom StateFullScreen; /* The full screen atom */ #ifdef X_XF86VidModeGetModeLine /* @@ -380,7 +404,7 @@ struct tagSFG_Context SFG_WindowContextType Context; /* The window's OpenGL/WGL context */ #if TARGET_HOST_POSIX_X11 - XVisualInfo* VisualInfo; /* The window's visual information */ + GLXFBConfig* FBConfig; /* The window's FBConfig */ #elif TARGET_HOST_MS_WINDOWS HDC Device; /* The window's device context */ #endif @@ -556,10 +580,6 @@ enum typedef struct tagSFG_MenuContext SFG_MenuContext; struct tagSFG_MenuContext { -#if TARGET_HOST_POSIX_X11 - XVisualInfo* MVisualInfo; /* The window's visual information */ -#endif - SFG_WindowContextType MContext; /* The menu window's WGL context */ }; @@ -786,13 +806,14 @@ void fgDestroyStructure( void ); /* A helper function to check if a display mode is possible to use */ #if TARGET_HOST_POSIX_X11 -XVisualInfo* fgChooseVisual( void ); +GLXFBConfig* fgChooseFBConfig( void ); #endif /* The window procedure for Win32 events handling */ #if TARGET_HOST_MS_WINDOWS LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); +void fgNewWGLCreateContext( SFG_Window* window ); GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, unsigned char layer_type ); #endif @@ -803,12 +824,14 @@ GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly, * Defined in freeglut_structure.c, freeglut_window.c. */ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title, - int x, int y, int w, int h, + GLboolean positionUse, int x, int y, + GLboolean sizeUse, int w, int h, GLboolean gameMode, GLboolean isMenu ); void fgSetWindow ( SFG_Window *window ); void fgOpenWindow( SFG_Window* window, const char* title, - int x, int y, int w, int h, GLboolean gameMode, - GLboolean isSubWindow ); + GLboolean positionUse, int x, int y, + GLboolean sizeUse, int w, int h, + GLboolean gameMode, GLboolean isSubWindow ); void fgCloseWindow( SFG_Window* window ); void fgAddToWindowDestroyList ( SFG_Window* window ); void fgCloseWindows (); @@ -901,6 +924,19 @@ void fgListInsert(SFG_List *list, SFG_Node *next, SFG_Node *node); void fgError( const char *fmt, ... ); void fgWarning( const char *fmt, ... ); +/* + * Check if "hint" is present in "property" for "window". See freeglut_init.c + */ +#if TARGET_HOST_POSIX_X11 +int fgHintPresent(Window window, Atom property, Atom hint); +#endif + +SFG_Proc fghGetProcAddress( const char *procName ); + +#ifdef _WIN32 +extern void (__cdecl *__glutExitFunc)( int return_value ); +#endif + #endif /* FREEGLUT_INTERNAL_H */ /*** END OF FILE ***/