diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-09-26 13:54:02 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-09-27 12:37:21 +0000 |
commit | 90e57fdd6ffb24af5951ff25909c97bd28fdc552 (patch) | |
tree | bd27ec48dd1ee69c423ab8298424f4f9334c9a6f | |
parent | 73f1d564161f825e39904c78f3f05105d3bb9329 (diff) |
Add QQuickColor::blend()
Change-Id: I60dd2159e7c5c9bbdbea415ac3fe2e40881dbaba
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r-- | src/quickcontrols2/qquickcolor.cpp | 14 | ||||
-rw-r--r-- | src/quickcontrols2/qquickcolor_p.h | 1 |
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 |