20 #ifndef vtkImageInterpolatorInternals_h
21 #define vtkImageInterpolatorInternals_h
24 #include "vtkEndian.h"
69 static int Floor(
double x, F& f);
72 static int Round(
double x);
75 static int Clamp(
int a,
int b,
int c);
76 static int Wrap(
int a,
int b,
int c);
77 static int Mirror(
int a,
int b,
int c);
121 #define VTK_INTERPOLATE_FLOOR_TOL 7.62939453125e-06
127 #if VTK_SIZEOF_VOID_P >= 8
130 long long i =
static_cast<long long>(x);
131 f =
static_cast<F
>(x - i);
132 return static_cast<int>(i - 103079215104LL);
133 #elif !defined VTK_WORDS_BIGENDIAN
140 dual.d = x + 103079215104.0;
141 f = dual.s[0] * 0.0000152587890625;
142 return static_cast<int>((dual.i[1] << 16) | ((dual.i[0]) >> 16));
150 dual.d = x + 103079215104.0;
151 f = dual.s[3] * 0.0000152587890625;
152 return static_cast<int>((dual.i[0] << 16) | ((dual.i[1]) >> 16));
158 #if VTK_SIZEOF_VOID_P >= 8
161 long long i =
static_cast<long long>(x);
162 return static_cast<int>(i - 103079215104LL);
163 #elif !defined VTK_WORDS_BIGENDIAN
169 dual.d = x + 103079215104.5;
170 return static_cast<int>((dual.i[1] << 16) | ((dual.i[0]) >> 16));
177 dual.d = x + 103079215104.5;
178 return static_cast<int>((dual.i[0] << 16) | ((dual.i[1]) >> 16));
187 a = (a <= c ? a : c);
189 a = (a >= 0 ? a : 0);
198 int range = c - b + 1;
202 a = (a >= 0 ? a : a +
range);
211 #ifndef VTK_IMAGE_BORDER_LEGACY_MIRROR
213 int ifzero = (range == 0);
214 int range2 = 2 * range + ifzero;
216 a = (a >= 0 ? a : -a);
218 a = (a <= range ? a : range2 - a);
221 int range = c - b + 1;
222 int range2 = 2 *
range;
224 a = (a >= 0 ? a : -a - 1);
226 a = (a < range ? a : range2 - a - 1);
vtkImageBorderMode BorderMode
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)
abstract superclass for arrays of numeric data
static int Floor(double x, F &f)
#define VTK_INTERPOLATE_FLOOR_TOL
vtkInterpolationWeights(const vtkInterpolationInfo &info)