Little fix'es.
[freeglut] / src / android / fg_state_android.c
index e22b86c..bd2b034 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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;
+}