Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef AUXILIARY_H
00009 #define AUXILIARY_H
00010
00011 #ifdef HAVE_CONFIG_H
00012 #include "config.h"
00013 #endif
00014
00015
00016
00017
00018 #include "potracelib.h"
00019
00020 struct point_s {
00021 long x;
00022 long y;
00023 };
00024 typedef struct point_s point_t;
00025
00026 typedef potrace_dpoint_t dpoint_t;
00027
00028
00029 static inline dpoint_t dpoint(point_t p) {
00030 dpoint_t res;
00031 res.x = p.x;
00032 res.y = p.y;
00033 return res;
00034 }
00035
00036
00037 static inline dpoint_t interval(double lambda, dpoint_t a, dpoint_t b) {
00038 dpoint_t res;
00039
00040 res.x = a.x + lambda * (b.x - a.x);
00041 res.y = a.y + lambda * (b.y - a.y);
00042 return res;
00043 }
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 static inline int mod(int a, int n) {
00057 return a>=n ? a%n : a>=0 ? a : n-1-(-1-a)%n;
00058 }
00059
00060 static inline int floordiv(int a, int n) {
00061 return a>=0 ? a/n : -1-(-1-a)/n;
00062 }
00063
00064
00065 #undef sign
00066 #undef abs
00067 #undef min
00068 #undef max
00069 #undef sq
00070 #undef cu
00071 #define sign(x) ((x)>0 ? 1 : (x)<0 ? -1 : 0)
00072 #define abs(a) ((a)>0 ? (a) : -(a))
00073 #define min(a,b) ((a)<(b) ? (a) : (b))
00074 #define max(a,b) ((a)>(b) ? (a) : (b))
00075 #define sq(a) ((a)*(a))
00076 #define cu(a) ((a)*(a)*(a))
00077
00078 #endif