20 #ifndef vtkImageInterpolatorInternals_h 21 #define vtkImageInterpolatorInternals_h 64 static int Floor(
double x, F& f);
67 static int Round(
double x);
70 static int Clamp(
int a,
int b,
int c);
71 static int Wrap(
int a,
int b,
int c);
72 static int Mirror(
int a,
int b,
int c);
88 #if defined ia64 || defined __ia64__ || defined _M_IA64 89 #define VTK_INTERPOLATE_64BIT_FLOOR 90 #elif defined __ppc64__ || defined __x86_64__ || defined _M_X64 91 #define VTK_INTERPOLATE_64BIT_FLOOR 92 #elif defined __ppc__ || defined sparc || defined mips 93 #define VTK_INTERPOLATE_32BIT_FLOOR 94 #elif defined i386 || defined _M_IX86 95 #define VTK_INTERPOLATE_I386_FLOOR 102 #define VTK_INTERPOLATE_FLOOR_TOL 7.62939453125e-06 107 #if defined VTK_INTERPOLATE_64BIT_FLOOR 109 long long i =
static_cast<long long>(x);
110 f =
static_cast<F
>(x - i);
111 return static_cast<int>(i - 103079215104LL);
112 #elif defined VTK_INTERPOLATE_32BIT_FLOOR 114 unsigned int i =
static_cast<unsigned int>(x);
116 return static_cast<int>(i - 2147483648U);
117 #elif defined VTK_INTERPOLATE_I386_FLOOR 123 dual.d = x + 103079215104.0;
124 f = dual.s[0] * 0.0000152587890625;
125 return static_cast<int>((dual.i[1] << 16) | ((dual.i[0]) >> 16));
136 #if defined VTK_INTERPOLATE_64BIT_FLOOR 138 long long i =
static_cast<long long>(x);
139 return static_cast<int>(i - 103079215104LL);
140 #elif defined VTK_INTERPOLATE_32BIT_FLOOR 142 unsigned int i =
static_cast<unsigned int>(x);
143 return static_cast<int>(i - 2147483648U);
144 #elif defined VTK_INTERPOLATE_I386_FLOOR 149 dual.d = x + 103079215104.5;
150 return static_cast<int>((dual.i[1] << 16) | ((dual.i[0]) >> 16));
161 a = (a <= c ? a : c);
163 a = (a >= 0 ? a : 0);
172 int range = c - b + 1;
176 a = (a >= 0 ? a : a +
range);
185 #ifndef VTK_IMAGE_BORDER_LEGACY_MIRROR 187 int ifzero = (
range == 0);
188 int range2 = 2 *
range + ifzero;
190 a = (a >= 0 ? a : -a);
192 a = (a <=
range ? a : range2 - a);
195 int range = c - b + 1;
196 int range2 = 2 *
range;
198 a = (a >= 0 ? a : -a - 1);
200 a = (a <
range ? a : range2 - a - 1);
static int Round(double x)
static int Mirror(int a, int b, int c)
static int Clamp(int a, int b, int c)
static int Wrap(int a, int b, int c)
static int Floor(double x)
Rounds a double to the nearest integer not greater than itself.
static int Floor(double x, F &f)
#define VTK_INTERPOLATE_FLOOR_TOL
vtkInterpolationWeights(const vtkInterpolationInfo &info)