cleaning up mixed tabs and spaces
[freeglut] / src / fg_state.c
index 208b5e2..4165daa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * freeglut_state.c
+ * fg_state.c
  *
  * Freeglut state query methods.
  *
@@ -44,6 +44,7 @@
 extern int fgPlatformGlutGet ( GLenum eWhat );
 extern int fgPlatformGlutDeviceGet ( GLenum eWhat );
 extern int *fgPlatformGlutGetModeValues(GLenum eWhat, int *size);
+extern SFG_Font* fghFontByID( void* font );
 
 
 /* -- LOCAL DEFINITIONS ---------------------------------------------------- */
@@ -60,9 +61,6 @@ void FGAPIENTRY glutSetOption( GLenum eWhat, int value )
 {
     FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSetOption" );
 
-    /*
-     * XXX In chronological code add order.  (WHY in that order?)
-     */
     switch( eWhat )
     {
     case GLUT_INIT_WINDOW_X:
@@ -111,6 +109,23 @@ void FGAPIENTRY glutSetOption( GLenum eWhat, int value )
       fgState.SampleNumber = value;
       break;
 
+    case GLUT_SKIP_STALE_MOTION_EVENTS:
+      fgState.SkipStaleMotion = !!value;
+      break;
+
+    case GLUT_GEOMETRY_VISUALIZE_NORMALS:
+      if( fgStructure.CurrentWindow != NULL )
+        fgStructure.CurrentWindow->State.VisualizeNormals = !!value;
+      break;
+
+    case GLUT_STROKE_FONT_DRAW_JOIN_DOTS:
+      fgState.StrokeFontDrawJoinDots = !!value;
+      break;
+
+    case GLUT_ALLOW_NEGATIVE_WINDOW_POSITION:
+      fgState.AllowNegativeWindowPosition = !!value;
+      break;
+
     default:
         fgWarning( "glutSetOption(): missing enum handle %d", eWhat );
         break;
@@ -127,13 +142,18 @@ int FGAPIENTRY glutGet( GLenum eWhat )
     case GLUT_INIT_STATE:
         return fgState.Initialised;
 
+    /* Although internally the time store is 64bits wide, the return value
+     * here still wraps every 49.7 days. Integer overflows cancel however
+     * when subtracting an initial start time, unless the total time exceeds
+     * 32-bit, so you can still work with this.
+     * XXX: a glutGet64 to return the time might be an idea...
+     */
     case GLUT_ELAPSED_TIME:
         return (int) fgElapsedTime();
     }
 
     FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutGet" );
 
-    /* XXX In chronological code add order.  (WHY in that order?) */
     switch( eWhat )
     {
     /* Following values are stored in fgState and fgDisplay global structures */
@@ -198,11 +218,24 @@ int FGAPIENTRY glutGet( GLenum eWhat )
     case GLUT_MULTISAMPLE:
       return fgState.SampleNumber;
 
+    case GLUT_SKIP_STALE_MOTION_EVENTS:
+      return fgState.SkipStaleMotion;
+
+    case GLUT_GEOMETRY_VISUALIZE_NORMALS:
+      if( fgStructure.CurrentWindow == NULL )
+        return GL_FALSE;
+      return fgStructure.CurrentWindow->State.VisualizeNormals;
+
+    case GLUT_STROKE_FONT_DRAW_JOIN_DOTS:
+        return fgState.StrokeFontDrawJoinDots;
+
+    case GLUT_ALLOW_NEGATIVE_WINDOW_POSITION:
+        return fgState.AllowNegativeWindowPosition;
+
     default:
         return fgPlatformGlutGet ( eWhat );
         break;
     }
-    return -1;
 }
 
 /*
@@ -237,7 +270,7 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat )
     case GLUT_NUM_DIALS:
         if ( fgState.InputDevsInitialised ) return 8;
         return 0;
+
     case GLUT_NUM_BUTTON_BOX_BUTTONS:
         return 0;
 
@@ -260,11 +293,8 @@ int FGAPIENTRY glutDeviceGet( GLenum eWhat )
         return fgState.KeyRepeat;
 
     default:
-               return fgPlatformGlutDeviceGet ( eWhat );
+        return fgPlatformGlutDeviceGet ( eWhat );
     }
-
-    /* And now -- the failure. */
-    return -1;
 }
 
 /*