Load cups into easysw/current.
[thirdparty/cups.git] / pdftops / SplashMath.h
1 //========================================================================
2 //
3 // SplashMath.h
4 //
5 //========================================================================
6
7 #ifndef SPLASHMATH_H
8 #define SPLASHMATH_H
9
10 #include <config.h>
11 #if USE_FIXEDPONT
12 #include "FixedPoint.h"
13 #else
14 #include <math.h>
15 #endif
16 #include "SplashTypes.h"
17
18 static inline SplashCoord splashAbs(SplashCoord x) {
19 #if USE_FIXEDPOINT
20   return FixedPoint::abs(x);
21 #else
22   return fabs(x);
23 #endif
24 }
25
26 static inline int splashFloor(SplashCoord x) {
27 #if USE_FIXEDPOINT
28   return FixedPoint::floor(x);
29 #else
30   return (int)floor(x);
31 #endif
32 }
33
34 static inline int splashCeil(SplashCoord x) {
35 #if USE_FIXEDPOINT
36   return FixedPoint::ceil(x);
37 #else
38   return (int)ceil(x);
39 #endif
40 }
41
42 static inline int splashRound(SplashCoord x) {
43 #if USE_FIXEDPOINT
44   return FixedPoint::round(x);
45 #else
46   return (int)floor(x + 0.5);
47 #endif
48 }
49
50 static inline SplashCoord splashSqrt(SplashCoord x) {
51 #if USE_FIXEDPOINT
52   return FixedPoint::sqrt(x);
53 #else
54   return sqrt(x);
55 #endif
56 }
57
58 static inline SplashCoord splashPow(SplashCoord x, SplashCoord y) {
59 #if USE_FIXEDPOINT
60   return FixedPoint::pow(x, y);
61 #else
62   return pow(x, y);
63 #endif
64 }
65
66 static inline SplashCoord splashDist(SplashCoord x0, SplashCoord y0,
67                                      SplashCoord x1, SplashCoord y1) {
68   SplashCoord dx, dy;
69   dx = x1 - x0;
70   dy = y1 - y0;
71 #if USE_FIXEDPOINT
72   return FixedPoint::sqrt(dx * dx + dy * dy);
73 #else
74   return sqrt(dx * dx + dy * dy);
75 #endif
76 }
77
78 #endif