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 */
#ifdef HAVE_X11_EXTENSIONS_XRANDR_H
int prev_xsz, prev_ysz;
+ int prev_refresh;
int prev_size_valid;
#endif /* HAVE_X11_EXTENSIONS_XRANDR_H */
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*/
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 */
void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback,
SFG_Enumerator* enumerator );
+/*
+ * 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);
+
/*
* fgWindowByHandle returns a (SFG_Window *) value pointing to the
* first window in the queue matching the specified window handle.