Linear Methods for Image Interpolation
|
00001 00064 #ifndef _BASIC_H_ 00065 #define _BASIC_H_ 00066 00067 #include <math.h> 00068 #include <stdio.h> 00069 #include <stdlib.h> 00070 00071 00072 /* Memory management */ 00074 #define Malloc(s) MallocWithErrorMessage(s) 00075 void *MallocWithErrorMessage(size_t Size); 00077 #define Realloc(p, s) ReallocWithErrorMessage(p, s) 00078 void *ReallocWithErrorMessage(void *Ptr, size_t Size); 00080 #define Free(p) free(p) 00081 00082 00083 /* Portable integer types */ 00084 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) 00085 00086 /* Windows system: Use __intN types to define uint8_t, etc. */ 00087 typedef unsigned __int8 uint8_t; 00088 typedef unsigned __int16 uint16_t; 00089 typedef unsigned __int32 uint32_t; 00090 typedef __int8 int8_t; 00091 typedef __int16 int16_t; 00092 typedef __int32 int32_t; 00093 00094 #else 00095 00096 /* Use stdint to define uint8_t, etc. */ 00097 #include <stdint.h> 00098 00099 #endif 00100 00101 00122 unsigned long Clock(); 00123 00124 00126 void ErrorMessage(const char *Format, ...); 00127 00128 00129 /* Math constants (Hart & Cheney) */ 00130 #ifndef M_2PI 00131 00132 #define M_2PI 6.28318530717958647692528676655900576 00133 #endif 00134 #ifndef M_PI 00135 00136 #define M_PI 3.14159265358979323846264338327950288 00137 #endif 00138 #ifndef M_PI_2 00139 00140 #define M_PI_2 1.57079632679489661923132169163975144 00141 #endif 00142 #ifndef M_PI_4 00143 00144 #define M_PI_4 0.78539816339744830961566084581987572 00145 #endif 00146 #ifndef M_PI_8 00147 00148 #define M_PI_8 0.39269908169872415480783042290993786 00149 #endif 00150 #ifndef M_SQRT2 00151 00152 #define M_SQRT2 1.41421356237309504880168872420969808 00153 #endif 00154 #ifndef M_1_SQRT2 00155 00156 #define M_1_SQRT2 0.70710678118654752440084436210484904 00157 #endif 00158 #ifndef M_E 00159 00160 #define M_E 2.71828182845904523536028747135266250 00161 #endif 00162 #ifndef M_LOG2E 00163 00164 #define M_LOG2E 1.44269504088896340735992468100189213 00165 #endif 00166 #ifndef M_LOG10E 00167 00168 #define M_LOG10E 0.43429448190325182765112891891660508 00169 #endif 00170 #ifndef M_LN2 00171 00172 #define M_LN2 0.69314718055994530941723212145817657 00173 #endif 00174 #ifndef M_LN10 00175 00176 #define M_LN10 2.30258509299404568401799145468436421 00177 #endif 00178 #ifndef M_EULER 00179 00180 #define M_EULER 0.57721566490153286060651209008240243 00181 #endif 00182 00184 #define ROUND(X) (floor((X) + 0.5)) 00185 00187 #define ROUNDF(X) (floor((X) + 0.5f)) 00188 00189 00190 #ifdef __GNUC__ 00191 #ifndef ATTRIBUTE_UNUSED 00192 00193 #define ATTRIBUTE_UNUSED __attribute__((unused)) 00194 #endif 00195 #ifndef ATTRIBUTE_ALWAYSINLINE 00196 00197 #define ATTRIBUTE_ALWAYSINLINE __attribute__((always_inline)) 00198 #endif 00199 #else 00200 #define ATTRIBUTE_UNUSED 00201 #define ATTRIBUTE_ALWAYSINLINE 00202 #endif 00203 00204 00205 #endif /* _BASIC_H_ */