aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols2
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickcontrols2')
-rw-r--r--src/quickcontrols2/qquickcolor.cpp14
-rw-r--r--src/quickcontrols2/qquickcolor_p.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/src/quickcontrols2/qquickcolor.cpp b/src/quickcontrols2/qquickcolor.cpp
index bede2a88..66ef21b7 100644
--- a/src/quickcontrols2/qquickcolor.cpp
+++ b/src/quickcontrols2/qquickcolor.cpp
@@ -48,4 +48,18 @@ QColor QQuickColor::transparent(const QColor &color, qreal opacity) const
return QColor(color.red(), color.green(), color.blue(), qBound(0.0, opacity, 1.0) * 255);
}
+QColor QQuickColor::blend(const QColor &a, const QColor &b, qreal factor) const
+{
+ if (factor <= 0.0)
+ return a;
+ if (factor >= 1.0)
+ return b;
+
+ QColor color;
+ color.setRedF(a.redF() * (1.0 - factor) + b.redF() * factor);
+ color.setGreenF(a.greenF() * (1.0 - factor) + b.greenF() * factor);
+ color.setBlueF(a.blueF() * (1.0 - factor) + b.blueF() * factor);
+ return color;
+}
+
QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickcolor_p.h b/src/quickcontrols2/qquickcolor_p.h
index 85578359..657a9fa4 100644
--- a/src/quickcontrols2/qquickcolor_p.h
+++ b/src/quickcontrols2/qquickcolor_p.h
@@ -62,6 +62,7 @@ public:
explicit QQuickColor(QObject *parent = nullptr);
Q_INVOKABLE QColor transparent(const QColor &color, qreal opacity) const;
+ Q_INVOKABLE QColor blend(const QColor &a, const QColor &b, qreal factor) const;
};
QT_END_NAMESPACE