X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fandroid%2Ffg_state_android.c;h=bd2b034fe5dd3860cda56e6008cd3fa0d48bd77a;hb=207c3128bf025b5e025bace5c0425d380dd72aa9;hp=e22b86c6c13092832be18572713bedcaaf7bb2b6;hpb=7fbb15bc63c7937cab772bd942883e3811acbabf;p=freeglut diff --git a/src/android/fg_state_android.c b/src/android/fg_state_android.c index e22b86c..bd2b034 100644 --- a/src/android/fg_state_android.c +++ b/src/android/fg_state_android.c @@ -1,5 +1,5 @@ /* - * freeglut_state_android.c + * fg_state_android.c * * Android-specific freeglut state query methods. * @@ -29,85 +29,68 @@ #include #include #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; +}