digiKam
Loading...
Searching...
No Matches
filmfilter_p.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#include "filmfilter.h"
18
19namespace Digikam
20{
21
22class DColor;
23
24class Q_DECL_HIDDEN FilmProfile
25{
26public:
27
28 explicit FilmProfile(double rdm = 0.0, double gdm = 0.0, double bdm = 0.0)
29 : redDmax (rdm),
30 greenDmax(gdm),
31 blueDmax (bdm)
32 {
33 }
34
35 double dmax(int channel) const
36 {
37 switch (channel)
38 {
39 case RedChannel:
40 {
41 return redDmax;
42 }
43
44 case GreenChannel:
45 {
46 return greenDmax;
47 }
48
49 case BlueChannel:
50 {
51 return blueDmax;
52 }
53
54 default:
55 {
56 return 0.0;
57 }
58 }
59 }
60
61 FilmProfile& setBalance(double rB, double gB, double bB)
62 {
63 rBalance = rB;
64 gBalance = gB;
65 bBalance = bB;
66
67 return *this;
68 }
69
70 double balance(int channel) const
71 {
72 switch (channel)
73 {
74 case RedChannel:
75 {
76 return rBalance;
77 }
78
79 case GreenChannel:
80 {
81 return gBalance;
82 }
83
84 case BlueChannel:
85 {
86 return bBalance;
87 }
88
89 default:
90 {
91 return 1.0;
92 }
93 }
94 }
95
96 FilmProfile& setWp(double rWp, double gWp, double bWp)
97 {
98 wpRed = rWp;
99 wpGreen = gWp;
100 wpBlue = bWp;
101
102 return *this;
103 }
104
105 double wp(int channel) const
106 {
107 switch (channel)
108 {
109 case RedChannel:
110 {
111 return wpRed;
112 }
113
114 case GreenChannel:
115 {
116 return wpGreen;
117 }
118
119 case BlueChannel:
120 {
121 return wpBlue;
122 }
123
124 default:
125 {
126 return 1.0;
127 }
128 }
129 }
130
131private:
132
133 double redDmax = 1.0;
134 double greenDmax = 1.0;
135 double blueDmax = 1.0;
136
137 double rBalance = 1.0;
138 double gBalance = 1.0;
139 double bBalance = 1.0;
140
141 double wpRed = 1.0;
142 double wpGreen = 1.0;
143 double wpBlue = 1.0;
144};
145
146// --------------------------------------------------------------------------------------------------------
147
148class Q_DECL_HIDDEN FilmContainer::Private
149{
150public:
151
152 Private() = default;
153 ~Private() = default;
154
155 double gamma = 1.0;
156 double exposure = 1.0;
157 bool sixteenBit = false;
158 FilmProfile profile = FilmProfile(1.0, 1.0, 1.0);
159 CNFilmProfile cnType = CNNeutral;
160 DColor whitePoint = DColor(QColor("white"), false);
161 bool applyBalance = true;
162};
163
164// ------------------------------------------------------------------
165
166class Q_DECL_HIDDEN FilmFilter::Private
167{
168public:
169
170 Private() = default;
171 ~Private() = default;
172
174};
175
176} // namespace Digikam
Definition dcolor.h:33
Definition filmfilter_p.h:149
Definition filmfilter.h:34
CNFilmProfile
Definition filmfilter.h:38
Definition filmfilter_p.h:167
FilmContainer film
Definition filmfilter_p.h:173
Definition filmfilter.h:134
Definition filmfilter_p.h:25
double dmax(int channel) const
Definition filmfilter_p.h:35
FilmProfile(double rdm=0.0, double gdm=0.0, double bdm=0.0)
Definition filmfilter_p.h:28
double balance(int channel) const
Definition filmfilter_p.h:70
FilmProfile & setWp(double rWp, double gWp, double bWp)
Definition filmfilter_p.h:96
double wp(int channel) const
Definition filmfilter_p.h:105
FilmProfile & setBalance(double rB, double gB, double bB)
Definition filmfilter_p.h:61
Definition datefolderview.cpp:34
@ GreenChannel
Definition digikam_globals.h:149
@ RedChannel
Definition digikam_globals.h:148
@ BlueChannel
Definition digikam_globals.h:150