X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_internal.h;h=540f75f593e46d490b8b8e6c804f5ca1e0fe8795;hb=1a159971346b45c5d25c75176095f38606c6892d;hp=6faef9d25cc7242f18b7a162985166da1b451b4f;hpb=1fd9514b5c5df8a4bf974787f26f6cc3dd84c1cc;p=freeglut diff --git a/src/freeglut_internal.h b/src/freeglut_internal.h index 6faef9d..540f75f 100644 --- a/src/freeglut_internal.h +++ b/src/freeglut_internal.h @@ -339,6 +339,8 @@ struct tagSFG_State int NumActiveJoysticks; /* Number of active joysticks -- if zero, don't poll joysticks */ GLboolean InputDevsInitialised; /* Only initialize if application calls for them */ + int MouseWheelTicks; /* Number of ticks the mouse wheel has turned */ + int AuxiliaryBufferNumber; /* Number of auxiliary buffers */ int SampleNumber; /* Number of samples per pixel */ @@ -365,6 +367,7 @@ struct tagSFG_Display #ifdef HAVE_X11_EXTENSIONS_XRANDR_H int prev_xsz, prev_ysz; + int prev_refresh; int prev_size_valid; #endif /* HAVE_X11_EXTENSIONS_XRANDR_H */ @@ -378,13 +381,13 @@ struct tagSFG_Display int DisplayModeClock; /* The display mode's refresh rate */ int DisplayViewPortX; /* saved X location of the viewport */ int DisplayViewPortY; /* saved Y location of the viewport */ +#endif /* HAVE_X11_EXTENSIONS_XF86VMODE_H */ + int DisplayPointerX; /* saved X location of the pointer */ int DisplayPointerY; /* saved Y location of the pointer */ -#endif /* HAVE_X11_EXTENSIONS_XF86VMODE_H */ - #elif TARGET_HOST_MS_WINDOWS - HINSTANCE Instance; /* The application's instance */ + HINSTANCE Instance; /* The application's instance */ DEVMODE DisplayMode; /* Desktop's display settings */ char *DisplayName; /* Display name for multi display support*/ @@ -446,10 +449,16 @@ struct tagSFG_Context typedef struct tagSFG_WindowState SFG_WindowState; struct tagSFG_WindowState { + /* Note that on Windows, sizes always refer to the client area, thus without the window decorations */ int Width; /* Window's width in pixels */ int Height; /* The same about the height */ +#if TARGET_HOST_POSIX_X11 int OldWidth; /* Window width from before a resize */ int OldHeight; /* " height " " " " */ +#elif TARGET_HOST_MS_WINDOWS + RECT OldRect; /* window rect - stored before the window is made fullscreen */ + DWORD OldStyle; /* window style - stored before the window is made fullscreen */ +#endif GLboolean Redisplay; /* Do we have to redisplay? */ GLboolean Visible; /* Is the window visible now */ @@ -923,6 +932,19 @@ void fgEnumWindows( FGCBenumerator enumCallback, SFG_Enumerator* enumerator ); void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback, SFG_Enumerator* enumerator ); +#if TARGET_HOST_MS_WINDOWS +/* + * Helper functions for getting client area from the window rect + * and the window rect from the client area given the style of the window + * (or a valid window pointer from which the style can be queried). + */ +void fghComputeWindowRectFromClientArea_UseStyle ( const DWORD windowStyle , RECT *clientRect, BOOL posIsOutside ); +void fghComputeWindowRectFromClientArea_QueryWindow( const SFG_Window *window, RECT *clientRect, BOOL posIsOutside ); +void fghComputeClientAreaFromWindowRect ( const SFG_Window *window, RECT *windowRect, BOOL wantPosOutside ); +RECT fghGetClientArea ( const SFG_Window *window, BOOL wantPosOutside ); +void fghGetBorderWidth(const DWORD windowStyle, int* xBorderWidth, int* yBorderWidth); +#endif + /* * fgWindowByHandle returns a (SFG_Window *) value pointing to the * first window in the queue matching the specified window handle.