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
abstract superclass for arrays of numeric data
vtkImageBorderMode BorderMode
static int Clamp(int a, int b, int c)
static int Floor(double x, F &f)
static int Mirror(int a, int b, int c)
static int Wrap(int a, int b, int c)
static int Round(double x)
vtkInterpolationWeights(const vtkInterpolationInfo &info)
#define VTK_INTERPOLATE_FLOOR_TOL