* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
*/\r
\r
+#define FREEGLUT_BUILDING_LIB\r
#include <GL/freeglut.h>\r
#include "../Common/freeglut_internal.h"\r
\r
#endif\r
/* End of copying the necessary parts out of it. */\r
\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
-\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
#ifdef WM_TOUCH\r
typedef BOOL (WINAPI *pRegisterTouchWindow)(HWND,ULONG);\r
static pRegisterTouchWindow fghRegisterTouchWindow = (pRegisterTouchWindow)0xDEADBEEF;\r
return;\r
}\r
\r
- wglMakeCurrent( window->Window.Device, window->Window.Context );\r
+ wglMakeCurrent( window->Window.pContext.Device, window->Window.Context );\r
\r
- if ( !fghIsExtensionSupported( window->Window.Device, "WGL_ARB_create_context" ) )\r
+ if ( !fghIsExtensionSupported( window->Window.pContext.Device, "WGL_ARB_create_context" ) )\r
{\r
return;\r
}\r
fgError( "wglCreateContextAttribsARB not found" );\r
}\r
\r
- context = wglCreateContextAttribsARB( window->Window.Device, 0, attributes );\r
+ context = wglCreateContextAttribsARB( window->Window.pContext.Device, 0, attributes );\r
if ( context == NULL )\r
{\r
fghContextCreationError();\r
if (checkOnly)\r
current_hDC = CreateDC(TEXT("DISPLAY"), NULL ,NULL ,NULL);\r
else\r
- current_hDC = window->Window.Device;\r
+ current_hDC = window->Window.pContext.Device;\r
\r
fghFillPFD( ppfd, current_hDC, layer_type );\r
pixelformat = ChoosePixelFormat( current_hDC, ppfd );\r
{\r
if( fgStructure.CurrentWindow )\r
ReleaseDC( fgStructure.CurrentWindow->Window.Handle,\r
- fgStructure.CurrentWindow->Window.Device );\r
+ fgStructure.CurrentWindow->Window.pContext.Device );\r
\r
if ( window )\r
{\r
- window->Window.Device = GetDC( window->Window.Handle );\r
+ window->Window.pContext.Device = GetDC( window->Window.Handle );\r
wglMakeCurrent(\r
- window->Window.Device,\r
+ window->Window.pContext.Device,\r
window->Window.Context\r
);\r
}\r
\r
\r
/* store current window rect */\r
- GetWindowRect( win->Window.Handle, &win->State.OldRect );\r
+ GetWindowRect( win->Window.Handle, &win->State.pWState.OldRect );\r
\r
/* store current window style */\r
- win->State.OldStyle = s = GetWindowLong(win->Window.Handle, GWL_STYLE);\r
+ win->State.pWState.OldStyle = s = GetWindowLong(win->Window.Handle, GWL_STYLE);\r
\r
/* remove decorations from style and add popup style*/\r
s &= ~WS_OVERLAPPEDWINDOW;\r
/* For fullscreen mode, find the monitor that is covered the most\r
* by the window and get its rect as the resize target.\r
*/\r
- hMonitor= MonitorFromRect(&win->State.OldRect, MONITOR_DEFAULTTONEAREST);\r
+ hMonitor= MonitorFromRect(&win->State.pWState.OldRect, MONITOR_DEFAULTTONEAREST);\r
mi.cbSize = sizeof(mi);\r
GetMonitorInfo(hMonitor, &mi);\r
rect = mi.rcMonitor;\r
}\r
\r
/* restore style of window before making it fullscreen */\r
- SetWindowLong(win->Window.Handle, GWL_STYLE, win->State.OldStyle);\r
+ SetWindowLong(win->Window.Handle, GWL_STYLE, win->State.pWState.OldStyle);\r
SetWindowPos(win->Window.Handle, HWND_TOP, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);\r
\r
/* Then resize */\r
SetWindowPos(win->Window.Handle,\r
HWND_TOP,\r
- win->State.OldRect.left,\r
- win->State.OldRect.top,\r
- win->State.OldRect.right - win->State.OldRect.left,\r
- win->State.OldRect.bottom - win->State.OldRect.top,\r
+ win->State.pWState.OldRect.left,\r
+ win->State.pWState.OldRect.top,\r
+ win->State.pWState.OldRect.right - win->State.pWState.OldRect.left,\r
+ win->State.pWState.OldRect.bottom - win->State.pWState.OldRect.top,\r
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING |\r
SWP_NOZORDER\r
);\r
}\r
\r
\r
+/* -- PLATFORM-SPECIFIC INTERFACE FUNCTION -------------------------------------------------- */\r
+\r
+int FGAPIENTRY __glutCreateWindowWithExit( const char *title, void (__cdecl *exit_function)(int) )\r
+{\r
+ __glutExitFunc = exit_function;\r
+ return glutCreateWindow( title );\r
+}\r
+\r