home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 517a.lha / VFont_v2.0 / include / vfont / fixpoint.h < prev    next >
C/C++ Source or Header  |  1991-06-09  |  800b  |  28 lines

  1. #ifndef FIXPOINT_H
  2. #define FIXPOINT_H
  3.  
  4. typedef long FIX;
  5. typedef short SFIX;
  6.  
  7. #define FIXOFFSET       0x00010000L
  8. #define FIXOFFSET2      0x00008000L
  9. /* ((1L<<(sizeof(int)<<3))>>10) */
  10. #define SMALLFIXOS      (short)((1L<< ((sizeof(SFIX)<<3)-1))-1)
  11.  
  12. #define FixToInt(v)     ((int)((v)/FIXOFFSET))
  13. #define FixToFloat(v)   (((float)(v))/((float)FIXOFFSET))
  14.  
  15. #define IntToFix(v)     ((FIX)((v)*FIXOFFSET))
  16. #define FloatToFix(v)   ((FIX)((v)*((float)FIXOFFSET)))
  17.  
  18. #define SFixToInt(v)    ((int)((v)/SMALLFIXOS))
  19. #define SFixToFloat(v)  (((float)(v))/((float)SMALLFIXOS))
  20.  
  21. #define IntToSFix(v)    ((SFIX)((v)*SMALLFIXOS))
  22. #define FloatToSFix(v)  ((SFIX)((v)*((float)SMALLFIXOS)))
  23.  
  24. #define FixDiv(x,y)     ((FIX)((LONG)((x)*FIXOFFSET)/(LONG)(y)))
  25. #define FixMul(x,y)     ((FIX)((x)*FIXOFFSET*(y)))
  26.  
  27. #endif
  28.