From: <dc...@us...> - 2013-02-13 10:28:35
|
Revision: 1504 http://freeglut.svn.sourceforge.net/freeglut/?rev=1504&view=rev Author: dcnieho Date: 2013-02-13 10:28:26 +0000 (Wed, 13 Feb 2013) Log Message: ----------- moving fgPlatformReshapeWindow and fgPlatformDisplayWindow from fg_main_x to fg_window_x. Hope this didn't break anything for X11 or andriod Modified Paths: -------------- trunk/freeglut/freeglut/CMakeLists.txt trunk/freeglut/freeglut/src/android/fg_main_android.c trunk/freeglut/freeglut/src/android/fg_main_android.h trunk/freeglut/freeglut/src/android/fg_window_android.c trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c trunk/freeglut/freeglut/src/x11/fg_main_x11.c trunk/freeglut/freeglut/src/x11/fg_window_x11.c Modified: trunk/freeglut/freeglut/CMakeLists.txt =================================================================== --- trunk/freeglut/freeglut/CMakeLists.txt 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/CMakeLists.txt 2013-02-13 10:28:26 UTC (rev 1504) @@ -67,7 +67,6 @@ src/fg_input_devices.c src/fg_joystick.c src/fg_main.c - src/fg_main.h src/fg_misc.c src/fg_overlay.c src/fg_spaceball.c Modified: trunk/freeglut/freeglut/src/android/fg_main_android.c =================================================================== --- trunk/freeglut/freeglut/src/android/fg_main_android.c 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/android/fg_main_android.c 2013-02-13 10:28:26 UTC (rev 1504) @@ -28,7 +28,6 @@ #include <GL/freeglut.h> #include "fg_internal.h" -#include "fg_main.h" #include "egl/fg_window_egl.h" #include <android/log.h> @@ -139,22 +138,6 @@ return ascii; } -/* - * Request a window resize - */ -void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) -{ - fprintf(stderr, "fgPlatformReshapeWindow: STUB\n"); -} - -/* - * A static helper function to execute display callback for a window - */ -void fgPlatformDisplayWindow ( SFG_Window *window ) -{ - fghRedrawWindow ( window ) ; -} - unsigned long fgPlatformSystemTime ( void ) { struct timeval now; Modified: trunk/freeglut/freeglut/src/android/fg_main_android.h =================================================================== --- trunk/freeglut/freeglut/src/android/fg_main_android.h 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/android/fg_main_android.h 2013-02-13 10:28:26 UTC (rev 1504) @@ -30,8 +30,6 @@ #include "fg_internal.h" extern void fgPlatformProcessSingleEvent(void); -extern void fgPlatformReshapeWindow(SFG_Window *window, int width, int height); -extern void fgPlatformDisplayWindow(SFG_Window *window); extern unsigned long fgPlatformSystemTime(void); extern void fgPlatformSleepForEvents(long msec); extern void fgPlatformMainLoopPreliminaryWork(void); Modified: trunk/freeglut/freeglut/src/android/fg_window_android.c =================================================================== --- trunk/freeglut/freeglut/src/android/fg_window_android.c 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/android/fg_window_android.c 2013-02-13 10:28:26 UTC (rev 1504) @@ -32,6 +32,8 @@ #include "egl/fg_window_egl.h" #include <android/native_app_glue/android_native_app_glue.h> +extern void fghRedrawWindow(SFG_Window *window); + /* * Opens a window. Requires a SFG_Window object created and attached * to the freeglut structure. OpenGL context is created here. @@ -86,6 +88,22 @@ } /* + * Request a window resize + */ +void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) +{ + fprintf(stderr, "fgPlatformReshapeWindow: STUB\n"); +} + +/* + * A static helper function to execute display callback for a window + */ +void fgPlatformDisplayWindow ( SFG_Window *window ) +{ + fghRedrawWindow ( window ) ; +} + +/* * Closes a window, destroying the frame and OpenGL context */ void fgPlatformCloseWindow( SFG_Window* window ) Modified: trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/mswin/fg_main_mswin.c 2013-02-13 10:28:26 UTC (rev 1504) @@ -58,83 +58,7 @@ struct GXKeyList gxKeyList; #endif /* _WIN32_WCE */ -/* - * 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). - */ -extern void fghComputeWindowRectFromClientArea_QueryWindow( RECT *clientRect, const SFG_Window *window, BOOL posIsOutside ); -extern void fghGetClientArea ( RECT *clientRect, const SFG_Window *window, BOOL wantPosOutside ); - -void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) -{ - RECT windowRect; - - /* - * For windowed mode, get the current position of the - * window and resize taking the size of the frame - * decorations into account. - * - * Note on maximizing behavior of Windows: the resize borders are off - * the screen such that the client area extends all the way from the - * leftmost corner to the rightmost corner to maximize screen real - * estate. A caption is still shown however to allow interaction with - * the window controls. This is default behavior of Windows that - * FreeGLUT sticks with. To alter, one would have to check if - * WS_MAXIMIZE style is set when a resize event is triggered, and - * then manually correct the windowRect to put the borders back on - * screen. - */ - - /* "GetWindowRect" returns the pixel coordinates of the outside of the window */ - GetWindowRect( window->Window.Handle, &windowRect ); - - /* Create rect in FreeGLUT format, (X,Y) topleft outside window, WxH of client area */ - windowRect.right = windowRect.left+width; - windowRect.bottom = windowRect.top+height; - - if (window->Parent == NULL) - /* get the window rect from this to feed to SetWindowPos, correct for window decorations */ - fghComputeWindowRectFromClientArea_QueryWindow(&windowRect,window,TRUE); - else - { - /* correct rect for position client area of parent window - * (SetWindowPos input for child windows is in coordinates - * relative to the parent's client area). - * Child windows don't have decoration, so no need to correct - * for them. - */ - RECT parentRect; - fghGetClientArea( &parentRect, window->Parent, FALSE ); - OffsetRect(&windowRect,-parentRect.left,-parentRect.top); - } - - /* Do the actual resizing */ - SetWindowPos( window->Window.Handle, - HWND_TOP, - windowRect.left, windowRect.top, - windowRect.right - windowRect.left, - windowRect.bottom- windowRect.top, - SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING | - SWP_NOZORDER - ); - - /* Set new width and height so we can test for that in WM_SIZE message handler and don't do anything if not needed */ - window->State.Width = width; - window->State.Height = height; -} - - -void fgPlatformDisplayWindow ( SFG_Window *window ) -{ - RedrawWindow( - window->Window.Handle, NULL, NULL, - RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE | RDW_UPDATENOW - ); -} - - /* Get system time, taking special precautions against 32bit timer wrap. We use timeGetTime and not GetTickCount because of its better stability, and because we can increase its granularity (to 1 ms in Modified: trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c =================================================================== --- trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/mswin/fg_window_mswin.c 2013-02-13 10:28:26 UTC (rev 1504) @@ -759,6 +759,74 @@ } +void fgPlatformDisplayWindow ( SFG_Window *window ) +{ + RedrawWindow( + window->Window.Handle, NULL, NULL, + RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE | RDW_UPDATENOW + ); +} + + +void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) +{ + RECT windowRect; + + /* + * For windowed mode, get the current position of the + * window and resize taking the size of the frame + * decorations into account. + * + * Note on maximizing behavior of Windows: the resize borders are off + * the screen such that the client area extends all the way from the + * leftmost corner to the rightmost corner to maximize screen real + * estate. A caption is still shown however to allow interaction with + * the window controls. This is default behavior of Windows that + * FreeGLUT sticks with. To alter, one would have to check if + * WS_MAXIMIZE style is set when a resize event is triggered, and + * then manually correct the windowRect to put the borders back on + * screen. + */ + + /* "GetWindowRect" returns the pixel coordinates of the outside of the window */ + GetWindowRect( window->Window.Handle, &windowRect ); + + /* Create rect in FreeGLUT format, (X,Y) topleft outside window, WxH of client area */ + windowRect.right = windowRect.left+width; + windowRect.bottom = windowRect.top+height; + + if (window->Parent == NULL) + /* get the window rect from this to feed to SetWindowPos, correct for window decorations */ + fghComputeWindowRectFromClientArea_QueryWindow(&windowRect,window,TRUE); + else + { + /* correct rect for position client area of parent window + * (SetWindowPos input for child windows is in coordinates + * relative to the parent's client area). + * Child windows don't have decoration, so no need to correct + * for them. + */ + RECT parentRect; + fghGetClientArea( &parentRect, window->Parent, FALSE ); + OffsetRect(&windowRect,-parentRect.left,-parentRect.top); + } + + /* Do the actual resizing */ + SetWindowPos( window->Window.Handle, + HWND_TOP, + windowRect.left, windowRect.top, + windowRect.right - windowRect.left, + windowRect.bottom- windowRect.top, + SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING | + SWP_NOZORDER + ); + + /* Set new width and height so we can test for that in WM_SIZE message handler and don't do anything if not needed */ + window->State.Width = width; + window->State.Height = height; +} + + /* * Closes a window, destroying the frame and OpenGL context */ Modified: trunk/freeglut/freeglut/src/x11/fg_main_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_main_x11.c 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/x11/fg_main_x11.c 2013-02-13 10:28:26 UTC (rev 1504) @@ -40,7 +40,6 @@ # define VFPRINTF(s,f,a) #endif -#include "fg_main.h" /* * Try to get the maximum value allowed for ints, falling back to the minimum @@ -72,26 +71,7 @@ */ -/* - * Request a window resize - */ -void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) -{ - XResizeWindow( fgDisplay.pDisplay.Display, window->Window.Handle, - width, height ); - XFlush( fgDisplay.pDisplay.Display ); /* XXX Shouldn't need this */ -} - -/* - * A static helper function to execute display callback for a window - */ -void fgPlatformDisplayWindow ( SFG_Window *window ) -{ - fghRedrawWindow ( window ) ; -} - - fg_time_t fgPlatformSystemTime ( void ) { #ifdef CLOCK_MONOTONIC Modified: trunk/freeglut/freeglut/src/x11/fg_window_x11.c =================================================================== --- trunk/freeglut/freeglut/src/x11/fg_window_x11.c 2013-02-13 09:48:51 UTC (rev 1503) +++ trunk/freeglut/freeglut/src/x11/fg_window_x11.c 2013-02-13 10:28:26 UTC (rev 1504) @@ -32,6 +32,8 @@ #include <unistd.h> /* usleep */ #include "../fg_internal.h" +extern void fghRedrawWindow(SFG_Window *window); + #ifdef EGL_VERSION_1_0 #include "egl/fg_window_egl.h" #define fghCreateNewContext fghCreateNewContextEGL @@ -370,6 +372,26 @@ /* + * Request a window resize + */ +void fgPlatformReshapeWindow ( SFG_Window *window, int width, int height ) +{ + XResizeWindow( fgDisplay.pDisplay.Display, window->Window.Handle, + width, height ); + XFlush( fgDisplay.pDisplay.Display ); /* XXX Shouldn't need this */ +} + + +/* + * A static helper function to execute display callback for a window + */ +void fgPlatformDisplayWindow ( SFG_Window *window ) +{ + fghRedrawWindow ( window ) ; +} + + +/* * Closes a window, destroying the frame and OpenGL context */ void fgPlatformCloseWindow( SFG_Window* window ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |