fully parameterize the macros for fixed-point arithmetic
authorBrian Paul <brian.paul@tungstengraphics.com>
Sun, 8 Feb 2004 00:37:32 +0000 (00:37 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sun, 8 Feb 2004 00:37:32 +0000 (00:37 +0000)
src/mesa/main/mtypes.h

index 5ed79424d535c5c23483b2fa413a4e8bc2061295..37fb9a240811abadd31a0463ca6d45a1d28d1bef 100644 (file)
@@ -108,21 +108,15 @@ typedef int GLfixed;
 /*
  * Fixed point arithmetic macros
  */
-#ifdef FIXED_14
-#define FIXED_ONE       0x00004000
-#define FIXED_HALF      0x00002000
-#define FIXED_FRAC_MASK 0x00003FFF
-#define FIXED_SCALE     16384.0f
-#define FIXED_SHIFT     14
-#else
-#define FIXED_ONE       0x00000800
-#define FIXED_HALF      0x00000400
-#define FIXED_FRAC_MASK 0x000007FF
-#define FIXED_SCALE     2048.0f
-#define FIXED_SHIFT     11
-#endif
+#define FIXED_FRAC_BITS 11
+
+#define FIXED_SHIFT     FIXED_FRAC_BITS
+#define FIXED_ONE       (1 << FIXED_SHIFT)
+#define FIXED_HALF      (1 << (FIXED_SHIFT-1))
+#define FIXED_FRAC_MASK (FIXED_ONE - 1)
 #define FIXED_INT_MASK  (~FIXED_FRAC_MASK)
 #define FIXED_EPSILON   1
+#define FIXED_SCALE     ((float) FIXED_ONE)
 #define FloatToFixed(X) (IROUND((X) * FIXED_SCALE))
 #define IntToFixed(I)   ((I) << FIXED_SHIFT)
 #define FixedToInt(X)   ((X) >> FIXED_SHIFT)