8 #ifndef vtkImageInterpolatorInternals_h
9 #define vtkImageInterpolatorInternals_h
12 #include "vtkEndian.h"
16 VTK_ABI_NAMESPACE_BEGIN
58 static int Floor(
double x, F& f);
61 static int Round(
double x);
64 static int Clamp(
int a,
int b,
int c);
65 static int Wrap(
int a,
int b,
int c);
66 static int Mirror(
int a,
int b,
int c);
110 #define VTK_INTERPOLATE_FLOOR_TOL 7.62939453125e-06
116 #if VTK_SIZEOF_VOID_P >= 8
119 long long i =
static_cast<long long>(x);
120 f =
static_cast<F
>(x - i);
121 return static_cast<int>(i - 103079215104LL);
122 #elif !defined VTK_WORDS_BIGENDIAN
129 dual.d = x + 103079215104.0;
130 f = dual.s[0] * 0.0000152587890625;
131 return static_cast<int>((dual.i[1] << 16) | ((dual.i[0]) >> 16));
139 dual.d = x + 103079215104.0;
140 f = dual.s[3] * 0.0000152587890625;
141 return static_cast<int>((dual.i[0] << 16) | ((dual.i[1]) >> 16));
147 #if VTK_SIZEOF_VOID_P >= 8
150 long long i =
static_cast<long long>(x);
151 return static_cast<int>(i - 103079215104LL);
152 #elif !defined VTK_WORDS_BIGENDIAN
158 dual.d = x + 103079215104.5;
159 return static_cast<int>((dual.i[1] << 16) | ((dual.i[0]) >> 16));
166 dual.d = x + 103079215104.5;
167 return static_cast<int>((dual.i[0] << 16) | ((dual.i[1]) >> 16));
176 a = (a <= c ? a : c);
178 a = (a >= 0 ? a : 0);
187 int range = c - b + 1;
191 a = (a >= 0 ? a : a +
range);
200 #ifndef VTK_IMAGE_BORDER_LEGACY_MIRROR
202 int ifzero = (range == 0);
203 int range2 = 2 * range + ifzero;
205 a = (a >= 0 ? a : -a);
207 a = (a <= range ? a : range2 - a);
210 int range = c - b + 1;
211 int range2 = 2 *
range;
213 a = (a >= 0 ? a : -a - 1);
215 a = (a < range ? a : range2 - a - 1);
220 VTK_ABI_NAMESPACE_END
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)