Linear Methods for Image Interpolation
basic.h
Go to the documentation of this file.
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_ */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines