diff options
Diffstat (limited to 'src/quickcontrolsimpl/qquickcolor.cpp')
-rw-r--r-- | src/quickcontrolsimpl/qquickcolor.cpp | 38 |
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" |