tahoma2d/toonz/sources/common/flash/FFixed.h

57 lines
1.6 KiB
C
Raw Normal View History

2016-03-19 06:57:51 +13:00
#ifndef FIXED_INCLUDED
#define FIXED_INCLUDED
#define fixed_1 0x00010000L
// fixed 2.0
#define fixed2 0x00020000L
// fixed 0.5
#define fixedHalf 0x00008000L
#define infinity 0x7FFFFFFFL
#define negInfinity 0x80000000L
#define fixedStdErr 0x0000003FL
// fixed sqrt(2)
#define fixedSqrt2 0x00016A0AL
#define FixedRound(a) ((S16)((SFIXED)(a) + 0x8000L >> 16))
#define FixedTrunc(a) ((S16)((SFIXED)(a) >> 16))
#define FixedCeiling(a) ((S16)(((SFIXED)(a) + 0x8000L) >> 16))
#define FixedFloor(a) ((S16)((SFIXED)(a) >> 16))
#define FixedToInt(a) ((S16)((SFIXED)(a) + 0x8000L >> 16))
#define IntToFixed(a) ((SFIXED)(a) << 16)
// Fixed integer constant
#define FC(a) IntToFixed(a)
#define FixedToFloat(a) ((float)(a) / fixed_1)
#define FloatToFixed(a) ((SFIXED)((float)(a)*fixed_1))
#define FixedToDouble(a) ((double)(a) / fixed_1)
#define DoubleToFixed(a) ((SFIXED)((double)(a)*fixed_1))
#define FixedAverage(a, b) (((a) + (b)) >> 1)
#define FixedAbs(x) ((x) < 0 ? -(x) : (x))
#define FixedMin(a, b) ((a) < (b) ? (a) : (b))
#define FixedMax(a, b) ((a) > (b) ? (a) : (b))
#define FixedEqual(a, b, err) (FixedAbs((a) - (b)) <= err)
SFIXED FixedNearestMultiple(SFIXED x, SFIXED factor);
// Note that all angles are handled in Fixed point degrees to simplify rounding issues
// they are kept in the range of 0 to 360 degrees
// Generic Floating point routines for quick porting not fast enough for shipping code
SFIXED FixedMul(SFIXED, SFIXED);
SFIXED FixedDiv(SFIXED, SFIXED);
SFIXED FixedSin(SFIXED);
SFIXED FixedCos(SFIXED);
SFIXED FixedTan(SFIXED);
SFIXED FixedAtan2(SFIXED dy, SFIXED dx);
int _FPMul(int a, int b, int shift);
int _FPDiv(int a, int b, int rshift);
#endif