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
#include <GL/freeglut.h>
#include "fg_internal.h"
-#include "fg_main.h"
#include "egl/fg_window_egl.h"
#include <android/log.h>
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;
#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);
#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.
}
/*
+ * 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 )
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,
}
+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
*/
# define VFPRINTF(s,f,a)
#endif
-#include "fg_main.h"
/*
* Try to get the maximum value allowed for ints, falling back to the minimum
*/
-/*
- * 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 )
{
#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
/*
+ * 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 )