diff options
Diffstat (limited to 'src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker.cpp')
-rw-r--r-- | src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker.cpp b/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker.cpp new file mode 100644 index 0000000000..bacdf915d0 --- /dev/null +++ b/src/quickdialogs/quickdialogsquickimpl/qquicksaturationlightnesspicker.cpp @@ -0,0 +1,43 @@ +// Copyright (C) 2022 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 "qquicksaturationlightnesspicker_p.h" +#include "qquickabstractcolorpicker_p_p.h" + +#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> +#include <QtQuickTemplates2/private/qquickdeferredexecute_p_p.h> + +QT_BEGIN_NAMESPACE + +class QQuickSaturationLightnessPickerPrivate : public QQuickAbstractColorPickerPrivate +{ + Q_DECLARE_PUBLIC(QQuickSaturationLightnessPicker) + +public: + explicit QQuickSaturationLightnessPickerPrivate(); +}; +QQuickSaturationLightnessPickerPrivate::QQuickSaturationLightnessPickerPrivate() +{ + m_hsl = true; +} + +QQuickSaturationLightnessPicker::QQuickSaturationLightnessPicker(QQuickItem *parent) + : QQuickAbstractColorPicker(*(new QQuickSaturationLightnessPickerPrivate), parent) +{ +} + +QColor QQuickSaturationLightnessPicker::colorAt(const QPointF &pos) +{ + const qreal w = width(); + const qreal h = height(); + if (w <= 0 || h <= 0) + return color(); + const qreal x = qBound(.0, pos.x(), w); + const qreal y = qBound(.0, pos.y(), h); + const qreal saturation = 1.0 - (y / h); + const qreal lightness = x / w; + + return QColor::fromHslF(hue(), saturation, lightness); +} + +QT_END_NAMESPACE |