summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmath.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel/qmath.h')
-rw-r--r--src/corelib/kernel/qmath.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h
index 57314901e8..e7b6ab9c0e 100644
--- a/src/corelib/kernel/qmath.h
+++ b/src/corelib/kernel/qmath.h
@@ -233,6 +233,17 @@ Q_DECL_CONSTEXPR inline double qDegreesToRadians(double degrees)
return degrees * (M_PI / 180);
}
+Q_DECL_CONSTEXPR inline long double qDegreesToRadians(long double degrees)
+{
+ return degrees * (M_PI / 180);
+}
+
+template <typename T, std::enable_if_t<std::is_integral_v<T>, bool> = true>
+Q_DECL_CONSTEXPR inline double qDegreesToRadians(T degrees)
+{
+ return qDegreesToRadians(static_cast<double>(degrees));
+}
+
Q_DECL_CONSTEXPR inline float qRadiansToDegrees(float radians)
{
return radians * float(180/M_PI);
@@ -243,6 +254,15 @@ Q_DECL_CONSTEXPR inline double qRadiansToDegrees(double radians)
return radians * (180 / M_PI);
}
+Q_DECL_CONSTEXPR inline long double qRadiansToDegrees(long double radians)
+{
+ return radians * (180 / M_PI);
+}
+
+// A qRadiansToDegrees(Integral) overload isn't here; it's extremely
+// questionable that someone is manipulating quantities in radians
+// using integral datatypes...
+
namespace QtPrivate {
constexpr inline quint32 qConstexprNextPowerOfTwo(quint32 v) {
v |= v >> 1;