21 #ifndef GNASH_NUMERIC_H 22 #define GNASH_NUMERIC_H 37 #include <type_traits> 44 static const double PI = 3.14159265358979323846;
49 #if defined(HAVE_FINITE) && !defined(HAVE_ISFINITE) 64 static_assert(std::is_floating_point<T>::value,
65 "isNaN() is only meaningful for floating point types.");
80 return std::max<T>(min, std::min<T>(
i, max));
87 return (b - a) * f +
a;
93 return static_cast<int>(f + 0.5f);
102 template<
size_t Factor>
113 const double factor =
static_cast<double>(Factor);
122 static const double upperUnsignedLimit =
123 std::numeric_limits<std::uint32_t>::max() + 1.0;
124 static const double upperSignedLimit =
125 std::numeric_limits<std::int32_t>::max() / factor;
126 static const double lowerSignedLimit =
127 std::numeric_limits<std::int32_t>::min() / factor;
129 if (a >= lowerSignedLimit && a <= upperSignedLimit) {
135 static_cast<std::uint32_t
>(
136 std::fmod(a * factor, upperUnsignedLimit))
138 -static_cast<std::uint32_t>(
139 std::fmod(-a * factor, upperUnsignedLimit));
146 return truncateWithFactor<20>(
a);
std::int32_t truncateWithFactor(double a)
Definition: GnashNumeric.h:104
Definition: GnashKey.h:147
Definition: GnashKey.h:150
bool isNaN(const T &num)
Definition: GnashNumeric.h:62
double infinite_to_zero(double x)
Definition: GnashNumeric.h:70
double twipsToPixels(int i)
Definition: GnashNumeric.h:97
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
std::int32_t pixelsToTwips(double a)
Definition: GnashNumeric.h:144
Definition: GnashKey.h:152
T lerp(T a, T b, T f)
Definition: GnashNumeric.h:85
bool isFinite(double d)
Definition: GnashNumeric.h:47
std::int32_t x
Definition: BitmapData_as.cpp:434
Definition: GnashKey.h:148
T clamp(T i, T min, T max)
Definition: GnashNumeric.h:77
int frnd(float f)
Definition: GnashNumeric.h:91
Definition: GnashKey.h:132
Definition: GnashKey.h:155