Moving some function prototypes into the source files where they are found and out...
[freeglut] / src / mswin / freeglut_state_mswin.c
index d3ba24d..e552291 100644 (file)
@@ -29,6 +29,9 @@
 #include "freeglut_internal_mswin.h"\r
 \r
 \r
+extern GLboolean fgSetupPixelFormat( SFG_Window* window, GLboolean checkOnly,\r
+                                     unsigned char layer_type );\r
+\r
 \r
 /* The following include file is available from SGI but is not standard:\r
  *   #include <GL/wglext.h>\r
@@ -229,3 +232,99 @@ int fgPlatformGlutGet ( GLenum eWhat )
 \r
        return -1;\r
 }\r
+\r
+\r
+int fgPlatformGlutDeviceGet ( GLenum eWhat )\r
+{\r
+    switch( eWhat )\r
+    {\r
+    case GLUT_HAS_KEYBOARD:\r
+        /*\r
+         * Win32 is assumed a keyboard, and this cannot be queried,\r
+         * except for WindowsCE.\r
+         *\r
+         * X11 has a core keyboard by definition, although it can\r
+         * be present as a virtual/dummy keyboard. For now, there\r
+         * is no reliable way to tell if a real keyboard is present.\r
+         */\r
+#if defined(_WIN32_CE)\r
+        return ( GetKeyboardStatus() & KBDI_KEYBOARD_PRESENT ) ? 1 : 0;\r
+#   if FREEGLUT_LIB_PRAGMAS\r
+#       pragma comment (lib,"Kbdui.lib")\r
+#   endif\r
+\r
+#else\r
+        return 1;\r
+#endif\r
+\r
+    case GLUT_HAS_MOUSE:\r
+        /*\r
+         * MS Windows can be booted without a mouse.\r
+         */\r
+        return GetSystemMetrics( SM_MOUSEPRESENT );\r
+\r
+    case GLUT_NUM_MOUSE_BUTTONS:\r
+#  if defined(_WIN32_WCE)\r
+        return 1;\r
+#  else\r
+        return GetSystemMetrics( SM_CMOUSEBUTTONS );\r
+#  endif\r
+\r
+    default:\r
+        fgWarning( "glutDeviceGet(): missing enum handle %d", eWhat );\r
+        break;\r
+    }\r
+\r
+    /* And now -- the failure. */\r
+    return -1;\r
+}\r
+\r
+\r
+int fgPlatformGlutLayerGet( GLenum eWhat )\r
+{\r
+    /*\r
+     * This is easy as layers are not implemented ;-)\r
+     *\r
+     * XXX Can we merge the UNIX/X11 and WIN32 sections?  Or\r
+     * XXX is overlay support planned?\r
+     */\r
+    switch( eWhat )\r
+    {\r
+\r
+    case GLUT_OVERLAY_POSSIBLE:\r
+/*      return fgSetupPixelFormat( fgStructure.CurrentWindow, GL_TRUE,\r
+                                   PFD_OVERLAY_PLANE ); */\r
+      return 0 ;\r
+\r
+    case GLUT_LAYER_IN_USE:\r
+        return GLUT_NORMAL;\r
+\r
+    case GLUT_HAS_OVERLAY:\r
+        return 0;\r
+\r
+    case GLUT_TRANSPARENT_INDEX:\r
+        /*\r
+         * Return just anything, which is always defined as zero\r
+         *\r
+         * XXX HUH?\r
+         */\r
+        return 0;\r
+\r
+    case GLUT_NORMAL_DAMAGED:\r
+        /* XXX Actually I do not know. Maybe. */\r
+        return 0;\r
+\r
+    case GLUT_OVERLAY_DAMAGED:\r
+        return -1;\r
+\r
+    default:\r
+        fgWarning( "glutLayerGet(): missing enum handle %d", eWhat );\r
+        break;\r
+    }\r
+\r
+    /* And fail. That's good. Programs do love failing. */\r
+    return -1;\r
+}\r
+\r
+\r
+\r