aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrolsimpl/qquickcolor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickcontrolsimpl/qquickcolor.cpp')
-rw-r--r--src/quickcontrolsimpl/qquickcolor.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/quickcontrolsimpl/qquickcolor.cpp b/src/quickcontrolsimpl/qquickcolor.cpp
new file mode 100644
index 0000000000..68c1a62fd9
--- /dev/null
+++ b/src/quickcontrolsimpl/qquickcolor.cpp
@@ -0,0 +1,38 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qquickcolor_p.h"
+
+QT_BEGIN_NAMESPACE
+
+QQuickColor::QQuickColor(QObject *parent) :
+ QObject(parent)
+{
+}
+
+QColor QQuickColor::transparent(const QColor &color, qreal opacity) const
+{
+ const auto rgbColor = color.toRgb();
+ return QColor(rgbColor.red(), rgbColor.green(), rgbColor.blue(),
+ int(qreal(255) * qBound(qreal(0), opacity, qreal(1))));
+}
+
+QColor QQuickColor::blend(const QColor &a, const QColor &b, qreal factor) const
+{
+ if (factor <= 0.0)
+ return a;
+ if (factor >= 1.0)
+ return b;
+
+ const auto rgbA = a.toRgb();
+ const auto rgbB = b.toRgb();
+ QColor color;
+ color.setRedF(rgbA.redF() * (1.0 - factor) + rgbB.redF() * factor);
+ color.setGreenF(rgbA.greenF() * (1.0 - factor) + rgbB.greenF() * factor);
+ color.setBlueF(rgbA.blueF() * (1.0 - factor) + rgbB.blueF() * factor);
+ return color;
+}
+
+QT_END_NAMESPACE
+
+#include "moc_qquickcolor_p.cpp"