digiKam
Loading...
Searching...
No Matches
wbfilter.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 : 2007-16-01
7 * Description : white balance color correction.
8 *
9 * SPDX-FileCopyrightText: 2007-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2008 by Guillaume Castagnino <casta at xwing dot info>
11 * SPDX-FileCopyrightText: 2010 by Martin Klapetek <martin dot klapetek at gmail dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QColor>
22
23// Local includes
24
25#include "digikam_export.h"
26#include "dimgthreadedfilter.h"
27#include "digikam_globals.h"
28#include "wbcontainer.h"
29
30namespace Digikam
31{
32
33class DImg;
34
35class DIGIKAM_EXPORT WBFilter : public DImgThreadedFilter
36{
37 Q_OBJECT
38
39public:
40
41 explicit WBFilter(QObject* const parent = nullptr);
42 explicit WBFilter(DImg* const orgImage,
43 QObject* const parent = nullptr,
44 const WBContainer& settings = WBContainer());
45 explicit WBFilter(const WBContainer& settings,
46 DImgThreadedFilter* const master,
47 const DImg& orgImage,
48 const DImg& destImage,
49 int progressBegin = 0,
50 int progressEnd = 100);
51 ~WBFilter() override;
52
53
54 static void autoExposureAdjustement(const DImg* const img, double& black, double& expo);
55 static void autoWBAdjustementFromColor(const QColor& tc, double& temperature, double& green);
56
57 static QString FilterIdentifier()
58 {
59 return QLatin1String("digikam:WhiteBalanceFilter");
60 }
61
62 static QString DisplayableName();
63
64 static QList<int> SupportedVersions()
65 {
66 return QList<int>() << 2;
67 }
68
69 static int CurrentVersion()
70 {
71 return 2;
72 }
73
74 void readParameters(const FilterAction& action) override;
75
76 QString filterIdentifier() const override
77 {
78 return FilterIdentifier();
79 }
80
81 FilterAction filterAction() override;
82
83protected:
84
85 void filterImage() override;
86
87protected:
88
90
91private:
92
93 void setLUTv();
94 void adjustWhiteBalance(uchar* const data, uint width, uint height, bool sixteenBit);
95 inline unsigned short pixelColor(int colorMult, int index);
96
97 static void setRGBmult(const double& temperature, const double& green, double& mr, double& mg, double& mb);
98
99private:
100
101 class Private;
102 Private* const d = nullptr;
103};
104
105} // namespace Digikam
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition filteraction.h:33
Definition wbcontainer.h:33
Definition wbfilter.h:36
static int CurrentVersion()
Definition wbfilter.h:69
static QList< int > SupportedVersions()
Definition wbfilter.h:64
static QString FilterIdentifier()
Definition wbfilter.h:57
WBContainer m_settings
Definition wbfilter.h:89
QString filterIdentifier() const override
Definition wbfilter.h:76
Definition datefolderview.cpp:34