diff options
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/utils/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/libs/utils/mathutils.cpp | 30 | ||||
-rw-r--r-- | src/libs/utils/mathutils.h | 12 | ||||
-rw-r--r-- | src/libs/utils/utils.qbs | 2 |
4 files changed, 45 insertions, 0 deletions
diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt index 3a891a3d59..b98d18bf93 100644 --- a/src/libs/utils/CMakeLists.txt +++ b/src/libs/utils/CMakeLists.txt @@ -89,6 +89,7 @@ add_qtc_library(Utils listutils.h macroexpander.cpp macroexpander.h mapreduce.h + mathutils.cpp mathutils.h mimeutils.h minimizableinfobars.cpp minimizableinfobars.h diff --git a/src/libs/utils/mathutils.cpp b/src/libs/utils/mathutils.cpp new file mode 100644 index 0000000000..465d4d5f99 --- /dev/null +++ b/src/libs/utils/mathutils.cpp @@ -0,0 +1,30 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + +#include "mathutils.h" + +#include <QtMath> + +namespace Utils::MathUtils { + +/*! + Linear interpolation: + For x = x1 it returns y1. + For x = x2 it returns y2. +*/ +int interpolate(int x, int x1, int x2, int y1, int y2) +{ + if (x1 == x2) + return y1; // or the middle point between y1 and y2? + if (y1 == y2) + return y1; + if (x == x1) + return y1; + if (x == x2) + return y2; + const int numerator = (y2 - y1) * x + x2 * y1 - x1 * y2; + const int denominator = x2 - x1; + return qRound((double)numerator / denominator); +} + +} // namespace Utils::Math diff --git a/src/libs/utils/mathutils.h b/src/libs/utils/mathutils.h new file mode 100644 index 0000000000..20ae6cd342 --- /dev/null +++ b/src/libs/utils/mathutils.h @@ -0,0 +1,12 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + +#pragma once + +#include "utils_global.h" + +namespace Utils::MathUtils { + +QTCREATOR_UTILS_EXPORT int interpolate(int x, int x1, int x2, int y1, int y2); + +} // namespace Utils::Math diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs index cf2ad7e79f..5f9cf2f922 100644 --- a/src/libs/utils/utils.qbs +++ b/src/libs/utils/utils.qbs @@ -187,6 +187,8 @@ Project { "macroexpander.cpp", "macroexpander.h", "mapreduce.h", + "mathutils.cpp", + "mathutils.h", "mimeutils.h", "minimizableinfobars.cpp", "minimizableinfobars.h", |