open_toontown_panda3d/pandaapp/src/stitchbase/fixedPoint.h

33 lines
1.0 KiB
C

// Filename: fixedPoint.h
// Created by: drose (06Nov99)
//
////////////////////////////////////////////////////////////////////
#ifndef FIXEDPOINT_H
#define FIXEDPOINT_H
// Simple fixed-point arithmetic definitions, for support of
// TriangleRasterizer. Totally ripped off from Mesa.
typedef int FixedPoint;
#define FIXED_ONE 0x00000800
#define FIXED_HALF 0x00000400
#define FIXED_FRAC_MASK 0x000007FF
#define FIXED_INT_MASK (~FIXED_FRAC_MASK)
#define FIXED_EPSILON 1
#define FIXED_SCALE 2048.0
#define FIXED_SHIFT 11
#define FloatToFixed(X) ((FixedPoint) ((X) * FIXED_SCALE))
#define IntToFixed(I) ((I) << FIXED_SHIFT)
#define FixedToInt(X) ((X) >> FIXED_SHIFT)
#define FixedToUns(X) (((unsigned int)(X)) >> 11)
#define FixedCeil(X) (((X) + FIXED_ONE - FIXED_EPSILON) & FIXED_INT_MASK)
#define FixedFloor(X) ((X) & FIXED_INT_MASK)
/* 0.00048828125 = 1/FIXED_SCALE */
#define FixedToFloat(X) ((X) * 0.00048828125)
#define PosFloatToFixed(X) FloatToFixed(X)
#define SignedFloatToFixed(X) FloatToFixed(X)
#endif