/*
- * freeglut_state_android.c
+ * fg_state_android.c
*
* Android-specific freeglut state query methods.
*
#include <stdio.h>
#include <android/native_window.h>
#include "fg_internal.h"
-
-int fgPlatformGlutGet ( GLenum eWhat )
-{
- fprintf(stderr, "fgPlatformGlutGet: STUB\n");
-
- switch (eWhat) {
- case GLUT_WINDOW_WIDTH:
- case GLUT_WINDOW_HEIGHT:
- {
- if ( fgStructure.CurrentWindow == NULL )
- return 0;
- int32_t width = ANativeWindow_getWidth(fgStructure.CurrentWindow->Window.Handle);
- int32_t height = ANativeWindow_getHeight(fgStructure.CurrentWindow->Window.Handle);
- switch ( eWhat )
- {
- case GLUT_WINDOW_WIDTH:
- return width;
- case GLUT_WINDOW_HEIGHT:
- return height;
- }
- }
- }
- return -1;
-}
+#include "egl/fg_state_egl.h"
int fgPlatformGlutDeviceGet ( GLenum eWhat )
{
- fprintf(stderr, "fgPlatformGlutDeviceGet: STUB\n");
- return -1;
-}
-
-int fgPlatformGlutLayerGet( GLenum eWhat )
-{
- /*
- * This is easy as layers are not implemented ;-)
- *
- * XXX Can we merge the UNIX/X11 and WIN32 sections? Or
- * XXX is overlay support planned?
- */
- switch( eWhat )
+ switch( eWhat )
{
- case GLUT_OVERLAY_POSSIBLE:
- return 0;
-
- case GLUT_LAYER_IN_USE:
- return GLUT_NORMAL;
+ case GLUT_HAS_KEYBOARD:
+ /* Android has a keyboard, though it may be virtual. */
+ return 1;
- case GLUT_HAS_OVERLAY:
- return 0;
+ case GLUT_HAS_MOUSE:
+ /* Android has a touchscreen; until we get proper touchscreen
+ support, consider it as a mouse. */
+ return 1 ;
- case GLUT_TRANSPARENT_INDEX:
- /*
- * Return just anything, which is always defined as zero
- *
- * XXX HUH?
- */
- return 0;
-
- case GLUT_NORMAL_DAMAGED:
- /* XXX Actually I do not know. Maybe. */
- return 0;
-
- case GLUT_OVERLAY_DAMAGED:
- return -1;
+ case GLUT_NUM_MOUSE_BUTTONS:
+ /* Android has a touchscreen; until we get proper touchscreen
+ support, consider it as a 1-button mouse. */
+ return 1;
default:
- fgWarning( "glutLayerGet(): missing enum handle %d", eWhat );
- break;
+ fgWarning( "glutDeviceGet(): missing enum handle %d", eWhat );
+ break;
}
- /* And fail. That's good. Programs do love failing. */
- return -1;
+ /* And now -- the failure. */
+ return -1;
}
-
-int *fgPlatformGlutGetModeValues(GLenum eWhat, int *size)
+int fgPlatformGlutGet ( GLenum eWhat )
{
- fprintf(stderr, "fgPlatformGlutGetModeValues: STUB\n");
- return NULL;
-}
+ switch (eWhat) {
+ /* One full-screen window only */
+ case GLUT_WINDOW_X:
+ case GLUT_WINDOW_Y:
+ case GLUT_WINDOW_BORDER_WIDTH:
+ case GLUT_WINDOW_HEADER_HEIGHT:
+ return 0;
+ case GLUT_WINDOW_WIDTH:
+ case GLUT_WINDOW_HEIGHT:
+ {
+ if ( fgStructure.CurrentWindow == NULL )
+ return 0;
+ int32_t width = ANativeWindow_getWidth(fgStructure.CurrentWindow->Window.Handle);
+ int32_t height = ANativeWindow_getHeight(fgStructure.CurrentWindow->Window.Handle);
+ switch ( eWhat )
+ {
+ case GLUT_WINDOW_WIDTH:
+ return width;
+ case GLUT_WINDOW_HEIGHT:
+ return height;
+ }
+ }
+ case GLUT_WINDOW_COLORMAP_SIZE:
+ /* 0 for RGBA/non-indexed mode */
+ /* Under Android and GLES more generally, no indexed-mode */
+ return 0;
+
+ default:
+ return fghPlatformGlutGetEGL(eWhat);
+ }
+ return -1;
+}