digiKam
Loading...
Searching...
No Matches
filmfilter.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 : 2012-02-05
7 * Description : film color negative inverter filter
8 *
9 * SPDX-FileCopyrightText: 2012 by Matthias Welwarsky <matthias at welwarsky dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QString>
20#include <QList>
21#include <QListWidgetItem>
22#include <QSharedPointer>
23
24// Local includes
25
26#include "dimgthreadedfilter.h"
27#include "levelsfilter.h"
28#include "cbfilter.h"
29
30namespace Digikam
31{
32
33class DIGIKAM_EXPORT FilmContainer
34{
35public:
36
71
72public:
73
74 class ListItem : public QListWidgetItem
75 {
76 public:
77
78 explicit ListItem(const QString& text, QListWidget* const parent, CNFilmProfile type)
79 : QListWidgetItem(text, parent, (int)QListWidgetItem::UserType + (int)type)
80 {
81 }
82
83 private:
84
85 Q_DISABLE_COPY(ListItem)
86 };
87
88public:
89
90 explicit FilmContainer();
91 explicit FilmContainer(CNFilmProfile profile, double gamma, bool sixteenBit);
92
93 void setWhitePoint(const DColor& wp);
94 DColor whitePoint() const;
95
96 void setExposure(double strength);
97 double exposure() const;
98
99 void setSixteenBit(bool val);
100 void setGamma(double val);
101 double gamma() const;
102
103 void setCNType(CNFilmProfile profile);
104 CNFilmProfile cnType() const;
105
106 void setApplyBalance(bool val);
107 bool applyBalance() const;
108
109 LevelsContainer toLevels() const;
110 CBContainer toCB() const;
111
112public:
113
114 static const QMap<int, QString> profileMap;
115 static QList<ListItem*> profileItemList(QListWidget* const view);
116
117private:
118
119 int whitePointForChannel(int channel) const;
120 double blackPointForChannel(int ch) const;
121 double gammaForChannel(int ch) const;
122
123 static QMap<int, QString> profileMapInitializer();
124
125private:
126
127 class Private;
128 QSharedPointer<Private> d;
129};
130
131// ---------------------------------------------------------------------------------------------------
132
133class DIGIKAM_EXPORT FilmFilter: public DImgThreadedFilter
134{
135 Q_OBJECT
136
137public:
138
139 explicit FilmFilter(QObject* const parent = nullptr);
140 explicit FilmFilter(DImg* const orgImage, QObject* const parent = nullptr,
141 const FilmContainer& settings = FilmContainer());
142 ~FilmFilter() override;
143
144 static QString FilterIdentifier()
145 {
146 return QLatin1String("digikam:FilmFilter");
147 }
148
149 static QString DisplayableName();
150
151 static QList<int> SupportedVersions()
152 {
153 return QList<int>() << 1;
154 }
155
156 static int CurrentVersion()
157 {
158 return 1;
159 }
160
161 QString filterIdentifier() const override
162 {
163 return FilterIdentifier();
164 }
165
166 FilterAction filterAction() override;
167 void readParameters(const FilterAction& action) override;
168
169private:
170
171 void filterImage() override;
172
173private:
174
175 class Private;
176 Private* const d = nullptr;
177};
178
179} // namespace Digikam
Definition cbfilter.h:30
Definition dcolor.h:33
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition filmfilter.h:75
ListItem(const QString &text, QListWidget *const parent, CNFilmProfile type)
Definition filmfilter.h:78
Definition filmfilter_p.h:149
Definition filmfilter.h:34
static const QMap< int, QString > profileMap
Definition filmfilter.h:114
CNFilmProfile
Definition filmfilter.h:38
@ CNFujicolorNPL160
Definition filmfilter.h:60
@ CNKodakGold200
Definition filmfilter.h:41
@ CNFujicolorPro160S
Definition filmfilter.h:58
@ CNFujicolorSuperia200
Definition filmfilter.h:65
@ CNAgfaphotoVistaPlus200
Definition filmfilter.h:56
@ CNAgfaphotoVistaPlus400
Definition filmfilter.h:57
@ CNFujicolorPro160C
Definition filmfilter.h:59
@ CNFujicolorSuperia100
Definition filmfilter.h:64
@ CNKodakFarbwelt200
Definition filmfilter.h:53
@ CNKodakProfessionalNewPortra400
Definition filmfilter.h:51
@ CNKodakProfessionalPortra800P2
Definition filmfilter.h:49
@ CNFujicolorSuperiaXtra400
Definition filmfilter.h:66
@ CNKodakEktar100
Definition filmfilter.h:42
@ CNKodakFarbwelt400
Definition filmfilter.h:54
@ CNKodakGold100
Definition filmfilter.h:40
@ CNFujicolorPro400H
Definition filmfilter.h:61
@ CNKodakFarbwelt100
Definition filmfilter.h:52
@ CNFujicolorPro800Z
Definition filmfilter.h:62
@ CNKodakProfessionalPortra800P1
Definition filmfilter.h:48
@ CNFujicolorTrueDefinition400
Definition filmfilter.h:68
@ CNKodakProfessionalNewPortra160
Definition filmfilter.h:50
@ CNFujicolorSuperiaXtra800
Definition filmfilter.h:67
@ CNKodakProfessionalPortra160VC
Definition filmfilter.h:44
@ CNKodakRoyalGold400
Definition filmfilter.h:55
@ CNFujicolorSuperiaReala
Definition filmfilter.h:63
@ CNKodakProfessionalPortra800Box
Definition filmfilter.h:47
@ CNKodakProfessionalPortra400NC
Definition filmfilter.h:45
@ CNKodakProfessionalPortra160NC
Definition filmfilter.h:43
@ CNKodakProfessionalPortra400VC
Definition filmfilter.h:46
Definition filmfilter.h:134
static QList< int > SupportedVersions()
Definition filmfilter.h:151
static QString FilterIdentifier()
Definition filmfilter.h:144
QString filterIdentifier() const override
Definition filmfilter.h:161
static int CurrentVersion()
Definition filmfilter.h:156
Definition filteraction.h:33
Definition levelsfilter.h:30
Definition datefolderview.cpp:34