digiKam
Loading...
Searching...
No Matches
hslfilter.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2005-03-06
7 * Description : Hue/Saturation/Lightness image filter.
8 *
9 * SPDX-FileCopyrightText: 2005-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2010 by Martin Klapetek <martin dot klapetek at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 * ============================================================ */
14
15#pragma once
16
17// Local includes
18
19#include "digikam_export.h"
20#include "dimgthreadedfilter.h"
21#include "digikam_globals.h"
22
23namespace Digikam
24{
25
26class DImg;
27
28class DIGIKAM_EXPORT HSLContainer
29{
30
31public:
32
33 HSLContainer() = default;
34 ~HSLContainer() = default;
35
36public:
37
38 double hue = 0.0;
39 double saturation = 0.0;
40 double vibrance = 0.0;
41 double lightness = 0.0;
42};
43
44// -----------------------------------------------------------------------------------------------
45
46class DIGIKAM_EXPORT HSLFilter : public DImgThreadedFilter
47{
48 Q_OBJECT
49
50public:
51
52 explicit HSLFilter(QObject* const parent = nullptr);
53 explicit HSLFilter(DImg* const orgImage, QObject* const parent = nullptr,
54 const HSLContainer& settings = HSLContainer());
55 ~HSLFilter() override;
56
57 static QString FilterIdentifier()
58 {
59 return QLatin1String("digikam:HSLFilter");
60 }
61
62 static QString DisplayableName();
63
64 static QList<int> SupportedVersions()
65 {
66 return QList<int>() << 1;
67 }
68
69 static int CurrentVersion()
70 {
71 return 1;
72 }
73
74 QString filterIdentifier() const override
75 {
76 return FilterIdentifier();
77 }
78
79 FilterAction filterAction() override;
80
81 void readParameters(const FilterAction& action) override;
82
83private:
84
85 void filterImage() override;
86
87 void reset();
88 void setHue(double val);
89 void setSaturation(double val);
90 void setLightness(double val);
91 void applyHSL(const DImg& image);
92 int vibranceBias(double sat, double hue, double vib, bool sixteenbit);
93
94private:
95
96 class Private;
97 Private* const d = nullptr;
98};
99
100} // namespace Digikam
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition filteraction.h:33
Definition hslfilter.h:29
Definition hslfilter.h:47
QString filterIdentifier() const override
Definition hslfilter.h:74
static QList< int > SupportedVersions()
Definition hslfilter.h:64
static QString FilterIdentifier()
Definition hslfilter.h:57
static int CurrentVersion()
Definition hslfilter.h:69
Definition datefolderview.cpp:34